ubuntu上模拟串口通信

news/2024/8/27 19:42:39 标签: ubuntu, linux, 运维

前言

有时候写了一些串口相关的程序,需要调试的时候,又没有硬件,或者需要等其他模块完成才能一起联调。这样搭建环境费时费力,很多问题等到最后联调才发现就已经很晚了。
本文提供一种在ubuntu环境下模拟串口,直接就可以调试的方法。

在Ubuntu上创建虚拟串口,可以使用 socat 工具。

1. 安装socat

sudo apt-update
sudo apt-get install socat

2.创建虚拟串口

sudo socat pty,link=/dev/ttyv0,b115200 pty,link=/dev/ttyv1,b115200

上面的命令创建了两个串口 /dev/ttyv0 和/dev/ttyv1, 波特率设置的都是115200.
下面就可以使用这个

3.验证串口是否创建成功

crabe@crabe-ThinkPad:/dev/pts$ ls -lh /dev/ttyv*
lrwxrwxrwx 1 root root 11 Jul 16 14:53 /dev/ttyv0 -> /dev/pts/21
lrwxrwxrwx 1 root root 11 Jul 16 14:53 /dev/ttyv1 -> /dev/pts/22

从上面的结果可以看到创建的两个串口其实是软链接,链接到了/de/pts/目录下的虚拟串口。

注意:这些虚拟串口只在当前会话中存在,退出会话或者关闭socat进程,这些虚拟串口将不复存在。

4. 验证串口是否可以通信

使用putty可以作为串口接收工具观察/dev/ttyv1。然后在另一个终端发送数据到/dev/pts/ttyv0, 这样在putty工具上就能看到发送的数据。

5.安装putty

sudo apt install putty

6.打开putty

sudo putty

在这里插入图片描述

7.另启动一个终端,向串口/dev/ttyv0发送数据。

sudo echo "124" > /dev/ttyv0

这个时候在putty的终端就可以看到数据
在这里插入图片描述
注意:在发送数据的时候可能会提示没有权限。
这个是因为/dev/pts/下面的虚拟串口没有权限。需要手动改一下权限。

crabe@crabe-ThinkPad:/dev$ cd /dev/pts/
crabe@crabe-ThinkPad:/dev/pts$ sudo chmod 777 *

上面的方法是通过三方工具测试的串口通信。与直接写一个c的程序是一样的,可以根据自己程序时间的串口设置情况,配置虚拟串口。达到模拟串口的效果。


http://www.niftyadmin.cn/n/5559118.html

相关文章

mysql第八天

-- 1、使用mysqldump命令备份数据库中的所有表 -- mysqldump -uadmauthorbookauthorbookin -p123456 booksDB > C:\Users\kali\Desktop\sql笔记\第八次作业\booksDB_backup.sql -- 2、备份booksDB数据库中的books表 -- mysqldump -uadmin -p123456 booksDB books > C:\Us…

WeMod v8.13.9 解锁版 (上千游戏的修改器包含幻兽帕鲁)

WeMod 目前支持超过千款热门游戏,且每周都会追加游戏列表。由于很多修改器原作者都入驻了,所以修改器内容更新应该也是最全、最及时的。千款游戏听起来不多,但其实已经涵盖了主流热门游戏(供参考,上面提到的「风灵月影…

centos安装软件

目录 1. 为什么安装软件 2. centos软件安装的方式 3. 安装软件 3.1 JDK的安装 3.1.1 下载linux版本的jdk 3.1.2 拖到linux系统下 3.1.3 解压jdk文件 3.1.4 配置环境变量 3.1.5 重新加载配置文件 3.2 Tomcat安装 3.2.1 下载tomcat 3.2.2 放入linux系统中并解压 3.2.3 进…

Spring Boot项目的404是如何发生的

问题 在日常开发中,假如我们访问一个Sping容器中并不存在的路径,通常会返回404的报错,具体原因是什么呢? 结论 错误的访问会调用两次DispatcherServlet:第一次调用无法找到对应路径时,会给Response设置一个…

【LLM指令微调】长话短说大模型指令微调的“Prompt”

1 指令微调数据集形式“花样”太多 大家有没有分析过 prompt对模型训练或者推理的影响?之前推理的时候,发现不加训练的时候prompt,直接输入模型性能会变差的,这个倒是可以理解。假如不加prompt直接训练,是不是测试的时…

Laravel IDE Helper:开发者的代码导航灯塔

Laravel IDE Helper:开发者的代码导航灯塔 在Laravel开发过程中,IDE(集成开发环境)的辅助工具可以极大地提高开发效率和代码质量。Laravel IDE Helper是一个专门为此目的设计的工具,它为PHP IDE提供了额外的上下文信息…

通过命令行工作流提升工作效率的实战教程(持续更新)

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

GO channel 学习

引言 单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。 虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发生竞态问题。为了保证数据交换的正确性,必须使用互斥量对内存进行加锁&#…