我正在开发一个应用程序,它应该能够写入虚拟串行端口并通过同一端口通过网络从远程客户端接收数据。
该应用程序在 linux 服务器上运行。我是使用串行端口的新手,对此主题有一些疑问。
客户
客户端可以建立到服务器的 TCP 连接。当我们设置客户端时,我们必须提供服务器的 IP 地址、一个 tcp 端口(通常是 8080)和一个虚拟 com 端口。
然后客户端将自动尝试连接到服务器。
服务器
服务器有一个虚拟 com 端口,与我们在客户端配置中设置的相同(例如 COM1)。当服务器上的应用程序向此端口写入数据时,数据应发送到通过 tcp 连接的所有客户端。来自客户端的响应通过 TCP 发送回服务器,服务器可以通过虚拟串行端口读取它。
问题
在 Windows 上,我使用了一个虚拟串行端口连接器 http://www.eterlogic.com/Products.VSPE.html ,它完成了大部分工作。但是我想在linux机器上解决这个问题。
我的问题是,如何创建一个附加了虚拟串行端口的 TCP 服务器,并且可以通过 TCP 通过该端口向侦听客户端发送/接收数据?
原文由 DarkLeafyGreen 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试 socat 。可能的情况:
socat 创建到 192.168.254.254:8080 的 TCP 连接,以便将写入 /dev/virtualcom0 的所有内容都转发到 192.168.254.254:8080,反之亦然。
另一种方法 是在 Linux 服务器端通过 ser2net 使用 RFC2217 ,在 Windows 端使用 RFC2217 驱动程序(例如 http://www.hw-group.com/products/hw_vsp/index_en.html 单端口版本)。您也可以尝试让 http://pyserial.sourceforge.net/ 使用 ser2net。