Ich lese serielle Daten mit einer While-Schleife. Ich habe jedoch keine Kontrolle über die Abtastrate.Wie stelle ich sicher, dass eine Python-While-Schleife eine gewisse Zeit benötigt, um ausgeführt zu werden?
Der Code selbst scheint 0,2 Sekunden zu laufen, also weiß ich, dass ich nicht schneller gehen kann. Aber ich möchte genau kontrollieren können, wie viel langsamer ich probe.
Ich fühle mich wie ich es mit 'Schlaf' tun könnte, aber das Problem ist, dass es Potenzial gibt, dass an verschiedenen Punkten die Schleife selbst länger dauern wird (abhängig von genau was über serielle Daten übertragen wird) Der Code müsste das Gleichgewicht ausgleichen.
Zum Beispiel möchte ich sagen, ich möchte alle 1s probieren, und die Schleife dauert zwischen 0,2s und 0,3s zu laufen. Mein Code muss intelligent genug sein, um für 0,8 Sekunden (wenn die Schleife 0,2 Sekunden dauert) oder 0,7 Sekunden (wenn die Schleife 0,3 Sekunden dauert) zu schlafen.
import serial
import csv
import time
#open serial stream
while True:
#read and print a line
sample_value=ser.readline()
sample_time=time.time()-zero
sample_line=str(sample_time)+','+str(sample_value)
outfile.write(sample_line)
print 'time: ',sample_time,', value: ',sample_value
Ich habe diese Art von Sache vor der Verwendung von/dev/rtc als Auslöser in einem asynchronen Reaktor getan. Es löst in präzisen Intervallen unabhängig von der Messzeit aus. Du könntest aber auch einfach itimer benutzen. – Keith