2012-05-11 19 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()方法读取所有可用数据。所以在发送命令后,如果您的余额仍在发送旧数据包,那么可能会出现平衡问题。