USB传输的上位机开发
0赞
发表于 5/21/2015 4:42:02 PM
阅读(4139)
由于使用HID设备类的USB传输不需要自己编写驱动程序,Windows操作系统自带HID设备类驱动,所以只需要调用相应的函数即可。
上位机程序首先需要做的事情就是查找USB设备。在Windows操作系统环境下,设备通常被当做特殊文件处理。要找到并打开这个设备,就需要知道该设备的路径(设备接口名)。要找到设备的路径,通常使用GUID来查找。通过调用HidD_GetHidGuid()这个函数就可以获取HID设备的接口类GUID。之后,再调用SetupDiGetClassDevs()这个函数就可以返回设备的一个信息集合的句柄。当信息集合句柄使用完之后,需要调用函数SetupDiDestroyDeviceInfoList()去销毁。在获得了信息集合后,调用SetupDiEnumDeviceInterfaces()函数就可以从信息集合中获取设备的接口信息。要想获得设备接口的详细信息,还需要调用SetupDiGetDeviceInterfaceDetail()函数。获得了设备接口的详细信息后,就可以使用CreateFile()函数打开设备了。打开设备后,再使用Hid_GetAttributes()函数获取设备的属性,在属性中包含了VID、PID以及产品版本号等信息。然后再比较VID、PID以及产品的版本号是否跟所指定的一致。如果一致,则退出查找,说明设备已经找到;如果不一致,说明这个设备不是我们需要的设备,切换到下一个设备,然后重复以上步骤。
找到指定的设备后,就可以对设备进行读/写数据了。如果设计的HID设备是使用中断端点来传输数据,就因该调用ReadFile()和WriteFile()函数来读、写报告。如果设计的HID设备是使用默认的控制端点来读/写报告,就因该调用HidD_GetInputReport()函数和HidD_SetOutputReport()函数。