本文档详细介绍了如何使用Visual C++ 6.0 (VC++6.0) 编写应用程序与USB Human Interface Device (HID) 设备进行通讯,特别针对的是不需要自定义驱动程序的情况。HID设备是一种广泛应用于各种简单输入输出设备的标准,如温度计、电压计和读卡机,其数据传输基于预定义的报告描述符。
首先,要实现与HID设备的通信,关键在于修改设备的固件程序中的报告描述符。报告描述符定义了设备与主机之间的数据交互模式。在这个例子中,开发者约定了一个固定的64字节报文格式,上位机(即主机应用程序)发送的数据作为命令或数据,而设备的响应同样遵循这个约定,每个字节的含义由开发者预先设定。
1. 在固件程序中,找到MouseReportDescriptor函数,这通常负责定义报告描述符的结构。原始代码可能如下:
```
codecharMouseReportDescriptor[29]={
// ...
}
```
修改的部分包括设置通用用途页(USAGE_PAGE)、用途(USAGE)、集合类型(COLLECTION)、报告最小值(LOGICAL_MINIMUM)、报告最大值(LOGICAL_MAXIMUM)、报告大小(REPORT_SIZE)、报告数量(REPORT_COUNT),以及输入类型(INPUT)等。这些参数决定了设备如何解释接收到的数据和发送的数据包。
2. 例如,将描述符修改为:
```
codecharMouseReportDescriptor[29]={
0x06,0x00,0xFF, // VendorDefinedPage1
0x09,0x01, // VendorUsage1
0xA1,0x01, // Application Collection
// ... 更多字段
0x81,0x02, // Input Data, Variable Length
}
```
3. 为了实现实际通信,上位机程序需要使用hidapi等库来发送和接收这些定制的报文。开发人员需要编写代码,首先初始化HID设备,然后定义报文发送函数,其中包括数据填充和发送,以及数据解析和处理函数来处理设备的响应。
4. 在编写应用程序时,开发者应确保对报告描述符的理解准确无误,因为它是设备与主机通信的语言。如果需要更改报文格式或添加新的功能,只需相应地更新描述符并重新编译固件。
总结来说,本文档提供了使用VC++6.0开发上位机应用程序与USB HID设备交互的详细步骤,重点在于报文描述符的修改和应用编程接口的运用。通过遵循这个方法,开发者可以轻松地与各种HID设备集成,实现数据的读写,而无需专门针对每个设备创建驱动程序。