该文档用于价签二次开发使用,主要记录函数功能、参数,及用法,方便开发者查阅。
注意事项:所有函数不需要有空格,所有函数不需要分号结尾,每条函数以换行符结尾,字符串使用单引号括起来。 字符串不能使用特殊字符。
在做二次开发的时候,有时候需要使用到一些设备的内置变量,变量可以以数字的形式改变内容的坐标,也可以以字符串的形式显示出来。
这里规定,所有的变量用大括弧 {} 括起来。括起来的部分为一个变量,其中变量也可以进行简单的计算。
{g}: 返回上次同步时间的时间戳,时间戳为自2000-1-1 00:00:00开始经过的秒数。
{u}: 返回当前时间戳,时间戳为自2000-1-1 00:00:00开始经过的秒数。
{y}: 返回当前年份变量,比如当前是2025年,则返回变量2025。
{m}: 返回当前月份变量,比如当前是5月,则返回变量5。
{d}: 返回当前日期变量,比如当前是15日,则返回变量15。
{H}: 返回当前小时变量,比如当前是10点,则返回变量10。
{N}: 返回当前分钟变量,比如当前是50分,则返回变量50。
{S}: 返回当前秒变量,比如当前是30秒,则返回变量30。
{Z}: 返回当前时区变量,比如当前北京时间,则返回当前的时区8,取值范围为-12~12。
{b}/{B}: 返回电池电压的ADC值,取值范围为0~2046。其中2046为3.6V。0为0V,实际上在2.0V的时候,设备已经无法正常工作。
{c}: 返回当前墨水屏温度的ADC的值。
{C}: 返回当前墨水屏温度的变量值,实际上为温度ADC/16的值。
{u}: 返回当前时间戳,自2000年1月1日 0:0:0到现在经过的秒数。
{r}: 取随机数,后面跟个数字,表示随机数的范围。
{R}: 返回内存变量值,后面需要跟着变量序号。
{ly}: 返回阴历年序号,0为鼠年,11为猪年。
{lm}: 返回阴历月序号,0为未知,1-12为具体月序号。
{ld}: 返回阴历日序号,0为未知,1-30为具体日序号。
其他的待程序版本升级后补充
部分变量支持简单的运算。
比如要显示其他时区的时间。
北京时间:
FONT(10,24,2,42,0,1,'北 京 {H%24}:{N}')
洛杉矶时间:
FONT(10,24,2,42,0,1,'洛杉矶 {H+9%24}:{N}')
比如要显示当前电池电量。(画图的形式)
xxxxxxxxxx41RECT(10,20,130,70,0,1,1)2RECT(130,30,145,60,0,1,1)3RECT(15,25,125,65,1,1,1)4RECT(20,30,{b-1300/7+20},60,0,1,1)
比如要根据时间不同,在不同的位置画图。(类似一个日出和日落的过程,一小时刷新一次)
CIRCLE({H-6*18},25,15,0,1,1)
比如要根据当前星期,显示对应的图片。
IMG({w},0)
{mac}:返回当前设备的MAC地址的后六位,小写表示(xxxxxx)
{MAC}:返回当前设备的MAC地址,大写表示,并用分号间隔(XX:XX:XX:XX:XX:XX)
{VER}:返回当前设备的版本号,如1.29
{GKD}:返回距离下一个高考的天数的字符串,如“距高考xx天”
{GKd}:返回距离下一个高考的天数,如“xx”
{ls}:返回当前日期阴历年的天干数据
{lb}:返回当前日期阴历年的地支数据
{ly}:返回当前日期阴历年的属相
{lm}:返回当前日期阴历月份,如“正月”
{ld}:返回当前日期阴历日,如“初一”
{lT}:返回距离下一个节气的字符串数据,如“距冬至还有xx天”
{hxn}: 与倒计时有关,可以是生日或者节日,如果倒计时为未来的时间,到时间时间可以超过365天
目前倒计时最多支持8条
x可取数据为:t、T、a、A、n、N、m、M、d、D,
大写与小写含义相同,
区别为:大写按照存储顺序取数据,小写按照距离的天数重新排序取数据
t、T:代表姓名
a、A:代表年龄
n、N:代表距离天数
m、M:代表设置的月份
d、D:代表设置的日期
n为序号,从1开始,可以取1~8。
{y}:返回当前日期的年,如2025
{m}:返回当前日期的月,如05
{d}:返回当前日期的日,如15
{H}:返回当前时间的小时,如10
{N}:返回当前时间的分钟,如50
{w}:返回当前星期编号,0代表星期日,1代表星期一,以此类推
{W}:返回当前星期,如“日”、“五”
{b}:返回当前电池电压的ADC值,取值范围为0~2046。其中2046为3.6V。0为0V,实际上在2.0V的时候,设备已经无法正常工作。
{B}:返回当前电池电压,取值范围为0~3.6V。
{c}:返回当前电墨水屏温度值。比如当前温度为20度,则返回20。
{C}:返回当前电墨水屏温度值,小数点后面有两位数字。比如当前温度为20度,则返回20.00。温度的分辨率为1摄氏度
{z}:返回当前时区。取值范围为-12~12。默认为北京时区,返回为8。
其中,显示数字文本的时候,如何要显示文本从长度,则可在变量名称后直接写数字。目前变量长度仅适用于这几个变量:ymdHNC
FONT:输出文字信息
CAL:绘制月历
POINT:画像素点
RPOINT:画随机像素点
LINE:画线
RECT:绘制矩形
CIRCLE:画圆
IMG:画图
ICON:画图标
DATE_OFF:时间重置,单位为天
TIME_OFF:时间重置,单位为秒
ROTATE:屏幕旋转
MIRROR:屏幕镜像翻转
CLOCK:绘制指针时钟
TABLE:绘制表格
SRAND:重置随机数种子
RANDS:内存变量取随机数
LET:变量赋值
SHOW:显示标记
INV:反转显示
CLEAR:清屏
CALC:绘制普通月历(当日不反显)
CALu:绘制普通阴历部分
CALj:绘制日历的24节气
CALc:在日历日期的位置画圆(实心圆)
CALs:绘制日历的天干
CALb:绘制日历的地支
CALws:绘制日历的天干对应的五行
CALwb:绘制日历的地支对应的五行
REGION:局刷区域
输出文字信息
函数原型
xxxxxxxxxx11void FONT($x, $y, $g, $font_id, $fore_color, $back_color, $scale=1, $text)
参数说明
$x:文字左上角横坐标
$y:文字左上角纵坐标
$g:文字间隔
$font_id:字体ID,字体ID为0时,使用系统默认字体,
$fore_color:字体颜色,0为白色,1为黑色
$back_color:背景颜色,0为白色,1为黑色
$scale:放大比例,默认为1。
$text:文字内容
用法
xxxxxxxxxx11FONT(5,50,10,0,0,1,'Hello World')
在坐标(5,50)处输出黑色背景的白色字体,字体间隔为10,内容为“Hello World”。
绘制月历
函数原型
xxxxxxxxxx11void CAL($x, $y, $g_x, $g_y, $font_id, $fore_color, $back_color)
参数说明
$x:文字左上角横坐标
$y:文字左上角纵坐标
$g_x:横向间隔
$g_y:纵向间隔
$font_id:字体ID,字体ID为0时,使用系统默认字体,
$fore_color:字体颜色,0为白色,1为黑色
$back_color:背景颜色,0为白色,1为黑色
用法
xxxxxxxxxx11CAL(5,20,16,12,0,0,1)
在坐标(5,50)处输出当前月历,横向间隔16,纵向间隔12,字体ID未0,前景色为黑色,背景色为白色。 当日会用黑框显示出来。
画像素点
函数原型
xxxxxxxxxx11void POINT($x, $y, $color, $pix, $type)
参数说明
$x:点的横坐标
$y:点的纵坐标
$color:点的颜色,0为黑色,1为白色
$pix:点的大小,1为标准大小,取值范围为1-8
$type:点的类型
用法
xxxxxxxxxx11POINT(50,50,0,5,0)
画一个黑色像素点,坐标为(50,50)。
在一个矩形区域内,画随机像素点
函数原型
xxxxxxxxxx11void POINT($x, $y, $w, $h, $color, $pix, $type, $count)
参数说明
$x:区域的横坐标
$y:区域的纵坐标
$w:区域的宽
$h:区域的高
$color:点的颜色,0为黑色,1为白色
$pix:点的大小,1为标准大小,取值范围为1-8
$type:点的类型
$count:点的数量
用法
xxxxxxxxxx11RPOINT(1,1,210,80,0,2,2,50)
画一个区域为,x=1,y=2,w=210,h=80的区域内,画50个黑色像素点,点的大小为2。
画线
函数原型
xxxxxxxxxx11void LINE($x1, $y1, $x2, $y2, $color, $pix, $type)
参数说明
$x1:线的起点横坐标
$y1:线的起点纵坐标
$x2:线的终点横坐标
$y2:线的终点纵坐标
$color:线的颜色,0为黑色,1为白色
$pix:线的粗细,1为标准大小,取值范围为1-8
$type:线的类型,0为实线,1为虚线
用法
xxxxxxxxxx11LINE(125,1,125,104,0,1,1)
画一条白色线,起点坐标为(100,100),终点坐标为(200,200)。
绘制矩形
函数原型
xxxxxxxxxx11void RECT($x1, $y1, $x2, $y2, $color, $pix, $type)
参数说明
$x1:矩形左上角横坐标
$y1:矩形左上角纵坐标
$x2:矩形右下角横坐标
$y2:矩形右下角纵坐标
$color:矩形颜色,0为黑色,1为白色
$pix:矩形粗细,1为标准大小,取值范围为1-8
$type:填充类型,0为不填充,1为填充
用法
xxxxxxxxxx11RECT(1,1,120,18,0,1,1)
绘制一个白色矩形,左上角坐标为(0,0),右下角坐标为(120,18)。
画圆
函数原型
xxxxxxxxxx11void CIRCLE($x, $y, $r, $color, $pix, $type)
参数说明
$x:圆心横坐标
$y:圆心纵坐标
$r:圆的半径
$color:圆的颜色,0为黑色,1为白色
$pix:圆的粗细,1为标准大小,取值范围为1-8
$type:填充类型,0为不填充,1为填充
用法
xxxxxxxxxx11CIRCLE(60,60,30,0,1,1)
画一个白色圆,圆心坐标为(60,60),半径为30。
画图
函数原型
xxxxxxxxxx11void IMG($img_id, $inv_flag)
参数说明
$img_id:图片ID,总共可以存7张图片,编号为0-6
$inv_flag:反色标志,(暂时未使用这个标志位)
用法
xxxxxxxxxx11IMG(0,0)
显示设备中存储的第一张图片
画图标
函数原型
xxxxxxxxxx11void ICON($x, $y, $icon_id, $font_id, $fore_color, $back_color, $scale=1)
参数说明
$x:图标左上角横坐标
$y:图标左上角纵坐标
$icon_id:图标ID,图标ID为0-255,做字库的时候需要保证图标数量。
$font_id:字体ID,字体ID为0时,使用系统默认字体,
$fore_color:字体颜色,0为白色,1为黑色
$back_color:背景颜色,0为白色,1为黑色
$scale:放大比例,默认为1。
用法
xxxxxxxxxx11ICON(190,20,0,99,0,1)
在坐标(190,20)处显示一个白色背景的黑色图标,图标ID为0,字体ID为99。 这个图标未内置的温度计图标。如果需要显示其他图标,需要自己制作图标字库。 图标字库的制作方法与字库做法类似。
日期重置,单位为天
函数原型
xxxxxxxxxx11void DATE_OFF($day)
参数说明
$day:相对于当前日期偏移的天数
用法
xxxxxxxxxx11DATE_OFF(7)
如果当前时间为:2025-07-27,则执行 DATE_OFF(7) 后,日期变为:2025-08-03。此时如果要显示日期,则会显示2025-08-03,如果要恢复的话,需执行 DATE_OFF(0)。
日期重置,单位为秒
函数原型
xxxxxxxxxx11void TIME_OFF($sec)
参数说明
$sec:相对于当前日期偏移的秒数
用法
xxxxxxxxxx11TIME_OFF(60)
如果当前时间为:00:00:00,则执行 TIME_OFF(60) 后,时间变为:00:01:00。此时如果要显示时间,则会显示00:01:00,如果要恢复的话,需执行 TIME_OFF(0)。如果正好跨天了,则日期也会变化。
屏幕旋转
函数原型
xxxxxxxxxx11void ROTATE($rotate)
参数说明
$rotate:旋转角度,取值范围为0、90、180、270,0为不旋转,1为旋转90度,2为旋转180度,3为旋转270度。 默认为270度。
用法
xxxxxxxxxx11ROTATE(270)
90度和270度为价签横着放,0度和180度为竖着放。
屏幕镜像
函数原型
xxxxxxxxxx11void MIRROR($mirror)
参数说明
$mirror:镜像标志,取值范围为0、1、2、3,0为不镜像,1为X轴镜像,2为Y轴镜像,3为X轴和Y轴镜像。 默认为2。
用法
xxxxxxxxxx11MIRROR(2)
具体使用方式,可以自己摸索。
绘制指针时钟,只有指针。如果需要表盘,可以使用图片或者图标的形式,也可以简单的绘制一个圆。 目前仅在2.13的固件中实现了这个指令。
函数原型
xxxxxxxxxx11void CLOCK($x, $y, $rad_h, $rad_m, $pix_h, $pix_m, $color, $type)
参数说明
$x:圆心横坐标
$y:圆心纵坐标
$rad_h:时针长度
$rad_m:分针长度
$pix_h:时针宽度
$pix_m:分针宽度
$color:圆的颜色,0为黑色,1为白色
$type:指针类型,0为默认12小时表盘;1为24小时表盘。
用法
xxxxxxxxxx11CLOCK(185,60,20,25,5,3,0,0)
画一个指针时钟,中心坐标为(185,60),时针长度为20,分针长度为25,时针宽度为5,分针宽度为3,指针颜色为黑色,指针类型为默认。
绘制表格。 目前仅在2.13的固件中实现了这个指令。固件需要在1.40版本以上。
函数原型
xxxxxxxxxx11void TABLE($x, $y, $x_w, $y_h, $x_count, $y_count, $color, $pix, $type)
参数说明
$x:圆心横坐标
$y:圆心纵坐标
$x_w:横向间隔
$x_y:横向间隔
$x_count:横向数量
$y_count:纵向数量
$color:圆的颜色,0为黑色,1为白色
$pix:线条宽度
$type:指针类型,0为实线;1为虚线。
用法
xxxxxxxxxx11TABLE(2,3,30,14,7,7,0,1,1)
画一个表格,左上角坐标为(2,3),横向线条间隔为30,纵向线条间隔14,横向表格7个,纵向表格7个,颜色为黑色,线条宽度为1,线条类型为虚线。
重置随机数种子。 目前仅在2.13的固件中实现了这个指令。固件需要在1.51版本以上。
函数原型
xxxxxxxxxx11void SRAND($r)
参数说明
$r:随机数种子参数,可以取变量。
用法
xxxxxxxxxx11SRAND({H})
按小时设置随机数种子,这样每天的整点取到的随机数序列均与前一天相同时间相同。
内存变量取随机数。 固件内存总共开放了100个内存变量,类型为uint16_t。
函数原型
xxxxxxxxxx11void RANDS($index, $count, $min, $max, $type)
参数说明
$index:内存变量赋值的起始索引。
$count:内存变量赋值的数量。
$min:最小值。
$max:最大值。
$type:取值类型。
bit0:=0,取随机数赋值;=1,顺序取数赋值
bit1:=0,不排序;=1,排序
bit2:=0,从小到大;=1,从大到小
bit3:=0,可以重复;=1,不可重复
用法
xxxxxxxxxx11RANDS(0,5,1,36,10)
给内存变量序号为0-4的变量赋值,最小值为1,最大值为36, 其中10的16进制为0x0A,其中bit3和bit1为1。即取随机数,需要排序,从小到大,不可重复。
内存变量赋值。 固件内存总共开放了100个内存变量,类型为uint16_t。
函数原型
xxxxxxxxxx11void LET($index, $data)
参数说明
$index:内存变量赋值的起始索引。
$data:内存变量赋值的具体值。
用法
xxxxxxxxxx11LET(0,{H})
讲当前时间的小时赋值给变量序号为0的变量。
配置显示标记。如果配置为0,则后面的指令不在屏幕上显示,配置为1,则后面的指令会在屏幕上显示。
函数原型
xxxxxxxxxx11void SHOW($flag)
参数说明
$flag:显示标记。可以识别不等式运算,其中运算符包含;
以下逻辑运算需要将程序升级到1.55以上版本。
= 或者 ==: 等于
!= 或者 <>: 不等于
>=: 大于等于
<=: 小于等于
>: 大于
<: 小于
运算符两端可以识别变量等式。
用法
xxxxxxxxxx41SHOW(0)2FONT(5,100,10,0,0,1,'Hello')3SHOW(1)4FONT(5,50,10,0,0,1,'World')
这个指令序列表示,屏幕上会显示Wrold,但不会显示Hello。
xxxxxxxxxx91SHOW({w})//只有周日不显示2SHOW({w/3})//周三、周四、周五、周六显示3SHOW({w%3})//周日、周三、周六不显示4SHOW(1==2)//不显示5SHOW(1!=2)//显示6SHOW({w}!=1)//不是周一显示7SHOW({w}==1)//只有周一显示8SHOW({H}=={N})//小时和分钟一样的时候显示,比如10:10显示9其他的以此类推,可以举一反三。
屏幕反色显示标记。
函数原型
xxxxxxxxxx11void INV($flag)
参数说明
$flag:反色显示标记。0为不反色,1为反色。
用法
xxxxxxxxxx11INV(1)
屏幕反色显示。
屏幕整体清屏。
函数原型
xxxxxxxxxx11void CLEAR($color)
参数说明
$color:清屏颜色。0为黑色,1为白色。
用法
xxxxxxxxxx11CLEAR(0)
屏幕设置为全部黑色。
CALC:绘制普通月历
CALu:绘制普通阴历部分
CALj:绘制日历的24节气
CALc:在日历日期的位置画圆(实心圆)
CALs:绘制日历的天干
CALb:绘制日历的地支
CALws:绘制日历的天干对应的五行
CALwb:绘制日历的地支对应的五行
函数原型
xxxxxxxxxx81void CALC($x, $y, $g_x, $g_y, $font_id, $fore_color, $back_color, $show_flag)2void CALu($x, $y, $g_x, $g_y, $font_id, $fore_color, $back_color, $show_flag)3void CALj($x, $y, $g_x, $g_y, $font_id, $fore_color, $back_color, $show_flag)4void CALc($x, $y, $g_x, $g_y, $rad, $fore_color, $back_color, $show_flag)5void CALs($x, $y, $g_x, $g_y, $font_id, $fore_color, $back_color, $show_flag)6void CALb($x, $y, $g_x, $g_y, $font_id, $fore_color, $back_color, $show_flag)7void CALws($x, $y, $g_x, $g_y, $font_id, $fore_color, $back_color, $show_flag)8void CALwb($x, $y, $g_x, $g_y, $font_id, $fore_color, $back_color, $show_flag)
参数说明
$x:文字左上角横坐标
$y:文字左上角纵坐标
$g_x:横向间隔
$g_y:纵向间隔
$font_id:字体ID,字体ID为0时,使用系统默认字体,
$fore_color:字体颜色,0为白色,1为黑色
$back_color:背景颜色,0为白色,1为黑色
$show_flag:日历显示标记,低七位代表周日到周六,为1则显示,为0则不显示。如果show_flag=255,则仅显示当日。
$rad:圆的半径。
用法
xxxxxxxxxx11CALC(5,20,16,12,0,0,1,127)
在坐标(5,50)处输出当前月历,横向间隔16,纵向间隔12,字体ID为0,前景色为黑色,背景色为白色,显示周日到六全部日期。
设置局刷区域(最多10条)
函数原型
xxxxxxxxxx11void REGION($x, $y, $w, $h)
参数说明
$x:矩形左上角横坐标
$y:矩形左上角纵坐标
$w:矩形区域宽度
$h:矩形区域高度
用法
xxxxxxxxxx11REGION(1,1,120,18)
左上角坐标为(0,0),右下角坐标为(120,18)的区域参与局刷,只在时钟模式有意义。