13 数据记录控件

什么是数据记录控件?

record01

数据记录控件用于记录数据,共有4中类型,分别为当前告警、历史告警、历史告警与解除时间、通用表格。

“当前告警”、“历史告警”和“历史告警与解除时间”的设置类似,本例程中结合工程中的画面,只介绍数据记录控件“历史告警与解除”和“通用表格”的应用:

  1. 通用表格:介绍名字和编号的记录

  2. 历史告警和解除时间:记录产生告警的时间以及告警解除的时间

13.1 数据记录控件属性说明

数据记录控件属性如下所示

record02

字体

设置数据记录显示的字体大小和样式

用户使用字体样式时候,需要考虑表格一行的高度值,如果字体设置过大,超过表格一行的高度,文字是“不显示”

文字颜色

设置字体显示的颜色

显示网格

设置网格显示,可选“是”或“否”。

【是】:设置为“是”,如下所示

record03

【否】:设置为“否”,如下所示

record04

网格颜色

设置网格显示的颜色

显示背景

设置背景的显示,可选“是”或“否”

【是】:默认控件显示的背景为白色,如下所示

record05

【否】:设置不显示背景时,直接显示该画面的背景内容,如下所示

record06

背景颜色

设置表格的背景颜色,可选“是”或者“否”

允许选择

设置允许选择数据所在行。运行后,选择数据记录控件的子项,会给该子项加上一个背景颜色,如下所示

image-20210521104722417

显示滚动条

设置是否显示滚动条显示状态。可选为“不显示”、“按需显示”或“固定显示”,如下所示

record08

不显示

当“显示记录数”为“6”,若“显示记录数”大于“6”时,仍显示前6条数据,如下所示

record09

按需显示

当“显示记录数”为“6”,若显示数据条数小于“6”时,不显示固定条框;若显示数据条数大于“6”时,显示滚动条,并可以拖动滚动条查看数据,如下所示

record10

固定显示

当“显示记录数”为“6”,若显示数据条数小于“6”时,显示滚动条框;若显示数据条数大于“6”时,在滚动条框显示滚动条,并可以拖动滚动条查看数据,如下所示

record11

手势滑动

设置滑动数据记录控件查看数据,可选“是”或“否”,当数据条数大于“显示记录数”时,点击并拖动数据记录控件可查看数据

显示序号

设置每一条记录添加的序号,可选“是”或“否”。当且仅当记录类型为“通用表格”时,该项参数设置才生效序号从“1”开始。若需要显示子项内容为两列,则增加序号显示时,需设置“子项数目”为3列,如下所示

record12

基本型平台

如需要在屏幕上显示“1 广州大彩 0001”,所发的数据内容为“;广州大彩;0001”,“序号”子项内容固定为“;”

F型和W联型平台

设置增加序号显示时,如需要在屏幕上显示“1 广州大彩 0168”,所发的数据内容为“$NUM;广州大彩;0168”,“序号”子项内容固定为“$NUM;”

注意:每一个子项(每一列),用英文符号“;”隔开

图标文件

设置每一条记录添加的图标,可添加图标路径。当且仅当记录类型为“通用表格”时,该项参数设置才生效。如下所示

record13

设置增加图标显示时,如需要在屏幕上第一项(列)显示图标第一帧,第二项显示“001”,第一项(列)显示图标第二帧,所发的数据内容为“$ICON0;001;$ICON1”,“序号”子项内容固定为“$ICONx;”x表示图标文件的第几帧

注意:设置的图标大小要不超过数据记录控件行的高度和宽度,否则会显示异常或显示不出来

记录类型

设置不同的记录类型,可选为“当前告警”、“历史告警”、“历史告警与解除时间”或“通用表格”。如下所示

record14

当前告警

子项数固定为两项(即为两列),第一项为告警事件,第二项为告警时间。当产生报警,数据记录控件显示当前的告警和触发时间;当报警解除时,数据记录控件不显示告警信息。如下所示

record19

历史告警

子项数固定为两项(即为两列),第一项为告警事件,第二项为告警时间。当产生报警时,数据记录控件会显示的告警和触发时间;当报警解除时,告警数据仍显示在表格里,可通过滚动条查阅过去的告警信息。如下所示

record20

历史告警与解除时间

子项数固定为三项(即为三列),第一项为告警事件,第二项为告警时间,第三项为解除时间。当产生报警时,数据记录控件会显示的告警和触发时间;当告警事件解除时,显示解除的时间,告警数据仍显示在表格里,可通过滚动条查阅过去的告警信息。如下所示

record21

通用表格

子项数默认为两项(即为两列),最大可设置为“10”项(列),可用作记录数据功能,记录的内容可以是中文、字母、数字,如下所示

record22

显示顺序

设置显示的顺序,可选为“时间顺序”或“时间逆序”

对齐方式

设置数据显示的对齐方式,可选为“左对齐”、“居中对齐”或“右对齐”

子项数目

设置每一条记录包含的子项数,该项参数当且仅当记录类型为“通用表格”设置有效

子项宽度

设置每个子项的宽度比例,如设置为“30;40;50”

显示记录数

设置控件显示的记录条数,即是显示的行数。如设置为“10”,如下所示

record15

最大记录数

设置最大的记录条数,存满之后,覆盖旧的记录,默认1024条

单条记录大小

设置单条记录大小,最大为256个字节。该项参数当且仅单记录类型为“通用表格”设置才有效。

是否存储

设置记录的数据是否存储到FLASH(断电保存),可选为“是”或“否”,该存储地址和用户存储128K空间、协议与变量里面的存储、历史曲线等共用一块存储区域

  • 存储地址:每放置一个数据记录控件,都必须重新设置一次存储地址,避免存储地址重叠

预留存储空间

给该“数据记录控件”预留的存储空间大小

该项参数VisualTFT自动计算,预留存储空间=单条记录大小*最大记录数 + 24。如下所示,单条记录大小“100”字节,最大记录数为1024条,则需要给该控件预留102424个字节存储

record16

  • 当前告警:固定为6个字节,不可更改,不支持掉电保存
  • 历史告警:固定为6个字节,不可更改,支持掉电保存
  • 历史告警与解除时间:固定为10个字节,不可更改,支持掉电保存。
  • 通用表格:默认为100个字节,最大为256个字节,根据用户MCU发送的数据字节数而定。支持掉电保存

注:数据记录控件与历史曲线共用存储块,开启数据存储时,应设置存储地址,否则会出现,数据存储异常、显示异常。

数据存储地址计算:

数据控件存储大小= 最大记录数*单挑记录大小+24(单位:字节)

历史曲线存储大小= 采样点数+30(单位:字节)

告警解析

当记录类型为“当前告警”、“历史告警”、“历史告警与解除时间”时,可定义告警解析。对告警进行文字显示,如定义数值0,为“高温”,颜色为红色,如下所示

record1

当对该控件分别发送数值0、1、8时,如下所示,被定义的0、1此时显示的告警解析的内容,未被定义的8显示的还是数值

record18

13.2 通用表格

画面配置

在【通用表格】画面的“背景图片”导入相应的美工图片,画面中添加1个数据记录控件(控件ID:1)和3个按钮控件(控件ID:2-4),如下所示

record23

属性配置

数据记录控件属性

在数据记录控件的属性窗口中,设置【显示记录数】为“6”、【单条记录数】为“40”,属性配置如下所示

record24

添加记录按钮

用于添加一条告警记录。在按钮控件(控件ID:2)的属性窗口中,设置【触摸虚框】为“否”、【按下时的图片】为对应的素材路径、【裁剪】为“勾选”,属性配置如下所示

record26

填写“添加”按钮按下的对内指令:

  • 点击【对内指令】→“按下时”
  • 弹出指令填写框,选择“指令助手”
  • 在指令助手界面,左侧导航栏选择【数据记录控件】
  • 设置“数据记录控件”区域的指令参数。如例程中,添加一条“广州大彩;0001;”的记录
  • 复制指令,填写指令在按钮对内指令,如下所示

record25

导出数据按钮

同理,“导出数据”按钮,实现导出csv表格到U盘或SD卡中。在【对内指令】→“按下时”,在《大彩串口屏指令集》文档,找到“2.79 数据记录控件-SD 卡导出指令(CSV 格式)”,将指令复制出来,指令格式如下所示,如此例程所示,指令为:EE B1 5C 00 00 00 01 FF FC FF FF

帧头 组态指令 功能码-导出CSV格式 画面ID 控件ID 帧尾
EE B1 5C 00 00 00 01 FF FC FF FF

运行预览

运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。

屏上控制

按下“添加”按钮,数据记录控件第一行第一列显示“广州大彩”,第二列显示“0001”再次按钮“添加”按钮,数据记录控件第二行显示同一条记录;当按下“导出数据”时,在电脑D盘根目录下显示CSV文件,如下所示

指令添加记录数据

左侧导航栏选择【数据记录控件】,设置“通用表格”区域的指令参数。如例程中,设置【通用表格】画面中的数据记录控件(控件ID:1),添加记录数据为 “广州大彩;0002;”、“广州大彩;0003”,点击“发送”,运行效果如下所示

指令修改一行记录

左侧导航栏选择【数据记录控件】,设置“通用表格”区域的指令参数。如例程中,修改第1行数据的编号为“0011”,点击“发送”;运行效果如下所示

通用表格还包括“清除记录数据”、“设置位置偏移”、“获取记录数目”、“读取一行记录”、“删除一行记录”、“插入一行记录”、“选中一行记录”和“添加多条记录”等功能,用户可通过指令联机调试体验,以及查阅指令集文档即可

外部MCU控制

用户单片机控制数据记录控件更新的程序,参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。

添加一条数据记录

添加一条记录的代码如下所示

/**********************************************************************
** Function name: void Record_Add(uint16 screen_id,
**                                uint16 control_id,
**                                uint8 *record);
** Descriptions    :    添加一条数据
** input parameters:    screen_id:     画面ID
**                      control_id:    控件ID
**                      record:    一条记录(字符串),子项通过分号隔开,
**                                 例如:第一项;第二项;第三项;
** output parameters:    无
** Returned value   :    无
*********************************************************************/
{
    ……
    Record_Add (0,1,”广州大彩;0001”);//设置画面0、控件1,第一行显示广州大彩  0001
    ……
}
修改一行数据记录

修改一行记录的代码如下所示

/**********************************************************************
** Function name:    void Record_Modify(uint16 screen_id,
**                                      uint16 control_id,
**                                      uint8 *record,
**                                      uint16 line_id);
** Descriptions    :    修改一条数据记录
** input parameters:   screen_id:    画面ID
**                          control_id:    控件ID
**                          record:    一条记录(字符串),子项通过分号隔开,
**                                       例如:第一项;第二项;第三项;
**                          line_id    修改的行号
** output parameters:    无
** Returned value:       无
*********************************************************************/
{
    ……
    Record_Modify (0,1,”广州大彩;0088”,1);//修改画面0、控件1,
                                                //第2行数据为“广州大彩;0088”
    ……
}
导出数据记录

导出*.csv格式到U盘或SD的代码如下所示

/**********************************************************************
** Function name:    void Record_Output(uint16 screen_id,
**                                      uint16 control_id);
** Descriptions    :    导出数据记录控件到SD卡,文件格式为CVS
** input parameters:    screen_id :    画面ID
**                      control_id:    控件ID
** output parameters:    无
** Returned value   :    无
*********************************************************************/
{
    ……
    Record_Output (0,1);// 导出画面0、控件1的数据记录控件到SD卡
    ……
}

13.3 历史告警和解除时间

画面配置

在【历史告警与解除时间】画面的“背景图片”导入相应的美工图片,画面中添加1个数据记录控件(控件ID:1)和4个按钮控件(控件ID:2-5),如下所示

image-20210522083814674

属性配置

数据记录控

在数据记录控件的属性窗口中,设置【记录类型】为“历史告警与解除时间”、设置【显示记录数】为“5”,属性配置如下所示

record31

点击告警解析,对告警进行文字显示,如:定义数值0,为“高温”,颜色为红色,如下所示。依次定义数值1-4的解析和颜色

image-20210522084440772

【触发告警】按钮控件

在按钮控件(控件ID:2)的属性窗口中,设置【触摸虚框】为“否”、【按下时的图片】为对应的素材路径、【裁剪】为“勾选”,填写【对内指令】→“按下时”为“触发告警指令”,如下所示

record33

【解除告警】按钮控件

在按钮控件(控件ID:3)的属性窗口中,设置【触摸虚框】为“否”、【按下时的图片】为对应的素材路径、【裁剪】为“勾选”,填写【对内指令】→“按下时”为“解除告警指令”,如下所示

record34

【导出记录】按钮控件

参考【13.2 通用表格即可】

运行预览

运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机

屏上控制

按下“触发告警”按钮,数据记录控件第一行显示“高温和时间”记录;按下“解除告警”按钮,数据记录控件第一行显示“解除时间”;当按下“导出数据”时,U盘/SD根目录下显示文件是“以导出的RTC时间命名的CSV文件”,如下所示

record35

指令触发/解除告警

左侧导航栏选择【数据记录控件】,设置“告警”区域的指令参数。如例程中,设置【历史告警与解除时间】中的数据记录控件(控件ID:1),触发数值为1的触发告警,点击“发送”;接着选择“解除告警”,如下所示

record36

单片机程序

用户单片机控制数据记录控件的程序,参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。触发告警,程序如下所示

/**********************************************************************
** Function name:    Record_SetEvent(uint16 screen_id,
**                                   uint16 control_id,
**                                   uint16 value,
**                                   uint8 *time);
** Descriptions    :     触发警告
** input parameters:     screen_id:  画面ID
**                       control_id:  控件ID
**                       value:  告警值
**                       time:  告警产生的时间,为0时使用屏幕内部时间
** output parameters:    无
** Returned value   :    无
*********************************************************************/
{
    ……
    Record_SetEvent(1,1,0,0);//设置画面1控件1的告警值为0,告警时间为屏的内部时间
    ……
}

解除告警,程序如下所示

/**********************************************************************
** Function name: Record_ResetEvent(uint16 screen_id,
**                                  uint16 control_id,
**                                  uint16 value,
**                                  uint8 *time);
** Descriptions    :    解除警告
** input parameters:    screen_id :    画面ID
**                      control_id:    控件ID
**                      value:  告警值
**                      time : 告警解除的时间,为0时使用屏幕内部时间
** output parameters:   无
** Returned value   :   无
*********************************************************************/
{
  ……
  Record_ResetEvent (1,1,0,0);// 设置画面1控件1的告警值为0
                              // 解除时间为屏的内部时间
  ……
}

results matching ""

    No results matching ""