Завершить процесс, который поднимает устройство или ресурс занят: '/ dev / ttyUSB0'? - PullRequest
15 голосов
/ 02 декабря 2011

Я подключаюсь к плате Arduino со следующим кодом Python.

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 нормально, без возникновения ошибки. Как я могу избежать любого другого процесса, блокирующего порт? И как мне выяснить причину этой ошибки?

1 Ответ

17 голосов
/ 02 декабря 2011

Вы можете использовать

$ fuser /dev/ttyUSB0

для вывода PID процессов, использующих файл. Кроме того, если ваша команда fuser поддерживает это, вы можете использовать опцию -k, чтобы убить их.

...