2011-12-02 10 views
10

Arduino kartıma aşağıdaki Python koduyla bağlanıyorum. Genellikle çalışır, ama nedense başka süreç yeniden başlatıldıktan sonra tahta erişen olmalı banaAygıtı veya kaynağı meşgul eden işlemi sonlandır: '/ dev/ttyUSB0'?

serial.serialutil.SerialException hatası vererek

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

: açılamadı liman/dev/ttyUSB0: [ErrNo 16] Cihaz veya kaynak meşgul: '/ dev/ttyUSB0'

prizden ve USB fiş hata husul olmadan normal Python kodu yürütebilir yeniden takarak. Limana engel olan diğer işlemlerden nasıl kaçınabilirim? Ve bu hatanın nedenini nasıl öğrenebilirim?

cevap

10

Sen

$ fuser /dev/ttyUSB0 

dosyasını kullanarak süreçlerin PID'leri listelemek için kullanabilirsiniz. Alternatif olarak, fuser komutunuz destekliyorsa, onları öldürmek için -k seçeneğini kullanabilirsiniz.

+0

Bu, her zaman işe yaramaz, örneğin, bir 'ttyUSBx aygıtına erişmek için GNU ekranını kullandıysanız ve 'Ctrl-C' kullanarak çıktıktan sonra" Aygıt meşgul "mesajı alırsınız, ancak Yukarıdaki komut. – gbmhunter

+2

Nasıl düzeltirim o zaman?!?! : D – 0xbaadf00d