2012-05-03 4 views
6

最近、私はインクリメンタルポジションエンコーダとしての光学式マウスの美しさを発見しました。エンコーダとしてのオプティカルマウス

通常、光学マウスには、カメラがUSBインターフェイスにリンクされたイメージプロセッサにリンクされている1つのコンポーネントが含まれています。解像度はカメラの解像度に依存します。インターネット上では、このタイプのコンポーネントのデータシートを読み書きする方法も簡単に説明しています。

私が最初に解決する必要があるのは、接続されているUSBポートを無効にせずに、エンコーダマウスがポインティングデバイスとしてラップトップ/ pcに認識されないようにする方法です。 2つのエンコーダを使用する必要があります。つまり、マウス(ポインティングデバイス)とマウス(エンコーダ)として3つのUSBポートを使用する必要があります。

もう1つの質問は、USBポート経由でエンコーダマウスからの命令/データの読み書き方法です。誰か私にC++のチュートリアル/例へのリンクを送ってもらえますか?事前に非常に

おかげで、

ステファン

+1

これはまったく明確ではありません。あなたは何を達成しようとしていますか? –

+0

これは、特定の質問に対する回答ではなく、たくさんのコードを書くように求めているようです。 – Linuxios

+1

RS-232マウスの場合は、OSがシリアルポート上でマウスを見つけられるようにする簡単なプロトコルがあるため(1200ビット/秒、7データビット、1ストップビットパリティなし、RTSとDTRをオフにし、100(?)ms待機し、RTSとDTRをオンにし、マウスは文字「M」を返して通常動作を開始する)。あなたは、Windowsが起動時にマウスを発見する機会を持っていないことを確認することができる配線を少し演奏。次に、シリアルポートを自分でプログラムし、自分自身でマウスを使用することができます。 –

答えて

4

USBマウスマイクロコントローラは、おそらくHIDデバイスとして自身を特定するUSB​​フレームを送信するためにハードコードされています。その場合、Windowsがマウスとして使用するのを防ぐのに成功することはほとんど期待できません。結局のところ、これはマウスです。

あなたがDIYにいる場合は、コンポーネント/ワイヤの半田付けを解除してマウスボードをハックし、arduinoでエンコーダを直接制御することができます。このようにして、Arduinoはエンコーダからデータを読み取り、独自のUSBシリアルポートを使用してPCに送信することができました。 USBレベルおよびオペレーティングシステムレベル:「USBのHIDに関連するAPIは、2つのレベルがあり :http://en.wikipedia.org/wiki/USB_human_interface_device_class 抜粋:HIDデバイスの詳細情報については

http://www.martijnthe.nl/2009/07/interfacing-an-optical-mouse-sensor-to-your-arduino/

がある例を参照してください。 USBレベルでは、デバイスがその機能をアナウンスし、オペレーティングシステムが取得したデータを解析するためのプロトコルがあり、オペレーティングシステムは、個々のデバイスのサポートを含む必要のないアプリケーションに、より高いレベルのビューを提供しますこのクラスの抽象化レイヤーを使用すると、USBコントローラーでゲームを行うことができます。ゲームの後に作成されたものでもあります。

+0

したがって、マウスがそのデータを送信することはできますが、Windowsの情報をマウスデータとして使用することはできません。言い換えれば、Windowsでは本当に1つのマウスだけをマウスとして使用して接続することはできません。私はプラグアンドプレイの経験はありませんが、少なくともOSの側面で何かを設定できることを願っていました。 – noste99

+0

あなたがマウスのマイクロコントローラを再プログラムする方法を知っていたら、あなたはあなたが望むUSBフレームを送ることができるはずです。しかしarduinoをプログラミングする方法は簡単です。問題はWindows側ではありません。それはマウスがOSを伝えるフレームを送信していることです:私はマウスです。これは、USBマウスに接続してOSプラグインで再生できる理由です: – fjardon

+1

ありがとうございます。リンクは非常に便利です。 arduinoは良い解決策かもしれませんが、私は自分のpc/CPUがアイドルであるという考えを受け入れるのは難しいですが、事態が複雑になるため追加のプロセッサーを追加する必要があります。経験を収集して検索を続けるために、上記のURLに記載されている内容を試してみます。助けてくれてありがとう。 – noste99

2

Raw Input APIを見て、そのような方法でイベントを受け取り、Windowsの動作を阻止できるかどうかを確認してください。

+0

ヒントをありがとう。これは私には新しく、もっと知るには時間が必要です。 – noste99

+0

+1それについて知りませんでした。ここに必要なものが正確に見えます。 – fjardon

+0

Deanmaは、あなたが提案した内容を詳細に研究していないが、Raw入力APIを使用してデバイスに書き込むことは可能ですか?送信されたデータを読んで、それを使用して処理するかどうかを決定するだけのようです。ステファン – noste99

関連する問題