0

我有一个通过串口连接到天平的应用程序。天平很大,不能按 PRINT 按钮。所以我的应用程序要求余额在某个用户操作时以编程方式打印。balance 接口允许它,并定义了一个打印命令。所有工作一段时间。然后在对几个项目进行加权后,天平开始输出之前的重量......我在这一点上感到困惑,因为定义的命令很少,并且没有太多可以做的选择。每次之后,我都已经在刷新 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() 从串行端口读取数据,则余额可能已发送多个排队的数据包。因此,在阅读之前,您必须丢弃已经挂起的数据包。另一种方法是在编写打印请求之前使用 ReadExisting() 方法读取所有可用数据。因此,在发送命令后,如果您的余额仍在发送旧数据包,则可能是余额有问题。

于 2012-07-24T09:41:10.827 回答