ubuntu下给不同串口设置别名

目录

一、绑定设备ID

1.查看设备ID

2.编写usev规则

3.重新加载usev规则

4.查看

二、绑定USB端口号

1.先插入一个串口,查看USB设备信息

2.查看USB转串口信息

3.编写usev规则

4.重新加载usev规则

5.查看


在Ubuntu环境下,有时候工控机或者arm开发板需要连接多个传感器,而这些传感器通过不同的串口来采集数据,由于Ubuntu上电会导致串口别名错乱,所以需要为串口设置别名。

设置别名就是 设置软链接,它可以链接到原始文件,类似于windows下的快捷方式。它实际上是一个特殊的文件,其中包含了另一个文件的位置信息。如果原始文件被删除或移动,软连接将失效。

为串口设置别名主要分为绑定设备ID和绑定USB端口号两种方法。

一、绑定设备ID

绑定设备ID适用于USB转串口的设备ID唯一的情况,这时为了程序编写的方便,为串口指定一个特殊的名称做标识。具体方法如下:

1.查看设备ID

要绑定到具体的串口设备,必须知道其VID,PID。命令行下输入:

bash 复制代码
lsusb

显示:

查看到我们要操作的USB转串口的VID:1a86,PID:7523。此处可以看到四个串口的VID和PID一样,证明串口属于同一厂家,所以第一种方法绑定设备ID不合适,下面的步骤为假设只有一个串口,而不是四个。

2.编写usev规则

命令行下输入:

bash 复制代码
sudo vi /etc/udev/rules.d/89-usb-serial.rules

"89-usb-serial.rules"名称可根据实际情况自行指定,在此文件中增加:

bash 复制代码
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666", SYMLINK+="myserial"

PID,VID为我们在步骤1)中查看到的,"myserial"为我们为此串口设备起的别名,可根据实际情况指定。

3.重新加载usev规则

bash 复制代码
sudo udevadm control --reload-rules
sudo service udev restart
sudo udevadm trigger

4.查看

bash 复制代码
ls /dev/my*

可以看到输出/dev/myserial

这样,绑定设备ID给USB转串口起别名功能就实现好了。这里要注意,因绑定的是USB转串口的设备ID,因此同一种USB转串口是不能同时使用的(它们的ID相同)。

二、绑定USB端口号

由上面我打印串口信息可知,绑定设备ID有个缺陷,当使用多个相同厂家的USB转串口设备时会出现问题,因为他们的VID,PID是一样的。这时就需要绑定到具体的USB端口号,毕竟端口号是可以唯一确定的。具体方法如下:

1.先插入一个串口,查看USB设备信息

bash 复制代码
ls /dev/ttyUSB*

2.查看USB转串口信息

bash 复制代码
udevadm info -a -n /dev/ttyUSB0

显示:

我们可以将USB转串口的别名绑定到"2-3.2:1.0"这个层级,名称根据实际情况不同。

3.编写usev规则

bash 复制代码
sudo vi /etc/udev/rules.d/rotation_detector.rules

"rotation_detector.rules"名称可根据实际情况自行指定,在此文件中增加:

bash 复制代码
KERNELS=="2-3.2:1.0", SUBSYSTEMS=="usb", MODE:="0666", SYMLINK+="rotation_detector"

"rotation_detector"为我们为此串口设备起的别名,可根据实际情况指定。

4.重新加载usev规则

bash 复制代码
sudo udevadm control --reload-rules
sudo service udev restart
sudo udevadm trigger

5.查看

这样,绑定USB端口号给USB转串口起别名功能就实现好了。这里要注意,USB口接口不能随意变动,否则会引起问题。

类比上述方法,我们在.rules文件夹里加入所有的串口

再次给工控机重新上电,查看软连接:

此时可以看到/dev/rotation_detector由前面的ttyUSB0切换为了ttyUSB1,但是我的上层代码里面定义的串口是/dev/rotation_detector,所以不影响使用/dev/rotation_detector串口。

总结,本文介绍Ubuntu环境下为串口设置别名的方法,可根据实际使用场景进行选择。

参考链接:

Ubuntu环境下为串口设置别名_mode="0666", symlink+=-CSDN博客

在ubuntu系统下给串口起别名_ubuntu串口别名-CSDN博客

相关推荐
pk_xz12345627 分钟前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强30 分钟前
Linux之sed命令详解
linux·运维·服务器
努力变厉害的小超超1 小时前
ArkTS中的组件基础、状态管理、样式处理、class语法以及界面渲染
笔记·鸿蒙
Lary_Rock3 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
云飞云共享云桌面4 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq5 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮6 小时前
Linux 使用中的问题
linux·运维
aloha_7896 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
dsywws7 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零8 小时前
【C++】socket套接字编程
linux·服务器·网络·c++