web-dev-qa-db-ja.com

Wyseクライアントでランダムエラーを返すシリアルポート

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つの障害のあるポート)以外に何かありますか?ハードウェアのバッファサイズが問題になる可能性があると思いますが、これを克服する方法が見つかりません。

3
Big EMPin

すべてのエラーは、データが両方向に移動していないことを示しているようです。

RXOverは、受信バッファを十分な速さで空にしません。オーバーランは、シリアルポートドライバがチップ送信バッファを十分な速度で空にしないことです。

ハードウェアバッファサイズを増やす方法があるかどうかはわかりません。 WindowsバッファーはAPIを介して増やすことができますが、ドライバーはそれを無視する場合があります。

問題、おそらくテストコンピュータとの互換性の問題についてより良い視点を得るために、より多くの機器を試すことをお勧めします。

記事 5つの一般的なシリアルポートの問題 はそのような問題のいくつかの考えられる理由をリストしています:

  • 誤った通信パラメータ
    両方のデバイスは、ボーレート、パリティ、データビット数、ストップビット数などの同じ通信パラメータで設定する必要があります。

  • 間違ったシリアルケーブル

  • 悪いシリアルケーブル
  • 配線不良
1
harrymc