如果树莓派绑定多个串口,就有可能出现问题:Linux是按照插入顺序对设备进行编号的,例如ttyUSB0,ttyUSB1或者ttyACM0,ttyACM1等等,那么每次重新开机的时候容易出现设备不对应编号的情况,这就无法在代码中固定设备的端囗号,因此我们必须想办法将设备的端口号固定。、

将单台设备端口号固定

【适用情况】:
适用于某个设备插上之后,它的ID是唯一的,与其他设备不同。
1、查询ID:

Isusb

得到:
Bus 001 Device 010:ID 10c4:ea60 Cygnal Integrated Products,Inc.CP210x UART Bridge/
myAVR mySmartUSB light
Bus 001 Device 005:IDObda:5411 Realtek Semiconductor Corp.
Bus 001 Device 008:ID 24ae:1100
Bus 001 Device 001:ID 1d6b:0002 Linux Foundation 2.0 root hub
以Device010为例:其ID是:10c4:ea60
2、修改文件:
sudo vim/etc/udev/rules.d/99-com.rules
在文件最后面添加:
KERNEL==“ttyUSB*”,ATTRS{idVendor}“10c4”,ATTRS{idProduct}“ea60”,
MODE:=“0777”,SYMLINK+=“whbot”
其中whbot是我们将其重命名的设备,之后我们直接访问whbot即可。换句话说,之后开机无论ID为
10c4:ea60的设备被分配为ttyUSB0或者ttyUSB1,始终都可以通过whbot来访问它。
3、重新配置:
sudo /etc/init.d/udev restart
并且重新拔插USB设备。建议:重新启动系统。
4、启动后,查看是否存在:
Is-I/dev lgrep ttyUSB
就能看到重定向的信息啦,我们之后在代码里直接访问/dev/whbot即可访问该设备。

多台相同ID的设备端口号固定

【适用情况】:
多合相同设备,例如多台arduino,它们被分配为ttyACM0和ttyACM1,通过第一个方法我们发现它们
的ID都一样。
1、查询:
udevadm info /dev/ttyUSB0 或者dmesg或者ls -l /sys/class/tty
应该可以得到x-x.x形式的设备:

树莓派绑定串口_vim

2:修改文件:

cd …/…/etc/udev/rules.d/

然后输入:

sudo vim 98-com-udev.rules

在udev文件中加入:

KERNEL=="ttyACM",KERNELS==“2-7.3”, MODE:=“0666”, GROUP:=“dialout”, SYMLINK+=“ttyUSB001”*

绑定设备号用:wq来实现

3、重新配置:
sudo /etc/init.d/udev restart
并且重新拔插USB设备。建议:重新启动系统。
4、启动后,查看是否存在:
Is-I/dev lgrep ttyACM
就能看到重定向的信息啦,我们之后在代码里直接访问/dev/whbot即可访问该设备。