ich möchte an einem Rechner die serielle Schnittstelle auslesen. Ziel ist es, Daten, die über eine serielle Schnittstelle an einen Drucker gesendet werden, mitzuschneiden und in eine Datei zu schreiben. Soweit ist das Ganze ja auch kein Problem, mit Pyserial die Schnittstelle auslesen, und mit write den Inhalt in eine Datei wegschreiben. Nun soll aber der Dateiinhalt einmal täglich, oder wöchentlich auf eine Diskette weggeschrieben werden und das Ganze möglichst ohne Interaktion durch den Benutzer, dessen Tätigkeit sich ausschließlich auf das Einlegen und Entnehmen der Diskette beschränken soll.
Mein erster Versuch sieht so aus:
Code: Alles auswählen
#! /usr/local/bin/python
import serial
import os
from time import *
ser = serial.Serial(port=0, timeout=10)
protocol=open('/logfile/serlog', 'a')
while ser.isOpen():
line = ser.readline()
protocol.write(line)
zeit = localtime()
tag = zeit[6]
if tag == 6 and wochenflag == 0:
wochenflag = 1
protocol.close()
rename('/root/serlog', 'auswertung')
protocol=open('/root/serlog', 'a')
if tag < 6:
wochenflag = 0
Ich wurschtel mich erst gerade so in die Programmierung mit Python rein, von daher ist der Ansatz sicherlich alles andere als perfekt. Hat jemand von Euch eine Anregung, wie ich das Ganze eleganter lösen könnte? Es ist ja theoretisch so, dass permanent Daten über die serielle Schnittstelle kommen könnten, also müsste eigentlich die Schnittstelle dauernd ohne Timeout ausgelesen werden. Dann habe ich allerdings das Problem, dass das Programm in dieser Abfrage festhängt und die Wochentags- bzw. Uhrzeitabfrage nicht mehr erfolgen kann.
Gruss, Dirk