树莓派3b+ 修改USB串口的波特率

news2024/12/26 13:25:03

树莓派3b+ 修改USB串口波特率

  • 1. 背景:需要多个RS232串口
  • 2.问题:多个串口波特率不同
  • 3.解决方案
  • 4.完美方案
  • 错误方案集锦
    • 使用minicom设置ttyUSB0的波特率并保存

1. 背景:需要多个RS232串口

树莓派3B+只有两个串口,一个硬件串口,一个mini串口,其中mini串口波特率不稳定。项目需要树莓派通过串口连接多个设备,因此考虑使用USB转RS232。

2.问题:多个串口波特率不同

串口波特率分别为9600、115200,常规的串口使用ttyAMA0时,已经默认分配为9600,此时需要修改指定的USB的波特率为115200。

3.解决方案

USB和树莓派硬件串口都属于 /dev/ 下的设备,当插入USB设备后,使用 ls -l /dev/tty* 查看USB设备对应的文件名称,一般只有一个USB设备时,名称为 ttyUSB0
使用stty指令集(set tty)sudo stty -F /dev/ttyUSB0 115200
这条命令将串口设备/dev/ttyUSB0的波特率设置为115200。完成此操作后,您可以使用命令stty -F /dev/ttyUSB0再次查询串口设备的实际设置。此时显示如下:
在这里插入图片描述

如果在重启后重新连接到串口设备,并且stty命令的输出速率回归到9600,则可能是因为树莓派重新加载了与串口通信相关的驱动程序并使用了其默认设置。

如果您希望在每次启动树莓派时自动设置串口设备的波特率,可以将stty命令添加到启动脚本中,例如/etc/rc.local文件。

以下是一个示例,将stty命令添加到/etc/rc.local文件中:

1.打开/etc/rc.local文件:

sudo nano /etc/rc.local

2.在文件的exit 0行之前添加以下行:

stty -F /dev/ttyUSB0 115200

注意:如果您的串口驱动使用的设备名称不是“/dev/ttyUSB0”,请改为相应的设备名称。

3.保存并退出文件。

4.重新启动树莓派,您将会发现串口设备的波特率已经设置为115200。

4.完美方案

虽然这种方法可以自动设置串口设备的波特率,但实际上,这并不是一个完美的解决方案,因为它只是通过脚本在启动时设置串口设备的波特率,并不能保证普遍适用于所有情况,特别是在使用不同的串口设备或不同的Linux发行版时。

另一个解决方法是将这些设置添加到udev规则中。udev规则是Linux系统通过检测与设备相关的事件而运行的规则。通过在udev规则中添加命令,我们可以保证在每次连接设备时都会自动运行这些命令。

以下是实例,在udev规则中添加串口设备的波特率设置:

1.首先,打开一个新文件来存储udev规则(如果文件不存在则新建文件):

sudo nano /etc/udev/rules.d/99-usb-serial.rules

2.向文件中添加以下行:

SUBSYSTEM=="tty", ATTRS{idVendor}=="<vendor_id>", ATTRS{idProduct}=="<product_id>", ATTRS{serial}=="<serial_number>", SYMLINK+="ttyUSBa", RUN+="/bin/sh -c 'stty -F /dev/%k 115200'"

请使用实际的供应商ID、产品ID和串行号替换上述规则中的字段。您可以使用以下命令查找设备的供应商ID、产品ID和串行号:

lsusb

返回内容格式如下:

Bus <bus_num> Device <dev_num>: ID <vendor_id>:<product_id> <device information>

实例:

Bus 001 Device 004: ID 0525:a4a2 Qualcomm / Peiker acustic GmbH & Co. KG Bluetooth Device

在此示例中,供应商ID为0525,产品ID为a4a2,设备上可能没有串行号
如果您的USB设备没有串行号,则可以省略 ATTRS{serial} 匹配条件。
以下是例子,在没有USB设备串行号的情况下,如何编辑 udev 规则:

SUBSYSTEM=="tty", ATTRS{idVendor}=="<vendor_id>", ATTRS{idProduct}=="<product_id>", SYMLINK+="ttyUSBa", RUN+="/bin/sh -c 'stty -F /dev/%k 115200'"

在这个例子中,ATTRS{serial}=="<serial_number>" 条件已经被移除。

提取设备的供应商ID、产品ID和串行号后,请将其添加到udev规则中。如果需要为多个串口设备设置不同的波特率,可以在99-usb-serial.rules文件中添加多个类似的规则,每个规则使用唯一的SYMLINK名称即可。

3.然后,重新加载udev规则并重新插入设备以使规则生效:

sudo udevadm control --reload-rules
sudo udevadm trigger

现在,每次连接该设备时,设置都将自动应用到您的串口设备中。


在程序中,通常需要使用固定的设备名称来与 USB 设备进行通信,例如 /dev/ttyUSB0、/dev/ttyUSB1 等。但是,当USB设备数量发生变化时,这些设备名称会发生改变,这会影响程序的正常运行。

为了解决这一问题,udev 提供了一个 SYMLINK 属性,可以将 USB 设备映射到一个固定的设备名称上,这样即使 USB 设备数量变化了,固定的设备名称也不变。

SYMLINK+= 就是 udev 规则中用来实现这个目的的常见语法。例如,以下规则会将匹配到的 USB 设备映射到 /dev/ttyUSBa 设备上:

SUBSYSTEM=="tty", ATTRS{idVendor}=="<vendor_id>", ATTRS{idProduct}=="<product_id>", SYMLINK+="ttyUSBa"

当 udev 检测到满足条件的 USB 设备插入时,就会创建一个名为 /dev/ttyUSBa 的符号链接,指向实际的 USB 设备文件。这样在程序中就可以一直使用 /dev/ttyUSBa 这个设备名称。

错误方案集锦

使用minicom设置ttyUSB0的波特率并保存

minicom只是一个串口通信工具,可用来与串口设备通信。
在minicom中修改只是更改了minicom的默认配置,但这不会直接影响串口设备本身的配置。所以,使用命令stty -F /dev/ttyUSB0来查询串口信息时,它会显示串口的实际配置,而不是minicom的默认配置。因此,你需要使用stty 命令设置串口设备的信息。

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

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

相关文章

CSAPP Lab3- bufbomb

实验目标 &#xff08;1&#xff09;掌握函数调用时的栈帧结构 &#xff08;2&#xff09;利用输入缓冲区的溢出漏洞&#xff0c;将攻击代码嵌入当前程序的栈帧中&#xff0c;使得程序执行我们所期望的过程 实验代码 &#xff08;1&#xff09;makecookie&#xff1a;生成c…

解读IEC有关“雷击防护”的新要求

背景介绍 TC64标委会在IEC 组织里负责低压电气装置安全规范的起草和编制&#xff0c;主要出版物有&#xff1a;IEC60364、IEC61140、IEC60479等。 在国内由TC205标委会负责参与TC64活动、等同转化的出版物&#xff0c;如&#xff1a;IEC60364等同转化为GB16895系列规范等。 …

2023零售店铺管理系统最新排名,这5款性价比高!

很多零售店铺的老板&#xff0c;每天都在被开单收银、记账对账、商品销售、销售数据等各种琐事困扰&#xff0c;使用传统的人工管理模式&#xff0c;耗费了大量的时间和成本&#xff0c;也没有达到理想的效果。 其实&#xff0c;零售店铺管理也可以很简单省事&#xff0c;借助零…

[Java基础练习-002]综合应用(基础进阶)

1、进阶练习一、学习网站&#xff08;主要考察选择结构、输入语句&#xff09; 请使用现有的java基础知识开发一个学习网站主要实现如下功能&#xff1a; &#xff08;1&#xff09;、显示第一层登录菜单&#xff0c;选择登录后再显示第二层主菜单&#xff0c;否则退出系统&a…

虹科分享|终端安全防护|您的遗留系统的安全性如何?

自2023年1月10日起&#xff0c;Windows 7、Windows 8、Windows 8.1及其衍生产品Windows Embedded以及Windows Server 2008 R2将不再收到微软提供的补丁程序。数以百万计的设备现在将成为“遗留”设备&#xff0c;并产生一系列新的遗留安全风险。 Windows 7支持结束&#xff0c…

哪种蓝牙耳机戴着耳朵不痛?佩戴舒适不挑耳朵的蓝牙耳机

蓝牙耳机早已成为了人们使用手机时的下意识选择&#xff0c;目前蓝牙耳机品牌也多、种类也多&#xff0c;不知道你会不会有选择困难症&#xff1f;综合大家关注的点&#xff0c;小编发现佩戴舒适度这方面是大家较为注意的&#xff0c;下面小编整理了一期佩戴舒适不挑耳的蓝牙耳…

递归算法求数组中的最值

一、关于递归算法和一般算法 递归算法和一般算法相比&#xff0c;递归算法的思维量会大很多&#xff0c;不仅很难理解&#xff0c;用起来还容易出错&#xff0c;所以大家平时用一般算法就足够了。就拿今天我们要实现的“求数组中的最值”来举例吧&#xff0c;用一般算法一个循…

用SD完美还原金庸小说名场面;产品经理用ChatGPT提效520倍;盘点13个SD最强模型;中国移动推出周杰伦数智人 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 『ChatGPT访问量再创新高』强势挑战谷歌、百度的霸主地位 SimilarWeb 的统计数据显示&#xff0c;ChatGPT 在4月份的全球访问量已经达…

Tektronix泰克TCP2020 AC/DC电流探头

特征&#xff1a; 20 ARMS 最大电流能力 100 A 峰值脉冲电流能力 10 毫安/毫伏灵敏度 BNC 输出连接到大多数示波器和其他测量 设备&#xff08;需要 >100 kΩ 端接&#xff09; 用于直流偏移调整的消磁按钮和指轮 由交流适配器供电 易于使用且准确的交流/直流电流测量 DC 至…

专业恢复电脑数据软件Easyrecovery16

Easyrecovery是一款强大的数据恢复软件&#xff0c;它专门解决磁盘数据恢复问题。在计算机世界里&#xff0c;数据丢失经常是一件令人头疼的事情&#xff0c;但是有了Easyrecovery&#xff0c;您可以放心大胆地享受数据备份和恢复的乐趣。 Easyrecovery具有快速和有效的数据恢复…

HBase:Hadoop生态系统中的分布式NoSQL数据库【上进小菜猪大数据系列】

&#x1f4ec;&#x1f4ec;我是上进小菜猪&#xff0c;沈工大软件工程专业&#xff0c;爱好敲代码&#xff0c;持续输出干货&#xff0c;欢迎关注。 Hadoop中的HBase: 分布式NoSQL数据库 在大数据时代&#xff0c;数据量的爆炸式增长对数据存储和处理能力提出了巨大的挑战。…

滋灌中小企业,分销伙伴和华为来做“送水人”

最近有个段子&#xff1a;第一批靠生成式AI赚大钱的人&#xff0c;既不是研发人员&#xff0c;也不是国内大厂&#xff0c;而是卖课的。 大家笑谈&#xff0c;每一轮新技术的掘金之路&#xff0c;最先致富的都是送水、卖铲子的。 这其实隐藏了一个信息技术产业的普遍规律&#…

Kali-linux目录加密

在Kali中提供了一个目录加密工具TrueCrypt。该工具是一款开源的绿色加密卷加密软件&#xff0c;不需要生成任何文件即可在硬盘上建立虚拟磁盘。用户可以按照盘符进行访问&#xff0c;所以虚拟磁盘上的文件都被自动加密&#xff0c;访问时需要使用密码解密。TrueCrypt提供多种加…

C语言简述、特点、常用编译器,VS2010写第一个C语言程序

今天来分享C语言的基础知识&#xff0c;以及怎么用VS2010写第一个C语言程序&#xff0c;话不多说&#xff0c;开始上菜&#xff1a; 此博主在CSDN发布的文章目录&#xff1a;我的CSDN目录&#xff0c;作为博主在CSDN上发布的文章类型导读 目录 1.程序语言简述2.C语言简述3.C语言…

『Vue组件』Web Components 原生组件化

在学习Vue插槽&#xff08;Slots&#xff09;之前&#xff0c;我们可以先对Web Components的概念进行一个了解。因为Vue的模板系统&#xff0c;组件实现以及插槽相关的实现是参考于Web Components标准进行的上层设计。 在Vue中通过自定义组件、自定义标签以及自定义属性配合使用…

c++注入dll调用call

1.先写个我们要调用的函数 #include<iostream> using namespace std; void test(int a, int& b) { cout << a << b << endl; b a b; }void main() { int a 2; int b0; test(a, b); cout << b << endl; system("pause");…

再鼎医药面临严重的监管和产品竞争风险

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 再鼎医药&#xff08;ZLAB&#xff09;是一家生物制药公司&#xff0c;致力于开发和商业化癌症和传染病的创新疗法。该公司的产品组合包括用于治疗卵巢癌的靶向药Zejula&#xff0c;用于治疗脑癌的Optune&#xff0c;用于治…

Eplan2022 复制已有的宏文件生成新的原理图宏文件

下图所示为wago的787-722稳压电源&#xff0c;我们可以从官网下载到相应的eplan宏文件并导入数据源库。但是能下载到eplan宏文件的只是少部分公司的部件。那么没有宏文件的部件该怎么办&#xff1f; 接下来以明纬开关电源 NDR-120-24为例&#xff0c;创建一个宏文件。选择【主数…

linux密码忘了?一招解决

目录 一、前言 二、进入编辑界面 三、单用户模式 四、修改密码 五、更新信息 六、退出 七、验证 一、前言 版本&#xff1a;centos7.9、VMware15.5 在我们学习linux运行级别的时候&#xff0c;面试题可能会出如何找回root密码&#xff0c;下面来详细的介绍一波&#xff…

Mysql索引+事务+存储引擎

索引 索引的概念 索引是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址&#xff08;类似于C语言的链表通过指针指向数据记录的内存地址&#xff09;。 使用索引后可以不用扫描全表来定位某行的数据&#xff0c;而是先通过索引表找…