4

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

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

总结一下我认为需要的东西(我知道我到处都是):

  1. 一般如何与 USB 通信的说明/教程
  2. 有关如何在 Windows 7 上从 USB 设备读取数据的更具体的教程/指南/示例代码
  3. libusb 到底是什么,它是我正在寻找的吗?
4

2 回答 2

5

好吧,如果您想要设备中的原始数据,您可以在 USB 设备列表中找到它,然后像文件一样从其中读取。

从获取所有设备开始:

HDEVINFO hDevInfo = SetupDiGetClassDevs( &HIDWatch::GUID_DEVINTERFACE_HID, 0, 0, DIGCF_DEVICEINTERFACE );

枚举每一个,直到找到您要查找的内容:

SetupDiEnumInterfaceDevice( hDevInfo, NULL, &HIDWatch::GUID_DEVINTERFACE_HID, index++, &InterfaceInfoData )

通过 ... 获取设备详细信息,然后通过访问SetupDiGetInterfaceDeviceDetail打开设备路径的文件句柄... 运行以使用 . 获取产品字符串。如果不是您的设备,请关闭文件。如果它是你的,坐在一个循环中(最好是在一个线程上)做 a ,你会从设备中获得原始记录。CreateFileGENERIC_READDeviceIoControlIOCTL_HID_GET_PRODUCT_STRINGCloseHandleReadFile

那应该让你去...

于 2013-07-11T19:56:01.523 回答
0

通常,GPS 传感器在 Windows 中作为串行端口公开。无需进行特定的 USB 处理。

只需通过 CreateFile/ReadFile 进行串行通信并解析接收到的 GPS NMEA 数据。

于 2014-01-27T02:19:54.340 回答