我有一个场景,我向我的工作小组演示了如何使用 共享插入 Raspberry Pi (Debian) 的非常昂贵的 USB 病人模拟器socat
。该小组希望能够通过以太网与串行设备建立按需、双向连接。目前,我让设备通过 Telnet 进行广播。
socat tcp-l:23,reuseaddr,fork,crlf file:/dev/ttyUSB0,echo=0,b115200,raw,crnl,icanon=1
我需要设置消费者端,以便 Windows 用户连接到 Telnet 端口,但将 I/O 重定向到其机器上的可用 COM 端口。我原本想socat
在 Windows 端使用 Cygwin,但我对 Windows 不是很熟练。
有任何想法吗?
答案1
我理解你的问题,所以你希望 Windows PC 能够共享串行端口,就像你可以让 Linux 机器使用 socat 共享端口一样。
例如,sourceforge.net 中有一些开源应用程序,可以将 TCP 套接字与 Windows 中的串行端口连接起来。此外,只需谷歌搜索“serial to ip”或“ip to serial”。一个简单的例子是“SerialToIP”http://sourceforge.net/projects/serialtoip/?source=directory它是用 C# 开发的。它有命令行和 GUI 版本,但串行端口控制很少,但根据 socat-example,这可能足以满足您的需求。
根据您对串行端口控制的详细程度以及您的应用程序是否需要在 Windows 用户登录或不登录的情况下运行,您应该选择适合您需求的应用程序。默认情况下,Windows 中的 GUI 应用程序要求用户登录才能运行。
顺便说一句,您的 socat 命令与 Telnet 协议无关。您只是在创建一个连接到串行端口的纯粹而简单的 TCP/IP“管道”。该“管道”内承载的任何可能的顶层协议都与问题和答案无关。
答案2
您可以使用软件重定向器串行/IP由 Tactical Software 来实现这一目标。
Serial/IP 将创建一个虚拟 COM 端口,该端口可链接到端点的 TCP/IP 地址。
安装串行/IP 后,选择一个虚拟 COM 端口号,然后输入 Raspberry PI 的 IP 地址、TCP 端口(在本例中为 23),并选择 Telnet 作为协议。
现在,当 Windows PC 上的应用程序打开虚拟 COM 端口时,它将连接到 USB 模拟器。