2012-05-11 21 views
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#

回答

0

如果你是從串口使用讀取數據Readline()或Read()則有可能是發送了多個排隊的數據包。所以在閱讀之前,您必須丟棄已經掛起的數據包。其他方式是在寫請求之前打印使用ReadExisting()方法讀取所有可用數據。所以在發送命令後,如果您的餘額仍在發送舊數據包,那麼可能會出現平衡問題。