在Windows 7上使用C++从USB读取数据
Read data from USB using C++ on Windows 7
我正在尝试读取Trimble SPS-361 GPS接收器的输出,该接收器连接到Windows;7机器,通过USB,使用C++(最好)或Java。我知道有人问过类似的问题,但我似乎找不到我要找的东西。听起来libusb是我最好的选择,是真的吗?如果是这样,什么是好的教程/指南/示例代码?
听起来我需要安装/编写某种特定于设备的驱动程序,然后我可以通过libusb用C++从设备上读取数据。这是从USB读取的一般过程吗?还是我感到困惑?
总结一下我认为需要什么(我知道我到处都是):
- 关于如何与USB通信的一般说明/教程
- 关于如何在Windows上从USB设备读取数据的更具体的教程/指南/示例代码;7
- libusb到底是什么?它是我想要的吗
如果你想要设备的原始数据,你可以在USB设备列表中找到它,并像文件一样从中读取。
从获取所有设备开始:
HDEVINFO hDevInfo = SetupDiGetClassDevs( &HIDWatch::GUID_DEVINTERFACE_HID, 0, 0, DIGCF_DEVICEINTERFACE );
列举每一个,直到你找到你想要的:
SetupDiEnumInterfaceDevice( hDevInfo, NULL, &HIDWatch::GUID_DEVINTERFACE_HID, index++, &InterfaceInfoData )
通过SetupDiGetInterfaceDeviceDetail
获取设备详细信息。。。然后通过具有CCD_ 3访问权限的CCD_ 2打开设备路径的文件句柄。。。运行DeviceIoControl
以使用IOCTL_HID_GET_PRODUCT_STRING
获得产品字符串。如果不是您的设备,请关闭文件CloseHandle
。如果它是你的,那么坐在一个循环中(最好是在线程上)执行ReadFile
,你就会从设备中获得原始记录。
这应该会让你走。。。
通常情况下,GPS传感器在Windows中显示为串行端口。没有必要做特定的USB处理。
只需通过CreateFile/ReadFile进行串行通信,并解析接收到的GPS NMEA数据。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 如何在C++(VS2010)中设置超时读取USB端口?
- 读取USB与操作系统、C++之间传输的数据
- 在 Linux 中禁用 USB 大容量存储设备的读取缓冲
- 读取 USB 串行数据时出现问题
- 读取 USB 相机的输入编辑并将输出发送到 Windows 上的虚拟相机
- 带虚拟COM端口的USB串行设备-如果使用带USB路径的CreateFile(),则ReadFile()读取零字节
- Arduino Trinket/Attiny85 USB:可以读取所有按键的状态
- USB串行虚拟COM端口:读取不工作,但写入工作
- Arch Linux C 读取USB小鼠定位数据
- 如何从USB设备读取证书并将其发送到Firefox等浏览器
- C++从外部设备读取数据 - 连接:光电USB
- 在Windows 7上使用C++从USB读取数据
- 使用libusb从USB闪存驱动器读取数据
- 读取扫描器原始数据从usb
- 在Ubuntu中使用c++从串口读取数据到USB
- Lib usb如何从端口读取字符
- 在 Ubuntu 上通过 USB 读取斑马打印机状态
- 使用vc++2010从usb读取文件/文件夹
- 如何使用Visual c++从USB大容量存储设备读取文件