模拟串口

时间:2014-03-21 20:27:26

标签: c++ serial-port arduino socat

是否可以创建一个"虚拟"通过"虚拟"发送数据的串行设备串行端口?我需要开发一些代码来与Arduino进行交互,但不要随身携带它。是否可以使用 socat 或一些写入dev/ttyXXX文件的代码来完成?

编辑:我正在运行Arch Linux

1 个答案:

答案 0 :(得分:6)

是的,您可以使用socat来模拟串口。

您需要使用socat的PTY地址类型:

PTY: Generates a pseudo terminal (pty) and uses its master side. Another
process may open the pty's slave side using it like a serial line or
terminal.

最简单的选择是:

socat PTY,link=./virtual-tty,raw,echo=0 -

让您正在测试的应用程序打开virtual-tty。你的输出 应用程序将打印到控制台。您输入的文字将发送给您 应用

如上所述,PTY地址类型创建了一个 peudo-terminallink 选项在伪终端和给定文件之间创建软链接。 您可以选择任何您想要的文件名。没有您需要的软链接 打开设备,很难确定正确的设备。 raw 将伪终端置于原始模式。你通常想要这个,因为你不想要 任何特殊的终端处理选项。 echo=0禁用回显模式。

如果您拥有(或创建)模拟正在执行的代码的应用程序 Arduino,您也可以通过socat连接它。如果你的模拟器 通过stdin / stdout进行通信,然后使用以下命令:

socat PTY,link=./virtual-tty,raw,echo=0 EXEC:simulator-command

上面将simulator-command的stdin / stdout连接到。{ 伪终端。

如果您的模拟器也通过串口进行通信,则使用PTY 命令两次:

socat PTY,link=./arduino-sim,raw,echo=0 PTY,link=./virtual-tty,raw,echo=0

让你的模拟器打开arduino-sim