【发布时间】:2022-01-06 19:16:43
【问题描述】:
目前,我有一个桌面应用程序,用于通过串行端口接口读取和写入数据到专有硬件设备。该应用程序首先列出连接到计算机的串行 COM 设备,一旦选择了一个设备,就可以与应用程序进行交互以与相应的设备进行通信。我手头不再有这样的设备,但我仍然想使用该应用程序。
我已经开发了一个命令行实用程序,给定stdin 中的二进制消息,它会向stdout 发出相应的二进制回复(专有硬件设备将通过串行端口发送的相同回复)。让我们将此实用程序称为simulator。
我如何设置一个虚拟串口以便应用程序可以检测到它,并且每当应用程序使用串口协议发送消息时,该消息被转发到simulator和simulator' s 回复返回到桌面应用程序?
我使用的是带有 M1 CPU 的 Mac OS 12。我也对 Windows 10 上的解决方案持开放态度(优先级较低)。
我在 StackOverflow 上查看了可能与此类似的先前问题,但它们要么不完整,要么略有不同,没有明显的方法来推断我的实际问题的解决方案。
【问题讨论】:
-
很可能您必须编写驱动程序(新的用户空间驱动程序之一)或使用外部硬件(例如两个相互连接的 USB 转串行适配器或自定义 USB-到串行实现)。
-
这篇文章可能会有所帮助。 LINUX - ComPort over Network
-
你试过用
socat吗? -
嗨,我不熟悉编写驱动程序(也不熟悉用户或内核空间)或 socat。您能否就这些主题展开更多讨论?您能否提供一个小而有意义且有效的示例?
-
@RichardBarber OP 正在寻找一种解决方案来创建新的串行端口,因为旧应用程序需要一个串行端口。我不认为 socat 可以做到这一点。
标签: macos serial-port emulation