繁体   English   中英

如何让 C++ 像串行端口一样从 USB 端口执行 I/O

[英]How to get C++ to perform I/O from a USB Port like a Serial Port

是否可以从特定的 USB 端口读取/写入,避免所有 USB 握手的东西?

我想要做的是与一个微控制器通信,例如,它没有通过 USB 板载 USB 驱动程序。 我希望我的 C++ 应用程序能够通过特定的 USB 端口发送数据,然后从同一个 USB 端口接收数据。

基本上我想做的就是把 USB 端口当作串口来对待。 这可能吗? 有我可以使用的解决方法吗?

提前致谢。

PS:我知道这不是 go 关于与 uC 通信的最佳方式,但我们假设,出于某种原因,我必须这样做。

编辑:顺便说一句,我正在使用 Windows 7

通常的解决方案是在您的微控制器板上使用 FTDI USB 转串行芯片,例如FT232R 然后,就您的 MCU 而言,它正在与串行端口通信,并且在主机上您只需要拥有正确的驱动程序即可。

在我的 Mac 上,FTDI 芯片显示为/dev/tty.usbmodem____的串行端口,其中____是 Mac 在第一次检测时分配的一些持久唯一 ID。 即使在数周后拔出和重新插入,也会得到相同的号码,但在不同的 Mac 上却是不同的号码。

在 Windows 上,如果您安装了驱动程序 IIRC,它将显示为新的COM端口。 在 Linux 上,它显示为/dev/ttyUSB_其中_是从 0 开始的序列号,如果您在 kernel 中启用了 FTDI 串行驱动程序支持。 如果您插入多个 FTDI 芯片,这可能会变得很棘手。

如果您的微控制器有一个内置的 USB 端口,那么您需要找到软件,将其标识为标准 CDC(通信设备类)串行端口设备(提供标准文档)。 大多数操作系统都支持此标准 USB 设备 class。

使用 USB 之一转串口适配器。 USB 端口看起来就像 C++ 程序的串行端口。

一般来说,您可以使用 HID 接口对此进行近似:内置驱动程序,您可以双向发送功能报告。 它不是很简单的串行端口(因为它是数据包,而不是连续的字节流),但hidapi使它非常简单和跨平台。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM