
PC へのシリアル ポート接続を備えた新しい Wyse クライアント (Z90D7 モデル) をテストしています。専用の機器を使用する外部顧客がいますが、テストには PC を使用しています。Citrix 経由でクライアントで C# アプリケーションを実行しています。古い Wyse 機器で使用しているアプリケーションを実行すると、エラーが発生することなくすべて正常に動作します。ただし、新しい機器では、シリアル ポートは 10 回に 1 回程度しか機能しません。それ以外の場合は、オーバーラン エラー、パリティ エラー、または RXOver エラーが発生します。
ログを通じてポートが開き、開いた後にいくつかのコマンドが実行されたことを確認しました。ただし、ランダムエラーが発生します。実際のデータが送信される前に。 これはバッファの問題である可能性があると多くの場所で読みましたが、データが受信される前にエラーが発生するという投稿は見たことがないので、よくわかりません。
ハンドシェイクと大きな読み取り/書き込みバッファの使用も試みましたが、うまくいきませんでした。新しいケーブルとこのデバイスの 2 番目の COM ポートも試しましたが、うまくいきませんでした。デフォルト設定は次のとおりです。
9600 ボー、偶数パリティ、8 データ ビット、1 ストップ ビット
これはCitrix上で実行されているため、ここに示すnet useコマンドを実行します何かが行われる前に、これを実行します。これを行わないと、シリアル接続は常に接続されていると表示され、データを受信できなくなります (これは古い機器でも発生します)。実行している正確なコマンド (もちろん、アプリ名は変更されています) は次のとおりです。
net use com1 /DELETE
net use com2 /DELETE
net use com1: \\client\com1:
net use com2: \\client\com2:
start /d "D:\myapp" MyApplication.exe
シリアル ポートを扱ったことがある人の中で、このように 3 つのエラーが交互に発生するのを聞いたことがある人はいませんか? 障害のあるポート (または、障害のあるポート 2 つ) 以外に、この原因となるものはありますか? ハードウェア バッファ サイズが問題である可能性があると考えていますが、これを克服する方法が見つかりません。
答え1
すべてのエラーは、データが両方向に移動していないことを示しているようです。
RXOver は受信バッファを十分な速さで空にしません。Overrun は、シリアル ポート ドライバーがチップ送信バッファを十分な速さで空にしないことです。
ハードウェア バッファ サイズを増やす方法があるかどうかはわかりません。Windows バッファは API 経由で増やすことができますが、ドライバーはそれを無視する可能性があります。
問題をより良く把握するために、より多くの機器を試してみることをお勧めします。テスト コンピューターとの互換性の問題である可能性があります。
記事 5つの一般的なシリアルポートの問題 このような問題の原因として考えられるものをいくつか挙げます。
通信パラメータが正しくありません。
両方のデバイスは、ボーレート、パリティ、データ ビット数、ストップ ビット数などの同じ通信パラメータで設定する必要があります。シリアルケーブルが正しくありません
- 不良シリアルケーブル
- 配線不良