我們在插入串口之後,總要查看一下串口號,然後纔可以連接到對應的串口。但是在Linux下,我們可以將對應的設備編寫到rules文件,在我們插入新設備時候,就可以直接根據我們設置的串口名字找到對應設備,這可以應用到自啓動的設備中,不會因爲串口號不對應導致不必要的錯誤。小蝌蚪再也不用擔心找不到媽媽啦~
一、當掛載的驅動各不相同時
說明:我們在ubuntu下插入驅動,cp2102會顯示爲ttyACM*,而ch340會顯示爲ttyUSB*,我們可以依據這個屬性將兩類驅動使用系統識別我們插入的是什麼設備,此時的串口號將不再作爲判別外設的條件。我們只要插入此類驅動所驅動的串口,就可以不管他是哪個端口,統一命名爲下文的“myusb”。
設置流程:
查看串口信息
lsusb
編輯串口信息(以命名爲myusb爲例)
sudo vi /etc/udev/rules.d/myusb.rules
寫入以下信息
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="myusb"
重新插拔後搜索
ls -l /dev |grep ttyUSB
應顯示
lrwxrwxrwx 1 root root 7 Nov 29 14:03 myusb-> ttyUSB1
crw-rw-rw- 1 root dialout 188, 0 Nov 29 14:03 ttyUSB0
crwxrwxrwx 1 root dialout 188, 1 Nov 29 14:03 ttyUSB1
二、當有掛載驅動有相同時
說明:有時候我們想要有相同的掛載的驅動時候,此時單靠識別時ACM*還是USB*是不可以做出正確選擇的,所以我們要採用更精細的區分方式作別判別外設的條件。此時的驅動類別已經不是判斷條件,現在的判斷條件是我們插入的串口在電腦上的位置。
設置流程:
首先插入一個串口,查看usb信息並取出kernels屬性,假設我們當前插入的串口號爲usb1
udevadm info --attribute-walk --name=/dev/ttyUSB1 | grep KERNELS
此時顯示
我們可以看到
KERNELS==“2-2.2”
這個“2-2.2”就是我們想要的屬性
我們此時編寫.rules
sudo vi /etc/udev/rules.d/myusb.rules
寫入
KERNELS=="2-2.2", KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60"