2011-12-02 47 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プラグは、私はエラーoccuringすることなく、通常のPythonコードを実行することができるreplugging。他のプロセスがポートをブロックしないようにするにはどうすればよいですか?そして、このエラーの原因を調べるにはどうすればよいですか?

答えて

10

あなたは、ファイルを使用しているプロセスのPIDを一覧表示する

$ fuser /dev/ttyUSB0 

を使用することができます。また、fuserコマンドでサポートされている場合は、-kオプションを使用してそれらを強制終了できます。

+0

GNU screenを使って 'ttyUSBx device'にアクセスし、' Ctrl-C'を使用して終了すると、 "Device busy"が表示されますが、これは表示されません上記のコマンド。 – gbmhunter

+2

どのように修正するのですか?!?! :D – 0xbaadf00d

関連する問題