我有一个通过串口连接到天平的应用程序。天平非常大,按下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#
答案 0 :(得分:0)
如果您使用Readline()或Read()从串口读取数据,那么天平可能会发送多个排队的数据包。所以在阅读之前你必须丢弃已经挂起的数据包。另一种方法是在写入请求打印之前使用ReadExisting()方法读取所有可用数据。因此,如果您的余额仍在发送旧数据包后发送命令,那么可能存在余额问题。