12

Is it possible to create a "virtual" serial device that sends data through a "virtual" serial port? I need to develop some code to interact with an Arduino but don't have it with me. Can it be done with socat, or some code that writes to a dev/ttyXXX file?

EDIT: I'm running Arch Linux

4

1 回答 1

17

是的,你可以使用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-terminal。该link 选项在伪终端和给定文件之间创建软链接。您可以选择任何您想要的文件名。如果没有软链接,您将需要打开设备,并且很难确定正确的设备。 raw 将伪终端置于原始模式。您通常需要这个,因为您不需要任何特殊的终端处理选项。 echo=0禁用回声模式。

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

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

以上将标准输入/标准输出连接simulator-command到伪终端。

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

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

打开你的模拟器arduino-sim

于 2014-03-21T23:49:39.477 回答