Ubuntu 虚拟串口 Serial port

http://www.xappsoftware.com/wordpress/2013/10/07/using-virtual-serial-ports-on-linux-ubuntu/?goback=%2Egde_65688_member_5792872722853814274#%21

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 devices often, 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 的强大特性快速搭建起一套简易却有效的串行接口仿真环境,适用于开发阶段或是学习目的下的实验场景。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值