Verwendung der seriellen Schnittstelle in Python
Hallo,
ich habe ein Gerät mit serieller Schnittstelle, das mir in unregelmäßigen Abständen einen String über die Schnittstelle ausgibt.
Das Gerät habe ich über einen USB-RS232-Adapter (http://www.delock.de/produkte/F_657_Seriell_61308/merkmale.html) an einen Raspberry Pi angeschlossen.
Der Pi soll als "Server" ständig auf Daten an der seriellen Schnittstelle warten. Dafür habe ich ein kleines Python-Programm geschrieben. Allerdings empfängt das Programm nach einiger Zeit (ich sag jetzt einfach mal ein paar Stunden) nichts mehr.
Ich habe schon mehrere Möglichkeiten, um die Daten von der Schnittstelle zu holen, versucht.
Im folgenden poste ich die wesentlichen Bestandteile des Codes. Das Fehlerhandling lasse ich mal weg. Bei mir treten ohnehin keine Exceptions auf.
Versuch 1: Kein ReadTimeout, solange an "port.read()" warten bis Daten vorliegen
Versuch 2: ReadTimeout = 0.1 Sekunden, nach dem Timeout eine Sekunde warten, danach wieder "port.read()"
Wie gesagt, beide Versuche führen zum gleichen Ergebnis. Nach einer Zeit kommen an dem Programm keine Daten mehr an. Klar könnte es auch die Hardware sein. Aber wie kann ich das Überprüfen?
Danke
mabue
ich habe ein Gerät mit serieller Schnittstelle, das mir in unregelmäßigen Abständen einen String über die Schnittstelle ausgibt.
Das Gerät habe ich über einen USB-RS232-Adapter (http://www.delock.de/produkte/F_657_Seriell_61308/merkmale.html) an einen Raspberry Pi angeschlossen.
Der Pi soll als "Server" ständig auf Daten an der seriellen Schnittstelle warten. Dafür habe ich ein kleines Python-Programm geschrieben. Allerdings empfängt das Programm nach einiger Zeit (ich sag jetzt einfach mal ein paar Stunden) nichts mehr.
Ich habe schon mehrere Möglichkeiten, um die Daten von der Schnittstelle zu holen, versucht.
Im folgenden poste ich die wesentlichen Bestandteile des Codes. Das Fehlerhandling lasse ich mal weg. Bei mir treten ohnehin keine Exceptions auf.
Versuch 1: Kein ReadTimeout, solange an "port.read()" warten bis Daten vorliegen
import serial
port = serial.Serial("/dev/ttyUSB0", 9600, timeout = None);
port.open();
while true:
daten = port.readline();
print daten;
Versuch 2: ReadTimeout = 0.1 Sekunden, nach dem Timeout eine Sekunde warten, danach wieder "port.read()"
import serial
import time
port = serial.Serial("/dev/ttyUSB0", 9600, timeout = 0.1);
port.open();
while true:
daten = port.readline();
if len(daten) > 0:
print daten;
time.sleep(1);
Wie gesagt, beide Versuche führen zum gleichen Ergebnis. Nach einer Zeit kommen an dem Programm keine Daten mehr an. Klar könnte es auch die Hardware sein. Aber wie kann ich das Überprüfen?
Danke
mabue
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 221871
Url: https://administrator.de/forum/verwendung-der-seriellen-schnittstelle-in-python-221871.html
Ausgedruckt am: 05.04.2025 um 07:04 Uhr
1 Kommentar