délai d'attente de lecture ligne Python pyserial
Question
J'utilise pyserial pour communiquer avec un legs intégré.
ser = serial.Serial(PORT, BAUD, timeout = TOUT)
ser.write(CMD)
z = ser.readline(eol='\n')
Nous envoyons CMD à l'appareil et il répond avec une chaîne de longueur varing se terminant par un '\n'
si le replay ne peux pas concevoir alors readline()
fois-out et z=''
si le legs est interrompu ou tombe en panne se il est d'envoyer les données puis-temps sur readline()
et z sera une chaîne sans '\n'
à la fin.
Y at-il un bon moyen de vérifier si readline()
a dépassé le délai de sortie autre que de vérifier l'état de z.
La solution
Je pense que ce que vous aimeriez faire est ..
import re
import time
import serial
def doRead(ser,term):
matcher = re.compile(term) #gives you the ability to search for anything
tic = time.time()
buff = ser.read(128)
# you can use if not ('\n' in buff) too if you don't like re
while ((time.time() - tic) < tout) and (not matcher.search(buff)):
buff += ser.read(128)
return buff
if __name__ == "__main__":
ser = serial.Serial(PORT, BAUD, timeout = TOUT)
ser.write(CMD)
print doRead(ser,term='\n')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow