跳至主要內容

ros学习-设置权限和串口别名规则

荒芜...大约 2 分钟ros

ros学习-设置权限和串口别名规则

使用多个传感器时,根据传感器插入的顺序,对应的串口名会发生变化,每次都手动调整配置文件的话会比较麻烦。可以通过规则文件设置别名来解决这个问题,同时可以设置自动赋予全部权限规则

解决权限问题

接入传感器,查看设备信息

 ls -l /dev/ttyUSB0
设备信息
设备信息

只有读写权限无执行权限

新建一个ttyUSB.sh脚本文件

touch ttyUSB.sh

打开该文件,写入以下内容,保存

echo 'KERNEL=="ttyUSB*", MODE:="0777", GROUP:="dialout"' >/etc/udev/rules.d/ttyUSB.rules

service udev reload
sleep 2
service udev restart

给脚本文件授权

sudo chmod 777 ttyUSB.sh

运行脚本

sudo sh ttyUSB.sh

重加载和重启使规则生效

sudo udevadm trigger

授权(将当前用户添加进dialout组):

sudo usermod -a -G dialout $USER

$USER为当前用户变量

再次查看设备信息

设备信息
设备信息

已经拥有执行权限

设置这个规则后,以后只要是ttyUSB设备,都会自动赋予777全部权限

设置串口别名

查看设备udev信息及属性

udevadm info --attribute-walk --name=/dev/ttyUSB0

找到这几个属性

设备属性
设备属性

新建一个wheeltec_udev.sh

touch wheeltec_udev.sh

编写wheeltec_udev.sh脚本

echo  'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="0003", GROUP:="dialout", SYMLINK+="wheeltec_FDI_IMU_GNSS"' >/etc/udev/rules.d/wheeltec_fdi_imu_gnss.rules

service udev reload
sleep 2
service udev restart

KERNEL=="ttyUSB*": KERNEL是指设备的内核名称,ttyUSB*适用于所有以ttyUSB开头的设备,通常指的是通过USB连接的串行设备。 ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60": 精确匹配特定厂商和产品的设备 ATTRS{serial}=="0003": 设备序列号(serial)为0003 区分同一型号但具有不同序列号的多个设备。 GROUP:="dialout":设备文件的所属组为dialout。属于dialout组的用户都将有权访问此设备 SYMLINK+="wheeltec_FDI_IMU_GNSS":设置别名wheeltec_FDI_IMU_GNSS

给脚本文件授权

sudo chmod 777 wheeltec_udev.sh

运行脚本

sudo sh wheeltec_udev.sh

重加载和重启使规则生效

sudo udevadm trigger
执行结果
执行结果

别名设置成功

你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.2.0