1

バーコード スキャナを USB ポートに接続しました。スキャナーからアプリに直接データを取得するには、モードを HID キーボードからシリアル ポート エミュレーションに変更する必要がありました (リーダーは、システムによって HID システム キーボードではなく通常の HID デバイスとして認識されます)。これまでのところ、すべてうまくいっています。

問題は、デバイスを見つけるために VID 番号と PID 番号を知る必要があることです。これらの値は知っていますが、デバイスを名前で検索したいと考えています。

SimpleHIDWrite というプログラムを見つけました。

http://www.lvr.com/hidpage.htm

プログラムを起動すると、デバイスに「Symbol Bar Code Scanner」というわかりやすい説明が表示されます。

私は自分でこの名前にたどり着こうとしました-私は構造を使用しました:

HIDD_ATTRIBUTES
HIDP_CAPS
SP_DEVICE_INTERFACE_DATA
SP_DEVICE_INTERFACE_DETAIL_DATA
SP_DEVINFO_DATA

ただし、この説明にアクセスできる構造体のフィールドが見つかりませんでした。

残念ながら、これを行う方法を学ぶための SimpleHIDWrite ソース コードが見つかりません。

手伝って頂けますか?

4

3 に答える 3

2

lvr.com私はここのフォーラムで私の質問に対する答えを見つけました:

HIDデバイス(USB)の詳細な説明(lvr.com/forums)

于 2010-09-23T08:24:53.410 に答える
2

そのページの同じセクションに、ソース付きの HidTest プログラムがあります。そのプログラムは、「Delphi 用の HID コントローラー コンポーネント スイート」というリンクから見つかった HID コントローラー コードを使用しているようです。おそらくそれはあなたが探しているものを与えることができますか?(少なくとも、すべての Delphi コードから関連する部分を選択できれば。)


私は最近、正確な種類のものを研究していますが、まだ実際に試す時間がありません. したがって、ここに続くことは少し推測です。

あなたがする必要があるのは、USBデバイスとしてデバイスへの接続を開くことだと思います。HID レベルの関数は、必要な説明を提供するようには見えません。これは、USB デバイスからVendorIDと ProductID を取得することに関する別の SO の質問です。非常によく似た手法を使用して を読み取り、フィールドにUSB_DEVICE_DESCRIPTORアクセスできるとiProduct思います。これは、必要な説明であると私は信じています。

私は USBView と呼ばれるプログラムに出くわしましたが、これはどうやらこの種の USB デバイスとの通信 (とりわけ) を行っているようです。ここでコンパイルされたバージョンを見つけました。ただし、ソースはおそらく Windows Driver Development Kit に含まれています。それはおそらく C または C++ のソースですが、Microsoft から DDK をダウンロードして実際に何があるかを確認する時間はまだありません。


編集:

私はこれをより深く掘り下げる時間がありました。そして、あなたが知ったことHidD_GetProductStringも役に立ちました。Intelの例のこのページも見つけました。そこにある「Display HID」プログラムは、その機能を使用する 1 つの方法を示しています。

その関数のドキュメントとその例に基づいて、デバイスから同じものを読み取ってiProductいるように見えます.USBレベルではなくHIDレベルからそうしているようです. またはそのようなもの。私が確かに知っているのは、これまでのところ、自分のテスト プログラムで動作していることだけです。

于 2010-09-21T14:15:20.297 に答える
0

うーん... iProduct の問題は、最初にデバイスを記述するこの文字列の要求をデバイスに送信してから、データを受信する必要があることです。バーコード スキャナーは読み取り専用なので、デバイスにデータ (要求) を送信できません。

SimpleHID には、スキャナーの説明「シンボル バー ocde スキャナー」があり、コントロール パネル (デバイスとプリンター) に表示される名前とまったく同じであることがわかりました。だから私の質問は、このデバイスの名前を取得する方法ですか?

于 2010-09-22T08:49:12.617 に答える