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 修订历史记录

演示应用程序

这里提供了一个简单的演示应用程序,展示了如何使用该 API。该应用程序类似于 Hyperterminal 等 COM 端口终端应用程序。它会以类似的方式发送和接收数据块,只不过使用的是 HID 接口。

GUID-80B2D79B-AAE7-490D-8B67-92EB46B6F3FA-low.gif图 5-1 演示应用程序窗口

要运行该程序,请连接一个运行 HID API 堆栈的 MSP430 并使用数据管道函数调用。API 堆栈分发中提供了几个这样的示例,并提供了单接口 HID、CDC+HID 复合器件和 HID+HID 复合器件例子。所有这些都可以与此演示应用程序配合使用。

GUI 中的 VID 和 PID 字段用于选择应用程序要搜索的 VID/PID。输入这些值后,按下“Set VID/PID”按钮。

设置 VID/PID 后,应用程序会确定连接到系统的物理器件中有多少器件与此 VID/PID 匹配。它会查找相关器件的序列号并将其发布在“Serial Number”组合框中。它会自动选择列表中的第一个序列号,并继续确定该器件上存在的 HID 接口数量。它会将这些接口载入“Interface”组合框中,其中每个接口对应一个字符串:“HID 0”、“HID 1”等等。如果找到了任何 HID 接口,则默认选择“HID 0”。

按“Connect”按钮。这将打开与相应 USB 器件的数据连接。如果成功,按钮下方的字符串会指示成功。如果失败,请尝试以下操作:

  • 检查 Windows 器件管理器以确保该器件已经在系统上成功枚举为 HID 器件
  • 确保器件配备了 MSP430 HID API 堆栈并运行 HID 数据管道应用程序
  • 确保 descriptors.h 中显示的 VID/PID 与输入到演示应用程序字段中的值相同,并且按下了“Set VID/PID”按钮。

连接初始化后,可以通过输入文本并按“Send”来将数据发送到器件。应用程序只要从器件接收到数据,便会显示在大文本字段中。接收窗口可以使用“Clear”按钮清除。

如果在访问另一个器件时从总线上移除了该 HID 器件,或者添加了具有此 VID/PID 的另一个 HID 器件,应用程序会自动更新下拉菜单列表。