Handle exception in pyserial bei Verbindungsabbruch
Habe ich code, das Lesen von Daten von der seriellen Schnittstelle.
try:
dataIn = self.port.read(100)
except serial.SerialException:
#do some work
return None
Wenn ich die Verbindung Gerät-ich Fang Ausnahme, die ich nicht umgehen kann, irgendwie.
Traceback (most recent call last):
File "/usr/local/lib/python3.4/dist-packages/serial/serialposix.py", line 475, in read
raise SerialException('device reports readiness to read but returned no data (device disconnected or multiple access on port?)')
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/katkov/work/obd2rds/obd2rds/testing/python/main.py", line 48, in <module>
main()
File "/home/katkov/work/obd2rds/obd2rds/testing/python/main.py", line 41, in main
dataIn = serPort.read()
File "/home/katkov/work/obd2rds/obd2rds/testing/python/uart.py", line 55, in read
dataIn = self.port.read(100)
File "/usr/local/lib/python3.4/dist-packages/serial/serialposix.py", line 480, in read
if e[0] != errno.EAGAIN:
TypeError: 'SerialException' object does not support indexing
Wie kann ich catch-Ausnahme, dass es ordnungsgemäß verarbeitet werden.
Danke!
So weit ich bin mir bewusst, pySerial nicht unterstützt python 3.4, die Sie hier verwenden. So müssen Sie entweder verwenden einer anderen Bibliothek für Ihre Bedürfnisse, oder schreiben Sie Ihren code in python 2.7. Ich empfehle das finden einer anderen Bibliothek.
Wie bereits hier Python ist3.x ist verfügbar.
Wie bereits hier Python ist3.x ist verfügbar.
InformationsquelleAutor Yuriy | 2015-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Danke für Jonathan Eunice! Ihre Beratung fest mein Problem.
Nun verwende ich folgenden code:
InformationsquelleAutor Yuriy
Du nicht teilen Sie Ihre vollständigen code, aber wenn Sie versuchen, eine index-out-Fehler-Nummer, das ist nicht zur Arbeit gehen, soweit ich weiß. Versuchen:
Auch, wenn Sie das tun, arbeiten in einem exception-handler kann weitere Ausnahmen, dann nest Handler. E. g.:
Der code, den Sie geschrieben hat noch
if e[0] != errno.EAGAIN:
. Deine Fehlermeldung sagtTypeError: 'SerialException' object does not support indexing
.e[0]
ist noch die Indizierung.Sorry, dass ich noch nicht festgestellt, dass read(self, size=1) Funktion wird von pyserial-Paket: Datei serialposix.ry. Es ist nicht meine.
Gut, nach der Fehlermeldung, der code versucht zu index in eine nicht-Wendeplatten-Typ (
SerialException
). Finden Sie, wo das geschieht, um rückwärts zu arbeiten.Dies geschieht in der pyserial-Datei serialposix.ry, soweit ich weiß.
InformationsquelleAutor Jonathan Eunice