15 圆形进度条控件

什么是圆形进度条控件?

CircleProgress01

随着用户对人机交互体验越来越高,串口屏应用的场合范围越来越广,目前常规的矩形进度条已无法适用于部分特殊应用场合。所以我司在软件上新推出的一个圆形进度条控件。可设置炫酷的图片作为背景,增强显示效果,通过自由选择起始角度和终止角度,将参数值形象显示出来。

本例程中介绍圆形进度条控件的应用,实现滑动圆形进度条控件改变温度值

适用范围:F型、基本型不支持

例程下载链接:《圆形进度条控件应用》(点击跳转)

15.1 圆形进度条控件属性说明

圆形进度条控件的属性窗口如下所示

CircleProgress02

进度条宽度

设置进度条的粗细度。

填充方式

进度条的样式,可选择颜色或者图片,如下所示

CircleProgress0

  1. 【颜色】:纯色显示。
  2. 【图片】:使用图片时可以自行设计进度条的样式

起始角度

进度条的起始位置(圆形进度条的值为角度,最大角度为359,360度为0度),如下所示

CircleProgress04

终止角度

圆形进度条的结束位置,如下所示

CircleProgress05

滑动调节

圆形进度条控件的调节方式有4类,可选择禁用、起始角度、终止角度或者两个角度,如下所示

CircleProgress06

  1. 【禁止】:不可通过触摸调节
  2. 【终止角度】:触摸进度条终止位置拖动进度条
  3. 【起始角度】:触摸进度条起始位置拖动进度条
  4. 【两个角度】:触摸两端都可拖动进度条

触摸位置

圆形进度条控件的触摸位置,可选末端或者进度条,如下所示

【末端】:仅点击或滑动圆形进度条末端,才可以改变值

【进度条】:点击或滑动进度条即可改变值

CircleProgress07

限制角度

圆形进度条控件的限制角度,可选是或者否,如下所示

【是】:拖动范围只能在起始角度和终止角度之间;

【否】:没有限制角度,可随意滑动。

通知方式

圆形进度条控件的通知方式可选松开时或者滑动时,如下所示

松开时:拖动进度条时不下发,松开时才下发指令;

滑动时:拖动进度条的过程中下发指令。

image-20210518185613626

滑块图标

可以添加滑块样式,建议图片格式为全透的格式png

15.2 圆形进度条控件

【圆形进度条控件】画面,介绍圆形进度条控件在串口屏中的应用。

画面配置

在【圆形进度条控件】画面的“背景图片”导入相应的美工图片画面中添加1个圆形进度条控件(控件ID:1)和1个文本控件(控件ID:2),如下所示

CircleProgress09

属性配置

在圆形进度条控件的属性窗口中,设置【进度条厚度】为“10”、【填充方式】为“颜色”、【颜色】为“黄色”、【起始角度】为“180”、【终止角度】为“360”、【滑动调节】为“终止角度”、【触摸位置】为“末端”、【限制角度】为“是”、【通知方式】为“滑动时”、【滑块图标】为图标的路径,属性配置如下所示、

CircleProgress10

LUA 脚本

打开LUA编辑器

上位机VisualTFT内部已集成了LUA开发编译环境,点击菜单栏【工具】,选择“LUA编辑器”,如下所示

CircleProgress11

API函数说明

大彩科技针对LUA脚本提供了丰富的API接口函数,具体函数可以查阅文档《物联型LUA脚本API》。本教程文档中所涉及到的部分的相关接口函数

  • 函数set_value(screen,control,value)

注释:指定某个画面中的某个控件的值:

参数:screen 目标画面ID

control 目标控件ID

value 目标控件的值

  • 函数on_control_notify(screen,control,value)

注释:点击按钮控件,修改文本控件、修改滑动条都会执行此回调函数

参数:screen 目标画面ID

control 目标控件ID

value 目标控件的值

编写脚本

使用LUA脚本,将圆形进度条的值与文本控件相关联。当滑动圆形进度条控件时,系统会调用回调函数on_control_notify,并将圆形进度条控件的值传入函数中,将值与文本控件的值关联的程序如下所示

--用户通过触摸修改控件后,执行此回调函数。
--点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
function on_control_notify(screen,control,value)
  local Temperature = 0
  if screen == 0 and control == 1 
  then
    Temperature = value & 0xFFFF
    Temperature = (Temperature - 180)/5
    set_value (0,2,Temperature)
  end
end

若LUA脚本设置圆形进度条的值,调用set_value()函数即可,假设起始角度为180,终止角度为270,则为: set_value (0,1,(180 << 16)|270)

外部MCU控制

若不想使用LUA脚本实现上面例程效果,可通过用户单片机控制圆形进度条控件,详细参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。

滑动圆形进度条控件末端,串口屏下发指令。MCU解析指令后会调用 NotifyAngleProgress函数,并把解析出来的圆形进度条值传进该函数中,在函数中设置文本控件的值,程序如下所示

注意:该控件值是4个字节,其中前面两个字节为“起始角度”,后面两个字节为“终止角度”,如设置圆形进度条的起始角度为180度、终止角度为270,指令如下所示:EE B1 10 00 00 00 01 00 B4 01 0E FF FC FF FF

帧头 组态指令 设置控件 画面ID 控件ID 起始角度__H 起始角度_L 终止角度_H 终止角度_L 帧尾
EE B1 10 00 00 00 01 00 B4 01 0E FF FC FF FF
/**********************************************************************
** Function name   :  NotifyAngleProgress
** Descriptions    :  圆形进度条控件通知
** input parameters:  screen_id:  画面ID
**                    control_id:  控件ID
**                    value: 圆形进度条的控件值
** output parameters: 无
** Returned value   : 无
*********************************************************************/
void NotifyAngleProgress(uint16 screen_id, uint16 control_id, uint32 value)

{
    ……
    float TextVlaue = 0;
    if(screen_id == 0 && control_id == 1 ){
        TextVlaue = value & 0xFFFF;
        TextVlaue = (TextVlaue – 180)/5;
        SetTextInt32(0, 2, TextVlaue, 1, 1);
     }
    ……
}

如需要MCU控制圆形进度条控件,则代码如下所示;

/**********************************************************************
** Function name:    void Set_AngleProgress(uint16 screen_id,
**                                          uint16 control_id,
**                                          uint16 start,
**                                          uint16 end)
** Descriptions    : 设置圆形进度条
** input parameters:  screen_id:  画面ID
**                    control_id: 控件ID
**                    start     : 起始角度
**                    end       : 终止角度
** output parameters  : 无
** Returned value     : 无
*********************************************************************/
{
    ……
    Set_AngleProgress(0,1,180,360);//设置画面0、控件1圆形进度条的起始角度为180、终止角度为360
    ……
}

运行预览

运行虚拟屏,拖动画面中圆形进度条控件(控件ID:1)的末端(滑块图标),屏幕会下发指令,同时,关联的文本控件(控件ID:2)的数值显示同步更新;VisualTFT软件和虚拟屏用“虚拟串口对”建立联机。打开【指令助手】,选择左侧导航栏【圆形进度条】,设置“设置进度条角度”区域的指令参数。如例程中,控制画面中的圆形进度条控件(控件ID:1)以及文本控件(控件ID:2),填写对应的参数,点击“发送”。则虚拟屏对应的控件显示对应的状态,运行效果如下所示

Copyright ©Dacai all right reserved,powered by Gitbook该文件修订时间: 2023-03-27 19:36:03

results matching ""

    No results matching ""