在命令行中通过 TCP/IP 发送串行数据

在命令行中通过 TCP/IP 发送串行数据

我为此绞尽了脑汁,查阅了几十个帮助文件和教程,但就是无法弄清楚如何在 Linux 中正确地做到这一点。

情况是我需要将串行文本发送到 LAN 调制解调器。(波特率 = 9600,数据:8 位,奇偶校验:无,停止;1 位,流量控制:无)LAN 调制解调器在 TCP/IP 端口 10001 上等待串行数据。
假设在这种情况下,IP 为 172.16.0.100。我需要使用 ubuntu 20.04 中的命令行发送此数据。串行数据中还有回车符“\n”和 ctrl+z 命令。发送信息后,TCP 连接必须关闭。

我尝试使用 socat 打开连接,但我不知道如何将信息传输到 PTY 中。

答案1

您可以使用 socat 在端口 10001 上与 LAN 调制解调器建立 TCP 连接,并从 Ubuntu 20.04 中的命令行向其发送串行数据。要使用回车符(“\n”)和 Ctrl+Z 命令发送数据,您可以使用 echo 命令,然后将输出通过管道传输到 socat。

使用以下命令建立与 LAN 调制解调器的 TCP 连接并发送串行数据:

echo -e "YourSerialDataHere\n\x1A" | socat - TCP4:172.16.0.100:10001

将“YourSerialDataHere”替换为您要发送的实际串行数据。

echo -e: This option is used to enable interpretation of escape sequences like "\n".
"\n": This adds a carriage return to the serial data.
"\x1A": This is the Ctrl+Z character.

运行该命令后,socat 将与 IP 地址为 172.16.0.100 的 LAN 调制解调器在端口 10001 上建立 TCP 连接并发送串行数据。数据发送后,连接将自动关闭。

确保将“YourSerialDataHere”替换为您的实际串行数据。此命令将按照您指定的波特率、数据位、奇偶校验、停止位和流量控制发送数据。

相关内容