22

次の 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 コードを正常に実行できます。ポートをブロックする他のプロセスを回避するにはどうすればよいですか? また、このエラーの原因を特定するにはどうすればよいですか?

4

3 に答える 3

28

使用できます

$ fuser /dev/ttyUSB0

ファイルを使用しているプロセスの PID を一覧表示します。または、fuserコマンドがサポートしている場合は、-kオプションを使用してそれらを強制終了できます。

于 2011-12-02T16:37:20.933 に答える
0

走る:

$ ps ax

シリアルポートを使用しているプロセスが表示されます。そのプロセスを殺します。これで解決しました。

于 2020-03-26T13:25:17.083 に答える