无法在Pyserial中打开串行连接:“termios.error: (22, '无效参数')”

5 投票
6 回答
13350 浏览
提问于 2025-04-16 14:47

我在运行以下代码时遇到了问题:

import serial

ser = serial.Serial(
    port='/dev/tty.FireFly-16CB-SPP',
    baudrate=115200,
    #parity=serial.PARITY_ODD,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS
)

ser.open()
ser.isOpen()

这段代码昨天还可以正常工作,我不知道我改了什么。现在我收到了以下错误信息:

    Traceback (most recent call last):
  File "main.py", line 32, in <module>
    bytesize=serial.EIGHTBITS
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/serial/serialutil.py", line 260, in __init__
    self.open()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/serial/serialposix.py", line 280, in open
    self._reconfigurePort()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/serial/serialposix.py", line 409, in _reconfigurePort
    termios.tcsetattr(self.fd, TERMIOS.TCSANOW, [iflag, oflag, cflag, lflag, ispeed, ospeed, cc])
termios.error: (22, 'Invalid argument')

我对Python完全是个新手,看不懂上面的错误信息。我尝试重新安装了Pyserial,但还是没解决这个错误。到底出了什么问题呢?

6 个回答

0

我重新安装了Python,并把版本降到了2.6,这样就解决了所有问题。

0

那个端口还在吗?我指的是 /dev/tty.FireFly-16CB-SPP。今天它可能换了个新名字……

3

我也遇到过同样的问题。当时我用的是一个有5个接口的USB集线器,里面插了3个不同的USB设备,结果发现这个集线器供电不足。后来我换了一个外接电源的USB设备(也就是不是直接从电脑的接口取电的那种),这样就正常工作了。

撰写回答