我使用pyserial在我的程序中打开一个串口。如果我在启动程序之前插入USB设备,这可以正常工作。但是,如果我使用执行插入USB设备,则会出现permission denied
错误。
我的代码
import serial, sys
def get_serial_port():
ser_devs = [dev for dev in os.listdir('/dev') if dev.startswith('ttyAC')]
if len(ser_devs) > 0:
return '/dev/'+ser_devs[0]
return None
while(1):
port = get_serial_port()
if port:
print('Will open port %s' % port)
ser = serial.Serial(port)
错误:
程序运行时插入USB设备会出现以下错误
serial.serialutil.SerialException: could not open port /dev/ttyACM0:
[Errno 13] Permission denied: '/dev/ttyACM0'
这对我来说没有意义,因为它起作用。我在dialgroup
,我以普通用户身份运行python。
知道发生了什么事吗?
答案 0 :(得分:0)
一段时间后,不断尝试打开端口终于成功了。所以隐藏错误使它暂时起作用:
while(1):
port = get_serial_port()
if port:
print('Will open port %s' % port)
try:
ser = serial.Serial(port, 9600)
print(ser.readline())
except:
pass
这个当然只是一个黑客。这种行为仍然非常奇怪,我不确定它是否是错误或其他一些程序正在干扰序列。
我注意到,只要我插上USB设备,调制解调器管理器就开始使用串口几秒钟了:
ModemMana 851 root 8u CHR 166,0 0t0 16925693 /dev/ttyACM0
gmain 851 879 root 8u CHR 166,0 0t0 16925693 /dev/ttyACM0
gdbus 851 884 root 8u CHR 166,0 0t0 16925693 /dev/ttyACM0
我仍然没有看到这个' bug'但是可能会出现Permission denied
错误。在这种情况下,我希望Device busy
例外。