ich hab ein kleines Timing Problem mit meinem Sensor, welcher periodisch Daten einliest.
Mein Skript sieht bisher folgendermaßen aus
Code: Alles auswählen
#!/usr/bin/python -u
import serial
import sys
import os
import time
port= '/dev/ttyUSB0'
f = file ('/home/mint/Desktop/Werte.txt','w')
def main():
ser = serial.Serial(port, 4800)
if not ser.isOpen():
print "Unable to open serial port %s" % port
sys.exit(1)
while True:
line = ser.read(118)
line = line.strip()
f.write(line)
#print line
main()
Das Problem: Der Sensor misst nur, wenn die Lampe blinkt. Und diese blinkt in Sekundenabstand.
Wenn ich also das Skript starte, kann es passieren, dass Were vom letzten Messvorgang und Werte vom darauffolgenden Messvorgang sich vermischen. Ich muss quasi das Skript genau im richtigen Moment starten.
Ein kompletter Messvorgang sieht so aus:
@
I01010100B00725030178
V0107AD46
I02020100B0072530148
V020EE349
I035300B5
V03FE3190
Io4550065
V04
014193
$
Manchmal finde ich das @ jedoch mitten drin, wenn quasi 2 Messvorgänge sich vermischen. Das @ signalisiert aber den Start. Ich habe schon versucht das Skript erst dann schreiben zu lassen, wenn er das @ sieht, aber dann kamen die Daten zum Teil unvollständig an.. Mal hat ne Zeile gefehlt, mal haben 10 Zeilen gefehlt.
Bin bisschen mit meinem Latein am Ende .. Wie sorg ich dafür, dass das Skript einen kompletten Messvorgang in die Datei schreibt, die idealerweise mit dem @ beginnt? Ich muss die Werte nämlich noch parsen, aber wenn die Werte bei jedem Start anders beginnen, hab ich ein Problem.
Liebe Grüße
Daito