2012-05-11 6 views
0

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

は私のコードです:

 if (askedToPrint) 
     { 
       _sp.DiscardOutBuffer(); 

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

     } 

_sp - SERIALPORTオブジェクトである

あなたが使用して、シリアルポートからデータを読んでいる場合、私はひるみ6.0とCompact Frameworkの2.0/C#の

答えて

0

を使用していますReadline()またはRead()の場合、残高が複数のパケットをキューに入れた可能性があります。したがって、読み込む前に、すでに保留中のパケットを破棄する必要があります。印刷の要求を書く前に、利用可能なすべてのデータを読み込むReadExisting()メソッドを使用します。あなたの残高がまだ古いパケットを送信している場合、コマンドを送信した後、残高に問題がある可能性があります。

関連する問題