通过网络桥接串行端口

0xA*_*ffe 4 sockets linux networking

对于使用串行端口进行通信的应用程序(确切地说是Modbus RTU),我需要在网络上桥接串行端口以进行测试。

因此,我想进行以下设置:

Device        |     Network      |      PC

SerialPort    |------------------|    SerialPort
Map Serialport|                  | Map network to Serialport
   to Network |                  |   
Run Code Online (Sandbox Code Playgroud)

我已经开始使用socat

我在PC上打开了TCP端口

nc -l 8080
Run Code Online (Sandbox Code Playgroud)

在我使用的设备上

socat  pty,link=/dev/virtualcom0 tcp:PC-IP:8080
Run Code Online (Sandbox Code Playgroud)

要将写入的所有内容映射/dev/virtualcom0到端口8080 上的PC-IP。

但是现在我在将套接字映射回Serialport时遇到了问题。

socat tcp:PC-IP:9123 pty,link=/dev/virtualport0
Run Code Online (Sandbox Code Playgroud)

这给了我一个Connection Refused,这很明显,因为我使用了TCP,并且该端口已被设备使用。
所以我尝试了

socat  pty,link=/dev/virtualcom0,raw  udp:PC-IP:8080
Run Code Online (Sandbox Code Playgroud)

并将其他所有内容都更改为UDP。

但是,那时/dev/virtlalcom0/我的电脑上什么也没到达。

Bja*_*sen 5

tcp连接的一侧需要监听端口(您启动的第一个端口),第二侧连接到该端口。

对于第一面,请执行以下操作:

socat tcp-listen:8080 pty,link=/dev/virtualport0
Run Code Online (Sandbox Code Playgroud)

对于第二面,请执行以下操作:

socat pty,link=/dev/virtualcom0 tcp:IP-of-other-machine:8080
Run Code Online (Sandbox Code Playgroud)

忘了netcat,您不需要它。