0

USB-RS232アダプターを持っていて、それを使用してバーコードリーダーから長い入力(28文字)を取得していました。私のコンピューターではすべてが正常に機能します。

RS232シリアルポートがPCI-Eに接続されている他のコンピューターにc#アプリケーションをインストールしました。バーコードリーダーから入力を受信すると、2つの部分に分割されます。

どうすればそれを知ることができますか?私はc#アプリケーションにイベントハンドラーを持っていて、DataReceivedそれが2回呼び出されており、毎回入力の一部を取得しているためです。

RS232 PCI-Eポートは、OxfordSemiconductorInc.によって製造されています。

OSはWindows7です。

これはハードウェアの問題であり、アプリケーションの問題ではないと思います。変更する設定、バッファサイズなどがありますが、そのようなものは見つかりませんでした。

よろしくお願いします!

4

1 に答える 1

3

いいえ、それはあなたのアプリケーションです。すべてのデータがすぐに利用できると期待するべきではありません。あなたは最初のマシンで幸運に恵まれていました。Read()あなたが期待するすべてを得るまであなたは電話する必要があります。

UART、ドライバーなどの違いにより、タイミングやその他の要因に応じて、ウィンドウがそのイベントを複数回発生させる可能性があります。

これらの線に沿った何か:

char buf[28];
int offset = 0;
int nread;
while (offset < buf.Length) {
    nread = comPort.Read(buf, offset, buf.Length - offset);
    offset += nread;
}
于 2012-12-28T19:02:05.587 に答える