HMI指令集
1、 串口说明
1-1 串口工作模式
采用异步、全双工串口(UART),每个数据传送采用11个位:1个起始位,8个数据位(LSB),1个SPACE校位,1个停止位。波特率有两种方式设置:
(1)、上电时,如果终端的I/O0引脚为高电平或者浮空状态,波特率为用户设置值,范围1200-115200bps,具体设置方法参考0xE0指令。出厂默认为115200bps。
(2)、上电时,如果终端的I/O0引脚为低电平,波特率默认为921600bps,也可由0xE0指令设置为其它波特率。
注:上面两种设置方式只是出厂未设置过波特率时默认值不一样,设置保存后则上电时为设置过的波特率。
1-2 数据帧架构
串口数据帧由4个数据块组成,如下表所述:
数据 |
1 |
2 |
3 |
4 |
5 |
举例 |
0xAA |
0x70 |
0x01 |
Check_H:L(可选) |
0xCC 0x33 0xC3 0x3C |
说明 |
帧头固定为0xAA |
指令 |
数据长度,最多248 |
2字节累加和校验 |
帧结束符(帧尾) |
注:2字节累加和校验:当PARA2.1=0(0xE0/E3指令或SD卡设置)时启用,校验和从指令开始计算,到最后一个数据结束,字节累加。
举例:Para2.1=1 AA 70 01 CC33 C33C 未启用帧累加和校验
Para2.1 =0 AA 70 01 00 71 CC33 C33C 启用了帧累加和校验
1-3 通讯帧缓冲区(FIFO)
HMI有一个通讯缓冲区,通讯缓冲区为FIFO(先进先出)结构,只要通讯缓冲区不溢出,用户就可以连续传送数据给HMI。
硬件BUSY信号指示了通讯缓冲区的状态,正常时,BUSY信号为高电平(RS232电平为负电压),当通讯缓冲区满时,BUSY信号会变成低电平(RS232电平为正电压),用户应停止发送数据,待BUSY恢复为高电平时再接着发送数据。
对于一般的应用,由于HMI的处理速度很快,用户不必判断BUSY信号状态,但对于短时间需要传送多个数据帧的应用,比如一次需要高速刷新上百个屏幕参数,建议使用BUSY信号来控制串口发送。
注:如果用户使用HMI过程中,出现“丢帧”现象,即某些数据没有显示出来,则可能是缓冲区溢出了,这时就需要用示波器检查BUSY信号是否有跳变,如果有跳变,则需要减慢发送速度,或者配合 BUSY信号来处理。
1-4 字节传送顺序
所有的指令或数据都是16进制(HEX)格式;对于字型(2字节)数据,总是采用高字节优先传送(MSB)方式。如:x坐标为600,其HEX格式数据为0x0258,传送顺序为0x02 0x58。
1-5 传送方向
传送方向按照下面的规则定义:
(1).下行(Tx)用户发送数据给HMI,数据从HMI用户接口的 “DIN”或“RXD”引脚输入。
(2).上行(Rx)HMI发送数据给用户,数据从HMI用户接口的 “DOUT”或“TXD”引脚输出。
|
|
类别 |
指令 |
说明 |
握手 |
0x00 |
查看配置和版本信息 |
显示参数配 |
0x40 |
设置调色板 |
0x41 |
设置字符显示间距 |
|
0x42 |
取色到背景色调色板 |
|
0x43 |
取色到前景色调色板 |
|
0x44 |
设置光标显示模式 |
|
文本显示 |
0x53 |
8*8点阵ASCII字符 |
0x54 |
16*16点阵GBK扩展码字符串显示 |
|
0x55 |
32*32点阵GB2312内码字符串显示 |
|
0x6E |
12*12点阵GBK 扩展码字符串显示 |
|
0x6F |
24*24点阵GB2312内码字符串显示 |
|
0x98 |
任意点阵,任意编码字符串显示 |
|
0x45 |
开启/关闭文本框限制 |
|
置点 |
0x50 |
背景色置多个点(删除点) |
0x51 |
前景色置多个点 |
|
0x74 |
动态画线快速置点 |
|
0x72 |
直接显存操作 |
|
线段和多边形 |
0x56 |
把指定点用前景色线段连接(显示多边形) |
0x5D |
把指定点用背景色线段连接(删除多边形) |
|
0x75 |
快速显示连续的同底垂直线段(频谱) |
|
0x76 |
快速显示折线图 |
|
0x78 |
偏移量连线 |
|
圆弧和圆域 |
0x57 |
反色/显示 多个圆弧或圆域 |
矩形框 |
0x59 |
前景色显示多个矩形框(显示矩形框) |
0x69 |
背景色显示多个矩形框(删除矩形框) |
|
区域操作 |
0x73 |
双色位图填充指定区域 |
0x64 |
指定区域填充 |
|
0x52 |
清屏 |
|
0x5A |
多个指定区域清除 |
|
0x5B |
多个指定区域填充 |
|
0x5C |
多个指定区域反色 |
|
0x60 |
多个指定区域左环移 |
|
0x61 |
多个指定区域右环移 |
|
0x62 |
多个指定区域左移 |
|
0x63 |
多个指定区域右移 |
|
图片/图标显示 |
0x70 |
显示一幅全屏图像 |
0x7B |
显示一幅全屏图像并计算CRC16校验和 |
|
0x71 |
从指定图片剪切图标粘贴到当前显示页 |
|
0x9C |
从指定图片剪切图标滤除背景粘贴到当前显示页,粘贴前自动恢复原背景 |
|
0x9D |
从指定图片剪切图标滤除背景粘贴到当前显示页 |
|
0x9E |
从指定图片剪切图标,旋转指定角度后粘贴到当前页面显示,背景滤除可选 |
|
0xE2 |
将当前显示画面保存到终端 |
|
0x97 |
ICON图标显示(最大尺寸255×255) |
|
0x99 |
用户自定义图标显示 |
|
0xD0 |
强制刷新一次全屏显示 |
|
动画支持 |
0x9A |
关闭/打开自动执行用户预先设置的指令组 |
暂存缓冲区操作 |
0xC0 |
写数据到暂存缓冲区 |
0xC101 |
显示暂存缓冲区的数据点 |
|
0xC102 |
显示暂存缓冲区的数据线 |
|
0xC103 |
使用显示暂存缓冲区的数据线(曲线动态缩放) |
|
0xC104 |
使用显示暂存缓冲区的数据点高速无闪烁连线(示波器) |
|
0xC105 |
使用显示暂存缓冲区数据缩放显示折线图 |
|
0xC106 |
使用显示暂存缓冲区数据缩放显示窗口限制双向折线图 |
|
0xC107 |
清空置点缓冲区 |
|
0xC107 |
在置点缓冲区置点 |
|
0xC107 |
恢复置点缓冲区到当前显示页面 |
|
0xC108 |
使用暂存缓冲区来显示参数 |
|
0xC110 |
使用暂存缓冲区指令实现同步显示 |
|
0xC2 |
从暂存缓冲区回读数据 |
|
0xF2 |
下载字库 |
|
0x90 |
写数据到用户数据库 |
|
0x91 |
从用户数据库读数据 |
|
0x71 |
键码上传 |
|
0xE5 |
配置键码接口 |
|
0x72 |
触摸屏松开后,最后一次上传(可0xE0指令设置关闭) |
|
0x73 |
触摸屏按下时,数据上传(可0xE0指令设置只传1次) |
|
0xE4 |
触摸屏校准 |
|
0x78 |
触摸界面自动切换模式下,触摸屏松开时,预设键码自动上传 |
|
0x79 |
触摸界面自动切换模式下,触摸屏按下时,预设键码自动上传 |
|
0x7C01 |
触摸界输入ASCII字符串 |
|
0x7C02 |
触摸界输入中英文混合字符串 |
|
蜂鸣器控制 |
0x79 |
蜂鸣器鸣叫一声 |
视频切换 |
0x7A |
切换视频和HMI功能 |
背光控制 |
0x5E |
关闭背光或设置触摸(键控)背光模式 |
0x5F |
打背光或PWM方式调节背光亮度 |
|
时钟操作 |
0x9B |
启用/关闭时钟自动叠加显示,读取当前时钟 |
0xE7 |
设置时钟 |
|
参数配置 |
0xE0 |
配置参数,掉电不保存 |
0xE3 |
配置参数,掉电保存 |
|
实用算法 |
0xB001 |
基于一级字库的拼音输入法 |
0xB002 |
计算(A*B+C)/D,E是4字节商,F是2字节余数 |
|
0xB003 |
无符号整数(2字节)数组排序 |
|
0xB004 |
基于GBK字库的拼音输入查询 |
|
声音操作 |
0x30 |
播放指定存储位置的音乐 |
0x32 |
实时音量调节 |
|
0x33 |
立即停止播放 |
|
0x3F |
声音操作指令应答 |