我有一个通过串口连接到天平的应用程序。余额非常大,按下打印按钮不是一个选项。因此,我的应用程序要求余额在某个用户操作上以编程方式打印。平衡接口允许它,并定义一个打印命令。一切都工作了一段时间。然后在对几个项目加权后,天平开始输出前一个重量。在这一点上我很困惑,因为定义的命令很少,而且可以做什么没有太多选择。每次之后我已经冲洗掉了 OUT 缓冲区。所以我不知道为什么它一直给我旧的价值。
这是我的代码:
if (askedToPrint)
{
_sp.DiscardOutBuffer();
//ask the balance to print
_sp.Write("Prn");
}
_sp - 是一个串行端口对象
我正在使用 WinCE 6.0 和紧凑型框架 2.0/C#
如果您使用 Readline() 或 Read() 从串行端口读取数据,则 balance 有可能发送了多个排队的数据包。因此,在读取之前,您必须丢弃已经挂起的数据包。另一种方法是在编写打印请求之前使用 ReadExisting() 方法来读取所有可用数据。因此,在发送命令后,如果您的余额仍在发送旧数据包,则可能存在余额问题。