在 Windows/Linux 中没有额外硬件的虚拟 COM

Posted

技术标签:

【中文标题】在 Windows/Linux 中没有额外硬件的虚拟 COM【英文标题】:Virtual COM with no additional HW in Windows/Linux 【发布时间】:2019-07-21 08:24:27 【问题描述】:

我在两台不同的机器上安装了两个程序,Windows 和 Linux。

他们希望通过 com 端口进行通信。到目前为止,我们在 Linux 机器上使用 USB 到 UART 桥接器及其驱动程序来进行通信。 Windows 将该设备列为 COM 端口,在 linux 端,我们有一个 tty 设备供 Linux 应用程序连接。

现在,在我正在使用的新电路板版本中,该芯片不再存在。我想保持这两个程序不变。 我知道我可以在 Linux 上配置一个 USB 驱动程序以充当虚拟 com,而无需任何额外的硬件(CDC ACM?),这样就可以了。 我对么?如果是这种情况,我应该使用哪个驱动程序?

【问题讨论】:

【参考方案1】:

在 Linux 端,您需要将 USB 配置为外围模式。有关软件方面的内容,请参阅 gadget configfs 文档和 Matt Porter 演讲中的 PDF。

既然您想要串行 USB CDC ACM,请查看gadget serial。

有一个库 libusbg 允许通过 C API 使用 USB Gadget ConfigFS。如果嵌入式软件需要动态控制设备提供的 USB 功能,这将非常有用。该库还提供了两个实用程序,称为 gadget-import 和 gadget-export。此实用程序允许将手工制作的 USB 小工具导出到模式文件并重新导入。您可以制作一个 systemd 服务以在启动时自动使用此架构。

【讨论】:

以上是关于在 Windows/Linux 中没有额外硬件的虚拟 COM的主要内容,如果未能解决你的问题,请参考以下文章

C++在构造函数中调用最终的虚函数

争夺操作主控角色

硬件产品核心要素

编写高质量代码改善C#程序的157个建议——建议49:在Dispose模式中应提取一个受保护的虚方法

低功耗蓝牙是不是需要额外的硬件控制器?

编译器找不到在基类中实现的虚函数