Linux上的虚拟串口通过TCP

时间:2014-02-04 21:23:52

标签: linux tcp serial-port hardware virtual-serial-port

使用虚拟串行端口仿真器,我可以

  • 创建虚拟串行端口连接器
  • 选择一个端口,例如COM35用于连接器
  • 创建TCP-Server
  • 将先前创建的虚拟串行端口分配给服务器

enter image description here

然后,客户端可以通过知道ip地址,tcp端口和虚拟串行端口的名称来建立到tcp服务器的流连接。

在上面的示例中,我创建了一个MICRO_Test应用程序(c ++),它只是连接到虚拟串行端口。当我向这个端口写入数据时,它将被所有客户端接收。

您可以在上图中的日志中看到它。


虽然这是在Windows上,有没有办法在linux机器上实现某些等效行为?

总结一下:

Some binary code (as interface for e.g. webservices)
                    |
                    |
                    | [send/receive via virtual com port]
                    |
                    |
TCP Server & COM connector (multiple instances possible with different ports)
       |          |          |
       |          |          |
       |          |          |
    Client 1   Client 2   Client X

客户端从其真实的COM端口读取物理数据,并通过tcp流将数据发送到服务器。

对于linux,我读了很多关于socat,tty和ser2net的内容。但是,我无法真正了解如何在Linux上实现上述架构?你能帮我解决一些信息吗?

1 个答案:

答案 0 :(得分:2)

理论上,您可以将Python与PySerial包一起使用。它可以处理COM端口,RFC2217(ser2net)和TCP原始连接(socat)。

例如,您将使用真实硬件在所有客户端上启动socat并通过Python脚本连接到它们。

此语句打开原始套接字:

tcp_con = serial.serial_for_url('socket://<my_ip>:<my_port>')