使用 C# 实现 CJ-T188 水表协议和 DL-T645 电表协议的解析与编码
一、协议的定义
要对某种协议进行编解码操作,就必须知道协议的基本定义,首先我们来看一下 CJ/T188 的数据帧定义(协议定义),了解请求数据与响应数据的基本结构。
1.1 CJ/T188 水表通讯协议
请求帧:
字节 | 值 | 描述 |
---|---|---|
0 | 0x68 | 数据帧开始标识。 |
1 | T | 表计类型代码,详细信息请参考 表计类型表 。 |
2-8 | A0-A6 | 表计地址,水表设备的具体地址,这里是 BCD 形式。 |
9 | CTR_01 | 协议控制码,例如 0x1 就是读表数据。 |
10 | 0x3 | 数据域长度。 |
11-12 | 0x1F,0x90 | 数据标识 DI0-DI1。 |
13 | 0x00 | 序列号,一般为 0x00,序列号也被作为整个数据域的长度。 |
14 | CS | 表示校验和数据,即 0-13 位置的所有字节的累加和。 |
15 | 0x16 | 数据帧的结束标识。 |
例如有以下请求帧数据(读取水表数据):