了解接口上的解码通信
您之前问题中的评论指出您的比重计可能使用 M-Bus 或 Meter-Bus 协议,并且您的相关字段都在所述协议 (PDF)的文档中进行了彻底解释
C-Field 是控制字段,定义正在执行的功能(上述 PDF 的第 23 页)。它是一个 8 位值,其中最低 4 位确定传输类型(例如,长帧、数据请求等),最高 4 位用作各种操作的控制标志。
地址决定了您正在通话的设备。M-Bus 协议指定了一种主/从设置,其中一个设备可以与同一本地网络上的多个连接设备进行通信。这是必要的,因为它用于计量应用程序,其中单个控制器可能希望能够从大量互连设备查询数据并将数据发送到大量互连设备。在您的情况下,文档使用地址 0xFD 或 253 指定地址在网络层处理(考虑到您通过蓝牙进行通信,这是有道理的)。
CI[sic] 字段是“控制信息”字段;它传达了正在传输的数据类型(上述 PDF 的第 31 页)。您发布的示例使用 0x50 的 CI,这表示应用程序重置。下面的字节指定请求的复位的“类型”,0x00 代表完整的应用层复位。重置时,设备似乎以您发布的图像中指定的相关参数进行响应。
校验和用于验证传输或接收数据的完整性。这些在串行通信协议中是相当标准的,并且通常易于计算。计算 M-Bus 校验和需要将帧中从 C 场开始到传输数据后结束的场的原始值相加(尽管这取决于帧的类型和长度,因此对于短帧,某些场可能不相关)。通过粗略搜索,可以轻松找到该计算以及计算它的代码。
DIF 和 VIF 代表数据信息字段和值信息字段。DIF 告诉您获得的数据类型(因此从您发布的 Diehl PDF 中,0xC 对应于体积,0xB 对应于流速等)。VIF 提供单位和乘数,以便您可以了解特定参数的单位(例如,升、m 3等)
我建议你看一下那个 PDF,因为它对协议的解释非常透彻,并且直接来自协议本身的来源。



