linux虚拟串口编程,Ubuntu 虚拟串口 Serial port

本文介绍了如何利用socat工具在Linux上创建两个虚拟串口,并将它们连接在一起,以模拟串口通信。 socat是一个强大的命令行工具,能够建立双向数据流并传输数据。通过运行 socat 命令并指定PTY参数,可以生成两个虚拟串口,如/dev/pts/5和/dev/pts/6。然后,通过在不同的终端窗口中分别打开这两个串口,可以实现数据的传输,如从一个端口发送“HelloWorld”到另一个端口。这种方法对于在开发阶段模拟嵌入式设备与PC之间的串口通信非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

A virtual serial port is a redirector without network software support which is usually used to create a pair of back-to-back virtual COM ports on the same computer. Two legacy applications can then communicate using virtual serial ports instead of conventional inter-process communication mechanisms such as named pipes.

This type of software is capable of emulating all serial port functionality,including Baud rate,data bits,parity bits,stop bits,etc. Additionally,it allows the data flow to be controlled,emulating all signal lines (DTR/DSR/CTS/RTS/DCD/RI) and customizing pinout.

Often I write software for embedded devices,and they have to exchange data with a PC. Since the devicesoften,if we don't want to say "always",aren't available during the development phase I have to simulate the connection in other ways. When I have to use UARTs to communicate,I use a tool which generates 2 virtual ports and then joins them back to back.

The software I use on Linux is socat,it is a very complex software and it can do a lot of other things,maybe in another article I'll show other functionalities of socat.

Socat Man Page: "Socat is a command line based utility that establishes two bidirectional byte streams and transfers data between them. Because the streams can be constructed from a large set of different types of data sinks and sources (see address types),and because lots of address options may be applied to the streams,socat can be used for many different purposes."

However let's try socat:

Installation on Ubuntu

To install socat on Ubuntu (I'm using 12.04) just run the following command:

# sudo apt-get install socat

Setting up two serial lines

now on a terminal window run socat

# socat -d -d PTY PTY:

The output should look like the following one:

2013/09/20 14:07:10 socat[6871] N PTY is /dev/pts/5

2013/09/20 14:07:10 socat[6871] N PTY is /dev/pts/6

2013/09/20 14:07:10 socat[6871] N starting data transfer loop with FDs [3,3] and [5,5]

Now you have two "serial" ports connected back to back

Testing the ports

open a new terminal and issue the following command

# sudo cat /dev/pts/5

open a new terminal and issue the following command

# sudo echo "Hello World" > /dev/pts/6

On the first terminal you should see the string "Hello World".

That's all,nothing more.

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

### 设置和使用虚拟串口 #### 安装 `socat` 工具 为了在 Ubuntu 上创建虚拟串口,需要安装 `socat` 工具。通过终端执行以下命令来更新软件包列表并安装 `socat`: ```bash sudo apt update sudo apt-get install socat ``` #### 创建虚拟串口 一旦 `socat` 成功安装,可以通过运行下面的命令来创建一对相互连接的伪终端设备(PTY),即虚拟串口。 ```bash sudo socat pty,link=/dev/ttyv0,b115200 pty,link=/dev/ttyv1,b115200 ``` 这条命令会创建两个链接文件 `/dev/ttyv0` 和 `/dev/ttyv1`,它们分别代表两端的虚拟串口,并设定波特率为 115200bps[^1]。 如果希望这个过程在后台持续运行而不阻塞当前终端窗口,则可以在上述命令之后加上 `&` 符号让其作为守护进程工作: ```bash socat -d -d pty,raw,echo=0 pty,raw,echo=0 & ``` 这不仅使 `socat` 进入后台模式,还增加了调试信息输出以便于排查可能遇到的问题[^2]。 #### 验证虚拟串口的存在 成功建立后,可以查看新生成的虚拟串口路径是否存在于系统的设备目录下: ```bash ls -l /dev/ttyv* ``` 或者对于动态分配的情况,检查 `/dev/pts` 下是否有新的条目被加入: ```bash ls -l /dev/pts/ ``` 这些路径可用于后续的应用程序中指定要使用的具体串口号。 #### 使用虚拟串口进行通信测试 假设已经有一个简单的 C 或 Python 编写的串行通信程序,只需修改其中涉及硬件串口的部分指向新建的虚拟串口即可完成基本的功能验证。例如,在Python 中读写数据到其中一个虚拟串口可参照如下代码片段: ```python import serial ser = serial.Serial('/dev/ttyv0', baudrate=115200) # 发送一些字符给另一个端点 ser.write(b'Hello from virtual port!\n') # 接收来自另一端的数据 line = ser.readline() print(line.decode('utf-8')) ``` 以上操作展示了如何利用 Linux 的强大特性快速搭建起一套简易却有效的串行接口仿真环境,适用于开发阶段或是学习目的下的实验场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值