我使用以下Python代码连接到Arduino开发板。
device=glob.glob("/dev/ttyUSB*")[0]
time.sleep(1)
arduino = serial.Serial(device, 115200, timeout=5)
它通常可以正常工作,但是以某种方式在重启后必须通过其他方式访问该板,这给我带来了错误
serial.serialutil.SerialException:无法打开端口/ dev / ttyUSB0:[Errno 16]设备或资源繁忙:'/ dev / ttyUSB0'
[拔出并重新插入USB插头时,我可以正常执行Python代码,而不会发生错误。如何避免其他进程阻塞端口?以及如何找出此错误的原因?
您可以使用
$ fuser /dev/ttyUSB0
以列出使用该文件的进程的PID。另外,如果您的fuser
命令支持,则可以使用-k
选项将其杀死。
就我而言
$ fuser /dev/ttyUSB0
没有工作(什么也没显示。)>
但是,正在起作用的是以下内容:
$ sudo lsof /dev/ttyUSB0
这给了我一个使用串行端口的进程的列表,我可以简单地使用
kill
来PID
(对应于列表中的第二列)。