您可以使用的组合ser2net
和socat
。例如,我有一个通过串行端口连接到树莓派的机器人。树莓派已连接到我的本地网络(相当于您的第二台PC)。而且我的笔记本电脑已连接到相同的本地网络(相当于您的第一台PC)。然后,我使用ser2net从第二台PC通过TCP转发串行端口,并socat
在第一台PC上创建代理串行设备文件。
此设置也可能对您有用。建议的解决方案:
步骤1:在第二台PC上安装ser2net软件包(按照您的图表)
sudo apt-get install ser2net
ser2net侦听TCP端口,并能够通过TCP端口将数据通过管道传输到串行端口和从串行端口传输数据。您可以通过其配置文件设置要为其创建“代理”的串行端口/etc/ser2net.conf
。
步骤2:在第二台PC中配置ser2net
例如,如果您的设备连接/dev/ttyACM0
了baudrate,115200
并希望通过localhost端口3333提供服务,则可以将以下行添加到/etc/ser2net.conf
3333:raw:0:/dev/ttyACM0:115200,remctl
创建配置文件后,通过在第二台PC上运行来启动ser2net:
ser2net
或(如果已经在运行,则按如下所示重新启动)
/etc/init.d/ser2net restart
这里重要的一件事是remctl选项。它允许客户端(图中的第一台PC)连接到设备并自由选择串行连接选项。我认为从数据收集工作空间的角度来看,串行通信是完全透明的。在这里查看更多详细信息。
步骤3:在数据收集工作站(第一台PC)上设置代理串行设备文件
(如果您没有socat,则sudo apt-get install socat
)
最后,在第一台PC的终端中,socat
创建一个代理串行端口,该端口将从tcp端口监听:
socat pty,link=$HOME/MyProxySerialPort,waitslave tcp:$ip:$port,forever,reuseaddr,keepalive
在此示例中,位置ip=<2nd-PC-IP-address>
和port=3333
(或/etc/ser2net.conf
在第二台PC上设置时选择的任何位置)。
步骤4:连接到MyProxySerialPort
现在,您应该能够正常打开$HOME/MyProxySerialPort
与第一台PC上设备的串行连接。
该博客文章也提供了有关此设置的更多信息:http : //techtinkering.com/2013/04/02/connecting-to-a-remote-serial-port-over-tcpip/