【问题记录】当机器人存在多个串口需要绑定时udevadm的作用

一、正常绑定

输入sudo udevadm info -a /dev/ttyUSBx | grep KERNELS 命令

会出现KERNELS的编号,记录编号。

修改规则文件/etc/udev/rules.d/99-usb.rules

添加以下命令

KERNEL=="ttyUSB*", KERNELS=="2-1.2:1.0", MODE:="0666", GROUP:="dialout", SYMLINK+="base"

  • 详细解释如下:
  • KERNEL=="ttyUSB": 这个条件匹配设备名称以 ttyUSB 开头的设备(例如 ttyUSB0, ttyUSB1 等)。
  • KERNELS=="2-1.2:1.0": 这个条件用于匹配特定的设备路径或总线 ID。2-1.2:1.0 是设备的唯一标识符,表示从 USB 总线上的特定端口连接的设备。
  • MODE:="0666": 这个动作设置设备文件的权限。0666 表示所有用户都可以读取和写入该设备文件。
  • GROUP:="dialout": 这个动作将设备文件的所属组设置为 dialout,这样只有属于该组的用户才能访问该设备。
  • SYMLINK+="base": 这个动作创建一个名为 base 的符号链接,指向匹配的设备文件。这使得访问该设备更加方便,因为可以使用 base 而不是完整的设备路径。

修改完规则后,使用以下命令重新加载 udev 规则:

sudo udevadm control --reload-rulessudo udevadm trigger

输入ls -l /dev |grep -E ‘ttyUSB’查看有无配置成功

二、需要添加权限

如果遇到特殊设备需要添加某些权限,例如可以加入以下规则:

ACTION=="add",SUBSYSTEMS=="usb",ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="0053", GROUP="users", MODE="0777"

这条规则的目的是为特定的 USB 设备(具有指定的厂商和产品 ID)设置开放的访问权限。

详细解释:

ACTION=="add": 这个条件表示规则适用于添加新设备时的操作。当有设备被连接到系统时,此规则会被触发。

SUBSYSTEMS=="usb": 这个条件指定该规则仅适用于 USB 设备。它确保只有当设备属于 USB 子系统时,规则才会生效。

ATTRS{idVendor}=="04d8": 这个条件匹配 USB 设备的厂商 ID。04d8 是特定厂商的标识符,只有匹配该 ID 的设备才会执行此规则。

ATTRS{idProduct}=="0053": 这个条件匹配 USB 设备的产品 ID。0053 是特定产品的标识符,结合厂商 ID,确保只对特定的设备生效。

GROUP="users": 这个动作将设备文件的所属组设置为 users,使得该组的用户能够访问该设备。

MODE="0777": 这个动作设置设备文件的权限为 0777,表示所有用户(拥有者、组用户和其他用户)都可以读取、写入和执行该设备文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/58315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?

大家好,我是锋哥。今天分享关于【kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?】面试题?希望对大家有帮助; kafka 分布式(不是单机)的情况下,如何保证消息的…

掌握闲鱼商品 API 接口对接流程

对接闲鱼商品 API 接口主要有以下步骤: 注册成为闲鱼平台合作伙伴: 访问闲鱼开放平台(如添加 TNY264278 卫星号),按照平台要求进行账号注册。你需要提供个人或公司的相关信息,如联系方式、企业资质&#xf…

微信小程序时间弹窗——年月日时分

需求 1、默认当前时间2、选择时间弹窗限制最大值、最小值3、每次弹起更新最大值为当前时间&#xff0c;默认值为上次选中时间4、 minDate: new Date(2023, 10, 1).getTime(),也可以传入时间字符串new Date(2023-10-1 12:22).getTime() html <view class"flex bb ptb…

【UE5.3 Cesium for Unreal】编译GlobePawn

目录 前言 效果 步骤 一、下载所需文件 二、下载CesiumForUnreal插件 三、处理下载的文件 四、修改代码 “CesiumForUnreal.uplugin”部分 “CesiumEditor.cpp”部分 “CesiumEditor.h”部分 “CesiumPanel.cpp”部分 “IonQuickAddPanel.cpp”部分 “IonQuickAd…

单目相机标定

利用ROS的Camera Calibration工具进行USB单目相机标定 标定前准备的东西编译运行标定代码移动棋盘格标定结果总结单目相机标定参考网址 标定前准备的东西 1.大型棋盘格:具有已知尺寸的棋盘格。本教程使用的是一个8x6的棋盘格,方格边长为108毫米。标定时使用棋盘格的内部顶点…

截取一个字符串的一部分赋值给另一个字符串

文章目录 截取一个字符串的一部分赋值给另一个字符串1.string s(s1,pos,len)2.s.substr(pos,n) 返回一个string 截取一个字符串的一部分赋值给另一个字符串 1.string s(s1,pos,len) s是string s1从下标pos开始len个字符的拷贝。如果pos>s1.size()&#xff0c;构造函数未定…

Nginx+Lua脚本+Redis 实现自动封禁访问频率过高IP

1 、安装OpenResty 安装使用 OpenResty&#xff0c;这是一个集成了各种 Lua 模块的 Nginx 服务器&#xff0c;是一个以Nginx为核心同时包含很多第三方模块的Web应用服务器&#xff0c;使用Nginx的同时又能使用lua等模块实现复杂的控制。 &#xff08;1&#xff09;安装编译工具…

uniapp通过id获取div的宽度,高度,位置等(应该是 任意平台都通用 )

uniapp通过id获取div的宽度&#xff0c;高度&#xff0c;位置等&#xff08;应该是 任意平台都通用 &#xff09; <template><view class"" id"domId"></view> </template>// 如果获取的dome高度等不对&#xff0c;还需要加上延迟…

[Linux] linux 软硬链接与动静态库

标题&#xff1a;[Linux] linux 软硬链接与动静态库 个人主页水墨不写bug &#xff08;图片来源于网络&#xff09; /** _oo0oo_* o8888888o* 88" . "88* (| -_- |)* …

力扣-最小覆盖子串

76. 最小覆盖子串 - 力扣&#xff08;LeetCode&#xff09; 给定一个字符串s,和目标字符串t&#xff0c;需要找出s中包含t中所有字符且长度最小子串&#xff0c;输出这个子串 滑动窗口&#xff0c;初始时左右指针都指向s的第一个字符,对于每个遍历到的窗口&#xff0c;判断当…

通过cv库智能切片 把不同的分镜切出来 自媒体抖音快手混剪

用 手机自动化脚本&#xff0c;从自媒体上获取视频&#xff0c;一个商品对应几百个视频&#xff0c;我们把这几百个视频下载下来&#xff0c;进行分镜 视频切片&#xff0c;从自媒体上下载视频&#xff0c;通过cv库用直方图识别每个镜头进行切片。 下载多个图片进行视频的伪原…

学习threejs,使用粒子实现下雪特效

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.Points简介1.11 ☘️…

如何实现PHP的安全最大化

要实现PHP的安全最大化&#xff0c;并避免SQL注入漏洞和XSS跨站脚本攻击漏洞&#xff0c;你需要采取一系列的安全措施。以下是一些关键步骤和最佳实践&#xff1a; 1. 输入验证和过滤 验证用户输入&#xff1a;对所有用户输入进行验证&#xff0c;确保它们符合预期格式。例如…

C++之多态的深度剖析

目录 前言 1.多态的概念 2.多态的定义及实现 2.1多态的构成条件 2.1.1重要条件 2.1.2 虚函数 2.1.3 虚函数的重写/覆盖 2.1.4 选择题 2.1.5 虚函数其他知识 协变&#xff08;了解&#xff09; 析构函数的重写 override 和 final关键字 3. 重载&#xff0c;重写&…

Codeforces Round 919 (Div. 2)

B. Summation Game 题意 输入 输出 思路 遇到两人博弈问题&#xff0c;可以分别贪心&#xff0c;先贪心一个固定下来&#xff0c;然后遍历贪心另一个人 void solve() {int n, k, x;cin >> n >> k >> x;vector<int> arr(n 1);int *s new int[n …

GIT分布式版本控制系统基础操作

问题大纲 1、什么分布式版本控制系统 2、简述Git的使用分为哪几个步骤 3、克隆和拉取的区别是什么&#xff1f; 4、git相关的所有指令 一、分布式版本控制系统 分布式版本控制系统是一种版本控制系统&#xff0c;它允许每个用户都拥有完整的项目历史记录和版本控制信息。与…

Soanrquber集成Gitlab 之 gitlab用户配置和身份验证

集成Gitlab &#xff1a; gitlab用户配置和身份验证 说明&#xff1a; 使得Sonarquber的用户登录与Gitlab的用户登录/认证模块同步 什么是 SonarQube&#xff1f; SonarQube 是一个开源的代码质量管理平台&#xff0c;用于持续检查和分析代码的质量和安全性。它提供了多种功…

python multiprocessing lock锁在相同父进程ID起作用

python多进程之间实现数据共享需要使用queue队列&#xff0c;全局变量不起作用 lock锁在同一个主进程ID下子进程ID之间起作用&#xff0c;不同的主进程ID互不干扰 下面来看代码 import multiprocessing,time,datetime a1 def demo1():global aa1print(进程1,a,datetime.dateti…

EasyPlayer.js网页播放器,支持FLV、HLS、WebSocket、WebRTC、H.264/H.265、MP4、ts各种音视频流播放

EasyPlayer.js功能&#xff1a; 1、支持解码H.264视频(Baseline, Main, High Profile全支持&#xff0c;支持解码B帧视频) 2、支持解码H.265视频&#xff08;flv id 12&#xff09; 3、支持解码AAC音频(LC,HE,HEv2 Profile全支持) 4、支持解码MP3音频以及Speex音频格式 5、可…

【linux网络编程】| socket套接字 | 实现UDP协议聊天室

前言&#xff1a;本节内容将带友友们实现一个UDP协议的聊天室。 主要原理是客户端发送数据给服务端。 服务端将数据再转发给所有链接服务端的客户端。 所以&#xff0c; 我们主要就是要实现客户端以及服务端的逻辑代码。 那么&#xff0c; 接下来开始我们的学习吧。 ps:本节内容…