Python:试图打开串行端口导致IOError:[Errno 6]设备未配置
我试图用以下代码在Python中打开两个串行端口:Python:试图打开串行端口导致IOError:[Errno 6]设备未配置,python,serial-port,arduino,Python,Serial Port,Arduino,我试图用以下代码在Python中打开两个串行端口: for i in range(0, 2): if platform.system() == "Darwin": pos = 2+i else: pos = i port = serial.Serial(current_ports[pos], BAUD_RATE, timeout=TIMEOUT) time.sleep(1.516) port.write('#') t
for i in range(0, 2):
if platform.system() == "Darwin":
pos = 2+i
else:
pos = i
port = serial.Serial(current_ports[pos], BAUD_RATE, timeout=TIMEOUT)
time.sleep(1.516)
port.write('#')
time.sleep(1.516)
out = ''
print "Reading MAC Address...."
while port.inWaiting() > 0:
out += port.read(1)
print out
if out == '04:E9:E5:00:EC:51':
led_port = port
elif out == '04:E9:E5:01:0C:E0':
matrix_port = port
有时端口成功打开,有时不成功。如果没有,我会收到以下错误消息:
Reading MAC Address....
Traceback (most recent call last):
File "animation.py", line 227, in <module>
main()
File "animation.py", line 208, in main
led_port, matrix_port = get_ports()
File
"/Users/collinschupman/Documents/FutureCities/MurmurWall/Onsite/Raspi/helper_functions.py", line 41, in get_ports
while port.inWaiting() > 0:
File "/Library/Python/2.7/site-packages/serial/serialposix.py", line 449, in inWaiting
s = fcntl.ioctl(self.fd, TIOCINQ, TIOCM_zero_str)
IOError: [Errno 6] Device not configured
正在读取MAC地址。。。。
回溯(最近一次呼叫最后一次):
文件“animation.py”,第227行,在
main()
文件“animation.py”,第208行,主视图
led_端口,矩阵_端口=获取_端口()
文件
get_ports中的第41行“/Users/collinschupman/Documents/FutureCity/MurrullWall/site/Raspi/helper_functions.py”
当port.inWaiting()大于0时:
文件“/Library/Python/2.7/site packages/serial/serialposix.py”,第449行,在等待中
s=fcntl.ioctl(self.fd、TIOCINQ、TIOCM\u zero\u str)
IOError:[Errno 6]未配置设备
正如您所看到的,它到达inWaiting()调用,然后抛出此错误
作为一个小参考,代码正在向两个Arduinos发送一条消息,以便通过它们的MAC地址识别它们
是否有任何明显不正确的地方,我正在做的Python端,这将导致这个设置失败一次又一次?我想说现在这个代码有50%的时间是有效的
谢谢
CollinArduinos上的串行端口上是否运行getty进程?甚至在连接到Arduinos的本地机器的串行端口上?如果是这样的话,可能是干扰,应该停止。这里有一个可能相关的参考资料:我有类似的问题,我用以下解决方案解决了它 $sudo nano/etc/inittab 然后转到文件的底部,您将看到 T0:23:重生:/sbin/getty-L ttyam0 115200 vt100 或类似 只需在开头添加一个#字符,现在看起来像: #T0:23:重生:/sbin/getty-L ttyam0 115200 vt100 保存文件并重新启动 希望这能奏效 参考:
当前端口中有什么?当前端口是所有可用串行端口的列表。例如
/dev/ttyxxx
,/dev/serial/by id/xxxx
?确切地说,“/dev/tty.*”是否签出?