ZHCACO6A january   2011  – may 2023

 

  1.   1
  2. 1MSP430™ USB HID Windows API 编程人员指南
  3. 2引言
  4. 3实现
    1. 3.1 概述
    2. 3.2 文件组织
    3. 3.3 系统要求
    4. 3.4 MSP430 USB API 堆栈
    5. 3.5 Windows 如何将物理 USB HID 器件映射到主机应用程序
    6. 3.6 在系统上查找特定 HID 器件/接口并将其打开
    7. 3.7 发送/接收数据
    8. 3.8 检测 HID 器件的动态连接/断开
  5. 4函数调用参考
    1. 4.1 器件连接管理和初始化调用
      1. 4.1.1 VOID HID_Init(struct strHidDevice* pstrHidDevice)
      2. 4.1.2 DWORD HID_GetSerNums(WORD vid, WORD pid, struct strTrackSerialNumbers *serialNumList)
      3. 4.1.3 DWORD HID_GetNumOfInterfaces(WORD vid, WORD pid, DWORD numSerNums)
      4. 4.1.4 BYTE HID_Open(struct strHidDevice* pstrHidDevice, WORD vid, WORD pid, DWORD deviceIndex, char serialNumber[SERNUM_LEN], DWORD totalDevNum, DWORD totalSerNum)
      5. 4.1.5 BYTE HID_Close(struct strHidDevice* pstrHidDevice)
      6. 4.1.6 BYTE HID_GetVersionNumber(struct strHidDevice* pstrHidDevice, USHORT * VersionNumber)
    2. 4.2 发送/接收数据
      1. 4.2.1 BYTE HID_WriteFile(struct strHidDevice* pstrHidDevice, BYTE* buffer, DWORD bufferSize, DWORD* bytesSent)
      2. 4.2.2 BYTE HID_ReadFile(struct strHidDevice* pStrHidDevice, BYTE* buffer, DWORD bufferSize, DWORD* bytesReturned)
    3. 4.3 即插即用管理
      1. 4.3.1 BYTE HID_RegisterForDeviceNotification(HWND hWnd, HDEVNOTIFY* diNotifyHandle)
      2. 4.3.2 BYTE HID_UnregisterForDeviceNotification(HDEVNOTIFY* diNotifyHandle)
      3. 4.3.3 BOOL IsDeviceAffected(struct strHidDevice* pstrHidDevice)
  6. 5演示应用程序
  7. 6MSP430 USB 工具套件
  8.   HID 接口数据结构:strHidDevice
  9.   HID 数据管道器件上的报告格式
  10.   C 参考文献
  11.   C 修订历史记录

BYTE HID_ReadFile(struct strHidDevice* pStrHidDevice, BYTE* buffer, DWORD bufferSize, DWORD* bytesReturned)

说明

从 pStrHidDevice 指定的 HID 器件获取 bufferSize 个字节的有效负载数据,并将其存储在缓冲区中。它通过根据需要读取尽可能多的 HID 报告,直到返回 bufferSize 个字节,来实现这一点。

如果该函数返回 HID_DEVICE_SUCCESS,则 bytesReturned 将等于 bufferSize。只有出现其他返回代码之一时,bytesReturned 才会小于 bufferSize。

此函数通过将 HID 报告用作“数据包”来接收数据。根据 pStrHidDevice.uGetReportTimeout 的值,如果从 USB 器件获取数据包的任何尝试超时,该函数会返回 HID_DEVICE_TRANSFER_TIMEOUT。

除了 bufferSize 以 DWORD 值形式施加的限制外,可以接收的字节数没有内在限制。打包由系统自动处理。

参数

表 4-11 HID_ReadFile() 的参数
strHidDevice* pstrHidDevice包含 HID 器件信息的结构。
BYTE* buffer包含接收数据的数组
DWORD bufferSize缓冲区大小,表示预期接收的最大字节数
DWORD* bytesReturned实际接收到的字节数(发生错误时)
返回值HID_DEVICE_NOT_OPENED。HID 器件无法打开。
HID_DEVICE_TRANSFER_TIMEOUT。报告请求超时。
HID_DEVICE_TRANSFER_FAILED。传输因不明原因而失败。
HID_DEVICE_SUCCESS。接收到正确数量的字节。