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

The*_*ese 4 c++ io usb libusb windows-7

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

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

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

  1. 关于如何与USB进行通信的解释/教程
  2. 有关如何从Windows 7上的USB设备读取数据的更具体的教程/指南/示例代码
  3. 究竟什么是libusb,是我在寻找什么?

mar*_*ark 5

好吧,如果你想要来自设备的原始数据,你可以在USB设备列表中找到它,并像文件一样从中读取它.

从获取所有设备开始:

HDEVINFO hDevInfo = SetupDiGetClassDevs( &HIDWatch::GUID_DEVINTERFACE_HID, 0, 0, DIGCF_DEVICEINTERFACE );
Run Code Online (Sandbox Code Playgroud)

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

SetupDiEnumInterfaceDevice( hDevInfo, NULL, &HIDWatch::GUID_DEVINTERFACE_HID, index++, &InterfaceInfoData )
Run Code Online (Sandbox Code Playgroud)

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

这应该让你去...