gleich vorab, ich fange gerade an mich in Python einzuarbeiten.
Ich habe hier ein interessantes Projekt auf den Tisch bekommen mit dem ich mich beschäftigen darf.
Ziel soll es sein Daten von mehreren Sensoren in eine Datenbank zu schreiben.
Zunächst habe ich dies zu Testzwecken bereits auf einzelnen Raspberry Pi's umgesetzt... das würde wohl auch funktionieren aber ich zweifle auf die dauerhafte Zuverlässigkeit der kleinen Rechner an.
Nun habe ich hier einen Industrierechner mit 4 COM-Ports liegen, Debian und Python ist drauf.
Begonnen habe ich nun die vorangegangen Tests auf dieses einen Rechner zu übertragen.
Schnell wird klar dass das Abfragen mehrerer COM-Ports nicht ganz trivial ist.
Hinterinander bspw. 2 COM-Ports abzufragen funktioniert, jedoch erfolgt die Weiterverarbeitung (zunächst nur die Ausgabe der empfangenen Daten) erst wenn von beiden COM-Ports Daten empfangen wurden (Zeile 16 u. 17).
Frage: Wie kann man es lösen dass beide unabhängig von einander arbeiten? Ich kann vorher nicht wissen wann auf welchem Port Daten eintreffen... keine Weiterverarbeitung eines Port-Ergebnisses sollte auf das andere warten müssen!
Hat jemand eine Idee und würde mir weiterhelfen können?
Code: Alles auswählen
import serial
import time
def readlineCR(port):
rv = ""
while True:
ch = port.read()
rv += ch
if ch=='\r' or ch=='':
return rv
port1 = serial.Serial('/dev/ttyS0', baudrate=115200, timeout= None)
port2 = serial.Serial('/dev/ttyS1', baudrate=115200, timeout= None)
while True:
port1.write("\r\nSay something:")
port2.write("\r\nSay something:")
rcv1 = readlineCR(port1)
rcv2 = readlineCR(port2)
print(rcv1)
print(rcv2)
port1.write("\r\nYou sent:" + repr(rcv1))
port2.write("\r\nYou sent:" + repr(rcv2))