Threading und serielle Schnittstelle
Verfasst: Dienstag 4. Dezember 2012, 14:30
Hallo!
Ich bin gerade dabei ein kleines Konsolenprogramm zu schreiben, das folgende Aufgabe erfüllen soll: An der seriellen Schnittstelle sollen Daten empfangen werden und in eine Datei geschrieben werden. Dies funktioniert soweit auch. Jetzt soll gleichzeitig die Dateigröße überwacht werden und ab einer bestimmten Größe eine Funktion ausgeführt werden. Dies funktioniert soweit auch, allerdings sollen die Daten auch weiterhin im Hintergrund aufgezeichnet werden, auch wenn die Funktion abgearbeitet wird.
Ich habe das Ganze mit threading versucht, allerdings bekomme ich immer eine Fehlermeldung:
SerialException: call to ClearCommError failed
Mein Code schaut so aus:
Ich teste im Moment unter Windows XP, später soll es aber auch auf Linux laufen.
Vielen Dank schonmal.
Grüsse,
Maxe
Ich bin gerade dabei ein kleines Konsolenprogramm zu schreiben, das folgende Aufgabe erfüllen soll: An der seriellen Schnittstelle sollen Daten empfangen werden und in eine Datei geschrieben werden. Dies funktioniert soweit auch. Jetzt soll gleichzeitig die Dateigröße überwacht werden und ab einer bestimmten Größe eine Funktion ausgeführt werden. Dies funktioniert soweit auch, allerdings sollen die Daten auch weiterhin im Hintergrund aufgezeichnet werden, auch wenn die Funktion abgearbeitet wird.
Ich habe das Ganze mit threading versucht, allerdings bekomme ich immer eine Fehlermeldung:
SerialException: call to ClearCommError failed
Mein Code schaut so aus:
Code: Alles auswählen
import serial
import os.path
import threading
#configure the serial connections
ser = serial.Serial(
port='COM1',
baudrate=38400,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
)
counter = 0
logfile = open("log.txt", "a")
def Thread1():
global counter, s
while counter < 50:
s = ser.readline()
logfile.write(s)
counter = counter +1
def Thread2():
global counter, logfile
while counter < 50:
b = os.path.getsize("log.txt")
if b > 5000:
print "Filesize > 5kb"
continue
th1=threading.Thread(target=Thread1)
th2=threading.Thread(target=Thread2)
th1.start()
th2.start()
ser.close()
logfile.close()
Vielen Dank schonmal.
Grüsse,
Maxe