截止2025年12月29日,平台支持的串口控制指令有:

编号 指令名 参数及结构 用法示例 说明
1 page [页面名/ID, 动画类型]\
页面名字符串或ID数字,动画类型0\~5
{ "page": ["main", 1] }\
{ "page": [0, 2] }
动画类型:0无、1淡入、2左、3右、4上、5下
2 rest 整数(延时毫秒) { "rest": 1000 } 延时后重启
3 dim 整数/字符串/变量(0\~100) { "dim": 80 }\
{ "dim": "$brightness" }
设置屏幕亮度,支持全局变量
4 vol 整数/字符串/变量(0\~100) { "vol": 50 }\
{ "vol": "$vol" }
设置音量,内部映射0\~60
5 baud 整数(波特率) { "baud": 115200 } 设置串口波特率
6 wifi_scan on_successon_error(回调对象) { "wifi_scan": { "on_success": {...} } } 扫描WiFi,回调为JSON对象或数组
7 wifi propssidpwdforce),on_successon_erroron_disconnect_error(回调) { "wifi": { "prop": { "ssid": "xxx", "pwd": "yyy" } } } force为1强制重连,支持变量,回调为JSON对象
8 wifi_disconnect on_successon_error(回调对象) { "wifi_disconnect": { "on_success": {...} } } 断开WiFi,回调
9 gpio pin(字符串/变量),level(0/1) { "gpio": { "pin": "2", "level": 1 } } 控制GPIO高低电平
10 gui do("start"/"stop") { "gui": { "do": "stop" } } 控制LVGL刷新
11 vplay do('r'播放/' '暂停/'q'停止),url(文件名),xyon_successon_error { "vplay": { "do": "r", "url": "video.avi", "x":0, "y":0 } } 视频播放,支持回调
12 aplay do('r'播放/' '暂停/'q'停止),url(文件名),volon_successon_error { "aplay": { "do": "r", "url": "music.mp3", "vol":30 } } 音频播放,支持回调
13 http propurlsval),on_successon_error(回调对象) { "http": { "prop": { "url": "...", "sval": "$result" } }} HTTP请求,结果存入变量
14 timer name(定时器名),en(0暂停/1恢复) { "timer": { "name": "tmr1", "en": 1 } } 控制定时器
15 log en(0关闭/1开启) { "log": { "en": 1 } } 控制日志输出
16 gval name(变量名),val(赋值),add(拼接),addm(加法),subm(减法),cut(截取),等 { "gval": { "name": "$score", "val": "100" } } 全局变量操作,详见下方说明
17 gval_save key(NVS键),val(变量名) { "gval_save": { "key": "score", "val": "$score" } } 保存全局变量到NVS
18 gval_load key(NVS键),val(变量名) { "gval_load": { "key": "score", "val": "$score" } } 从NVS加载全局变量
19 gval_save_clear true1 { "gval_save_clear": true } 清除所有NVS全局变量
20 jval src(JSON变量),path(数组),dst(目标变量) { "jval": { "src": "\$json", "path": ["data", "0", "name"], "dst": "\$name" }} 按路径取JSON值存入变量
21 jval_join src(JSON变量),path(数组),keys(数组),dstsepline { "jval_join": { ... } } 拼接JSON数组多字段
22 if if1if2op(eq/ne/gt/lt/ge/le),truefalse { "if": { "if1": "$a", "if2": "b", "op": "eq", "true": {...} }} 条件判断,分支为对象/数组/字符串
23 case valuecases(数组,每项含eq/defaultdo { "case": { ... } } 多分支条件
24 for var(变量名),fromtostepbody { "for": { "var": "$i", "from": "1", "to": "10", "step": "1", "body": {...} }} 循环体
25 create_btn txtcolorxyevent(对象,含type/action) { "create_btn": { "txt": "OK", "color": "#FF0000", "x":10, "y":20 } } 动态创建按钮,支持事件绑定
26 fullscreen color(背景色) { "fullscreen": { "color": "#000000" } } 创建全屏面板
27 create_msgbox txttitlebtns(逗号分隔),timeoutautoclosebtn_callbacks(数组) { "create_msgbox": { ... } } 创建消息框,支持按钮和回调
28 call 字符串(函数名) { "call": "myfunc" } 调用已注册C函数
29 test vis(0/1),txt { "test": { "vis": 1, "txt": "hello" } } 显示/隐藏测试面板
30 gval_save_clear true1 { "gval_save_clear": true } 清除所有NVS全局变量
31 pwm iodutyfreqres { "pwm": { "io":2, "duty":128, "freq":1000, "res":8 } } 设置PWM输出
32 adc iodst { "adc": { "io":1, "dst":"$adcVal" } } 读取ADC值到变量

1. page(页面切换)

  • 作用:切换到指定页面,可选动画效果,支持页面名或页面ID。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
0 页面名/ID "main"、0 字符串为页面名,数字为ID
1 动画类型 0、1、2、3 0无动画,1淡入,2左,3右等
  • 用法示例

    { "page": ["main", 1] }
    { "page": [0, 2] }
    

2. rest(延时重启)

  • 作用:延时指定毫秒后重启设备。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
rest 延时(ms) 1000 必须为整数
  • 用法示例

    { "rest": 1000 }
    

3. dim(屏幕亮度)

  • 作用:设置屏幕背光亮度,支持变量。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
dim 亮度0\~100 80、"\$b" 超出范围自动裁剪
  • 用法示例

    { "dim": 80 }
    { "dim": "$brightness" }
    

4. vol(音量设置)

  • 作用:设置音频输出音量,支持变量。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
vol 音量0\~100 50、"\$v" 内部映射到0\~60
  • 用法示例

    { "vol": 50 }
    { "vol": "$vol" }
    

5. baud(串口波特率)

  • 作用:设置串口波特率,立即生效。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
baud 波特率 115200 必须为整数
  • 用法示例

    { "baud": 115200 }
    

6. wifi_scan(WiFi扫描)

  • 作用:扫描WiFi,结果通过回调返回。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
on_success 成功回调 {...} JSON对象
on_error 失败回调 {...} JSON对象
  • 用法示例

    { "wifi_scan": { "on_success": { ... }, "on_error": { ... } } }
    

7. wifi(WiFi连接)

  • 作用:连接指定WiFi,支持回调和强制重连。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
prop.ssid WiFi名称 "mywifi" 支持变量
prop.pwd WiFi密码 "12345678" 支持变量
prop.force 强制重连 1 0/1,默认0
on_success 成功回调 {...} JSON对象
on_error 失败回调 {...} JSON对象
on_disconnect_error 断线回调 {...} JSON对象
  • 用法示例

    { "wifi": { "prop": { "ssid": "mywifi", "pwd": "12345678" }, "on_success": { ... } } }
    

8. wifi_disconnect(WiFi断开)

  • 作用:断开WiFi连接,支持回调。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
on_success 成功回调 {...} JSON对象
on_error 失败回调 {...} JSON对象
  • 用法示例

    { "wifi_disconnect": { "on_success": { ... } } }
    

9. gpio(GPIO控制)

  • 作用:设置GPIO引脚高低电平。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
pin 引脚号 "2" 字符串/变量
level 电平 0/1 0低,1高
  • 用法示例

    { "gpio": { "pin": "2", "level": 1 } }
    

10. gui(LVGL刷新控制)

  • 作用:启用或禁用LVGL屏幕刷新。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
do 操作 "start"/"stop" 启用/禁用
  • 用法示例

    { "gui": { "do": "stop" } }
    { "gui": { "do": "start" } }
    

11. vplay(视频播放)

  • 作用:控制视频播放、暂停、停止,支持回调。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
do 操作 "r"/" "/"q" r播放,空格暂停/继续,q停止
url 文件名 "video.avi" 否(r时) 视频文件名
x 播放x坐标 0 默认0
y 播放y坐标 0 默认0
on_success 成功回调 {...} JSON对象
on_error 失败回调 {...} JSON对象
  • 用法示例

    { "vplay": { "do": "r", "url": "video.avi", "x": 0, "y": 0 } }
    

12. aplay(音频播放)

  • 作用:控制音频播放、暂停、停止,支持回调。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
do 操作 "r"/" "/"q" r播放,空格暂停/继续,q停止
url 文件名 "music.mp3" 否(r时) 音频文件名
vol 音量 30 0\~100
on_success 成功回调 {...} JSON对象
on_error 失败回调 {...} JSON对象
  • 用法示例

    { "aplay": { "do": "r", "url": "music.mp3", "vol": 30 } }
    

13. http(HTTP请求)

  • 作用:发起HTTP请求,结果存入变量,支持回调。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
prop.url 请求URL "http\://..." 支持变量
prop.sval 结果变量名 "\$result"
on_success 成功回调 {...} JSON对象
on_error 失败回调 {...} JSON对象
  • 用法示例

    { "http": { "prop": { "url": "http://api", "sval": "$result" }, "on_success": { ... } } }
    

14. timer(定时器控制)

  • 作用:暂停或恢复指定定时器。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
name 定时器名 "tmr1" 字符串/变量
en 使能 0/1 0暂停,1恢复
  • 用法示例

    { "timer": { "name": "tmr1", "en": 1 } }
    

15. log(日志开关)

  • 作用:打开或关闭日志输出。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
en 使能 0/1 0关闭,1开启
  • 用法示例

    { "log": { "en": 1 } }
    

16. gval(全局变量操作)

  • 作用:全局变量赋值、加减、拼接、分割、截取、四舍五入等。

  • 参数列表(常用):

参数名 含义 示例值 是否可省略 说明
name 变量名 "\$score" 必须
val 赋值 "100" 选填 字符串/变量
add 拼接 "abc" 选填 字符串/变量
addm 数值加法 "1" 选填 字符串/变量
subm 数值减法 "1" 选填 字符串/变量
cut 截取 [1,3] 选填 数组
dst 目标变量名 "\$out" 选填 字符串/变量
sep 分隔符 "," 选填 字符串
idx 分割下标 2 选填 数字/变量
round 四舍五入 true 选填 布尔
d 保留位数 2 选填 数字
op 操作类型 "add"/"sub" 选填 新写法
  • 用法示例

    { "gval": { "name": "$score", "val": "100" } }
    { "gval": { "name": "$score", "addm": "1" } }
    { "gval": { "name": "$str", "add": "abc" } }
    { "gval": { "name": "$str", "cut": [1,3], "dst": "$out" } }
    { "gval": { "name": "$str", "sep": ",", "idx": 2, "dst": "$out" } }
    { "gval": { "name": "$num", "round": true, "d": 2, "dst": "$out" } }
    

17. gval_save(全局变量保存到NVS)

  • 作用:保存全局变量到NVS(掉电不丢失)。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
key NVS键名 "score" 字符串/变量
val 变量名 "\$score" 字符串/变量
  • 用法示例

    { "gval_save": { "key": "score", "val": "$score" } }
    

18. gval_load(NVS加载全局变量)

  • 作用:从NVS加载全局变量到内存。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
key NVS键名 "score" 字符串/变量
val 变量名 "\$score" 字符串/变量
  • 用法示例

    { "gval_load": { "key": "score", "val": "$score" } }
    

19. gval_save_clear(清空NVS全局变量)

  • 作用:清除所有NVS保存的全局变量。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
gval_save_clear 清空标志 true/1 必须为true或1
  • 用法示例

    { "gval_save_clear": true }
    

20. jval(JSON变量取值)

  • 作用:按路径从JSON变量中取值,存入目标变量。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
src 源变量名 "\$json" 字符串/变量
path 路径数组 ["data", "0", "name"] 数组
dst 目标变量名 "\$name" 字符串/变量
  • 用法示例

    { "jval": { "src": "$json", "path": ["data", "0", "name"], "dst": "$name" } }
    

21. jval_join(JSON数组拼接)

  • 作用:拼接JSON数组的多个字段,结果存入目标变量。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
src 源变量名 "\$json" 字符串/变量
path 路径数组 ["data"] 数组
keys 字段名数组 ["name", "score"] 数组
dst 目标变量名 "\$out" 字符串/变量
sep 字段分隔符 ", " 默认", "
line 行分隔符 "\n" 默认"\n"
  • 用法示例

    { "jval_join": { "src": "$json", "path": ["data"], "keys": ["name", "score"], "dst": "$out" } }
    

22. if(条件判断)

  • 作用:条件判断,支持多种比较,分支内容可为任意指令。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
if1 左值 "\$score" 字符串/变量
if2 右值 "100" 字符串/变量
op 操作符 "eq"/"gt" 默认"eq"
true 成立分支 {...} 任意指令
false 不成立分支 {...} 任意指令
  • 用法示例

    { "if": { "if1": "$score", "if2": "100", "op": "ge", "true": { ... }, "false": { ... } } }
    

23. case(多分支条件)

  • 作用:多分支条件判断,支持default分支。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
value 比较值 "\$state" 字符串/变量
cases 分支数组 [{...}, ...] 每项含eq/do或default/do
  • 用法示例

    { "case": { "value": "$state", "cases": [ { "eq": "ok", "do": {...} }, { "default": true, "do": {...} } ] } }
    

24. for(循环体)

  • 作用:按指定范围和步长循环执行body内容。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
var 循环变量名 "\$i" 字符串/变量
from 起始值 "1" 字符串/变量
to 结束值 "10" 字符串/变量
step 步长 "1" 默认1
body 循环体 {...} 任意指令
  • 用法示例

    { "for": { "var": "$i", "from": "1", "to": "10", "step": "1", "body": { ... } } }
    

25. create_btn(动态按钮创建)

  • 作用:动态创建按钮,支持事件绑定。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
txt 按钮文本 "OK" 字符串/变量
color 文本颜色 "#FF0000" 默认白色
x x坐标 10 默认0
y y坐标 20 默认0
event 事件对象 {...} type/action
  • 用法示例

    { "create_btn": { "txt": "OK", "color": "#FF0000", "x": 10, "y": 20 } }
    

26. fullscreen(全屏面板)

  • 作用:创建全屏面板,覆盖所有内容。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
color 背景色 "#000000" 默认黑色
  • 用法示例

    { "fullscreen": { "color": "#000000" } }
    

27. create_msgbox(消息框)

  • 作用:创建消息框,支持多按钮、超时关闭、按钮回调。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
txt 主文本 "Hello" 字符串/变量
title 标题 "提示" 字符串/变量
btns 按钮文本 "OK,Cancel" 逗号分隔
timeout 自动关闭时间 3000 毫秒
autoclose 自动关闭 1 0/1
btn_callbacks 按钮回调 [{...}, ...] 数组
  • 用法示例

    { "create_msgbox": { "txt": "Hello", "btns": "OK,Cancel", "timeout": 3000 } }
    

28. call(注册函数调用)

  • 作用:调用已注册的C函数。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
call 函数名 "myfunc" 字符串
  • 用法示例

    { "call": "myfunc" }
    

29. test(测试面板)

  • 作用:显示或隐藏测试面板,可自定义文本。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
vis 显示/隐藏 1/0 1显示,0隐藏
txt 显示文本 "hello" 字符串/变量
  • 用法示例

    { "test": { "vis": 1, "txt": "hello" } }
    

30. pwm(PWM输出)

  • 作用:设置指定引脚的PWM输出。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
io 引脚号 2 整数/变量
duty 占空比 128 整数/变量
freq 频率 1000 整数/变量
res 分辨率 8 整数/变量
  • 用法示例

    { "pwm": { "io": 2, "duty": 128, "freq": 1000, "res": 8 } }
    

31. adc(ADC读取)

  • 作用:读取指定引脚的ADC值,存入变量。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
io ADC引脚号 1 整数/变量
dst 目标变量名 "\$adcVal" 字符串/变量
  • 用法示例

    { "adc": { "io": 1, "dst": "$adcVal" } }
    

32. gval_save_clear(清空NVS全局变量)

  • 作用:清除所有NVS保存的全局变量(与第19条一致,兼容多写法)。

  • 参数列表

参数名 含义 示例值 是否可省略 说明
gval_save_clear 清空标志 true/1 必须为true或1
  • 用法示例

    { "gval_save_clear": true }
    

通用说明:

  • 所有参数均支持全局变量(以$开头)。

  • 回调参数内容为JSON对象或数组,支持嵌套指令。

GUI设置指令是指通过JSON格式的命令,对界面上的控件(如按钮、标签、滑块等)进行属性设置和外观调整的操作方式。这类指令通常用于动态修改界面元素的文本、颜色、位置、大小、可见性等属性,实现界面内容的实时更新和交互。

使用GUI设置指令时,开发者只需在JSON对象中指定目标控件的标识(如id或name),并在prop字段中列出需要设置的属性及其对应的值。属性值既可以是直接的数字或字符串,也可以引用全局变量(以$$开头),从而实现数据与界面的联动。

例如,要设置一个按钮的文本和颜色,可以发送如下指令:

{
  "id": "btn1",
  "prop": {
    "txt": "确定",
    "color": "#FF0000"
  }
}

如果要让文本内容动态跟随全局变量的变化,可以这样写:

{
  "id": "btn1",
  "prop": {
    "txt": "$g1"
  }
}

GUI设置指令支持同时设置多个属性,未指定的属性保持原值不变。控件类型不同,支持的属性也有所区别,常见的如文本、颜色、坐标、宽高、可见性、圆角、字体等。部分控件还支持特有属性,如图片控件的图片索引、滑块的当前值等。

通过这种方式,开发者可以灵活地在运行时调整界面,实现丰富的交互和动态效果,无需重新编译或重启设备。GUI设置指令是物联网、嵌入式等场景下实现低耦合、高灵活性界面控制的重要手段。


LVGL控件属性设置

一、通用属性(大多数控件均支持)

属性名 说明 值类型 是否支持全局变量 是否可缺省 用法示例
txt 文本内容 字符串 支持 可缺省 "txt": "hello""txt": "$g1"
color 文本颜色 颜色字符串 支持 可缺省 "color": "#FF0000""color": "$g2"
bgcolor 背景色 颜色字符串 支持 可缺省 "bgcolor": "#00FF00"
bgopa 背景透明度 数字(0\~255) 支持 可缺省 "bgopa": 128
opa 透明度 数字(0\~255) 支持 可缺省 "opa": 200
xcen 文本对齐 数字(0左/1中/2右) 支持 可缺省 "xcen": 1
x X坐标 数字 支持 可缺省 "x": 10
y Y坐标 数字 支持 可缺省 "y": 20
w 宽度 数字 支持 可缺省 "w": 100
h 高度 数字 支持 可缺省 "h": 40
vis 显示/隐藏 数字(0/1) 支持 可缺省 "vis": 1
rad 圆角半径 数字 支持 可缺省 "rad": 8
font 字体索引 数字 支持 可缺省 "font": 0

注意事项:

  • 所有属性均可用全局变量(如"$g1"),会自动读取变量内容。

  • 未设置的属性保持原值不变。

  • 颜色字符串需为#RRGGBB格式或全局变量。

  • 字体索引需在已加载字体范围内。


二、按钮(lv_btn_class)

  • 支持属性:txt, color, opa, font, xcen, x, y, w, h, vis, rad

  • 说明

    • txtcoloropafont 实际设置到按钮内的 label 子控件。

    • 其它属性设置到按钮本体。

  • 用法示例

    { "prop": { "txt": "确定", "color": "#FF0000", "font": 1, "x": 50, "y": 100, "w": 120, "h": 40, "vis": 1 } }
    
  • 注意事项

    • 按钮文本需通过 label 子控件设置。

    • 字体索引超出范围无效。


三、标签(lv_label_class)

  • 支持属性:txt, color, opa, font, xcen, x, y, w, h, vis, rad

  • 说明:直接设置文本和样式。

  • 用法示例

    { "prop": { "txt": "$g1", "color": "#0000FF", "font": 2, "xcen": 1 } }
    
  • 注意事项

    • 文本内容可为普通字符串或全局变量。

    • 颜色和字体需在有效范围内。


四、下拉框(lv_dropdown_class)

  • 支持属性:txt, val, color, x, y, w, h, vis, rad

  • 说明

    • txt:设置选项内容(多行字符串,每行一个选项)。

    • val:设置当前选中项索引(从0开始)。

  • 用法示例

    { "prop": { "txt": "选项1\n选项2\n选项3", "val": 1 } }
    
  • 注意事项

    • txt内容每行一个选项,\n分隔。

    • val超出选项数时无效。


五、复选框(lv_checkbox_class)

  • 支持属性:txt, val, color, x, y, w, h, vis, rad

  • 说明

    • txt:复选框文本。

    • val:0未选中,1选中。

  • 用法示例

    { "prop": { "txt": "同意协议", "val": 1 } }
    
  • 注意事项

    • val仅支持0/1。


六、开关(lv_switch_class)

  • 支持属性:color, val, x, y, w, h, vis, rad

  • 说明

    • color:选中时指示颜色。

    • val:0关闭,1打开。

  • 用法示例

    { "prop": { "color": "#00FF00", "val": 1 } }
    
  • 注意事项

    • 仅支持设置选中时颜色。


七、滑块(lv_slider_class)

  • 支持属性:color, val, x, y, w, h, vis, rad

  • 说明

    • color:指示条颜色。

    • val:当前值。

  • 用法示例

    { "prop": { "color": "#FF8800", "val": 50 } }
    
  • 注意事项

    • val需在滑块范围内。


八、进度条(lv_bar_class)

  • 支持属性:val, x, y, w, h, vis, rad

  • 说明

    • val:当前进度值。

  • 用法示例

    { "prop": { "val": 75 } }
    
  • 注意事项

    • val需在进度条范围内。


九、弧形(lv_arc_class)

  • 支持属性:color, bgcolor, w, h, val, x, y, vis, rad

  • 说明

    • color:指示弧颜色。

    • bgcolor:背景弧颜色。

    • w:弧宽。

    • h:弧半径(自动*2为直径)。

    • val:当前值。

  • 用法示例

    { "prop": { "color": "#FF0000", "bgcolor": "#CCCCCC", "w": 10, "h": 60, "val": 30 } }
    
  • 注意事项

    • h为半径,实际控件大小为h*2


十、图片(lv_img_class)

  • 支持属性:pic, x, y, w, h, vis, rad

  • 说明

    • pic:图片索引(数字或全局变量)。

  • 用法示例

    { "prop": { "pic": 2 } }
    
  • 注意事项

    • 图片索引需在已加载图片范围内。


十一、图片按钮(lv_imgbtn_class)

  • 支持属性:pic, pic2, x, y, w, h, vis, rad

  • 说明

    • pic:未按下图片索引。

    • pic2:按下图片索引。

  • 用法示例

    { "prop": { "pic": 1, "pic2": 2 } }
    
  • 注意事项

    • 索引超出范围无效。


十二、文本框(lv_textarea_class)

  • 支持属性:txt, color, x, y, w, h, vis, rad

  • 说明

    • txt:文本内容。

  • 用法示例

    { "prop": { "txt": "请输入内容" } }
    
  • 注意事项

    • 文本内容可为全局变量。


十三、二维码(lv_qrcode_class)

  • 支持属性:txt, x, y, w, h, vis, rad

  • 说明

    • txt:二维码内容。

  • 用法示例

    { "prop": { "txt": "https://www.example.com" } }
    
  • 注意事项

    • 内容过长可能导致二维码无法显示。


属性值来源说明

  • 普通值:直接写数字或字符串,如 "txt": "hello""color": "#FF0000"

  • 全局变量:以 $$ 开头,如 "txt": "$g1",会自动读取全局变量内容。

  • 类型自动识别:支持数字、字符串、颜色字符串,自动转换。


参数缺省说明

  • 所有属性均为可选,未设置则保持控件原有属性不变。

  • 某些控件如图片、按钮等,部分属性(如pic)未设置时不改变图片。


设置方法

  • 通过 JSON 指令 "prop" 字段设置属性,例如:

    { "id": "btn1", "prop": { "txt": "$g1", "color": "#00FF00", "x": 10, "y": 20 } }
    
  • 支持同时设置多个属性,支持全局变量动态赋值。

  • 支持通过 "get" 字段获取属性值到全局变量。


注意事项

  1. 全局变量:属性值为全局变量时,需确保变量已被赋值,否则控件属性可能为空或为0。

  2. 颜色格式:颜色字符串必须为#RRGGBB格式,或全局变量内容为此格式。

  3. 字体索引:需在已加载字体数组范围内,否则设置无效。

  4. 图片索引:需在图片数组范围内,否则设置无效。

  5. 属性未设置:未设置的属性保持原值不变,不会被清空或重置。

  6. 类型自动识别:支持数字、字符串、全局变量,自动转换为目标类型。

  7. 控件类型判断:属性设置时会自动判断控件类型,调用对应 LVGL API。


属性获取指令用于读取指定LVGL控件的属性值,并将结果写入全局变量。它支持所有属性设置指令能操作的属性类型,包括文本、颜色、坐标、尺寸、可见性、圆角、字体、选中状态、图片索引等。获取到的属性值会自动转换为字符串格式,便于后续在其它指令或界面中使用。

使用方法如下:在JSON对象的 get 字段中,指定需要获取的属性及目标全局变量名。例如:

{
  "id": "btn1",
  "get": {
    "txt": "$g1",
    "color": "$g2",
    "x": "$g3"
  }
}

上述指令会将按钮 btn1 的文本内容写入 $g1,文本颜色写入 $g2,X坐标写入 $g3。所有属性均支持写入全局变量(变量名以 $$ 开头),数值类型会自动转为字符串。

属性获取支持的类型包括:

  • 文本内容(txt)

  • 文本颜色(color)

  • 背景色(bgcolor)

  • 背景透明度(bgopa)

  • 透明度(opa)

  • 文本对齐(xcen)

  • 坐标(x, y)

  • 尺寸(w, h)

  • 可见性(vis)

  • 圆角半径(rad)

  • 字体索引(font)

  • 控件值(val,如选中项、滑块值、进度条值等)

  • 图片索引(pic, pic2)

注意事项:

  • 目标变量必须为全局变量(以$开头)。

  • 获取到的值均为字符串格式,便于在其它指令中引用。

  • 支持所有控件类型,属性获取会自动适配控件类型和属性。

  • 未指定的属性不会被获取。

  • 若控件类型或属性不支持,目标变量内容可能为空或为默认值。

通过属性获取指令,可以实现界面与数据的双向绑定,便于动态交互和数据流转。

以下为属性获取指令(get)API文档,结合实际代码实现,详细介绍每类LVGL控件可获取的属性、返回值类型、目标变量要求、用法、注意事项及扩展说明。内容涵盖控件类型、属性支持、数据流转、典型场景、错误处理等,适合开发者查阅和深入理解。


属性获取指令(get)API文档

一、属性获取指令的作用与基本用法

属性获取指令用于读取指定LVGL控件的属性值,并将结果写入全局变量。这使得界面状态可以被脚本、流程或其它指令动态感知,实现数据与界面的双向绑定、状态同步和复杂交互逻辑。

属性获取指令的典型JSON格式如下:

{
  "id": "btn1",
  "get": {
    "txt": "$g1",
    "color": "$g2",
    "x": "$g3"
  }
}

上述指令会将按钮 btn1 的文本内容写入全局变量 $g1,文本颜色写入 $g2,X坐标写入 $g3。所有获取到的值均为字符串格式,便于后续在其它指令或界面中使用。

  • 目标变量必须为全局变量(以 $$ 开头)。

  • 支持同时获取多个属性,每个属性单独指定目标变量。

  • 支持所有设置指令支持的属性类型,包括文本、颜色、坐标、尺寸、可见性、圆角、字体、选中状态、图片索引等。


二、各类控件可获取的属性及返回值类型

1. 通用属性(大多数控件均支持)

属性名 说明 返回值类型 备注/说明
txt 文本内容 字符串 按钮、标签、下拉框、复选框、文本框、二维码等均支持
color 文本颜色 #RRGGBB字符串 统一为6位16进制
bgcolor 背景色 #RRGGBB字符串
bgopa 背景透明度 字符串数字 0\~255
opa 透明度 字符串数字 0\~255
xcen 文本对齐 字符串数字 0左/1中/2右
x X坐标 字符串数字
y Y坐标 字符串数字
w 宽度 字符串数字
h 高度 字符串数字
vis 可见性 字符串数字 0隐藏/1显示
rad 圆角半径 字符串数字
font 字体索引 字符串数字

2. 特定控件属性

控件类型 可获取属性(属性名) 说明/返回值类型(均为字符串)
按钮(lv_btn) txt, color, opa, font, xcen, x, y, w, h, vis, rad txt为按钮内label文本
标签(lv_label) txt, color, opa, font, xcen, x, y, w, h, vis, rad 文本、颜色等
下拉框(lv_dropdown) txt, val, color, x, y, w, h, vis, rad txt为当前选中项文本,val为选中项索引
复选框(lv_checkbox) txt, val, color, x, y, w, h, vis, rad val为选中状态(0/1)
开关(lv_switch) val, color, x, y, w, h, vis, rad val为开关状态(0/1)
滑块(lv_slider) val, color, x, y, w, h, vis, rad val为当前值
进度条(lv_bar) val, x, y, w, h, vis, rad val为当前进度值
弧形(lv_arc) val, color, bgcolor, w, h, x, y, vis, rad val为当前值,color为指示弧色,bgcolor为背景弧色
图片(lv_img) pic, x, y, w, h, vis, rad pic为图片索引(如有实现)
图片按钮(lv_imgbtn) pic, pic2, x, y, w, h, vis, rad pic/pic2为图片索引(如有实现)
文本框(lv_textarea) txt, color, x, y, w, h, vis, rad txt为内容
二维码(lv_qrcode) txt, x, y, w, h, vis, rad txt为二维码内容

三、返回值类型与格式

  • 所有获取到的值均为字符串,即使原本为数字(如坐标、宽高、索引等),也会自动转为字符串写入全局变量。

  • 颜色值统一为 #RRGGBB 格式字符串

  • 状态、索引等数值均为字符串数字(如 "1""0""42")。

  • 文本内容为UTF-8字符串,支持中英文及特殊字符。


四、目标变量要求

  • 必须为全局变量,变量名以 $$ 开头,如 $g1$slider_val

  • 变量类型自动匹配,无需手动指定类型,系统自动根据变量名查找对应变量池(普通/大容量/超大容量)。

  • 变量内容超长时自动截断到最大长度(普通256字节,大容量1024字节,超大4095字节)。


五、典型用法举例

1. 获取标签文本和颜色

{
  "id": "label1",
  "get": {
    "txt": "$g1",
    "color": "$g2"
  }
}
  • 作用:将 label1 的文本内容写入 $g1,文本颜色写入 $g2

2. 获取滑块当前值

{
  "id": "slider1",
  "get": {
    "val": "$slider_val"
  }
}
  • 作用:将滑块 slider1 的当前值写入 $slider_val

3. 获取复选框选中状态和文本

{
  "id": "cb1",
  "get": {
    "val": "$cb_state",
    "txt": "$cb_text"
  }
}
  • 作用:将复选框 cb1 的选中状态写入 $cb_state,文本内容写入 $cb_text

4. 获取图片控件的图片索引

{
  "id": "img1",
  "get": {
    "pic": "$img_idx"
  }
}
  • 作用:将图片控件 img1 的图片索引写入 $img_idx(如有实现)。


六、注意事项与错误处理

  1. 目标变量必须为全局变量,否则不会写入。

  2. 属性名必须为字符串,如 "txt": "$g1"

  3. 未实现的属性或控件类型,目标变量内容可能为空或为默认值

  4. 获取到的值为控件当前状态,如文本内容、选中状态、坐标等。

  5. 部分控件的图片索引等特殊属性,需根据实际实现支持

  6. 获取属性不会影响控件本身状态,仅做数据读取。

  7. 支持一次获取多个属性,每个属性单独指定目标全局变量。

  8. 属性获取指令可与属性设置指令配合使用,实现界面与数据的双向绑定和动态交互。

  9. 如目标变量超长,内容会被自动截断,请根据实际需求选择合适变量池。

  10. 属性获取时会自动判断控件类型,调用对应 LVGL API,如类型不匹配则返回空或默认值。


七、扩展说明与高级用法

1. 动态数据流转

通过属性获取指令,可以将界面控件的状态实时同步到全局变量,再通过其它指令(如gval、if、case等)进行逻辑判断、流程控制或界面反馈,实现复杂的交互和自动化。

2. 与属性设置指令联动

属性获取与设置指令可配合使用,实现“读-改-写”闭环。例如,先读取滑块值到变量,再根据变量调整其它控件属性,实现联动效果。

3. 支持流程控制与条件判断

获取到的属性值可用于if、case、for等流程控制指令,实现条件分支、循环等高级逻辑。例如,根据按钮文本内容决定后续操作。

4. 支持全局变量引用

属性获取结果可作为其它指令的输入,实现数据在指令间流转。例如,获取文本框内容后用于HTTP请求参数、页面跳转、消息框显示等。

5. 错误处理与调试

  • 若属性名或目标变量名错误,日志会有详细提示。

  • 若控件类型不支持某属性,目标变量内容为空或为默认值。

  • 可通过日志输出(如log_fmt)辅助调试和问题定位。


八、常见问题解答

Q1:为什么获取到的值是字符串? A1:为便于变量统一管理和跨指令流转,所有属性值均以字符串形式写入全局变量。需要数值时可用atoiatof等转换。

Q2:如何获取图片控件的图片索引? A2:如有实现图片索引的获取方法,可通过pic属性获取,否则返回默认值。

Q3:能否一次获取多个属性? A3:支持。get字段可同时指定多个属性,每个属性单独指定目标变量。

Q4:获取属性会影响控件状态吗? A4:不会。属性获取仅做数据读取,不会修改控件本身状态。

Q5:目标变量内容超长会怎样? A5:内容会被自动截断到变量池最大长度,建议根据实际需求选择合适变量池(普通/大容量/超大容量)。