Frage:
UART RX hört nach korrekter Arbeit auf, Daten zu lesen
FrantišekV
2018-10-16 16:34:57 UTC
view on stackexchange narkive permalink

Ich versuche, einen kontinuierlichen Datenstrom von meinem Gerät (Laserhöhenmesser) zu lesen. Das Gerät ist mit dem UART Rx-Pin des Himbeer-Pi 3B + verbunden. Mit diesem Python-Code funktioniert alles einwandfrei:

  import timeimport serialtry: ser = serial.Serial (port = '/ dev / serial0' , Baudrate = 115200, Parität = serial.PARITY_NONE, Stopbits = serial.STOPBITS_ONE, Bytesize = serial.EIGHTBITS, Timeout = 1) außer IOError: print ("Fehler beim Festlegen von Port \ n"), während 1: x = ser.readline ( ) print (x)  

Nach einer zufälligen Anzahl erfolgreicher Lesevorgänge wird folgende Fehlermeldung angezeigt:

  Traceback (letzter Aufruf zuletzt): Datei "/ usr / lib / python3 / dist-packages / serial / serialposix.py ", Zeile 490, in read 'Gerät meldet Lesebereitschaft, gibt aber keine Daten zurück' serial.serialutil.SerialException: Gerät meldet Lesebereitschaft, gibt jedoch keine Daten zurück (Gerät Nicht verbunden oder Mehrfachzugriff auf Port?) Während der Behandlung der obigen Ausnahme ist eine weitere Ausnahme aufgetreten: Traceback (letzter Aufruf zuletzt): Datei "/home/pi/readSerial.py", Zeile 25, in <module> x = ser.readline () Datei "/usr/lib/python3/dist-packages/serial/serialposix.py", Zeile 497, in read raise SerialException ('read failed: {}'. Format (e)) serial .serialutil.SerialException: Lesen fehlgeschlagen: Gerät meldet Lesebereitschaft, gibt jedoch keine Daten zurück (Gerät getrennt oder Mehrfachzugriff auf Port?)  

Wenn ich denselben Code erneut ausführe, funktioniert alles wieder. für einen kurzen Zeitraum (zufällig von 1 bis 30s). Ich muss einige Stunden lang Daten vom Sensor lesen. Kann mir jemand helfen, das Problem zu verstehen oder eine Problemumgehung zu finden? Ich bin total verloren. Danke.

Einer antworten:
Dmitry Grigoryev
2018-10-16 17:09:46 UTC
view on stackexchange narkive permalink

Überprüfen Sie, ob Sie die Anmeldeaufforderung unter / dev / serial0 deaktiviert haben. Was Sie sehen, kann daran liegen, dass zwei Prozesse (Ihr Skript und getty ) von demselben Port lesen.

Die Anmeldeaufforderung an der seriellen Schnittstelle kann durch Ausführen von sudo raspi deaktiviert werden -config , navigieren Sie zu "Erweitert", "Seriell" und beantworten Sie die Frage zur Anmeldeshell mit "Nein".

Alternativ können Sie einen günstigen USB-zu-UART-Dongle erwerben und Ihren anschließen Gerät dazu.

Ich habe es durch raspi-condig deaktiviert, aber ich habe es erneut überprüft und das Ergebnis war das gleiche. Dann habe ich es jedoch deaktiviert mit: und und jetzt funktioniert alles perfekt. Danke, ich hätte mir nie vorgestellt, dass es so eine dumme Sache ist.
@fvilagi Ja, ich bin auch überrascht, dass `raspi-config` so fehlerhaft ist.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...