PySerial: comment comprendre que le délai d'attente s'est produite lors de la lecture du port série?
Je suis en utilisant PySerial
à lire à partir du port série, comme dans le code ci-dessous.
CheckReadUntil()
lire la sortie de la commande que j'envoie au port série jusqu'à ce que la séquence de symboles readUntil
sont dans la sortie série.
...
self.ser = serial.Serial(comDev, 115200, timeout=10)
...
#Function that continue to read from Serial port until 'readUntil'
#sequence of symbols appears
def CheckReadUntil(self, readUntil):
outputCharacters = []
while 1:
ch = self.ser.read()
outputCharacters += ch
if outputCharacters[-len(readUntil):]==readUntil:
break
outputLines = ''.join(outputCharacters)
return outputLines
Cependant, si il n'y a pas de séquence readUntil
(pour une raison quelconque), je suis juste coincé dans la fonction CheckReadUntil()
pour toujours. Le paramètre timeout=10
définit délai d'attente donc je suis coincé dans une boucle qui itère toutes les 10 secondes à ne rien faire, juste attendre.
Comment il est possible de comprendre qu'il y avait un délai d'attente de l'événement afin que je puisse sortir de la boucle infinie? Longueur de sortie peuvent être différentes.
OriginalL'auteur Konstantin | 2014-03-24
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR (réponse précédente n'était pas correct, c'est le code de travail de @konstantin):
Ce que j'avais à faire est de 'ch = auto.ser.read()' + 'si len(ch) == 0:' au lieu de vos lignes correspondantes. Maintenant, tout fonctionne très bien! Nous avons besoin d'attendre le délai est seulement lorsque nous raccrocher, pas tout le temps! Merci pour la réponse, encore une fois!
ah droit, qui fait le tour 😉
pouvez-vous veuillez expliquer/post votre solution finale après le correctif, merci
OriginalL'auteur Fookatchu