Der serielle Port funktioniert nach dem Ubuntu-Update nicht richtig?

Der serielle Port funktioniert nach dem Ubuntu-Update nicht richtig?

Ich habe ein seltsames Problem mit meinem seriellen Port. Es scheint, dass sich nach der Aktualisierung und dem Neustart von Ubuntu etwas geändert hat.

przem@przem:~/Pulpit/bat/scripts$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>> ser = serial.Serial("/dev/ttyUSB0", 57600)
>>> ser.read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/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?)
>>> 

Ich weiß, dass mein Gerät das Ergebnis „ “ (Leerzeichen) anzeigen sollte, aber stattdessen erhalte ich eine Ausnahme:

„Gerät meldet Lesebereitschaft, hat aber keine Daten zurückgesendet (Gerät getrennt oder Mehrfachzugriff auf Port?)“

Diese Frage ist eine Einführung in mein Problem:https://stackoverflow.com/questions/32844942/serialport-doenst-work-correctly-after-ubuntu-update?noredirect=1#comment53527004_32844942

Bitte hilf mir.

Antwort1

Ich habe das gleiche Problem. Es scheint nicht auf serielle Schnittstellen beschränkt zu sein. Sie können mit socat zwei Pseudoterminals erstellen:

$ socat -d -d pty,raw,echo=0 pty,raw,echo=0
2015/09/30 09:46:18 socat[6296] N PTY is /dev/pts/17
2015/09/30 09:46:18 socat[6296] N PTY is /dev/pts/18
2015/09/30 09:46:18 socat[6296] N starting data transfer loop with FDs [3,3] and [5,5]

Sie können mit beiden Geräten eine Verbindung herstellen, zum Beispiel über Cu

cu -l /dev/pts/17 -s 115200

Und

cu -l /dev/pts/18 -s 115200

und Daten in beide Richtungen senden, kein Problem.

Die Verbindung mit Python 2.7 schlägt jedoch mit der von Ihnen erwähnten Fehlermeldung fehl

$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>> ser = serial.Serial("/dev/pts/17", 230400, timeout=0.2)
>>> ser.read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 460, in read
    raise SerialException('device reports readiness to read but returned no data (device disconnected?)')
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected?)

Dieser Code hat gestern vor der Installation der Updates für Ubuntu 14.04 funktioniert.

Irgendwelche Ideen?

Antwort2

Ich unterstütze dies nicht, aber diese Fehler sind mir nach der folgenden Änderung nicht mehr aufgefallen:

--- serialposix.py.stock    2015-10-03 06:53:45.241261071 -0700 
+++ serialposix.py  2015-10-03 06:55:07.481262475 -0700
@@ -457,7 +457,11 @@
             # Disconnected devices, at least on Linux, show the
             # behavior that they are always ready to read immediately
             # but reading returns nothing.
-                raise SerialException('device reports readiness to read but returned no data (device disconnected?)')
+                # retrying the read seems to get me past this error:
+                # [ERROR] Can't read from printer (disconnected?)     (SerialException): device reports readiness to read but returned no data (device disconnected?)
+
+                #raise SerialException('device reports readiness to read but returned no data (device disconnected?)')
+                pass
         read.extend(buf)
     return bytes(read)

Antwort3

Dies kann ein Kernel-Fehler sein. Siehe hier:https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1501240

Die Problemumgehung scheint in der Verwendung von kernel zu liegen 3.13.0-63-generic.

Sie können den Kernel für einen einmaligen Start ändern, indem Sie beim Starten die Umschalttaste gedrückt halten. Um die Änderung dauerhaft zu machen, müssen Sie Folgendes bearbeiten /etc/default/grub:https://askubuntu.com/questions/262965/grub-timeout-set-to-0-cant-access-grub-menu-anymore?rq=1

verwandte Informationen