通信协议 ======== 指令类型 -------- 5D 系列组态串口屏指令非常精简,总共有 **5 条寄存器操作指令** 与 **3 条曲线操作指令**。 寄存器操作数据类型总共 8 种: .. list-table:: :header-rows: 1 :widths: 15 25 60 * - 编号 - 类型 - 说明 * - 1 - S8 - 8 位有符号整数 * - 2 - U8 - 8 位无符号整数 * - 3 - S16 - 16 位有符号整数 * - 4 - U16 - 16 位无符号整数 * - 5 - S32 - 32 位有符号整数 * - 6 - U32 - 32 位无符号整数 * - 7 - R32 - 单精度浮点数 * - 8 - TEXT - 文本信息 .. important:: - 写入的数据与寄存器的数据类型必须一致:U8 对应 1 字节,U16 对应 2 字节,U32 对应 4 字节,浮点数对应 4 字节 - 读写连续寄存器组的数据类型必须确保一致,文本类型不支持连写 - 寄存器数据改变后向主机报告的数据格式与读单个寄存器返回指令格式一样 指令总览 -------- .. list-table:: :header-rows: 1 :widths: 15 10 40 35 * - 功能 - 指令 - 数据 - 说明 * - 写单个寄存器 - 0x80 - 寄存器地址(0x0000-0xFFFF) + 写入数据 - 修改指定的寄存器数据 * - 写多个寄存器 - 0x81 - 寄存器起始地址(0x0000-0xFFFF) + 写入数据 - 修改连续寄存器组的数据 * - 读单个寄存器 - 0x82 - 寄存器地址(0x0000-0xFFFF) - 读取指定的寄存器数据 * - 读多个寄存器 - 0x83 - 寄存器起始地址(0x0000-0xFFFF) + 寄存器数量(1字节) - 读取连续寄存器组的数据 * - 复制寄存器 - 0x84 - 目标寄存器地址 + 源寄存器地址 - 将源寄存器数据复制到目标寄存器 曲线缓冲区操作指令 ------------------ .. list-table:: :header-rows: 1 :widths: 25 30 45 * - 功能 - 指令 - 说明 * - 写指定缓冲区(8位采样深度) - 0x90 + CH_MASK + DATA0(Byte) + ... - CH_MASK 每一位对应 1 个缓冲区 * - 写指定缓冲区(16位采样深度) - 0x91 + CH_MASK + DATA0(Word) + ... - CH_MASK 每一位对应 1 个缓冲区 * - 清空指定缓冲区数据 - 0x92 + CH_MASK - CH_MASK 每一位对应 1 个缓冲区 .. note:: 5D 系列组态串口屏总共支持 **8 个数据缓冲区**,无论是 U8 类型或 U16 类型,每个缓冲区最大都支持 **1024 个采样点**。 不同曲线控件,或者同一曲线控件的不同通道,皆能使用同一缓冲区。 基本约定 -------- - 所有数据为十六进制表示 - 帧头为 ``0xA5 0x5A`` - 不启用 CRC 校验与应答 - 数据通讯使用默认的 **大端字节序** (高字节在前,低字节在后) 帧格式 ------ .. code-block:: text ┌──────┬──────────┬────────┬──────────┬────────────┐ │ 帧头 │ 数据长度 │ 指令 │ 寄存器地址│ 数据 │ │A5 5A │ 2 字节 │ 1 字节 │ 2 字节 │ N 字节 │ └──────┴──────────┴────────┴──────────┴────────────┘