是否可以从/向特定USB端口读取/写入,避免所有USB握手内容?
我想要做的是与微控制器通信,例如,通过USB没有板载USB驱动程序。我希望我的C ++应用程序能够通过特定的USB端口发送数据,然后从同一个USB端口接收数据。
基本上我想要做的就是将USB端口视为串口。这可能吗?我有可以使用的解决方法吗?
提前致谢。
PS:我知道这不是与uC沟通的最佳方式,但我们假设,出于某种原因,我必须这样做。编辑:BTW我正在使用Windows 7
答案 0 :(得分:4)
通常的解决方案是在微控制器板上使用FTDI USB转串口芯片,例如FT232R。然后,就您的MCU而言,它正在与串行端口通信,而在主机上您只需拥有正确的驱动程序。
在我的Mac上,FTDI芯片显示为/dev/tty.usbmodem____
处的串行端口,其中____
是Mac首次检测时分配的持久唯一ID。即使数周之后,拔塞和重新插入也会获得相同的数字,但在不同的Mac上它是一个不同的数字。
在Windows上,如果安装了驱动程序IIRC,它将显示为新的COM
端口。在Linux上,它显示为/dev/ttyUSB_
,其中_
是从0开始的序列号,如果您在内核中启用了FTDI串行驱动程序支持。如果您插入多个FTDI芯片,这可能会变得棘手。
如果您的微控制器具有内置USB端口,则需要找到该软件以将其识别为标准CDC(通信设备类)串行端口设备(standard documentation available)。大多数操作系统都支持此标准USB设备类。
答案 1 :(得分:0)
使用其中一个USB转串口适配器。 USB端口看起来就像是C ++程序的串口。
答案 2 :(得分:0)
通常,您可以使用HID界面对此进行近似处理:内置驱动程序,您可以在两个方向上发送功能报告。它不是串口简单(因为它是数据包,而不是连续的字节流),但hidapi使它非常简单和跨平台。