2011-02-04 9 views
1

Nortelの電話システムからのコールログを監視するカスタムPythonスクリプトがあります。この電話システムは一日中非常に大量にあり、一部のレコードが失われているように見え始めています。シリアルポートを確実に監視する(Nortel CS1000)

あなたの中には、これを嫌う人もいますが、ソースコードや現在の方法を何らかの方法で共有することには興味がありません。私はむしろこれを「新しいプロジェクト」アプローチから考えていきます。

私は、Linux上のシリアルポートを介して大量のデータ出力を確実にモニタする最も簡単で安全な方法を洞察しています。私はこれを特定のツールや言語のセットに限定しているわけではありません。この重要な仕事をするのに何が最善のものかを知りたいのです。データを解析してmysqlに挿入するだけで、データをテキストファイルにドロップできると思うほど快適です。

+0

シリアル回線で外出する前に、データが電話システムで破棄されていないことを確認できますか? –

+0

これをスクリプトのクロスチェックとして一時的に実行したい場合は、テキストファイルにパイプするだけで良いと思うでしょう。あなたが永遠にそれを実行したいなら、システムログのような日付で分割するものが意味をなさないかもしれません。ほとんどのフリーソフトウェアライセンスでは、ネットワークサービスを提供するためにプログラムを使用する場合、ソースを必要とするものがいくつかありますが、パートナーエンティティを含め、配布するバイナリにソースを提供する必要があります。将来のニーズに備えて計画してください。 –

+0

@Chris、私は配布するクローズドソースアプリケーションを用意しようとしているわけではありません。これは会社のための単なる仕事です。頭がおかげでありがとう。 – andyortlieb

答えて

1

まあ、私が働いて、これは2つのスレッド(またはプロセス)を持つように、この近づくような方法ありがとうございます。

スレッド1:読み取りスレッド

このスレッドは(メモリではスピードのために好ましい)生のシリアルポートからデータを読み込み、ローカルバッファ/キューにデータを入れたが、何もしません。他に何もしないでください。シリアル接続のクロック速度にもよりますが、これは非常に簡単です。

スレッド2:処理するためのローカルバッファにデータがあるまで、処理スレッド

このスレッドは単にスリープ、次に読み出して処理します。それでおしまい。

2つに分割する理由は、処理スレッド用にMySQLのブロックがビジー状態になると、他のスレッドに影響を与えないようにするためです。結局のところ、シリアルポートはOSによってバッファされているが、バッファサイズは制限されている。

しかし、ローカルプログラムは、シリアルポートがデータを送信できるよりも高速になる可能性があります。シリアル転送は実際にはプロセッサのクロック速度に比べてかなり遅いです(115.2kbpsは標準ハードウェアの限界です)。だからCPU速度が制限されていない限り(Arduinoのように)、それに影響を与える通常の状態を見ることはできません。だからあなたの言語の選択は、あまり心配するべきではありません(現代のハードウェアを前提とします)。あなたが知っていることに固執する。