首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux的虚拟串口

Linux的虚拟串口
EN

Stack Overflow用户
提问于 2008-09-09 15:36:20
回答 9查看 212.6K关注 0票数 159

我需要在Linux上测试一个串口应用程序,然而,我的测试机器只有一个串口。

有没有一种方法可以向Linux添加虚拟串行端口,并通过shell或脚本模拟设备来测试我的应用程序?

注意:我不能重新映射端口,它是在ttys2上硬编码的,我需要在编写应用程序时对其进行测试。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-09-16 16:56:56

为此,您可以使用pty (“伪teletype”,其中串行端口是“真正的teletype")。从一端打开/dev/ptyp5,然后将您的程序附加到/dev/ttyp5ttyp5的行为就像一个串行端口,但是它将通过/dev/pty5发送/接收它所做的一切。

如果您确实需要它来与一个名为/dev/ttys2的文件对话,那么只需将您的旧/dev/ttys2移走,并建立一个从ptyp5ttys2的符号链接。

当然,您可以使用ptyp5以外的其他数字。也许选择一个数字较高的,以避免重复,因为您的所有登录终端也将使用pty。

维基百科上有更多关于ptys的信息:http://en.wikipedia.org/wiki/Pseudo_terminal

票数 83
EN

Stack Overflow用户

发布于 2013-11-02 03:07:16

补充@slonik的答案。

您可以通过以下步骤测试socat以创建虚拟串口(在Ubuntu 12.04上测试):

打开一个终端(我们称它为终端0)并执行它:

代码语言:javascript
复制
socat -d -d pty,raw,echo=0 pty,raw,echo=0

上面的代码返回:

代码语言:javascript
复制
2013/11/01 13:47:27 socat[2506] N PTY is /dev/pts/2
2013/11/01 13:47:27 socat[2506] N PTY is /dev/pts/3
2013/11/01 13:47:27 socat[2506] N starting data transfer loop with FDs [3,3] and [5,5]

打开另一个终端并写入(终端1):

代码语言:javascript
复制
cat < /dev/pts/2

此命令的端口名称可根据pc进行更改。这取决于之前的输出。

代码语言:javascript
复制
2013/11/01 13:47:27 socat[2506] N PTY is /dev/pts/**2**
2013/11/01 13:47:27 socat[2506] N PTY is /dev/pts/**3**
2013/11/01 13:47:27 socat[2506] N starting data transfer loop with FDs 

您应该使用高亮显示区域上可用的数字。

打开另一个终端并写入(终端2):

代码语言:javascript
复制
echo "Test" > /dev/pts/3

现在回到1号航站楼,你会看到字符串"Test“。

票数 196
EN

Stack Overflow用户

发布于 2012-05-12 01:21:02

使用socat执行以下操作:

例如:

代码语言:javascript
复制
socat PTY,link=/dev/ttyS10 PTY,link=/dev/ttyS11
票数 56
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档