C#とのシリアル/ハイパーターミナル統合のテスト方法
-
19-08-2019 - |
質問
USBスケールのソフトウェアを開発する必要があります。ボタンを押すと、USB経由でシリアル通信が送信されます。ハイパーターミナルで値を確認できます。
シリアル通信に.NETクラスを使用してデータをトラップします。
問題は、スケールがないことです。スケールは、RDPを実行できるリモートコンピューターに接続されています。テストしたいときは、体重計のボタンを押すようにクライアントに依頼できます。
クライアントにボタンを1日に100回押すように依頼することはできません。スケールが何を報告するかについてかなり良い考えで開発する方法が必要であり、解決策があると思う場合にのみテストする必要があります。
スケールを模倣して、スケールと同じ出力を.NETシリアルクラスに送信できる何かをローカルで探しています。理想的には、はかりのデータを記録し、それを別のマシンで再生できれば完璧です。
どうすればいいですか?
解決
1)通信コードを抽象化します。テストモードでは、シリアルストリームではなくデータファイルストリームからロジック関数をフィードします。
または
2)2つのシリアルポート(または2つのPC)がある場合は、1つのポートを介して通信するスケールエミュレーターアプリをセットアップし、それをソフトウェアが実行されている他のポートに差し込みます。
他のヒント
シリアルポートエミュレーションルートを使用する場合は、 com0com をご覧ください。私はいつもそれを使って実験器具との通信を偽装し、うまく機能しています。ラップトップにシリアルポートがない場合に非常に便利です。
2つの問題があります:
- .NETシリアルクラスをテストして、シリアルポートを介したデータ(任意のデータ)の受信を処理できることを確認します
- アプリケーションをテストして、スケールから取得する特定のタイプのデータを処理できることを確認します
テストすることができます1.データを生成できるもの(ハイパーターミナルを備えた別のPCなど)をPCのローカルシリアルポートに接続することにより。
テストすることができます2.シリアルクラスを<!> quot;モックオブジェクト<!> quot;として機能するソフトウェアに置き換えることにより(テスト目的で)。 「シリアルクラス+スケール」の組み合わせ(つまり、シリアルクラスが使用するAPIを使用して、スケールから受信するデータを使用してプログラムにフィードする)
次の方法で1と2をテストすることもできます。
- はかりが送信するデータのタイプを送信することにより、はかりのふりをするプログラムの作成
- このプログラムを実行して、シリアルポートのデータを送信します
- nullモデムを使用して2つのシリアルポートを連続して接続します(1つのポートから送信されたデータが別のポートでソフトウェアに受信されるようにします)。