2

簡単に説明すると、アプリケーションで非常に具体的なエラー状況をデバッグする必要があります。アプリケーションは、シリアル ケーブルで接続された 2 台のマシンで構成される二重システムで実行されます。このケーブルを介して、両方のマシンがある種の「ハートビート」信号を交換します。フィールドでの非常にまれな予測不可能なケースでは、物理メディア内の信号の歪みが誤動作を引き起こしました。シリアルケーブルを単に剥ぎ取るだけで、「残忍な」方法で部分的に再現できます。

ここで、便宜上、com0com ヌルモデム エミュレーター ( http://com0com.sourceforge.net/ ) を使用してシリアル ケーブルを正常にエミュレートし、両方のプロセスが仮想 COM ポートを使用して同じマシン上で実行されるようにします。それは完璧に機能します。

私の質問は次のとおりです: com0com を使用して、ケーブルの破損/シリアル ポートの障害/あらゆる種類の信号の歪みをシミュレートするにはどうすればよいですか? たとえば、データの送受信のために仮想ポートの 1 つを意図的にブロックできますか?

4

1 に答える 1

2

最後に、com0com と com2tcp ツール (com0com プロジェクトの一部) を使用してそれを行う方法を見つけました。このアプローチについては、次のドキュメントで説明しています: http://com0com.sourceforge.net/doc/UsingCom0com.pdf com0com プロジェクトは、本当に便利で驚くべきものです。

基本的には、2 組の仮想 COM ポートをマシン上に作成するという考え方です。私の場合は、COM7 <-> COM8 および COM9 <-> COM10 です。次に、com2tcp ユーティリティを使用して、COM8 と COM10 間のデータ転送を TCP 経由でリダイレクトします。2 つのコンソール ウィンドウで、com2tcp をサーバーとして 1 回、クライアントとして 1 回起動します (上記のドキュメントで説明されているように)。特に、com2tcp --telnet \\.\COM8 12345(12345 は TCP ポート番号) とcom2tcp.exe --telnet \\.\COM10 1.2.3.4 12345(1.2.3.4 はマシンの IP アドレス) を使用します。COM7 と COM9 はアプリケーションの両方のインスタンスで使用されるため、通信は次のようになりますPROCESS1 <-> COM7 <-> COM8 <---- TCP ----> COM10 <-> COM9 <-> PROCESS2。次に、両方のアプリケーション インスタンスが実行されているときに、 を押して com2tcp プロセスを停止します。CTRL+Cコンソールで-そして、ケーブルの切断とまったく同じように、ポート間通信が切断されます! このようにして、必要に応じて動作を簡単にシミュレートおよびデバッグできました。

于 2013-11-06T15:20:37.273 に答える