在Windows 7上使用C++从USB读取数据

Read data from USB using C++ on Windows 7

本文关键字:USB 读取 数据 C++ Windows      更新时间:2023-10-16

我正在尝试读取Trimble SPS-361 GPS接收器的输出,该接收器连接到Windows;7机器,通过USB,使用C++(最好)或Java。我知道有人问过类似的问题,但我似乎找不到我要找的东西。听起来libusb是我最好的选择,是真的吗?如果是这样,什么是好的教程/指南/示例代码?

听起来我需要安装/编写某种特定于设备的驱动程序,然后我可以通过libusb用C++从设备上读取数据。这是从USB读取的一般过程吗?还是我感到困惑?

总结一下我认为需要什么(我知道我到处都是):

  1. 关于如何与USB通信的一般说明/教程
  2. 关于如何在Windows上从USB设备读取数据的更具体的教程/指南/示例代码;7
  3. 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数据。