2011-03-31 87 views
3

我在执行以下代码的问题:无法打开Pyserial串行连接:“termios.error:(22‘无效的参数’)”

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,但是没有解决这个错误。哪里不对?

回答

0

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

+0

是的,从查看/ dev /我看到端口仍然存在。 – user685206 2011-03-31 07:08:06

+0

也许值得尝试旧的“关闭和重新开启” - 即拔掉USB并重新插入。这解决了它在我的情况。 – jsaven 2017-05-27 09:57:30

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

并且不要忘记在完成后删除端口

0

重新安装Python并将其降级到2.6,从而解决了所有问题。

0

我有同样的问题。

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

它从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') 
0

我对OSX这个问题,这个问题最终被不支持的波特率。将波特率更改为更常见的操作!

0

我有同样的问题,虽然我用的是一个5端口的USB集线器,有3个不同的USB插入它,结果集线器没有提供足够的电力。一旦我得到了一个外部供电的USB(不仅仅是从我的电脑的端口上拔下线),它工作得很好。