1、情况说明
当设备接入过的出口设备后,设备的插入次序不同,会导致系统无法确认那个串口是那个设备,因此需要正对每个串口设备重新命名,命名之后将会准确的识别到对应的设备
2、查看设备信息
ls /dev/tty*
3、查看串口设备信息
udevadm info /dev/ttyUSB0
4、树莓派多串口设备命名绑定
查询USB串口设备
ls -l /dev/tty*
获取到当前使用的USB口后,输入代码
udevadm info /dev/ttyUSB0 //设备名视上图输出的usb端口名而定
P: /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1/1-1.1:1.0/ttyUSB0/tty/ttyUSB0
N: ttyUSB0
L: 0
S: serial/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.1:1.0-port0
S: serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0
E: DEVPATH=/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1/1-1.1:1.0/ttyUSB0/tty/ttyUSB0
E: DEVNAME=/dev/ttyUSB0
E: MAJOR=188
E: MINOR=0
E: SUBSYSTEM=tty
E: USEC_INITIALIZED=18286069882
E: ID_BUS=usb
E: ID_VENDOR_ID=067b
E: ID_MODEL_ID=2303
E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller
E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI
E: ID_VENDOR_FROM_DATABASE=Prolific Technology, Inc.
E: ID_MODEL_FROM_DATABASE=PL2303 Serial Port
E: ID_VENDOR=Prolific_Technology_Inc.
E: ID_VENDOR_ENC=Prolific\x20Technology\x20Inc.
E: ID_MODEL=USB-Serial_Controller
E: ID_MODEL_ENC=USB-Serial\x20Controller
E: ID_REVISION=0400
E: ID_SERIAL=Prolific_Technology_Inc._USB-Serial_Controller
E: ID_TYPE=generic
E: ID_USB_INTERFACES=:ff0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=pl2303
E: ID_PATH=platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.1:1.0
E: ID_PATH_TAG=platform-fd500000_pcie-pci-0000_01_00_0-usb-0_1_1_1_0
E: DEVLINKS=/dev/serial/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.1:1.0-port0 /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0
E: TAGS=:systemd:
你会得到下文类似内容,这就是usb口的内容,其中关键数据是
E: ID_PATH=platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.1:1.0
之后打开规则文件
sudo vim /etc/udev/rules.d/99-com.rules
将下面一段代码插入规则文件最后
SUBSYSTEM=="tty", ENV{ID_PATH}=="platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.1:1.0", SYMLINK+="ttyUSBB" #"ttyUSBB"为人为设置的名称
如下图
保存退出重启。
sudo reboot
重启后再次输入
ls -l /dev/tty*
可见如下图
至此命名成功
背后逻辑是:每个物理上的USB口都有唯一的ID_PATH,我们起的名字跟ID_PATH绑定,即我们给每个物理上的USB接口命名。
上图的ttyUSBB->ttyUSB0意思是,我们的命名指向的USB系统命名。
因为有的串口助手,比如cutecom,去打开串口,串口号用的还会是系统的命名。
但是程序里调用接口就直接可以用我们自己改的名字了。
最后贴上命名完之后的图,插了两个usb。