bir*_*git 15 python serial-port arduino pyserial
我使用以下Python代码连接到我的Arduino板.
device=glob.glob("/dev/ttyUSB*")[0]
time.sleep(1)
arduino = serial.Serial(device, 115200, timeout=5)
Run Code Online (Sandbox Code Playgroud)
它通常可以工作,但不知何故,一些其他进程必须在重新启动后访问板,从而给出错误
serial.serialutil.SerialException:无法打开端口/ dev/ttyUSB0:[Errno 16]设备或资源忙:'/ dev/ttyUSB0'
当拔出并重新插入USB插件时,我可以正常执行Python代码,而不会发生错误.如何避免阻止端口的任何其他进程?我如何找出出现此错误的原因?
Die*_*ano 18
您可以使用
$ fuser /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)
列出使用该文件的进程的PID.或者,如果您的fuser命令支持它,您可以使用该-k选项来终止它们.
就我而言
$ fuser /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)
不工作(它什么也没显示)。
然而,有效的是以下内容:
$ sudo lsof /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)
这给了我一个正在使用我的串行端口的进程列表,我可以简单地kill使用它们PID(对应于列表中的第二列)。