2017-01-15 25 views
2

まずは、USB機能を使ってドライバを作成する方法はほとんど経験していません。本質的にこのプロジェクトを学習体験にしようとしています。Pro Micro用のWindowsドライバの作成

私の設定は、SparkFun Pro MicroボードとWindowsマシンで構成されています。私はPro Microに接続されたポテンショメータを持っています。私の最終目標は、ポテンショメータの値をホストマシンに送り、システムボリュームなどの値を変えるために値を使用することです...

ArduinoライブラリにはライブラリをSerialと私はそれを使用してUSB経由で物事を送ることができます。私は現在、1秒ごとに1バイトを送信する作業用のArduinoプログラムと、COMポートに "接続"して来るバイト(この部分は正常に動作しています)を読み取るWindowsマシン上のCプログラムを持っています。

問題は、Pro Microがコンピュータに接続されているときにランダムに選択されたCOMポートに表示され、どのCOMポートがどのデバイス(このビットについてはわからない)を保持しているのかわかりません。

私の最終目標は、Pro MicroがPCに接続されているときに、ホストプログラムが自動的にPro Microを認識し、そこから来るデータの処理を開始することです。それをHIDデバイスとして設定し、それを自分のカスタムデバイスとしてDevice Managerに表示させることは、私がやりたいこと、特に学習体験のために興味を持っていることですが、私はそれが過度に複雑になるかもしれないと感じています。

誰かが私が何をすべきか、見ていくべき正しい方向を指すことができますか?

+1

あなたはすべてのCOMポートをポーリングし、プロミクロように応答しているかを見つけることができます:でも例がまさにそれを行う「例」フォルダ内にあるのでしょうか?私はボードに精通していませんが、ボードには通常それらを識別できるプロトコルがあります。 – DyZ

+0

@DYZ私はそれをやろうと考えていましたが、「だます」ように感じると思います。ハードウェアIDなどで識別できるものはありますか?また、Pro Microは本質的に邪魔にならないArduinoボードです。 – skyguy126

+1

私はそれが浮気だとは思わない。起動時に、OSが接続されているすべてのデバイスをどのように探し出すかが正確です。 – DyZ

答えて

1

は多分

あなたは背景を知りたい場合:Arduinoのは、(コミュニケーション・デバイス・クラス - 抽象コントロールモデルhttps://en.wikipedia.org/wiki/USB_communications_device_class)USB CDC ACMクラスを実装し、COMポートをエミュレートします。 Windowsはこのクラスを認識し、ドライバーが新しい(仮想)COMポートをロードされているusbser.syshttps://msdn.microsoft.com/de-de/library/windows/hardware/dn707976%28v=vs.85%29.aspx)がアクセス可能である良いと考えドライバをロード

最高の源であるHow does windows map the virtual com port to a devicehttps://superuser.com/questions/851192/change-com-port-number-programmaticallyhttp://www.ftdichip.com/Support/Documents/AppNotes/AN_132_Re-Assigning_COM_Port_Numbers_Using_Registry.pdf

+0

ポインタありがとう。また将来の参照のために、どのシナリオでドライバを書く必要がありますか? COM経由で通信するプログラムとドライバの作成の違いは何ですか? – skyguy126

+2

ハードウェアデバイス間での情報交換を可能にするドライバが必要です。これには、グラフィックカード、ハードディスク、北/南ブリッジなどの低レベルのデバイスが含まれます。ドライバを作成する必要がない理由ドライバが既に存在しているということです(usbser.sys)。これは標準化のために可能です。あなたのハードウェアが標準に準拠していない場合(つまり、標準のUSBプロトコルを使用しない場合)、またはハードウェアが完全に新しいため、デバイスを標準にするドライバを実装する必要がある場合は、独自のドライバを作成する必要があります準拠しているか、まったく動作しています... –

1

私が使用することをお勧めしますlibusbpは、USBベンダーIDと製品IDを指定して、COMポートの名前を見つけるために使用できるCライブラリです。

https://github.com/pololu/libusbp

+0

ありがとう、私はそれを見てよ! – skyguy126

関連する問題