前言
在Ubuntu中,有時使用多個USB設備時,出現USB埠號混亂;
比如:A設備本來對應 /dev/ttyUSB0,B設備對應 /dev/ttyUSB1;
發現重啟系統后,A設備本來對應 /dev/ttyUSB1,B設備對應 /dev/ttyUSB0,兩個設備的分配的埠號不固定的情況,
Linux是按照插入順序對設備進行編號的;這種不穩定因素,使得撰寫驅動時麻煩,于是本文參考了linux社區和博客文章的方法,系結各個USB設備的埠號,
一、查看USB設備埠資訊
將串口設備插入USB口,通過lsusb查看埠資訊,例如:
接入了兩個新的USB設備,如下圖紅色框中的資訊;一個是FT232(ID是0403:6001)、一個是HL-340(ID是1a86:7523);

ID 0403:6001 表示usb設備的ID(這個ID由芯片制造商設定,可以唯一表示該設備)
0403 usb_device_descriptor.idVendor
6001 usb_device_descriptor.idProduct
二、創建組態檔
在/etc/udev/rules.d/下創建任意名稱的規則組態檔,如:usb.rules,命令如下
sudo vi /etc/udev/rules.d/usb.rules
編輯資訊:
KERNEL=="ttyUSB*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE:="0777", SYMLINK+="gnss"
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="ultrasound_serial"
匹配sys中內核名為ttyUSB*的設備,屬性匹配依據生產商編號idVendor和產品號idProduct, 設定讀寫權限為0777,;
符號鏈接名為gnss 對應FT232 USB, ultrasound_serial 對應 HL-340串口USB,
三、查看系結情況
idVendor和idProduct由 lsusb -vvv 命令查看
sudo udevadm control --reload-rules
sudo udevadm trigger
重新拔插兩個串口設備
ls -l /dev |grep ttyUSB
![]()
/dev/ultrasound_serial 指向/dev/ttyUSB1;在程式里打開/dev/ultrasound_serial 就可以一直準確的打開指定的串口設備了;可以使用了,
四、使用系結后的USB設備
例如使用ultrasound_serial 設備;打開串口,python代碼:
u_serial = serial.Serial('/dev/ultrasound_serial', 9600)
直接使用/dev/ultrasound_serial ,相當于使用/dev/ttyUSB1
參考
1)https://www.cnblogs.com/long5683/p/11144420.html
2)https://blog.csdn.net/qq_32618327/article/details/103937933
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/276681.html
標籤:其他
