描述

  • 总体协议说明

接口版本

版本号 制定人 制定日期 版本描述
3.0 舒克 2021-12-23 初始版本

协议说明

采用JSON字符串进行UI控制。
主机发送如下字符串:

{
    "wid": "screen_name/widget_name",    # 控件名字
    "cmd": "set_status",  # 参考API列表中的字段
    "attr": {                    # 控件属性,参考各控件的属性字段
    }
}

返回如下字符串:

{
    "code":0, # 错误码,其他get返回属性字段,请参考各控件属性字段
}

API列表

名字 对应协议文本 描述
QMSD_CTRL_SET_STATUS set_status 配置控件特性
QMSD_CTRL_SET_STYLE set_style 配置控件样式
QMSD_CTRL_SEND_EVENT send_event 触发控件事件
QMSD_CTRL_GET get 获取属性

1、配置控件样式

参数说明

element 数字参数 字符串参数 说明
bg_color r g b NULL 设置控件长宽为w、h
bg_opa opa NULL 设置控件坐标为x、y
line_color r g b NULL 设置控件可见度0为不可见
line_opa opa NULL 设置控件可见度0为不可见
line_width width NULL 设置控件可见度0为不可见
text_color r g b NULL 设置控件可见度0为不可见
text_opa opa NULL 设置控件可见度0为不可见
text_font NULL font 设置控件可见度0为不可见
border_color r g b NULL 设置控件可见度0为不可见
border_opa opa NULL 设置控件可见度0为不可见
border_width width NULL 设置控件可见度0为不可见
outline_color r g b NULL 设置控件可见度0为不可见
outline_opa opa NULL 设置控件可见度0为不可见
outline_width width NULL 设置控件可见度0为不可见
image_recolor r g b NULL 设置控件可见度0为不可见
recolor_opa opa NULL 设置控件可见度0为不可见
image_opa opa NULL 设置控件可见度0为不可见

调用API

/*
* call from other task
*/
int qmsd_ctrl_str(const char *json_str);

/*
* call from gui task, no need lock
*/
char *qmsd_ctrl_str_sync(const char *json_str);

/*
* call from other task, sync be false
* if sync to true, will wait for gui task
*/
int qmsd_ctrl_cjson(const char *wid, qmsd_ctrl_type type, const cJSON *attr, bool sync);

/*
* call from gui task, no need lock
*/
int qmsd_ctrl_cjson_gui(const char *wid, qmsd_ctrl_type type, const cJSON *attr);

详见github qmsd_ctrl.h

调用示例

    cJSON *attr;
    attr = cJSON_CreateObject();
    cJSON_AddStringToObject(attr, "element", "text_font");
    cJSON_AddNumberToObject(attr, "state", LV_STATE_DEFAULT);
    cJSON_AddNumberToObject(attr, "part", LV_LABEL_PART_MAIN);
    cJSON_AddStringToObject(attr, "font", "ali_font_58");
    qmsd_ctrl_cjson_gui("screen_main_label_1", QMSD_CTRL_SET_STYLE, attr);
    cJSON_Delete(attr);

注:设置控件字体;

返回示例

{
    "code": 0
}

返回参数说明

参数名 类型 说明
result string 结果信息
result.code int 错误码

错误码

错误码 说明

2、发送事件

请求参数说明

功能 数字参数 字符串参数 说明
发送事件 event NULL 设置需发送的事件

调用示例

    cJSON *attr;
    attr = cJSON_CreateObject();
    cJSON_AddNumberToObject(attr, "event", LV_EVENT_CLICKED);
    qmsd_ctrl_cjson_gui("screen_main_button_1", QMSD_CTRL_SEND_EVENT, attr);
    cJSON_Delete(attr);

注:触发按钮 screen_main_button_1 的点击事件;

3、配置控件参数

参数说明

element 数字参数 说明
set_size w , h 设置控件长宽为w、h
set_pos x , y 设置控件坐标为x、y
set_hidden hidden 设置控件可见度0为不可见

调用示例

    cJSON *attr;
    attr = cJSON_CreateObject();
    cJSON_AddStringToObject(attr, "action", "set_pos");
    cJSON_AddNumberToObject(attr, "x", 240);
    cJSON_AddNumberToObject(attr, "y", 180);
    qmsd_ctrl_cjson_gui("screen_main_button_1", QMSD_CTRL_SET_STATUS, attr);
    cJSON_Delete(attr);

注:设置按钮 screen_main_button_1 的位置;

4、get

请求参数说明

参数名 类型 说明

调用示例

{
    "wid": "s1",
    "cmd" : "get"
}

返回示例

{
    "start_angle": 0,
    "end_angle": 200,
    "cur_angle": 100,
    "code": 0
}

预设控制方式

除开通过调用控制api实现对UI的操作外,8ms平台通过blockly预设了控制接口,只需要填入符合协议格式的字符串即可

返回示例

协议格式

{
    "wid": "${screen_id}/${widget_id}",
    "cmd": "${cmd}",
    "attr": {
    }
}

WID填写屏幕及其上的控件ID,屏幕ID提供更精确的检索方式可省略。
cmd包括:”set_statue” “set_style” “send_event” “get” 具体参数见各指令详情
attr为操作所需参数,详见各指令条目

示例
修改控件位置

{
    "wid": "screen_main/screen_main_label_1",
    "cmd": "set_status",
    "attr": {
        "action": "set_pos",
        "x": 200,
        "y": 80
    }
}

修改控件大小

{
    "wid": "screen_main/screen_main_button_1",
    "cmd": "set_status",
    "attr": {
        "action": "set_size",
        "w": 180,
        "h": 120
    }
}

修改控件显示/隐藏
1隐藏 0显示

{
    "wid": "screen_main/screen_main_button_1",
    "cmd": "set_status",
    "attr": {
        "action": "set_hidden",
        "hidden": 1
    }
}

修改图片源

{
    "wid": "screen_main/screen_main_img_1",
    "cmd": "set_status",
    "attr": {
        "action": "set_src",
        "src": "img_icon_0"
    }
}
文档更新时间: 2022-05-12 14:39   作者:shuke