問題タブ [pywinusb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-2.7 - PythonでUSB HIDデバイスとの間で簡単に読み書きできますか?
Pythonを使用して読み書きする方法を理解しようとしている、かなり単純なUSB HIDデバイスを持っています。PyWinUSB を使用して読み取ることができましたが、書き込もうとすると問題が発生します。それに書き込もうとすると、物事が爆発します。
例えば:
これはうまくいきます。次に、生データを読み取るために、これが今私が気にかけているすべてです (呪われたものに書き込む方法を理解できたら、それを処理します):
これは問題なく動作します (実際、動作するのを見たときは非常に興奮しました)。したがって、次のようにデータ ハンドラーを割り当てます。
そして、ボタンを押すたびに、それは問題ありません。期待どおりにデータが送信されます。これは素晴らしいです!
デバイスに書き込みたいときに問題が発生します。サンプルの simple_send ファイルをテンプレートとして (これはおそらく最良の選択ではありませんでした)、次のようにします。
これは、4 つのエントリを保持するディクショナリを含むレポート オブジェクトを返します。あれは正しいですか?output_reports オブジェクトを使用してデバイスに書き込みますか? レポート値をANYTHINGに設定してそうしようとしています:
これにより、解釈できない不快なエラーが返され続けます。
私は Windows 7 を使用しています。HID DLL エクスポート関数の参照を (最終的に) 見つけることができました。PyWinUSB ライブラリを使用する必要はありません (または、実際に使用したい場合もあります)。私はこれを機能させたいだけで、それほど難しいとは思われませんでしたが、そうでした.
誰かが私がここで間違っていたことを教えてもらえますか?
ありがとう。
また、エラー コールを追跡してみましたが、プログラムが終了する前にこれを作成しました。
python-2.7 - Python から SetupDiGetClassDevs を呼び出すと、整数値のみが返されます
かなり単純な USB デバイス用の単純な読み取り/書き込みアプリケーションを作成しようとしていますが、それほど単純ではないことがわかりました。
私は WinUSB および SetupAPI DLL を使用しており、必要なものに対して実際に機能するものを見つけることができないため、ゼロから作業しています。PyWinUSB や PyUSB などは近かったのですが、実際にそれらを使ってデバイスに書き込もうとすると失敗しました。
とにかく、今私はまだほぼゼロにいます。指示に従って、SetupAPI.dll から SetupDiGetClassDevsExW 関数を呼び出しています。0 を返す kernel32.lasterror 関数の呼び出しによって示されるように、関数は正しく実行されますが、呼び出しから返されるのは整数値だけです。あれは正しいですか?これは正しい機能ですか?(類似したものは 4 つあり、単純な SetupDiGetClassDevs 関数だけではありません。4 つの関数とは、SetupGetClassDevsExW、SetupGetCLassDevsExA、SetupGetClassDevsA、および SetupGetClassDevsW です。)これを使用するクラスを作成する必要がありますか? 次の関数である SetupDiEnumDeviceInterfaces を呼び出しても、コード 259 で失敗するだけでした。これは、簡単な Google 検索によると ERROR_NO_MORE_ITEMS を意味します。
誰かが情報を保持するための構造を作成するための正しいクラス構造メソッドを示してくれたという点で、私はある程度の進歩を遂げましたが、Python は言うまでもなく、USB デバイスのプログラミングを実際に行ったことがないので、私はまだちょっと立ち往生しています。回答に必要な情報はこれ以上提供しますが、現時点では、この Q/A を不必要な情報で行き詰らせたくありません。
ありがとう。
python-2.7 - 関数 SetupAPI.DLL.SetupDiEnumDeviceInterfaces() に最後の値として何を渡しますか?
私はPythonで作業しており、かなり単純なUSBデバイスとの間で読み書きする単純なプログラムを作成しようとしています. 私が抱えている問題は、PyWinUSB と PyUSB には必要なものがないように見えるため (デバイスに書き込もうとすると爆発する)、ctypes python モジュールと生の dll 関数を使用してゼロから作業する必要があることです。 WinUSB と SetupAPI。
関数に渡す構造体を定義する方法についての質問には答えることができましたが、現在の問題は、関数の仕様によると...まあ、私は'そのまま引用します。
これらの要件を Python に変換するにはどうすればよいですか?
私が現在取り組んでいる構造クラスは次のようになります。
以前の質問への回答で知らされたことによると。
ありがとう。
python - PyWinUSB 判読不能エラー メッセージ
私が持っているかなり単純な USB デバイスと通信するために PyWinUSB を使用しようとしています。デバイスは 2 つのコンポーネントです。ワイヤレス トランシーバーと、5 つのボタン、ロータリー ダイヤル、ディップ スイッチを備えたデバイス本体。いずれかのボタンを押すと (ダイヤルとスイッチの設定によって異なります)、値がトランシーバーに送信されます。
デバイスは、さまざまな目的で信号を受信することもできます。
PyWinUSB を使用して、デバイスからの入力の受信に問題はありませんでした。私が抱えている問題は、何かをデバイスに送信しようとしたときに発生します。これにより、まだ解読できていないエラーが発生します。simple_send.py のサンプル プログラムに初歩的な変更を加えるだけでも、爆発的な結果になります。
私が抱えている問題は、ターゲットの使用パラメータがわからないことだと思います。これが何をするのか 100% 確信しているわけではありませんが、デバイスを見つけた後にデバイスからレポートを取得したときに運が良かったのですが、それ以上は理解できませんでしたエラーが発生し続ける理由と、それを修正するためにできること。
エラー自体はここにあり、私のバージョンの simple_send.py の例はここにあります。フィードバックをお待ちしております。
python-2.7 - pywinusb / python から USB デバイスを初期化する
私の問題は、「PythonでUSB HIDデバイスから/への単純な読み取り/書き込みですか?」によって提案されたもののようにロックされますが、それに従っても結果は得られませんでした。問題: USB 接続を HID デバイスとして実装する Oregon WMRS200 Meteo ステーションを処理しようとしています。以下にリストされているように、「raw data.py」が提供する例の適応/簡素化を開始しました
データの転送は開始されません。システムを一度初期化する必要があることをネットで見つけました (リセットまたは pw 障害の後) バッファー 0x20 0x00 0x08 0x01 0x00 0x00 0x00 0x00 を送信する 問題は、送信方法がわからないことです。(上記の例のように)レポートを送信するようなことをしても、何の結果も得られません。
リセット後、元の oregon sw すべてが機能し始めると開始および停止した場合、つまり、チャネルが何らかの形で初期化されます。通信チャネルにスニファをインストールすると、バイト文字列がデバイスに送られているのがわかると思いますが、どうすれば送信できますか?? これは、元の sw を使用したスニファーの出力です。バイト パターンは、デバイスに向かう URB 9 ~ 10 で見られる可能性があると思います。
URB 11 から --> 私のサンプル スクリプトでも通常の転送が開始されます。
私は十分に明確であることを願っています.....助けてくれてありがとう。
python - ハンドラー関数からデータ/例外を取得する
有効なリクエストがWebサーバーにヒットしたときに、Pythonとpywinusb-0.3.2を使用してUSB重量計からデータを読み取ろうとしています(requested_serial_number
クエリ文字列から来ています)。
だから私は私の中に次のコードを持っていますdo_GET
:
そして、これは私のscales_handler(およびカスタム例外定義)です:
したがって、プロセスは次のとおりです。
- Python は、http.server
HTTPServer
とBaseHTTPRequestHandler
- リクエストが来て、私の機能にルーティングされ
do_GET
ます。 - は
do_GET
いくつかの基本的な検証を実行してから、一致する USB HID を検索します (私の最初のコード サンプル)。 - 一致が見つかった場合は、デバイスを開き、データ ハンドラーを渡します。
私が達成しようとしていること:
data[1] == 4
データハンドラーが(スケールからの安定した読み取りを示す)までスケールからの読み取りを継続できるようにしたいと考えています。その時点で、この読み取り値を my で取得do_GET
して待機中の HTTP クライアントに送信し、デバイスを閉じて関数を終了したいと考えています。
ただし、 myGotStableWeightException
は my 内に引っかかっていませんdo_GET
。別のスレッドでスローされているためだと思います。複数のスレッドを使用したプログラミングは初めてで、条件do_GET
に一致した結果を元に戻す方法がわかりません。data[1] == 4
編集
私が得るもの:
からターミナルに表示される出力は次のscales_handler
とおりです。
python - Python用のシンプルなクロスプラットフォームHIDモジュールはありますか?
はかりなどの USB HID デバイスから受信データを取得するコードを作成しようとしています。Windowsにpywinusbを使用しましたが、クロスプラットフォームにする必要があります。pyhid は、Mac OS X 専用だと言っています。これまでに見つけた唯一のクロスプラットフォーム モジュールは libhid で、C で書かれていますが、まだ Python でアクセスできます。ただし、Python での使用方法に関する役立つインターネット ソースは見つかりませんでした。
私がする必要があるのは、USB スケールから重量を読み取ることだけです。
他にクロスプラットフォームの Python HID モジュールはありますか?
python - Python で HID ゲーム コントローラーからデータを受信する
Python スクリプトを使用してゲーム コントローラーのヒューマン インターフェイス デバイス (HID) と通信しようとしていますが、コントローラーからデータを受信できません。私は pywinusb 0.3.2 と Python 3.3 を使用しています。ゲーム コントローラは Logitech Gamepad F310 です。pywinusbへのリンクはこちらです。
PythonにHIDを認識させることができましたが、そこからどこへ行くべきかについて行き詰まっています。コントローラーを認識するための私のコードは次のとおりです。
このコードは次のようなものを返します: HID device (vID=0x00a, pID=0xa000, v=0x0000); ロジクール; ロジクール デュアル アクション、パス: \(ここでは数字と文字の長いシーケンス)
ここでのアプローチがコントローラーで機能するかどうか、または pywinusb に適した別のライブラリがあるかどうかはわかりません。ライブラリを切り替える必要がある場合は、クロスプラットフォームのものに切り替えることをお勧めします。含まれている例のセクションにある少量のドキュメントでは、これを理解するのに十分ではありませんでした。
私の質問は次のとおりです。コントローラーからデータを受け取るにはどうすればよいですか? コマンドはありますか?私は Arduino を少し使ったことがありますが、それを Wii ヌンチャクに接続するのも同様のプロセスでした。Arduino と同様に、初期化シーケンスを送信する必要がありますか? コントローラーの両方のスティックの x 値と y 値、およびボタンが押されているかどうかを知る必要があります。
これが明らかであるか、すでに回答されている場合は、お詫び申し上げます。Python で HID を使用したことはありません。