2011-12-02 11 views
10

Me conecto a mi placa Arduino con el siguiente código Python.Proceso de eliminación que eleva el Dispositivo o recurso ocupado: '/ dev/ttyUSB0'?

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

Por lo general, funciona, pero de alguna manera algún otro proceso debe acceder a la placa al reiniciar el sistema me da el error

serial.serialutil.SerialException: no podía abrir el puerto/dev/ttyUSB0: [Errno 16] Dispositivo o recurso ocupado: '/ dev/ttyUSB0'

Al desconectar y volver a enchufar el conector USB, puedo ejecutar el código Python normalmente, sin que se produzca el error. ¿Cómo puedo evitar cualquier otro proceso que bloquee el puerto? ¿Y cómo averiguo el motivo de este error?

Respuesta

10

Puede utilizar

$ fuser /dev/ttyUSB0 

para enumerar los PID de los procesos utilizando el archivo. Alternativamente, si su comando fuser lo admite, puede usar la opción -k para matarlos.

+0

Esto no siempre funciona, por ejemplo, si usaste la pantalla GNU para acceder a un dispositivo 'ttyUSBx', y luego lo dejaste con' Ctrl-C', obtendrás 'Dispositivo ocupado' pero no aparecerá con el comando de arriba – gbmhunter

+2

¿Cómo lo arreglo, entonces?!?! :RE – 0xbaadf00d

Cuestiones relacionadas