Lecture en continu

Signaler
-
Messages postés
12611
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 octobre 2020
-
Bonjour,

Sur un PC en milieu industriel, un logiciel permet de réaliser certaines tâches.

Je sais faire un programme en python permettant de faire réaliser à ce logiciel une tâche donnée.
Je voudrais que l'opérateur utilise une douchette code-barre pour lire un "texte-clé", qui déclenche la tâche associée.

Le programme Python devrait tourner en arrière-plan en continu jusqu'à ce que le texte soit bippé. Bien sur si l'opérateur saisi autre chose au clavier dans le logiciel cela ne doit pas poser problème.

Dans l'idée:
Dès que le texte "ImprimerEtiquette" est bippé, je lance le module qui demande au premier logiciel d'imprimer une étiquette.

Comment puis-je gérer cette attente?

Configuration: Windows / Firefox 81.0

4 réponses

Messages postés
12611
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 octobre 2020
701
bonjour,
veux-tu dire qu'il y aura deux programmes actifs sur le PC:
- un, nommé "logiciel", qui reçoit des informations via le clavier
- un autre, nommé "programme Python", qui devrait recevoir des informations via la douchette

est-ce bien cela?

peux-tu partager le code source du programme en python qui envoie des informations au logiciel?
La complexité est que le logiciel peut recevoir des infos soit du clavier soit de la douchette.

Par exemple l'opérateur bippe le code "ImprimerEtiquette" => le programme Python va ouvrir directement le sous-menu d'impression des étiquettes dans le logiciel. L'opérateur utilise la même douchette pour bipper son matricule, qui fait parti des champs imprimés, et il utilise le clavier pour saisir la référence article.

L'idée est vraiment de lire tout ce qui passe, mais de filtrer pour que dès que le mot-clé est aperçu il soit traité. Je pensais faire
while True:
motclef = input("Attente de lecture")
if motclef = "ImprimerEtiquette":
ImprimerEtiquette()

mais je me demandais s'il n'y avait pas plus robuste.
Messages postés
12611
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 octobre 2020
701
veux-tu dire qu'il y aura deux programmes actifs sur le PC:
- un, nommé "logiciel", qui reçoit des informations via le clavier
- un autre, nommé "programme Python", qui devrait recevoir des informations via la douchette

est-ce bien cela?

peux-tu partager le code source du programme en python qui envoie des informations au logiciel?

as-tu testé le code en #2?
Oui, il y a bien 2 programmes actif:
le "logiciel" visible depuis l'opérateur, recevant des info via clavier ou douchette
le "programme python" en arrière plan, recevant ses infos via la douchette.

Le code en #2 fonctionne à condition que le mot clé soit "isolé". Par exemple si l'opérateur appui sur une touche du clavier (par exemple "A") avant d'avoir bippé "ImprimerEtiquette", le programme Python lira "AImprimerEtiquette"...ce qu'il ne reconnait pas.
Une solution:
while True:
motclef = input("Attente de lecture")
if "ImprimerEtiquette" in motclef:
ImprimerEtiquette()


D'autres suggestions?
Messages postés
12611
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 octobre 2020
701
peux-tu partager le code source du programme en python qui envoie des informations au logiciel?
Messages postés
12611
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 octobre 2020
701
si la solution fonctionne, que cherches-tu de plus?