当前位置: 首页 > article >正文

ubuntu20.04下如何防止同一类型串口设备插入USB口无法区分到底是从/dev/ttyUSB0还是/dev/ttyUSB1读取数据

设备插入电脑后,分别通过udevadm info -a -n /dev/ttyUSB0和udevadm info -a -n /dev/ttyUSB1指令查看相关USB设备的信息.从中可以看到其中一个设备位于busnum 1上,即总线1上,且位于端口3上,即devpath 3,根据这两个信息,可以有效区分该设备是插在哪个usb口上.

也可以通过lsusb -t指令查看具体情况,也即总线1端口3如下图:

然后在/etc/udev/rules.d/下面新建一个99-my-device-rules.rules的文件,其中99是为了最后加载,因为有很多rules文件是70等小数字开头的,数字越小越先加载.

文件内加入内容:

ACTION=="add", SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{busnum}=="1", ATTRS{devpath}=="3", SYMLINK+="my_usb0_device"

这样系统在有USB设备插入id为总线1,端口为3的USB时,系统就会在/dev下建立一个名字为my_usb0_device的文件,我们只需要通过/dev/my_usb0_device读取USB数据就行了,虽然此时也会有/dev/ttyUSB0这个端口,但不影响从/dev/my_usb0_device读取数据.这样就能有效避免只有一个设备时,系统总是先有/dev/ttyUSB0,当第二个设备插入再有/dev/ttyUSB1的情况了,避免了起机冲突的问题.

上面文件输入后,需要

sudo udevadm control --reload-rules

sudo udevadm trigger

来使得新的rules文件生效.

此时重新插拔usb设备就会在/dev下出现my_usb0_device的文件或者输入指令

ls -l /dev | grep my_

就可以看到如下的数据,显示了类似的相应映射关系


http://www.kler.cn/a/589497.html

相关文章:

  • Java 8 Stream API:传统实现和流式编程的范式对比
  • 道格拉斯-普克算法
  • Android Room 框架公共模块源码深度剖析(四)
  • linux环境安装qnn_sdk 采坑记录
  • 事件驱动架构(EDA):微服务世界的未来趋势
  • LeetCode[206]反转链表
  • MySQL连接较慢原因分析及解决措施
  • C++基础 [五] - String的模拟实现
  • FlinkCDC 达梦数据库实时同步详解
  • java,poi,提取ppt文件中的文字内容
  • LLaMA-Factory微调sft Qwen2.5-VL-7B-Instruct
  • 【etcd】
  • 【通义千问】蓝耘智算 | 智启未来:蓝耘MaaS×通义QwQ-32B引领AI开发生产力
  • 本地部署DeepSeek-R1(Dify升级最新版本、新增插件功能)
  • 【嵌入式硬件】三款DCDC调试笔记
  • 【地图 Map】——8
  • C++进阶——AVL树的实现
  • FPGA中级项目3——IP核之时钟管理单元
  • [Linux]进程控制
  • 视频孪生技术赋能桥梁智慧化检测管理与数字化建设