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 改訂履歴

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() に 2 つの追加パラメータが必要です。1 つは totalDevNum で、vid と pid で記述されるデバイス上の HID インターフェイスの数です。通常、開発者はこれをすでに知っています。そうでない場合は、HID_GetNumOfInterfaces() を呼び出すことができます。もう 1 つの必須パラメータは、totalSerNum で、この VID/PID に一致するシステム上のシリアル番号 (物理デバイス) の総数です。

deviceIndex は 0 から totalDevNum-1 までの数値です。vid、pid、および serialNumber を使用して Windows HID デバイス・リストをフィルタリングすると、リストは特定の物理的 USB デバイスに含まれる HID インターフェイスを表す HID デバイスに実質的に縮小されます。残るのは、この中から 1 つのインターフェイスの選択することだけですが、これを行うのが deviceIndex です。これらの HID デバイスの順序 (0 から totalDevNum) は、HID インターフェイスがデバイスの USB ディスクリプタで宣言された順序と同じです (セクション 3.5 を参照)。

vid と pid で記述されるデバイスに HID インターフェイスが 1 つしかない場合、deviceIndex は単純に 0 にすることができます。

この関数は、このデバイスが実際に HID デバイスであり、別のタイプの USB デバイスではないことを想定しています。

パラメータ

表 4-6 HID_Open() のパラメータ
strHidDevice* pstrHidDevice新しく開いたデバイスを格納するための構造体。
WORD vidオープンするデバイスの 16 ビットのベンダ ID。
WORD pidオープンするデバイスの 16 ビットのプロダクト 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/index で識別されたデバイスが見つかりませんでした。