socat - 多次连接尝试未能通过串行

socat - 多次连接尝试未能通过串行

我使用 socat 通过网络路由串行输入,以便我可以通过虚拟 COM 端口设置控制 Arduino 设备。

我启动 socat 的命令是:

socat /dev/serial0,b500000,raw,echo=0 TCP-LISTEN:9876,nodelay,fork&

当设备第一次连接到 :9876 端口时,这一切正常。但是,如果连接从另一端断开(在 Windows 上使用 com2tcp),则任何进一步的连接都会通过网络将串行发送到托管 socat 的 RasPi 并从串行设备发送出去,但不会从 /dev 接收数据/serial0。我必须杀死原来的socat进程,等待端口被释放,然后重新运行socat。鉴于 RasPi 是无头运行的,我宁愿避免这种烦恼。

有没有办法允许多个非同时连接以这种方式工作?我假设在 后需要添加某种设置echo=0,但我不知道是哪一个。

(进一步说明:需要 500000 波特率,因为这是我正在使用的名为 GIMX 的软件所需的速率。此设置的目的是允许我使用另一个房间的设备连接到游戏控制台,使用我设置了这个命令来/etc/rc.local在启动时启动 socat,因为 RasPi 也用作使用 Volumio 的媒体播放器;这只是在后台运行。)


编辑:我最终放弃了 socat/com2tcp 路线,并实现了符合 RFC2247 的连接。这意味着我不必担心根据需要手动设置波特率,并且似乎可以以更稳定的方式启动。我根据来自的信息https://robosavvy.com/forum/viewtopic.php?t=7578这基本上给出了设置的完整概述。尽管有几个链接已失效,但它具有建立连接所需的信息。

我相信我正在寻找的命令是“end-close”,但是在承诺新设置之前我没有对此进行测试。

答案1

在本地网络上,您可能希望使用 UDP 而不是 TCP。您将获得更好的延迟,并且连接问题可能会消失。快速搜索会找到一个名为 COM2UDP 的程序。

相关内容