我在执行以下代码时遇到问题:
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 :(得分:0)
港口还在吗?我看/dev/tty.FireFly-16CB-SPP
。它今天可能有一个新名字......
答案 1 :(得分: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()
并且在完成后不要忘记填写端口
答案 2 :(得分:0)
重新安装Python并降级到2.6,解决了所有问题。
答案 3 :(得分: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')
答案 4 :(得分:0)
我在OSX上遇到了这个问题,问题最终是不支持波特率。将波特率更改为更常见的东西并且有效!
答案 5 :(得分:0)
我遇到了同样的问题,虽然我使用的是一个5端口USB集线器,其中有3个不同的USB都插在其中,结果发现集线器没有提供足够的电量。一旦我得到一个外部供电的USB(一个不能从我的电脑端口拔下线路),它工作得很好。