Serial port 串口在手动打印命令时输出旧值

Serial port 串口在手动打印命令时输出旧值,serial-port,compact-framework2.0,Serial Port,Compact Framework2.0,我有一个通过串口连接到天平的应用程序。余额相当大,按打印按钮不是一个选项。因此,我的应用程序要求余额在某个用户操作时以编程方式打印。balance接口允许它,并定义打印命令。这一切都会持续一段时间。然后在对几个项目进行加权后,天平开始输出之前的权重…我在这一点上感到困惑,因为定义的命令很少,并且没有太多的选项可供选择。每次之后我都会冲出缓冲区。所以我不知道为什么它一直给我旧的价值 这是我的密码: if (askedToPrint) {

我有一个通过串口连接到天平的应用程序。余额相当大,按打印按钮不是一个选项。因此,我的应用程序要求余额在某个用户操作时以编程方式打印。balance接口允许它,并定义打印命令。这一切都会持续一段时间。然后在对几个项目进行加权后,天平开始输出之前的权重…我在这一点上感到困惑,因为定义的命令很少,并且没有太多的选项可供选择。每次之后我都会冲出缓冲区。所以我不知道为什么它一直给我旧的价值

这是我的密码:

        if (askedToPrint)
        {
                _sp.DiscardOutBuffer();

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

         }
_sp-是一个串行端口对象


我使用的是WinCE 6.0和Compact Framework 2.0/C#

如果您使用Readline()或Read()从串行端口读取数据,则balance可能发送了多个排队的数据包。因此,在读取之前,您必须丢弃已经挂起的数据包。另一种方法是在写入打印请求之前,使用ReadExisting()方法读取所有可用数据。所以,在发送命令之后,如果您的余额仍然发送旧数据包,那么余额可能有问题