【ROS学习】修改串口的别名

最近遇到一个问题,就是由于我需要插多个串口设备在树莓派上进行读取数据,但是如果是先插上STM32上报数据的串口,得到的串口号为/dev/ttyUSB0,而再插激光雷达的串口,得到的串口号为/dev/ttyUSB1。But!反过来顺序插的话串口号就变了!!!每次修改配置文件太难受了!因此,如果有一种可以把我们的串口映射到一个别名上,那该多好啊!!!Don't worry!方法总比困难多!接下来记录下修改串口的具体步骤!

目录

一、查看串口号

二、编写规则文件

三、重加载和重启

四、其他问题


一、查看串口号

lsusb

 我们可以发现第二行就是我们插的CP2102串口芯片显示的相关信息~

Bus 001 Device 003: ID 10c4:ea60 Silicon Labs CP210x UART Bridge

二、编写规则文件

我们需要进入以下的路径创建规则文件:

cd /etc/udev/rules.d/

创建一个规则文件:

sudo vim robot_base.rules 
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="robot_base"

KERNEL:设备在内核的名称(由于我们是串口芯片,总线名称为ttyUSB*)

ATTRS{idVendor}以及ATTRS{idProduct}:id号(我们刚刚查看的lsusb里面那一块ID号)

也可以运行以下命令查看:

udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)

 kernel写这样也可以滴!

 MODE:权限,(7代表设置读、写、执行权限,3个7代表给所有用户、群组用户、其他用户都设置可读可写可执行的权限)

r(读)4
w(写)2
x(执行)1

SYMLINK:设置别名(我设置的为robot_base)

三、重加载和重启

重新加载udev

sudo service udev reload

重启udev

sudo service udev restart

查看下最终映射情况

ll /dev | grep ttyUSB

 我们可以看到robot_base 映射到 ttyUSB0

因此我们只需在我们设置串口端口时写为如下即可:

 之前是这样写的:

这样就好啦!

四、其他问题

还没有结束……设置完一个后,发现我TM两个串口芯片都是CP2102……芯片ID号都一致。裂开了……(如果是不同芯片上面的方法是可以区分开的!)这该咋整!

通过查询USB具体信息,我发现一个地方可以区分开,那就是端口!!(这个端口就是我们字面的意思,不同的插口!)

udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)

 

 也就是我们只要记住我们的设备是固定插哪个端口,就能区分串口号啦!

接下来修改下我们的规则~

robot_base.rules:

KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60",ATTRS{devpath}=="1.2", MODE:="0777", SYMLINK+="robot_base"

rplidar.rules: 

KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{devpath}=="1.1", MODE:="0777", SYMLINK+="rplidar"

然后重新加载和重启即可~!

我们测试一下~!

我再调转下插接先后顺序!

 我们可以发现,不管我们先后插哪个设备,都可以映射到我们想要的串口!!

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值