우분투 업데이트 후 직렬 포트가 올바르게 작동하지 않습니까?

우분투 업데이트 후 직렬 포트가 올바르게 작동하지 않습니까?

직렬 포트에 이상한 문제가 있습니다. 우분투 구현 및 재부팅 후 sth가 변경된 것 같습니다.

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

내 장치에서 ' '(빈 기호) 결과가 있어야 한다는 것을 알고 있지만 그 대신 예외가 발생합니다.

'장치가 읽을 준비가 되었다고 보고했지만 데이터가 반환되지 않았습니다(장치 연결이 끊어졌거나 포트에 대한 다중 액세스?)'

이 질문은 내 문제에 대한 소개입니다.https://stackoverflow.com/questions/32844942/serialport-doenst-work-corrightly-after-ubuntu-update?noredirect=1#comment53527004_32844942

도와주세요.

답변1

나는 같은 문제를 경험합니다. 직렬 포트 하드웨어에만 국한되지는 않는 것 같습니다. socat를 사용하여 두 개의 의사 터미널을 만들 수 있습니다.

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

예를 들어 cu를 사용하여 두 장치 모두에 연결할 수 있습니다.

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

그리고

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

문제없이 양방향으로 데이터를 보냅니다.

하지만 언급한 오류 메시지와 함께 Python 2.7과의 연결이 실패합니다.

$ 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?)

이 코드는 어제 Ubuntu 14.04 업데이트를 설치하기 전에 작동했습니다.

어떤 아이디어가 있나요?

답변2

나는 이것을 지지하지는 않지만, 이 변경을 한 후에는 이러한 오류가 더 이상 표시되지 않습니다.

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

답변3

이는 커널 버그일 수 있습니다. 여기를 보아라:https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1501240

해결 방법은 kernel 을 사용하는 것 같습니다 3.13.0-63-generic.

시작하는 동안 Shift 키를 눌러 커널을 일회성 부팅으로 변경할 수 있습니다. 변경 사항을 지속적으로 적용하려면 다음을 편집해야 합니다 /etc/default/grub.https://askubuntu.com/questions/262965/grub-timeout-set-to-0-cant-access-grub-menu-anymore?rq=1

관련 정보