我需要在 Linux 上测试一个串口应用程序,但是,我的测试机只有一个串口。
有没有办法将虚拟串行端口添加到 Linux 并通过 shell 或脚本模拟设备来测试我的应用程序?
注意:我无法重新映射端口,它在 ttys2 上硬编码,我需要在编写应用程序时对其进行测试。
原文由 JeffV 发布,翻译遵循 CC BY-SA 4.0 许可协议
我需要在 Linux 上测试一个串口应用程序,但是,我的测试机只有一个串口。
有没有办法将虚拟串行端口添加到 Linux 并通过 shell 或脚本模拟设备来测试我的应用程序?
注意:我无法重新映射端口,它在 ttys2 上硬编码,我需要在编写应用程序时对其进行测试。
原文由 JeffV 发布,翻译遵循 CC BY-SA 4.0 许可协议
补充@slonik的答案。
您可以通过以下步骤测试 socat 以创建虚拟串行端口(在 Ubuntu 12.04 上测试):
打开一个终端(我们称之为终端 0)并执行它:
socat -d -d pty,raw,echo=0 pty,raw,echo=0
上面的代码返回:
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):
cat < /dev/pts/2
该命令的端口名称可以根据电脑进行更改。这取决于先前的输出。
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):
echo "Test" > /dev/pts/3
现在回到 1 号航站楼,您将看到字符串“Test”。
原文由 cantoni 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答799 阅读✓ 已解决
2 回答3.2k 阅读
您可以为此使用 pty(“伪电传打字机”,其中串行端口是“真正的电传打字机”)。从一端打开
/dev/ptyp5
,然后将您的程序附加到/dev/ttyp5
;ttyp5
就像一个串行端口,但会通过 /dev/ptyp5 发送/接收它所做的一切。如果你真的需要它来与一个名为
/dev/ttys2
的文件对话,那么只需将你的旧/dev/ttys2
ttys2
创建一个从ptyp5
的符号链接---
。当然,您可以使用
ptyp5
以外的其他数字。也许选择一个数字大的以避免重复,因为您所有的登录终端也将使用 ptys。维基百科有更多关于 ptys 的信息: http ://en.wikipedia.org/wiki/Pseudo_terminal