2016-04-21 14 views
0

この質問は少し曖昧になり、私はそれをお詫び申し上げます。シリアルポートからの書き込み中にタイミングの問題

私はシリアルポートとそれと通信するPythonスクリプトに接続されたシステムを持っています。スクリプトはシステムを実行し、出力するデータを読み取り、データを含むファイルを書き込み、システムを停止し、定義された回数だけ前の一連の関数を繰り返す。システムからファイルにデータを書き込むことは別として、スクリプトはシステム時間も記録します。理想的には、システムのすべての「実行」は、(時間的に)均等な間隔でデータを生成する必要があります。私はタイムスタンプを見て、各データポイントの差をプロットし、これを得ました(Y軸はmm:ssの時間です) Rate variation with iteration 私は何とか各繰り返しのコードのセクションをプロファイルして、それらの瞬間が存在する。いくつかのバックグラウンドプロセスがこれらの異常を引き起こしている可能性はありますか?もしそうなら、それらのポイントで何が起こっているのか、私はどのように磨きますか?

答えて

0

私はそれを家に持ち込む方法についていくつかのヒントを提供しようとします。彼らが助けてくれるかどうかは知りませんが、少なくとも作業するものはありません。 まず、私はそれがpythonスクリプトか、時々起こっている接続されたシステムであるかどうかを判断しようとします。Portmon from sysinternalsここで良い助けになるかもしれません。あなたが窓の上にいるならば。 これにより、シリアルポート上で送受信されるものを正確に見ることができます。要求応答タイプのプロトコルを持っていて、スクリプトがシステムからチャンクを要求しています。要求が出てから2秒間応答がない場合、デバイスは私たちの問題であり、スクリプトやOSではありません。ケーブルやシリアルポートに何か問題がある場合は、ここでもこれを見ることができます。

スクリプトがあなたの問題なら、それは本当に何でもかまいません。 hickupsの継ぎ目は定期的です。あなたはそれをあなたの利点に使うことができます。あなたが半分の周波数でそれを実行する場合。 hickupsは頻繁に半分起こるか?そうであれば、実行回数に関係します。おそらく何らかの種類の漏れ。あなたが始めるときにすべてを閉じますか?あなたはどのようにそれを予定していますか?スケジューラはどのくらい正確ですか? 2秒はそれほど長い時間ではありません。 私はPythonのプロファイリングについてはわかりませんが、コードがどこで停止しているのかを見つけるために、各ステップごとにタイムスタンプを付けてログファイルに書き込むことができます。 ほんの少しのポインタ。助けて欲しいと思っています。

関連する問題