4.19 表格节目
请求:
SF | CTRL | DES | SRC | TID | CMD | WID | REV | STYLE | FORMAT |
2字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 | 4字节 | 4字节 |
FLAG | CNT | sFORMAT | CRC | EF |
4字节 | 2字节 | 1~1200字节 | 2字节 | 2字节 |
CMD:请求命令,0x031E;
WID:分区编号,有效值从0x0001开始,小于或等于字库卡能支持的最大分区数目;
REV:节目标识,用于单分区多节目。
位15-8:节目编号,同分区中具有唯一性,值越小播放顺序越靠前,有效范围0~63;
位 7-0:保留,始终为0;
STYLE:节目样式;
位31-4:保留,始终为0;
位 3:是否按队列加载,仅永久节目有效,为0表示立即,为1表示按队列顺序加载;
位 2:加载时是否擦除分区,为0表示不擦除,为1表示擦除;
位 1:节目属性,为0表示临时节目,为1表示永久节目;
位 0:保留,始终为0;
FORMAT:文本显示格式;
位31-20:保留,始终为0;
位19- 16:颜色(注:0000表示使用系统当前颜色;1000为黑色)
位18:蓝色;
位17:绿色;
位16:红色;
位15- 8:字体ID;有效值为0-254;为0时使用当前字体ID;
位 7- 6:水平对齐HALIGN
00:左对齐;
01:水平居中对齐;
10:右对齐;
位 5- 4:
00:上对齐;
01:垂直居中对齐;
10:下对齐;
位 3:保留,始终为0;
位 2:wordbreak,自动换行,为0,不自动换行,为1,自动换行;
位 1:单行文本; 0表示多行文本,1表示单行文本;
位 0:高级文本,0表示普通文本,1表示高级文本;保留,始终为0;
FLAG:控制信息
位31-16:节目停留时间,单位为秒,仅在位1为0时有效;
位15-2:保留,始终为0;
位 1:为0表示节目时间无限长,为1表示有限节目时间;
位 0:为0表示加载节目时擦除当前分区,为1表示加载节目时不擦除当前分区;
CNT:表示sFORMAT的字节数
sFORMAT:表格显示格式,格式如下所示:
单元格起始标识:
%R:【画单元格】
% | R | Ctrl1 | Ctrl2 | Param |
1字节 | 1字节 | 1字节 | 1字节 | 可能为0、4、8、12、16个字节 |
单元格起始标识,表示一个通用单元格的起始。该标识后紧跟有2个字符,第1个字符表示边框,第2个字符表示单元格x、y、width、height是否改变。Ctrl1、 Ctrl2、Param的字符取值范围为0-9、A-F、a-f。
注意此值存储方式为大端存储,即高字节在前,低字节在后。
Ctrl1转为16进制数范围为0x0—0xf,有4个比特位:
位3:1为有左边框,0为无左边框;
位2:1为有上边框,0为无上边框;
位1:1为有右边框,0为无右边框;
位0:1为有下边框,0为无下边框;
Ctrl2转为16进制数范围为0x0—0xf,有4个比特位:
位3:1为单元格x坐标相对上一单元格发生变化,0为x坐标无变化;
位2:1为单元格y坐标相对上一单元格发生变化,0为y坐标无变化;
位1:1为单元格宽度相对上一单元格发生变化,0为宽度无变化;
位0:1为单元格高度相对上一单元格发生变化,0为高度无变化;
根据Ctrl2转化为16进制数后的相应比特位的值,Param应该按照x,y,width,height的顺序紧跟发生变化的参数,每个参数由4个可转化为16进制数的字符组成,因此Param需要解析的长度可能为0、4、8、12或者16个字节。例如Ctrl2为‘6’,则对应16进制数为0x6,表示y坐标和width参数相对前一单元格发生变化,则Param字段有8个字节,前4个字节为当前单元格y坐标,后4个字节为当前单元格width参数值。若当前单元格x坐标为1024(对应16进制为0x0400),则Param的前4个字符依次为‘0’、‘4’、‘0’、‘0’,当前单元格width参数值为10(对应16进制为0x0a),则Param的后4个字符依次为‘0’、‘0’、‘0’、‘a’,当前单元格的x坐标和height的值与前一单元格相同。
%K:【画单元格】
% | K |
1字节 | 1字节 |
单元格起始标识,表示一个特殊的单元格的起始。该单元格只画 ‘上右下’三条边框,X坐标值等于前一个单元格的X坐标和宽之和(单元格向右递增,只改变X坐标值,Y坐标、宽、高不变);
%k:【画单元格】
% | k |
1字节 | 1字节 |
单元格起始标识,表示一个特殊的单元格的起始。该单元格只画 ‘左右下’三条边,Y坐标值等于前一个单元格的Y坐标和高之和(单元格向下递增,只改变Y坐标值,X坐标、宽、高不变);
单元格属性标识:
%J:表示当前单元格中画斜线“\”,该标识可选。
% | J |
1字节 | 1字节 |
%j:表示当前单元格中画斜线“/”,该标识可选。
% | j |
1字节 | 1字节 |
%B:【边框属性】
% | B | Ctrl1 | Ctrl2 |
1字节 | 1字节 | 1字节 | 1字节 |
表示更新当前单元格的边框属性,该标识可选。若当前单元格中没有该标识,则边框属性为之前最后一次%B的值。该标识后紧跟有2个字符。Ctrl1和Ctrl2的字符取值范围为0-9、A-F、a-f。
Ctrl1转为16进制数范围为0x0—0xf,有4个比特位:表示边框颜色:
(注:0000表示使用系统当前颜色;1000为黑色)
位2:蓝色;
位1:绿色;
位0:红色;
Ctrl2转为16进制数范围为0x0—0xf:表示边框样式:
0x0: 1像素宽度直线(默认)
0x1: 2像素宽度直线;
其他值:保留;
%Q:【文本格式】
% | Q | Ctrl |
1字节 | 1字节 | 8字节 |
表示当前单元格使用新的FORMAT,该标识可选。Ctrl字段有8个字符,字符取值范围为0-9、A-F、a-f。Ctrl字段的每个字符转为16进制后范围为0x0-0xf,8个字符分别转化后可组成32位数,用来表示当前单元格的FORMAT参数值(同命令中的FORMAT参数),第一个字符对应FORMAT值的bit31-bit28,第二个字符对应bit27-bit24,依次类推,第八个字符对应bit3-bit0。若当前单元格中没有该标识和%q,则FORMAT属性为前一个单元格的FORMAT值;
%q:【文本格式】
% | q |
1字节 | 1字节 |
表示恢复到默认FORMAT(命令中的FORMAT字段值)。该标识可选。
回应:
SF | CTRL | DES | SRC | TID | CMD | RES | CRC | EF | |
2字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 |
CMD:回应命令,0x831E;
RES:操作结果,0表示操作成功,其他表示错误,可查看附件1中错误代码。
sFORMAT的示例如下所示:
备注:
1. 使用FLAG控制信息,更新表格部分内容
2. 应用超大表格时,可使用单节目覆盖(主要用于实时显示)或者分区多节目(掉电不易失)或开机批处理事件(掉电不易失),方法是下一个节目开始时恢复上一个节目的上下文(单元格x坐标、y坐标、宽、高,边框属性、文本格式),并且除了第一个节目外其他节目的 FLAG位1置1(不擦除分区节目)
例2:
请求命令:(表格在分区1中静止显示,FLAG设置为0x0203即加载时不擦除当前分区,有限时间节目,时间为2秒。表格sFORMAT为 %B00%RFF0001000100100010合\n肥%K2\n 3%j%K%J%K%RFF0001001000100010金\n涵%RFF00100010002E0010LED控制卡 。显示3行5列表格 )
备注:1、本例程是在64*32点LED屏上显示故为让表格对称,本例中第一行第一列仅为一个点,并且第3行第3、4、5列为合并单元格。
AA A5 7E 00 FF FF 00 00 B0 A1 1E 03 01 00 00 00 0A 00 00 00 00 00 00 00 02 00 03 00 64 00 25 42 30 30 25 52 46 46 30 30 30 31 30 30 30 31 30 30 31 30 30 30 31 30 ba cf 5c 6e b7 ca 25 4b 32 5c 6e 20 33 25 6a 25 4b 25 4a 25 4b 25 52 46 46 30 30 30 31 30 30 31 30 30 30 31 30 30 30 31 30 bd f0 5c 6e ba ad 25 52 46 46 30 30 31 30 30 30 31 30 30 30 32 45 30 30 31 30 4c 45 44 bf d8 d6 c6 bf a8 00 00 5A 55
回应命令:
AA A5 0A 08 00 00 01 01 B0 A1 1E 83 00 00 D0 67 5A 55