2009-08-27 5 views
4

シリアルポートリダイレクトまたはポート分割の方法に関する書籍およびコードサンプルを探しています。私は多くのCOMポートアプリケーションを作成し、アプリケーションとデバイスの間のシリアルポートを見ることを可能にするモニターアプリケーションを書きたいと思っています。シリアルポートのリダイレクトまたは分割

シリアルポートを別のポートにリダイレクトして、ポート間を流れるデータを監視できるようにしたいと考えています。

場合によっては、これはカーネルレベルで行う必要があることを理解しています。 (USBの場合)

私は、C#でsystem.IO.Portsを使用してモニターアプリケーションを作成しました。私がC++/Cアセンブリを呼び出さなければならない場合、それは問題ありません。

おかげ

ジョー

答えて

3

あなたはそれは、ソースコードが設けられていないものの、マークRussinovich氏によってPortMonは、あなたの仕事に役に立つことがあります。ポートに関連するすべてのシステムコールをログに記録し、そのログを管理可能なサイズに維持するための広範なフィルタリング機能を備えています。

編集: PortMonは、実行時にカーネルモードのデバイスドライバをシステムにインジェクトすることによって動作します。そのドライバは、フィルタドライバをスタックに挿入することで監視したいポートをフックします。そのフィルタドライバは、それを通過するすべてのIRPをアプリケーションに報告します。これはどんなストレッチでも実装するのは簡単な獣ではなく、実際にはユーザーモードで実行することはできません。

Windows DDKにはポートフィルタドライバのサンプルコードがありますが、サンプルから有用なものに移行するのは大変な作業です。

有効な純粋なユーザーモードのソリューションは、2つの追加のシリアルポートを使用してワイヤを盗聴することです。 USB対シリアルアダプタのペアと配線が少し必要です。次に、送信と受信の回線を監視し相関させるのは「プログラミングの小さな問題」です。単一のチップソリューションは、FT2232H device from FTDIに基づいていてもよく、利用可能なものはevaluation moduleです。いくつかのRS232レベルトランスレータといくつかのDコネクタを追加すると、Windowsに2つのCOMポートのように見えるUSB上のシリアル盗聴器が得られます。

ボックス・アプローチのもう1つの方法は、多くのロジック・アナライザとミックスド・シグナル・オシロスコープが、オプションのコンポーネントとしてシリアル・プロトコル・デコードを実行できることです。安価なUSB +ソフトウェアソリューションの1つのソースはSaeligです。私は自分でチップとモジュールを購入しましたが、ネットブックと一緒に私のバッグに入れておくべきだと考えていても、USBベースのロジックアナライザーを使った直接の経験は一切ありません。

+0

RBさん、ありがとうございます。私は現在XPortを使用していますが、ポート分割をアプリケーションに埋め込みたいと考えています。 –

+0

私は今日の午後に私に起こったいくつかの他の考えで私の答えを更新しました... – RBerteig

+0

VSPEを試してください。ちょうどそれを使用し始めた、32ビットマシンで正常に動作するようです。 64ビット版もあります。いずれかのアプリケーションを使用して仮想ポートを構成するか、APIを使用できます。カーネルモードの仮想シリアルデバイスを作成します... http://www.eterlogic.com/Products.VSPE.html – ryyker

0

私は何年も前に書いた。 DDK(デバイスドライバキット)には、パラレルポートドライバ用のフィルタドライバのサンプルソースコードが含まれていました。このサンプルをシリアルポートドライバと連携させ、モニタリングや分割などの機能を追加しました。

これはシリアルポート、ではなく、 USBです。

「仮想」シリアルポートである別のドライバも実装しました。シリアルポートAPIを実装しましたが、データI/Oを別の場所にリダイレクトしました。

実装するには数多くの作業(数ヶ月)が必要でした。

0

RS232 DB9 Serial Data Tapを購入してください。これは、2つのシリアルポート間に接続され、デバイス間の「チャタリング」に受動的に耳を傾けるハードウェアデバイスです。次のデバイスを2年半使用したため、トラブルシューティングの時間と労力が大幅に節約できました。 (私はそれをサポート技術者がそれを "借りる"ことから守るために毎晩家に持ち帰ることを使用します)。このデバイスを作るのは簡単ですが、以下のデータタップは柔軟性があります。

"シリアルデータストリームをタップインし、データのアクティビティを透過的に監視します。出力はモニタプリンタまたは他のデバイスに供給できます。外部電源が必要、簡単なインストール、透明な接続理想的なRS232 /シリアルソフトウェア開発援助。また

、シリアルタップモニタケーブルを作るか、または購入します。 1つの可能な構成については、NST documentationを参照してください。

私は強く監視ソフトウェアは、物理的な状況の影響を受ける可能性があるので、あなたがソフトウェアソリューションを使用しないことをお勧めします。

+0

RBとAnthonyに感謝します。私はこの解決策についても考えてきました。シリアルトラップデバイスがありますが、私たちのデバイスの1つにUSBからCOMへのマッピングが使用されています。しかし、私はUSBのためのトラップモニタケーブルを作ろうとするかもしれません。 –

0

いつもどんなことをしようとしているかによって異なります。 2つのシリアルデバイス間のラインがどのように接続されているか、または「良い」タイミング情報が必要な場合には、アンソニーのような外部break-out boxが得られます。

あなたはちょうどあなたがPortMonまたはSerial Port Monitorで行くことができる監視のいくつかの種類が必要な場合。

はたぶん、あなたは、シリアル接続を介して通信しようとしている二つのアプリケーションを記述します。これをローカルのループバックケーブルなしで1台のPCで行うには、Com0Comを試してみてください。

+0

ありがとうOliver、私は過去にCom0comを使用しましたが、1つのデバイスがUSB to COMポートであるため、com0comは動作しないようです。私はPortMonを試しましたが、キャプチャするデータは不完全です。 Xportは動作しますが、私はこれを生産ラインに入れなければならないかもしれませんし、技術者が一度に2つのプログラムをロードする必要はありません。 –

関連する問題