如何让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:我知道这不是与uC沟通的最佳方式,但让我们假设,出于某种原因,我必须这样做。
编辑:顺便说一句,我用的是Windows 7通常的解决方案是在微控制器板上使用FTDI usb到串行芯片,例如FT232R。然后,就您的MCU而言,它与串行端口通信,并且在主机上您只需要有正确的驱动程序。
在我的Mac上,FTDI芯片显示为/dev/tty.usbmodem____
的串行端口,其中____
是Mac在第一次检测时分配的某个持久唯一ID。即使几周后拔掉电源再插上电源,也会得到相同的数字,但在不同的Mac上却是不同的数字。
在Windows上,它显示为一个新的COM
端口,如果你安装了驱动程序,IIRC。在Linux上,它显示为/dev/ttyUSB_
,其中_
是一个从0开始的序列号,如果您在内核中启用了FTDI串行驱动程序支持。如果您插入多个FTDI芯片,这可能会变得棘手。
如果你的微控制器有一个内置的USB端口,那么你需要找到软件,让它把自己标识为一个标准的CDC(通信设备类)串行端口设备(标准文档可用)。大多数操作系统都支持这个标准的USB设备类。
使用USB转串行端口适配器之一。USB端口看起来就像c++程序的串行端口。
一般情况下,您可以使用HID接口近似地完成此操作:驱动程序是内置的,并且您可以向两个方向发送特性报告。它不是串行端口的简单性(因为它是数据包,而不是连续的字节流),但hidapi使它变得非常简单和跨平台。
- Qt Q串行端口未编程设备未关闭
- 在 linux c++ 中没有通过串行端口发送的数据
- 检查串行端口Linux中是否有传入数据(cbInQue for linux)
- 在不传输的情况下更改 Win32 中的串行端口波特率
- 增强 ASIO 和串行端口异步读取
- 串行端口写入究竟如何从缓冲区实际写入数据?
- 如何将参数这些串行端口传递到函数中
- 从 C/C++ 访问 Android 中的串行端口
- Qt两个串行端口发送和接收
- 通过串行端口从GPS传感器读取
- 提升 asio 串行端口"end of file"
- 通过串行端口发送多个值
- 与QSerialPort配合使用的串行端口仿真
- 如何通过boost::asio和shared_ptr创建串行端口
- 串行端口编码
- 使用来自串行端口的字符串数据来操作振镜扫描仪在更高的速度下会出错
- 写入和读取十六进制 TRAM QT 串行端口
- Qt串行端口数据接收
- Qt modbus 串行端口流量控制处理
- 如何让c++从USB端口(如串行端口)执行I/O