2017-07-06 3 views
0

J'essaie d'obtenir la constante de temps à partir d'une serrure dans le dispositif, j'utiliser ce code:l'int d'extraction d'un octet récupéré à partir d'un verrou dans le dispositif

self.ser.write("OFLT?\r\n".encode()) 
self.ser.write("++read\r\n".encode()) 
print (self.ser.readline()) 

qui imprime b'9\n'. Je ne veux que le 9, mais je n'arrive pas à le sortir. J'ai essayé:

a = self.ser.readline() 
print (type(a)) 
print ("a is: " + a.decode()) 

qui se traduit par

<class 'bytes'> 
a is: 

Seulement me donner un espace vide. J'ai essayé d'exécuter séparément ce code comme

a = b'9\n' 
print ("a is " + a.decode()) 

qui fait imprimer

a is 9 
+0

À quoi ressemble votre fonction de lecture? De plus, je ne comprends pas très bien ce que vous essayez de faire, mais c'est peut-être moi. – patrick

Répondre

1

Je devine votre code complet ressemble à ceci:

... 
print (self.ser.readline()) 
a = self.ser.readline() 
... 

Il semble que ser est un objet fichier, donc une fois que vous avez imprimé cette ligne, le pointeur avance à la ligne suivante et vous ne pouvez pas le relire.

Essayez de supprimer cette instruction d'impression. En outre, si vous souhaitez supprimer la nouvelle ligne de fin, vous pouvez utiliser a.decode().rstrip().

+0

Merci beaucoup, ça marche –