背景:
使用串口轉(zhuǎn)USB的連接線琉朽,將附件板連接到ubuntu pc上高诺。偶爾會出錯,不能訪問附件板的錯誤魏蔗。在terminal上看到,有/var/lock/LCK..ttyUSB0這個文件存在痹筛。
/var/lock/LCK..ttyUSB0這個文件莺治,當(dāng)串口被占用時,這個文件存在帚稠。如果串口被釋放谣旁,這個文件會被刪掉。但是滋早,此時沒有這個進(jìn)程使用串口榄审,可以推斷,是進(jìn)程在使用串口的過程中出錯了杆麸。
解決方法1:
手動將/var/lock/LCK..ttyUSB0刪掉搁进,可以繼續(xù)使用。
解決方法2:
手動將/var/lock/LCK..ttyUSB0刪掉昔头,仍然不能正常通信饼问。要么重新插拔USB線,要么重啟pc揭斧。所以莱革,考慮在使用這個usb口之前,進(jìn)行一次disable-enable的操作讹开,確保usb被釋放盅视。
步驟:
- 查看串口線使用的usb口
xzht@xzht-HP-Desktop:~$ ll /dev/ttyUSB*
crw-rw-rw- 1 root root 188, 0 Jul 9 15:20 /dev/ttyUSB0
xzht@xzht-HP-Desktop:~$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
|__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 14, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 2: Dev 14, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 4: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
|__ Port 5: Dev 5, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 5: Dev 5, If 1, Class=Wireless, Driver=btusb, 12M
|__ Port 10: Dev 6, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 15, If 0, Class=Vendor Specific Class, Driver=pl2303, 12M
串口線是最下面一行,driver=pl2303萧吠。
2)先disable這個usb設(shè)備:$ echo '1-10.2' | sudo tee /sys/bus/usb/drivers/usb/unbind
這時查看usb設(shè)備左冬,提示找不到了
xzht@xzht-HP-Desktop:~$ ll /dev/ttyUSB*
ls: cannot access '/dev/ttyUSB*': No such file or directory
3)再次enable這個usb設(shè)備:$ echo '1-10.2' | sudo tee /sys/bus/usb/drivers/usb/bind
查看usb設(shè)備桐筏,這次就有了
xzht@xzht-HP-Desktop:~$ ll /dev/ttyUSB*
crw-rw-rw- 1 root root 188, 0 Jul 9 15:35 /dev/ttyUSB0
更新:
經(jīng)過與tony溝通纸型,上面的方法2,可能造成設(shè)備被disable之后不能enable成功的情況梅忌,所以狰腌,使用的另一種方法是,使用lsof查出占用該設(shè)備的進(jìn)程牧氮,然后殺掉該進(jìn)程:
18 if [ -e /dev/ttyUSB0 ]; then
19 sudo chmod 777 /dev/ttyUSB0
20 TTYPID=(lsof /dev/ttyUSB0 | grep ttyUSB0 | awk '{printf2}')
21 if [ ? -eq 0 ]; then 22 echo "process id:TTYPID"
23 if [ "TTYPID" != "" ]; then 24 kill -9TTYPID
25 fi
26 fi
27
28 if [ -e /var/lock/LCK..ttyUSB0 ]; then
29 sudo rm -f /var/lock/LCK..ttyUSB0
30 fi
31 else
32 echo "no /dev/ttyUSB0 is found. 找不到附件板的連接"
33 exit
34 fi