J'essaie actuellement de communiquer avec un élément matériel qui mesure certaines données.Précise période de lecture pyserial
Je dois interagir avec ce matériel via série. Je peux obtenir des données en envoyant une chaîne GETDATA
à l'appareil. Mon objectif est d'obtenir des données précisément à 1 seconde. J'ai une lecture de fil et une écriture de fil pour qu'ils ne se bloquent pas.
Actuellement en utilisant cette méthode, j'obtiens une augmentation de 1 milliseconde toutes les quelques secondes. N'y a-t-il aucun moyen d'empêcher cela ou peut-il y avoir une technique pour l'optimiser davantage?
def _writing(self):
start_time = 0
while(self.__running_write):
current_time = time.time()
if (current_time - start_time) >= self.interval:
ser.write("GETDATA\r")
start_time = current_time
def _reading(self):
while(self.__running_read):
data = ser.read(100)
if data:
_output = "{0}".format(str(datetime.now()))
print _output
Sortie:
2017-09-08 14:53:44.335000
2017-09-08 14:53:45.335000
2017-09-08 14:53:46.336000
2017-09-08 14:53:47.336000
2017-09-08 14:53:48.337000
2017-09-08 14:53:49.337000
2017-09-08 14:53:50.338000
2017-09-08 14:53:51.338000
2017-09-08 14:53:52.339000
2017-09-08 14:53:53.339000