問題タブ [pyserial]

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.

0 投票する
3 に答える
25456 参照

python - pyserial によるバイナリデータ (python シリアルポート)

pyserial の serial.write() メソッドは、文字列データのみを送信するようです。[0xc0,0x04,0x00] のような配列があり、シリアル ポート経由で送受信できるようにしたいですか? raw I/O の別の方法はありますか?

配列を ['\xc0','\x04','\x00'] に変更する必要があるかもしれないと思いますが、それでも null 文字が問題を引き起こす可能性があります。

0 投票する
4 に答える
532440 参照

python - pySerial パッケージの完全な使用例

誰かがpyserialを使用する完全な python サンプル コードを見せてくれませんか。私はパッケージを持っていて、AT コマンドを送信して読み返す方法を考えています!

0 投票する
1 に答える
2054 参照

python - Python PySerial readline 関数の間違った使い方

COM4から読み取るためにPySerialをインポートするスクリプトを使用しています

インターセプトしたいメッセージは、いくつかの # で終わります

だから私は使用しようとしました

バスは私の接続先です。

私は次のように読むことを期待していました:

  1. *##*3##
  2. *##*3##
  3. *##*3##

残念ながら私も見つけました

  1. *#*1##*1*1*99##

2行に分割して読むと思っていた

  1. *##*1##
  2. *1*1*99##

明らかに readline が機能していませんが、なぜですか?

0 投票する
2 に答える
6811 参照

python - シリアルポート経由のpython監視

こんにちは、

シリアル ポート経由でイベントを監視する最善の方法について、いくつか提案をお願いしたいと思います。

PySerial を使用して、シリアル ポート経由で一部のデバイスに「コマンド」を書き込んでいます。

このデバイスのステータスに関するフィードバックを受け取りたいです。

最良の方法はどれですか: 1) パイプをいっぱいにして読み込む、2) 読み取り専用に委任された新しいスレッド、または何?

ソリューションを実装するための簡単なコードもお願いできますか?

0 投票する
4 に答える
13917 参照

python - pySerial で Python から入出力エラーを取得する

pySerialを介して Arduino ボードにデータ パケットを書き込む Python スクリプトがあります。コードをボードに書き込んでいるときに、pySerial が errno 5 の入出力エラーを発生させることがあります。

一部の調査によると、これは Arduino ボードへの接続を表すファイルへの書き込み中にエラーが発生したことを示しています。

送信するコードは、1 バイト パケットのみを送信します。

このコードによって出力されるエラーは次のとおりです。

OS エラー 入出力エラー Errno 5

送信中にコードに何か問題がありますか? シリアル接続が何かを送信する準備ができているかどうか、または送信後に遅延があるかどうかを確認する必要がありますか? または、ハードウェアまたはハードウェアとの接続に問題がある可能性がありますか?

編集: pyserial から Linux の実装を調べましたが、実装はエラーをコードに渡すだけです。したがって、そこからの新しい真の洞察はありません。プログラムで何が起こっているかをテストする良い方法はありますか?

0 投票する
10 に答える
100863 参照

python - pyserial - シリアル デバイスから送信された最後の行を読み取る方法

ループを実行しているコンピューターに Arduino を接続し、100 ミリ秒ごとにシリアル ポート経由でコンピューターに値を送信しています。

シリアルポートから数秒ごとにのみ読み取る Python スクリプトを作成したいので、Arduino から送信された最後のものだけを表示したいと考えています。

Pyserialでこれをどのように行いますか?

これが私が試したコードで、動作しません。行を順番に読み取ります。

0 投票する
2 に答える
5055 参照

python - Python/PySerial と CPU 使用率

30 分ごとに 3 ~ 4 行のデータを受信するシリアル ポートの出力を監視するスクリプトを作成しました。 .

ただし、1 つのシリアル ポートを監視しているだけのプログラムでは、CPU 使用率がかなり高いように見えます。このスクリプトの実行中は、1 つのコアが常に 100% 使用されます。

基本的に、この質問のコードの修正版を実行しています: pyserial - シリアル デバイスから送信された最後の行を読み取る方法

inWaiting() 関数を定期的にポーリングし、inWaiting() が 0 のときにスリープ状態にしようとしました - 1 秒から 0.001 秒までの間隔を試しました (基本的に、CPU 使用率を上げずにできるだけ頻繁に) ) - これは最初の行を取得することに成功しますが、残りのデータを見逃しているようです。

シリアル ポートのタイムアウトを調整しても、CPU の使用率には影響がないようです。また、リッスン機能を独自のスレッドに配置しても影響はないようです (実際に違いを期待したわけではありませんが、試してみる価値はありました)。

  • python/pyserial はこれほど多くの CPU を使用する必要がありますか? (これはやり過ぎのようです)
  • このクエストで時間を無駄にしているのでしょうか / データが来ないことがわかっている期間、スクリプトをスリープ状態にするようにスケジュールを設定する必要がありますか?
0 投票する
2 に答える
3543 参照

python - PySerial/Matplotlib を使用した RS-232 リアルタイム プロットへのマイクロプロセッサ?

私はPythonの世界に不慣れで、プログラミングスキルはかなり貧弱ですが、Pythonを使用してEEG回路からの出力を表示する方法を見つけようとしています(OpenEEG回路http://openeeg.sourceforge.netを使用) )

アナログ出力は、ADC (ATmega8 マイクロコントローラ内) を介して増幅および処理され、MAX232 によって RS232 に変換されます。

RS232 信号は次のとおりです。

バイト 1: 同期値 0xa5
バイト 2: 同期値 0x5a
バイト 3: バージョン
バイト 4: フレーム番号
バイト 5: チャネル 1 下位バイト
バイト 6: チャネル 1 上位バイト
バイト 7: チャネル 2 下位バイト
バイト 8: チャネル 2 上位バイト
. ..
バイト 9 ~ 16 は追加の電極チャンネル用ですが、最初の 2 つしか使用しないためデータは必要ありません
...
バイト 17: ボタンの状態 (b1-b4)

私はいくつかの基本的な PySerial 機能を持っていますが、受信データをバッファリングし、有用な値を 2 つのリアルタイム xy 波形 (時間対電圧) としてプロットすることで、受信データを利用する方法を理解する必要があります。

質問の更新:

PySerialの明らかな数行でコードを印刷していますが、意味不明です。データを、プロットできる値の形式に分解しようとしています。17 バイトのデータは、現在 256 フレーム/秒で受信されています。(2 つの) チャネルは、それぞれ 10 ビットのデータで構成されます (残りの 2 バイトを構成するために 6 つのゼロが含まれます)。それらは、0 から 1023 の可能な値を与える符号なしです。これらは、正と負としてプロットする必要がある値に対応するため、512 のバイナリ値はゼロ (マイクロ) ボルトのプロットに対応します....

受信ストリームを 8 ビット バイナリとして読み取り (不要なデータを取り除き)、必要な各チャネルから 2 つの関連するバイトを結合するにはどうすればよいですか (必要に応じて余分な 6 つのゼロを削除する可能性があります)。

0 投票する
3 に答える
9282 参照

python - PySerialでxmodemプロトコルを使用できますか?

PySerialを介してシリアルデバイスと正常に接続していますが、プログラムの一部としてxmodemプロトコルを介してファイルを転送したいと考えています。

これを行うための最もプラットフォームに中立な方法はどれですか?最悪の場合、Pythonでオブジェクトを呼び出して呼び出すclose()ことができますが、それはエレガントではないようです。serial.Serialsubprocess/usr/bin/sb

私は現在Ubuntu9.10を使用しており、USB-TTYアダプターを使用しています。

何か案は?