問題タブ [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 投票する
1 に答える
2176 参照

python - pyserial 接続は機能しますが、ser.readline() で出力を処理するにはどうすればよいですか?

エネルギーメーター (ボーレート 300!) に接続でき、228 行のログファイルがゆっくり入ってきます。

上記のコードを使用すると、完全なログファイルが表示されます。そして、別々に保存されたログファイルを一致で解析すると、正しい値が sqlite に分類されます。したがって、両方の「部分」は別々に機能します。

しかし、私のスクリプトは出力を渡して解析することができません。エラーはスローされず、0 の値が指定されただけです。

私は何が欠けていますか?最初に思ったのは、スクリプトは入力が遅い (1 分以上かかる) ために高速化することですが、スクリプトは終了するまで十分に待機します。

私は成功せずに試しました:

エラー SyntaxError: can't assign to function call が発生します

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

python - Python pyserial - シリアルポートの数を確認するにはどうすればよいですか?

特定のプラットフォーム用にプログラムを調整することなく、Linux と Windows の両方で、USB アダプターによって提供されるものを含め、使用可能なシリアル ポートの数を特定したいと考えています。

私は今のところ自分の尻尾を追いかけているようで、これについて別の角度から教えていただければ幸いです。

どちらのプラットフォームでも pyserial を使用してポートを使用するのは簡単ですが、使用可能なポートの数をどのように確認しますか?

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

python - pyserial フラッシュ メソッドの使用

ラグを減らすにはフラッシュの使用が必要だとどこかで読んだことがあります。これは本当ですか?

私はそれを使用することについて本当に確信が持てません。それが正確に何をするのかを理解するのを手伝ってください。

pyserial のドキュメントを確認しましたが、あまり情報が得られませんでした。それが言ったすべては:

flush() オブジェクトのようなファイルのフラッシュ。このクラスではノーオペレーションであり、オーバーライドされる可能性があります。

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

python - PythonからArduinoと通信するためのWindowsまたはUbuntuVBoxのシリアルポート

COM3でリッスンしているArduinoマイクロコントローラーがあります。arduino IDEとシリアルモニターを使用すると、データの送受信に問題なく機能します。

Pythonとの間でデータを送受信したいのですが、その方法がすぐにはわかりません。(実質的に簡単であれば、C#でも問題ありません。)

arduino_serial.pyを見つけましたが、Unixでのみ機能します。幸い、Ubuntu10.10VBoxをセットアップしています。ただし、そのVMがシリアルポートにアクセスできるかどうか、またはアクセスするために特別な手順が必要かどうかはわかりません。

私はまた、かなり正当に見えるpySerialを見つけました。ただし、使い方もわかりません。シリアルポート名が必要です。これらの有効な値を確認するにはどうすればよいですか?

たとえばpySerial、次のコマンドを使用して、「名前付きポートを「19200,8、N、1」、1秒のタイムアウトで開く」ことができると述べています。

/dev/ttyS1しかし、それが有効なポート名であることがどうやってわかるのかわかりません。

これを始めるための良いドキュメントはありますか?

更新:arduino_serialでUbuntuを使用していますが、それでも問題が発生します。

このプログラムはArduinoで実行されています:

と呼ばれるポートtty0が利用可能であることがわかります。

次に、接続しようとしarduino_serialます:

なぜこのエラーが発生するのですか?私は何が間違っているのですか?

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

python - PySerialと複数のPythonインストールの問題

Windows7マシンにPython2.4.4と3.1.3があります。PySerialを使用したいのですが。

内蔵されていると聞いたのでimport serial、両方のバージョンで試してみました。両方ともを引き起こしましたImport Error

次に、このページからwin32インストーラーをダウンロードしました。私はそれを実行し、2.4.4用にインストールしました。(レジストリから見つかったとのことです。)3.1.1バージョンに変更するオプションがありませんでした。

次に、2.4.4で次のエラーが発生しました。

調べてみるctypesと、2.5.5以降に突入していることがわかります。Ok。

ダウンロードctypesして実行しますpython setup.py install。(2.4.4。)

私は次のようになります:

甘い。Ok。大変な作業のようですので、Python3.1.1で試してみたいと思います。PATH環境変数を編集して、C:\Python31\の代わりにインクルードしますC:\Python24

cmdを再起動python setup.py installし、pyserialで実行します。

面白い。次にimport serial、Python 3.1.1でIDLEを使用しようとしましたが、標準を取得しましたImportError。うーん。

ここで何が起こっているのですか?私は何か間違ったことをしていますか?

更新setup.py install: 3.1.1を使用して実行しようとしました:

うーん...間違ったバージョンのpyserialを使用しているようです。このダウンロードページでは、2.5が最新のように見えます。奇数。

アップデート2:すべての構文エラーを確認して修正しましたが、インポートエラーが発生し始めました。で__init__.py、私は変更しました:

に:

今、私はエラーが発生していますserialwin32.py

構文を試してみました.modulenameが、コンパイルされませんでした。

ここで他に何ができますか?誰かがこのコードをPython3で実行することを意図しているとは信じられません(おそらく私は間違ったバージョンを入手しましたか?)

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

linux - pyserial 入力バッファ

USB エミュレートされたシリアル ライン (FT2232HL) を介して HW と通信します。pySerial と Python Imaging Library を使用して、ビットマップを送信する必要があります。コードは次のとおりです。

問題は、それが機能しないことです。ループバックを設定してキュートコムでキャプチャしたのですが、30kB程度しか送信されていないようです(キュートコムログのサイズ)。別のハードウェア (F5U103v を搭載した Belkin USB-シリアル コンバーター) も試しましたが、同じ結果でした。io バッファの可能性があると思いますが、それに関する情報は見つかりませんでした。

編集: 最初の cutecom ログ (ループバックから受信したデータを含む) のサイズは 32725 バイトです (正確に 42126 バイトを送信します)。ログ ファイルを切り捨てずにスクリプトを 2 回実行すると、サイズは 81838 バイトになります。呼び出しの戻り値も確認しましたdevice.write()が、正確には 42126 です。

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

php - pyserial Webサービスを作成するにはどうすればよいですか?

/ dev/ttyS02でシリアルデバイスと対話するWebアプリケーションを作成しました。問題は、私の現在のメッセージングおよびキューイングソリューションです。以下をお読みください。

アプリケーションとpyserial間の通信ブリッジは次のとおりです。

  • 私のWebアプリケーションは、PHPを介してMySQLのd_requestsテーブルにリクエストレコードを挿入します。挿入されたレコードの処理済み列は0に設定されます。挿入されたレコードのIDは$id変数に保存され、PHPアプリケーションはループ状態に入り、$idをルックアップ参照として使用してd_requests[processed]列=1かどうかを継続的にチェックします。 。

  • 処理された列が0であるd_requestsテーブルのレコードを毎秒チェックするPythonデーモンサービスがあります。これは新しいリクエストと見なされます。(ソースコード-pythonサービスを参照してください)

  • 次に、Pythonサービスはレコードの情報を使用して、pyserialを介してポートに接続します。

  • 要求されたアクションが実行されます。次に、レコードの処理済み列が1に更新され、他のいくつかのフィールドも更新されます。これにより、レコードが処理済みとしてマークされます。

  • 次に、PHP制御ブロックはループを終了し(ポイント1)、結果をjsonとしてJSアプリケーションに返します。ここでユーザーに提示されます。

いくつかの注意点

  • シリアルデバイスは、250ミリ秒ごとに1つの要求を処理できます。
  • Pythonデーモンサービスは、d_requestsテーブルを監視して、処理された列が1秒ごとに0であるレコードを探します。
  • 私のWebアプリケーションがPythonデーモンサービスと通信するのは
    、d_requestsテーブルにリクエストレコードを挿入することによるMySQLDBだけです。
  • PHPブロックコードを使用して、挿入されたIDを毎秒使用してリクエストを検索し、処理された列が1に更新されているかどうかを確認します。

私の懸念

単一障害点

デーモンサービスが実行されていない場合、シリアルリクエストは実行できません

極端なリソース使用量

シリアルデバイスへの1秒あたりのリクエスト数は約4〜5と予想されます。メッセージを処理するために現在の実装を使用すると、PHPアプリケーションとPythonデーモン/サービスが接続してDBでクエリを実行し、リクエストの処理に遅延が発生するため、DBは時間外に動作し、CPU使用率が高くなります。

結論:現在のメッセージングおよびキューイングソリューションを改善するためのより良い方法はありますか?この場合、pyserial Webサービスはうまく機能すると思います。たとえば、シリアルポートは次のようになります。Webソケットに接続されています。host:<7000>と、PHPを介してリクエストを送信し、Webサービスからの応答を待つことができます。残念ながら、これを行う方法がわかりません。

何か案は?

ありがとうございました

ソースコード

Pythonサービス

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

python - Pyserialでシリアルポートを開く際の問題

Pyserial を使用してシリアル ポートから Bluetooth モデム経由で送信された数値を読み取ろうとしています。私は Python の初心者で、利用しようとしている良い例を見つけました。

別のプログラムでポートを開くことができ、そこからデータを送受信できます。ただし、上記のコードではポートが開かれていないようで、ターミナル ウィンドウに対して「100」を 500 回繰り返すだけですが、どこから来たのか、ポートが正しく開かない理由はわかりません。他のプログラムのようにポートを開くのに遅延はないので、開こうとしているかどうかさえわかりません。

他に何を試すべきか、またはエラーがどこにあるのかわからないので、助けを求めています。私は何を間違っていますか?

0 投票する
6 に答える
9277 参照

python - Pyserial でシリアル接続を開くことができません: "termios.error: (22, 'Invalid argument') "

次のコードの実行に問題があります。

これは昨日うまくいきましたが、何を変更したのかわかりません。次のエラーメッセージが表示されます。

私は Python の完全な初心者であり、上記のエラー メッセージを解読できません。Pyserial を再インストールしてみましたが、エラーは解決しませんでした。なにが問題ですか?

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

python - pySerial と socat でバイトを送信する際の問題

pySerial 経由でいくつかのバイトを送信したい。テスト目的で、socat を使用して仮想シリアル ポートを作成しました。

Pythonコードは次のとおりです。

私が得る出力:

私が期待する出力:

ここで何が間違っていますか?それはsocatまたはpythonですか?

編集:

x の値が異なると、他の奇妙な動作に気付きました。出力は次のとおりです。

解決:

問題は、書き込み先と同じポートで読み取ったことです。私が正しく理解すれば、socat は 2 つのポートを「in」と「out」として「接続」します。したがって、./ptyp1 に書き込む場合は、./ptyp2 を読み取る必要があります。その後、すべてが順調です。