我正在使用 C# 开发一个 .NET 应用程序。在我的应用程序中,我通过 USB 连接到体重秤并检索体重数据。一般情况下,我都能成功得到正确的体重数据。但是,当我断开 USB 连接并重新连接时,电子秤开始发送垃圾数据,如下所示:
00-F8-00-F8-00-F8-F8-86-06-F8-18-F8-66-F8-E6-80-98-80-00-F8-00-F8-00-F8-F8-86-06-F8-18-F8-66-F8-E6-80-98-80
当我使用 Hercules SETUP(一种串行通信工具)测试相同的场景时,它最初收到类似的错误数据。然而,过了一小段时间,垃圾数据就会被纠正,正确的重量数据开始出现。在 Hercules 中进行此纠正后,当我重新连接时,正确的数据也开始发送到我的 .NET 应用程序。
我的问题: Hercules 如何处理和纠正来自天平的损坏或垃圾数据? 我应该在我的应用程序中做什么来实现相同的行为,以便我可以处理这种情况并在 USB 重新连接后一致地接收正确的数据?
其他详细信息: 秤通过 USB 连接。 我在应用程序中使用串行端口从秤读取数据。 仅在断开并重新连接 USB 电缆后才会出现此问题。 我进行了广泛的研究,但尚未找到解决方案。
您收到的垃圾数据看起来可能是由波特率不匹配引起的。 我建议您连接到串行端口,设置正确的波特率,然后使用
SerialPort.DiscardInBuffer
刷新所有以前接收到的数据,因为使用错误的波特率可能会错误地接收到数据。