指令详解 ======== 系统寄存器操作 -------------- 电源控制 (0xFF00) ~~~~~~~~~~~~~~~~~~ 向寄存器 ``[FF00]`` 写入字符串,控制设备运行状态。 **进入正常运行状态:** .. code-block:: text 发送:A5 5A 00 09 80 FF 00 4E 4F 52 4D 41 4C 返回:无 **读取当前状态:** .. code-block:: text 发送:A5 5A 00 03 82 FF 00 返回:A5 5A 00 09 82 FF 00 4E 4F 52 4D 41 4C (表示状态正常 "NORMAL") **支持的指令值:** - ``REBOOT`` — 重启设备 - ``SUSPEND`` — 设备进入休眠状态 - ``IDLE`` — 设备进入待机状态 - ``NORMAL`` — 设备进入正常状态 .. warning:: 字符匹配大小写。目前只支持 ``NORMAL`` 指令,其它指令保留。 屏幕亮度调节 (0xFF01) ~~~~~~~~~~~~~~~~~~~~~~ 向寄存器 ``[FF01]`` 写入亮度数值,调节范围为 **0-255 级**。 .. code-block:: text 发送:A5 5A 00 04 80 FF 01 80 (设置亮度为 128) 返回:无 发送:A5 5A 00 03 82 FF 01 (获取当前亮度) 返回:A5 5A 00 04 82 FF 01 80 (当前亮度为 128) 当前显示页面 (0xFF02) ~~~~~~~~~~~~~~~~~~~~~~ 向寄存器 ``[FF02]`` 写入指定页面 ID,串口屏自动切换到指定页面。 .. code-block:: text 发送:A5 5A 00 05 80 FF 02 00 01 (跳转到页面 ID=0x0001) 返回:无 发送:A5 5A 00 03 82 FF 02 (获取当前页面) 返回:A5 5A 00 05 82 FF 02 00 01 (当前页面 ID=0x0001) FLASH 数据读写 --------------- 往 FLASH 写入数据 (0xFFF0) ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 通过寄存器 ``[FFF0]`` 可以将用户需要掉电保存的数据写入 FLASH 块内,块大小为 128K,地址范围 ``0~0x1FFFF``。 **帧格式:** .. code-block:: text 帧头 + 数据长度(2字节) + 指令[80] + 寄存器[FFF0] + 起始地址(4字节) + 写入数据 **示例:** 往地址 ``[00 01 FF F0]`` 处写入 ``01 02 03 04`` .. code-block:: text 发送:A5 5A 00 0B 80 FF F0 00 01 FF F0 01 02 03 04 返回:无 .. note:: 一次写入的数据不能大于 **1K 字节**。 从 FLASH 读取数据 ~~~~~~~~~~~~~~~~~~ .. code-block:: text 发送:A5 5A 00 09 82 FF F0 00 01 FF F0 00 04 (从地址 [00 01 FF F0] 读取 4 字节) 返回:A5 5A 00 07 82 FF F0 01 02 03 04 (返回数据 01 02 03 04) 基本图形绘制指令 ----------------- 线段操作指令 ~~~~~~~~~~~~ .. code-block:: text (帧头{A5 5A}) + (长度{2字节}) + (80H) + (FFF1H) + (22H) + (Color) + (X1) + (Y1) + ... + (Xn) + (Yn) **示例:** 连接点 (50,50) 与点 (100,100) .. code-block:: text 发送:A5 5A 00 0E 80 FF F1 22 F8 00 00 32 00 32 00 64 00 64 粗线段操作指令 ~~~~~~~~~~~~~~ .. code-block:: text (帧头{A5 5A}) + (长度{2字节}) + (80H) + (FFF1H) + (2FH) + (Color) + (线宽) + (X1) + (Y1) + ... **示例:** 连接点 (50,50) 与点 (100,100),线宽 5,红色 .. code-block:: text 发送:A5 5A 00 0F 80 FF F1 2F F8 00 05 00 32 00 32 00 64 00 64 实时发送图像数据指令 ~~~~~~~~~~~~~~~~~~~~ .. code-block:: text (帧头{A5 5A}) + (长度{2字节}) + (80H) + (FFF1H) + (34H) + (X) + (Y) + (宽W) + (高H) **返回:** ``A5 5A 00 04 82 FF F1 FC`` 表示准备好 **示例:** 在 (0,0) 坐标发送宽 480、高 16 的图像数据 .. code-block:: text 发送:A5 5A 00 0C 80 FF F1 34 00 00 00 00 01 E0 00 10 控件属性修改指令 ----------------- 静态图像坐标移动 ~~~~~~~~~~~~~~~~ .. code-block:: text (帧头{A5 5A}) + (长度{2字节}) + (80H) + (FFF2H) + (控件ID) + (X) + (Y) **示例:** 将控件 ID=116 (0x0074) 移动到 (100,100) .. code-block:: text 发送:A5 5A 00 09 80 FF F2 00 74 00 64 00 64 参数显示控件颜色修改 ~~~~~~~~~~~~~~~~~~~~ .. code-block:: text (帧头{A5 5A}) + (长度{2字节}) + (80H) + (FFF2H) + (控件ID) + (正常前景色) + (活动前景色) + (正常背景色) + (活动背景色) **示例:** 将控件 ID=113 (0x0071) 的正常前景色改为红色 .. code-block:: text 发送:A5 5A 00 07 80 FF F2 00 71 F8 00 矩形控件颜色修改 ~~~~~~~~~~~~~~~~ .. code-block:: text 发送:A5 5A 00 07 80 FF F2 00 01 F8 00 (将 ID=1 的控件颜色改为红色) 定时器控制指令 ~~~~~~~~~~~~~~ .. list-table:: :header-rows: 1 :widths: 50 50 * - 指令 - 说明 * - ``A5 5A 00 06 80 FF F2 00 64 00`` - 停止定时器 * - ``A5 5A 00 06 80 FF F2 00 64 01`` - 启动定时器 控件行为修改 ------------ 使能控件触摸功能 ~~~~~~~~~~~~~~~~ .. code-block:: text (帧头{A5 5A}) + (长度{2字节}) + (80H) + (FF0CH) + (控件ID) 示例:A5 5A 00 05 80 FF 0C 00 01 (使能 ID=1 的触摸功能) 禁能控件触摸功能 ~~~~~~~~~~~~~~~~ .. code-block:: text (帧头{A5 5A}) + (长度{2字节}) + (80H) + (FF0DH) + (控件ID) 示例:A5 5A 00 05 80 FF 0D 00 01 (禁能 ID=1 的触摸功能) 显示/隐藏控件 ~~~~~~~~~~~~~ .. code-block:: text 显示:A5 5A 00 05 80 FF F3 00 01 (显示 ID=1 的控件) 隐藏:A5 5A 00 05 80 FF F4 00 01 (隐藏 ID=1 的控件) 画板控件操作指令 ---------------- 画板控件的变量空间总大小为 64K,变量地址范围 ``0000H-FFFFH``。 **帧格式:** .. code-block:: text (帧头{A5 5A}) + (长度{2字节}) + (85H) + (FFFFH) + (变量地址) + (控制指令) + (数据包数量) + (数据包0) + ... + (数据包N) **判断条件:** ``0xFF`` 绘图操作结束,``0xFE`` 本次操作跳过。 打点控制指令 (0x0001) ~~~~~~~~~~~~~~~~~~~~~~ 数据包格式:``(x, y, color)`` **示例:** 画板变量地址 0x000A,在 (50,50) 打红色点 .. code-block:: text 发送:A5 5A 00 0F 85 FF FF 00 0A 00 01 00 01 00 32 00 32 F8 00 清除:A5 5A 00 0A 85 FF FF 00 0A 00 01 00 01 FF 连线操作指令 (0x0002) ~~~~~~~~~~~~~~~~~~~~~~ 数据包格式:``(x, y)``,首个数据包配置颜色 color 矩形操作指令 (0x0003) ~~~~~~~~~~~~~~~~~~~~~~ 数据包格式:``(xs, ys, xe, ye, color)`` **示例:** 左上角 (0,0),右下角 (48,48),红色 .. code-block:: text 发送:A5 5A 00 14 85 FF FF 00 0A 00 03 FF FF 00 00 00 00 00 30 00 30 F8 00 FF 清除:A5 5A 00 0A 85 FF FF 00 0A 00 03 00 01 FF 填充矩形操作指令 (0x0004) ~~~~~~~~~~~~~~~~~~~~~~~~~~ 数据包格式:``(xs, ys, xe, ye, color)`` 圆形操作指令 (0x0005) ~~~~~~~~~~~~~~~~~~~~~~ 数据包格式:``(x, y, r, color)`` **示例:** 圆心 (100,100),半径 32,红色 .. code-block:: text 发送:A5 5A 00 12 85 FF FF 00 0A 00 05 FF FF 00 64 00 64 00 20 F8 00 FF 曲线缩放指令 ------------ - **放大 2 倍:** ``A5 5A 00 03 96 01 00`` (指令 0x96,16 位采样,缓冲区 0) - **缩小 2 倍:** ``A5 5A 00 03 97 01 00`` (指令 0x97,16 位采样,缓冲区 0) 移动焦点 -------- .. code-block:: text 移到上一个焦点:A5 5A 00 05 80 FF 0F A1 FA 移到下一个焦点:A5 5A 00 05 80 FF 0F A1 FB 确认当前焦点: A5 5A 00 05 80 FF 0F 00 0D 设置焦点: A5 5A 00 05 80 FF 0E xx xx (xx xx 为控件 ID) 定时器控制 ---------- .. code-block:: text 暂停(ID=0003):A5 5A 00 06 80 FF F2 00 03 00 启动(ID=0004):A5 5A 00 06 80 FF F2 00 04 01