mabue88
Goto Top

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
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

Content-Key: 221871

Url: https://administrator.de/contentid/221871

Printed on: April 25, 2024 at 21:04 o'clock

Member: mabue88
mabue88 Nov 20, 2013 at 12:29:31 (UTC)
Goto Top
Hallo,

ich habe den Fehler gefunden. Anscheinend entsprechen die von meinem Gerät verwendeten Pegel nicht ganz der RS232-Spec. Der USB-RS232-Adapter hat ab und zu Probleme die Pegel richtig zu erkennen. Jetzt habe ich einen anderen daran hängen. Mit dem funktioniert es wunderbar. Vermutlich werde ich das Gerät aber irgendwann umbauen, so dass die meisten USB-RS232-Adapter damit klar kommen.

Gruss
mabue