Ответ 1
Вы можете использовать
$ fuser /dev/ttyUSB0
чтобы перечислить PID процессов, используя этот файл. В качестве альтернативы, если ваша команда fuser
поддерживает ее, вы можете использовать параметр -k
, чтобы убить их.
Я подключаюсь к своей плате Arduino со следующим кодом Python.
device=glob.glob("/dev/ttyUSB*")[0]
time.sleep(1)
arduino = serial.Serial(device, 115200, timeout=5)
Как правило, это работает, но каким-то другим процессом должен быть доступ к плате после перезагрузки, давая мне ошибку
serial.serialutil.SerialException: не удалось открыть порт /dev/ttyUSB 0: [Errno 16] Устройство или ресурс занят: '/dev/ttyUSB0'
При отключении и повторной загрузке USB-штекера я могу нормально выполнять код Python без ошибки. Как я могу избежать любого другого процесса, блокирующего порт? И как узнать причину этой ошибки?
Вы можете использовать
$ fuser /dev/ttyUSB0
чтобы перечислить PID процессов, используя этот файл. В качестве альтернативы, если ваша команда fuser
поддерживает ее, вы можете использовать параметр -k
, чтобы убить их.