4

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

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,但这并没有解决错误。怎么了?

4

6 回答 6

0

重新安装 Python 并降级到 2.6 解决了所有问题。

于 2011-03-31T11:01:34.933 回答
0

尝试这个 :

ser = serial.Serial('/dev/tty.FireFly-16CB-SPP',115200)
print "port is open" if ser.isOpen() else "port is closed"

除非您手动更改端口的配置,否则您不必调用 open(),例如:

ser = serial.Serial()
ser.baudrate = 19200
ser.port = 0
ser.open()

完成后不要忘记清理端口

于 2011-03-31T07:46:44.837 回答
0

我也有同样的问题。

只需从 pySerial 示例 (http://sourceforge.net/projects/pyserial/develop) 运行 miniterm.py。

它从 shell 运行良好:python miniterm -p ttyUSB0 -D 但是当试图将它加载到 Eclipse 中时。并从那里运行调试。它给了我:

pydev debugger: starting
Traceback (most recent call last):
  File "/eclipse/plugins/org.python.pydev.debug_2.0.0.2011040403/pysrc/pydevd.py", line 1134, in <module>
    debugger.run(setup['file'], None, None)
  File "/eclipse/plugins/org.python.pydev.debug_2.0.0.2011040403/pysrc/pydevd.py", line 918, in run
    pydev_imports.execfile(file, globals, locals) #execute the script
  File "/root/workspace/pyserial/src/examples/miniterm.py", line 120, in <module>
    console.setup()
  File "/root/workspace/pyserial/src/examples/miniterm.py", line 101, in setup
    self.old = termios.tcgetattr(self.fd)
termios.error: (22, 'Invalid argument')
于 2011-04-13T14:49:31.330 回答
0

港口还在吗?我是说/dev/tty.FireFly-16CB-SPP。今天它可能有一个新名字......

于 2011-03-31T06:53:48.813 回答
0

我在 OSX 上遇到了这个问题,问题最终是不支持波特率。将波特率更改为更常见的值,它起作用了!

于 2013-10-12T19:46:07.570 回答
0

我遇到了同样的问题,虽然我使用的是一个 5 端口 USB 集线器,其中插入了 3 个不同的 USB,结果发现集线器没有提供足够的电力。一旦我得到了一个外部供电的 USB(不仅仅是从我的计算机端口拔下线),它就可以正常工作了。

于 2017-03-17T20:41:03.360 回答