1

リアルタイムで応募したいです。これがシナリオです。COMポートの1つを介してコンピューターにデータが届き、Pythonによってフェッチされて表示されます。serialこのために、私はシリアルポートを介してデータを読み取り、それを表示する単純なPythonモジュールを使用しました。

現在、このデータは私にとってローカルです。ハイエンドの目的のために、このデータを私のオンラインWebサイトの1つに投稿する必要があります。このWebサイトでは、Apache Webサーバーが実行されており、世界中にデータが表示されます。

したがって、リアルタイムでは、シリアルポートを継続的に監視し、データを取得して、Webサーバー(PHP側)に継続的に投稿する必要があります。(シリアルデータの読み取りとサーバーへの転記は並行して実行されます)。

今問題は-

  1. COMポートからのデータをWebサーバーに投稿するのと並行して監視するにはどうすればよいですか?

  2. データを継続的に送信している場合、Webサーバーはデータが継続しているかどうかをどのように知ることができますか?このアプローチでは、データをWebサーバーのデータベースに保存し、データベースを継続的に監視するPHPスクリプトを作成することを考えました。あなたが持っているならより良いアプローチを教えてください

4

2 に答える 2

0

Python側では、2つのスレッドを使用するのが最も簡単な方法です。スレッド1は、呼び出しをブロックしてシリアルラインから読み取り、読み取ったすべてのデータをスレッドセーフキューに入れます。スレッド2は、キューにあるものをすべて取得し、リモートPHPに投稿し(成功するまで再試行します)、2秒間スリープして、繰り返します。

Pythonから呼び出されるPHPスクリプトは、データをデータベースに挿入するだけです。フロントエンドのPHPスクリプトは、データベースからデータを取得して表示します。

于 2013-03-18T00:07:53.550 に答える
0

一般に、あるインターフェイスで受信して別のインターフェイスで送信するリアルタイムアプリケーションを処理する場合は、いくつかのスレッドと少なくとも2つのキューが必要になります。
プログラムをイベント駆動型にする場合(強くお勧めします!)、入力を受け取ったときにトリガーされるイベントも含める必要があります。

あなたの問題について私は提案します:

1 COM読み取り用の
スレッド1COM書き込み用のスレッド(書き込む必要がある場合)
1 PHP書き込み用の
スレッド1PHP読み取り用のスレッド(読み取る必要がある場合)
1COM入力用のキュー1COM入力
用のイベント

COMポートでデータを受信するたびにCOM読み取りスレッドをCOM入力キューに書き込む必要があります。必要に応じて、このデータをキューに入れる前に検証できます。

次に、COM入力キューはCOM入力イベントをtrueに設定します。これは、PHP書き込みキューの「停止」として機能します。

次に、PHPキューは、COM入力キューに追加されたすべてのものを空になるまでループし、COM入力イベントをfalseに設定し、さらに入力を待ってから再度ループします。

キューがスレッドセーフであることを確認するか、キューの周りにミューテックスを配置します。ここに、役立つ可能性のあるものへのリンクがいくつかあります。

Pythonロック
Pythonイベント
Pythonキュー


Webサーバー側では、Webサーバーにデータを送信するときにhttpPOSTメッセージを使用する必要があります。リクエストの内容に応じて、検証、処理、保存するWebサーバー上のスクリプトにデータを送信できます。それ。

残念ながら、私はこの側面の専門家ではないので、多くのヒントを与えることはできません。

于 2013-03-18T00:43:27.610 に答える