0

シリアルポート経由で天びんに接続されたアプリがあります。残高はかなり大きく、PRINT ボタンを押すことはオプションではありません。したがって、私のアプリは、特定のユーザー アクションでプログラムによって残高を印刷するように要求します。バランスインターフェースはそれを可能にし、印刷コマンドを定義します。すべてがしばらくの間機能します。次に、いくつかのアイテムの重量を量った後、天びんは前の重量の出力を開始します....定義されているコマンドがほとんどなく、実行できるオプションがあまりないため、この時点で困惑しています。毎回、OUTバッファをすでにフラッシュしています。だから、なぜそれが私に古い価値を与え続けるのか分かりません。

これが私のコードです:

        if (askedToPrint)
        {
                _sp.DiscardOutBuffer();

                //ask the balance to print
                _sp.Write("P\r\n");

         }

_sp - SerialPort オブジェクトです

WinCE 6.0 と Compact Framework 2.0/C# を使用しています

4

1 に答える 1

0

Readline()またはRead()を使用してシリアルポートからデータを読み取っている場合は、残高が複数のパケットをキューに入れて送信している可能性があります。したがって、読み取る前に、すでに保留中のパケットを破棄する必要があります。もう1つの方法は、印刷要求を書き込む前に、ReadExisting()メソッドを使用して使用可能なすべてのデータを読み取ることです。したがって、コマンドを送信した後、天びんがまだ古いパケットを送信している場合は、天びんに問題がある可能性があります。

于 2012-07-24T09:41:10.827 に答える