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_Open(struct strHidDevice* pstrHidDevice, WORD vid, WORD pid, DWORD deviceIndex, char serialNumber[SERNUM_LEN], DWORD totalDevNum, DWORD totalSerNum)

说明

尝试在系统上与此 VID/PID 和序列号关联的器件列表中查找索引为 deviceIndex 的器件。如果找到,它会打开该器件的句柄,将其存储在 pstrHidDevice 结构中,并加载该结构中的其他字段。

为了实现其目标,HID_Open() 需要另外两个参数。一个参数是 totalDevNum,这是 vid 和 pid 描述的器件上的 HID 接口数量。开发人员通常已经知道这个数值。如果不知道,则可以调用 HID_GetNumOfInterfaces()。另一个必需的参数是 totalSerNum,它是系统上与此 VID/PID 匹配的序列号(物理器件)总数。

deviceIndex 是一个从 0 到 totalDevNum-1 的数字。使用 vid、pid 和 serialNumber 筛选 Windows HID 器件列表后,该列表实际上会简化为仅包含 HID 器件,这些器件代表着特定物理 USB 器件中包含的 HID 接口。剩下的就是选择其中一个接口,这就是 deviceIndex 的功能。这些 HID 器件的顺序(从 0 到 totalDevNum)与在器件的 USB 描述符中声明 HID 接口的顺序相同(请参阅 节 3.5)。

如果 vid 和 pid 描述的器件中只有一个 HID 接口,deviceIndex 就为 0。

该函数会假定此器件实际上是 HID 器件,而不是其他类型的 USB 器件。

参数

表 4-6 HID_Open() 的参数
strHidDevice* pstrHidDevice包含新打开的器件的结构。
WORD vid要打开的器件的 16 位供应商 ID。
WORD pid要打开的器件的 16 位米6体育平台手机版_好二三四 ID。
DWORD deviceIndex此 VID/PID 和序列号所对应可用器件内的索引。
char serialNumber[SERNUM_LEN]要查找的器件的序列号的字符串,大小为 SERNUM_LEN (40)。
DWORD totalDevNum此 VID/PID 和序列号描述的物理器件上的 HID 接口总数。
DWORD totalSerNum此 VID/PID 对应的可用物理 USB 器件总数
返回值HID_DEVICE_SUCCESS。已找到并打开器件。
HID_DEVICE_ALREADY_OPENED。已打开器件。
HID_DEVICE_NOT_FOUND。找不到此 VID/PID/索引标识的器件。