JAJA452A 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-Datapipe デバイスに関するレポートの形式
  10.   C 関連資料
  11.   C 改訂履歴

システム上で特定の HID デバイス / インターフェイスを見つけて開く

このドキュメントの残りの部分では、以下の用語を使用します。

  • HID デバイス: Windows HID デバイス・リスト内のデバイス
  • 物理 USB デバイス: USB バス上に独自のアドレスを持つ、実際の USB ハードウェア
  • HID インターフェイス: 物理 USB デバイスの USB ディスクリプタ内で宣言されたインターフェイス。デバイス上で唯一のインターフェイスである場合もあれば、複合 USB デバイスの一部として複数のインターフェイスの 1 つである場合もある。HID インターフェイスは、Windows の HID デバイスに関連付けられている。

ホスト・アプリケーションの開発者は、USB デバイスへのアクセスを開始するとき、通常、関連付けられているデバイスの VID/PID ペアを知っています。両者は通常、同じ当事者によって設計されているからです。したがって、このプロセスは、HID_GetSerNums() の呼び出しから始まります。この関数は、VID/PID をパラメータとして受け取り、シリアル番号のリストを返します。各シリアル番号は、その VID/PID に関連付けられているバス上の物理 USB デバイスを表します。アプリケーションは、これらの物理デバイスのうち 1 つだけと対話することを選択することも、複数のデバイスと対話する機能を与えることもできます。

また、アプリケーション開発者は、通常、これらの物理デバイスがそれぞれいくつのインターフェイスを持っているかも知っています。何らかの理由でこれがわからない場合は、関数 HID_GetNumOfInterfaces() を呼び出すことができます。デバイスを開くために HID_Open() を呼び出すときは、物理デバイス上の HID インターフェイスの総数を知る必要があります。

VID、PID、およびシリアル番号を使用して HID デバイス・リストをフィルタリングすると、残るのは、これらのパラメータで記述された物理 USB デバイス内のすべての HID インターフェイスを表すリストだけです。このリストは通常 1 つまたは 2 つですが、MSP430 では最大 8 つになる場合があります。このリストの順序は、物理デバイスの USB ディスクリプタに HID インターフェイスがリストされている順序と同じです。このようにして、API スタックを使用するホスト・アプリケーションと MSP430 アプリケーションは互いに「見つける」ことができ、完全なデータ・リンクを形成できます。

USB デバイス内の目的の HID インターフェイスの VID/PID、シリアル番号、およびインデックスを用意すると、アプリケーションは HID_Open() を呼び出して、物理 USB デバイス上の HID インターフェイスへの接続を開くことができます。

アプリケーションがデバイスの使用を終了するとき (プログラムを終了するときなど)、アプリケーションは HID_CLOSE() で、開いている HID デバイスを閉じる必要があります。