2011-12-02 641 views
10

我使用以下Python代碼連接到我的Arduino板。殺死進程導致設備或資源忙:'/ dev/ttyUSB0'?

device=glob.glob("/dev/ttyUSB*")[0] 
time.sleep(1) 
arduino = serial.Serial(device, 115200, timeout=5) 

它通常工作,但不知何故,一些其他進程必須重啓後訪問該主板給我的錯誤

serial.serialutil.SerialException:無法打開端口的/ dev/ttyUSB0:[錯誤16]設備或資源繁忙:'/ dev/ttyUSB0'

當拔出並重新插入USB插頭時,我可以正常執行Python代碼,而不會出現錯誤。我怎樣才能避免阻塞端口的其他進程?我怎樣才能找出造成這個錯誤的原因?

回答

10

您可以使用

$ fuser /dev/ttyUSB0 

列出使用該文件的進程的PID。或者,如果您的fuser命令支持它,則可以使用-k選項來終止它們。

+0

例如,如果您使用GNU屏幕訪問「ttyUSBx設備」,然後使用「Ctrl-C」退出,您將得到「設備繁忙」,但不會顯示上面的命令。 – gbmhunter

+2

那我該如何解決呢?!?! :d – 0xbaadf00d