ros 配置udev

显示已经链接设备

lsusb

显示挂载点

ls /dev/ttyACM* /dev/ttyUSB*

可以看到 ttyUSB0ttyUSB1 对应哪一个设备不确定,因此,我们就需要一种方法来保证每次开机后唯一的设备挂载点对应一个确定的设备,这样我们的程序就可以正确操控相应的USB设备了。

/etc/udev/rules.d 文件夹创建一个 .rules 文件,比如叫做 car.rules
比如添加一下内容

KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="666", SYMLINK+="car"

ATTRS为设备号,是lsusb看到的。MODE权限,SYMLINK挂载名为car,这样在程序调用 /dev/car 就得到实际设备,从而自己会对应ttyUSB* 。这样不管插那个口都能识别了。

弄完时候重启udev 就可以了

sudo service udev reload
sudo service udev restart

最后插上设备,看看绑定是否成功

ls -l /dev/car

设备ID相同时

使用 dmesg | grep -i usb 检测USB的情况
拔可以得到变化的USB设备详细信息,就算是设备的ID相同,那硬件的kernel值也是不同的。假设我们的目标硬件是1-3。
我们进入rules进行编辑:

KERNELS=="1-3*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",MODE:="0666", SYMLINK+="laser"

注意这里是KERNELS 不是KERNEL。可以只是追加该参数

原文地址:https://www.cnblogs.com/wjundong/p/11109639.html