1.將串口設備插入USB口,通過lsusb查看端口信息。例如:
ID 1a86:7523 表示usb設備的ID(這個ID由芯片制造商設置,可以唯一表示該設備)
1a86 usb_device_descriptor.idVendor
7523 usb_device_descriptor.idProduct
2.在/etc/udev/rules.d/下創建任意名稱的規則配置文件,如:usb.rules。
KERNEL=="ttyUSB*", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", MODE:="0666", SYMLINK+="user_uart" KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666", SYMLINK+="mcu_uart"
意思就是匹配sys中內核名為ttyUSB*的設備,屬性匹配依據生產商編號idVendor和產品號idProduct, 設定讀寫權限為0777, 符號鏈接名為user_uart-----PL2303串口轉USB, mcu_uart----CH340串口轉USB。
idVendor和idProduct由 lsusb -vvv 命令查看。
sudo udevadm control --reload-rules
sudo udevadm trigger
重新拔插兩個串口設備
ls -l /dev |grep ttyUSB
就可以看到/dev/user_uart指向/dev/ttyUSB0, /dev/mcu_uart指向/dev/ttyUSB1. 這樣以來,我只要在程序里打開/dev/user_uart或/dev/mcu_uart就可以一直准確的打開指定的串口設備了。
二、綁定硬件序列號,查找serial(適用於相同生產商生產的相同USB串口)
插入需要綁定的串口,或者 lsusb 查看需要綁定的串口名
1.udevadm info --attribute-walk --name=/dev/ttyUSB0
我的硬件序列號:ATTRS{serial}=="FTSYWCXZ"這個號是唯一的
2.vim /etc/udev/rules.d/usb.rules
ATTRS{serial}=="FTSYWCXZ", MODE:="0777", GROUP:="dialout", SYMLINK+="usb_0"
3.ls -l /dev |grep ttyUSB
4.可以通過/dev/usb_0打開串口設備
fangfa3
KERNELS=="1-2.4:1.0",MODE:="0777", GROUP:="dialout", SYMLINK+="my_slaver" KERNELS=="1-2.2:1.0",MODE:="0777", GROUP:="dialout", SYMLINK+="my_uwb" KERNELS=="1-2.3:1.0",MODE:="0777", GROUP:="dialout", SYMLINK+="my_imu"
參考鏈接:https://blog.csdn.net/qq_35386301/article/details/84566214