13 数据记录控件
什么是数据记录控件?
数据记录控件用于记录数据,共有4中类型,分别为当前告警、历史告警、历史告警与解除时间、通用表格。
“当前告警”、“历史告警”和“历史告警与解除时间”的设置类似,本例程中结合工程中的画面,只介绍数据记录控件“历史告警与解除”和“通用表格”的应用:
通用表格:介绍名字和编号的记录
历史告警和解除时间:记录产生告警的时间以及告警解除的时间
适用范围:全系列
例程下载链接:《数据记录控件应用》(点击跳转)
13.1 数据记录控件属性说明
数据记录控件属性如下所示
字体
设置数据记录显示的字体大小和样式
用户使用字体样式时候,需要考虑表格一行的高度值,如果字体设置过大,超过表格一行的高度,文字是“不显示”
文字颜色
设置字体显示的颜色
显示网格
设置网格显示,可选“是”或“否”。
【是】:设置为“是”,如下所示
【否】:设置为“否”,如下所示
网格颜色
设置网格显示的颜色
显示背景
设置背景的显示,可选“是”或“否”
【是】:默认控件显示的背景为白色,如下所示
【否】:设置不显示背景时,直接显示该画面的背景内容,如下所示
背景颜色
设置表格的背景颜色,可选“是”或者“否”
允许选择
设置允许选择数据所在行。运行后,选择数据记录控件的子项,会给该子项加上一个背景颜色,如下所示
显示滚动条
设置是否显示滚动条显示状态。可选为“不显示”、“按需显示”或“固定显示”,如下所示
不显示
当“显示记录数”为“6”,若“显示记录数”大于“6”时,仍显示前6条数据,如下所示
按需显示
当“显示记录数”为“6”,若显示数据条数小于“6”时,不显示固定条框;若显示数据条数大于“6”时,显示滚动条,并可以拖动滚动条查看数据,如下所示
固定显示
当“显示记录数”为“6”,若显示数据条数小于“6”时,显示滚动条框;若显示数据条数大于“6”时,在滚动条框显示滚动条,并可以拖动滚动条查看数据,如下所示
手势滑动
设置滑动数据记录控件查看数据,可选“是”或“否”,当数据条数大于“显示记录数”时,点击并拖动数据记录控件可查看数据
显示序号
设置每一条记录添加的序号,可选“是”或“否”。当且仅当记录类型为“通用表格”时,该项参数设置才生效序号从“1”开始。若需要显示子项内容为两列,则增加序号显示时,需设置“子项数目”为3列,如下所示
基本型平台
如需要在屏幕上显示“1 广州大彩 0001”,所发的数据内容为“;广州大彩;0001”,“序号”子项内容固定为“;”
F型和W联型平台
设置增加序号显示时,如需要在屏幕上显示“1 广州大彩 0168”,所发的数据内容为“$NUM;广州大彩;0168”,“序号”子项内容固定为“$NUM;”
注意:每一个子项(每一列),用英文符号“;”隔开
图标文件
设置每一条记录添加的图标,可添加图标路径。当且仅当记录类型为“通用表格”时,该项参数设置才生效。如下所示
设置增加图标显示时,如需要在屏幕上第一项(列)显示图标第一帧,第二项显示“001”,第一项(列)显示图标第二帧,所发的数据内容为“$ICON0;001;$ICON1”,“序号”子项内容固定为“$ICONx;”x表示图标文件的第几帧
注意:设置的图标大小要不超过数据记录控件行的高度和宽度,否则会显示异常或显示不出来
记录类型
设置不同的记录类型,可选为“当前告警”、“历史告警”、“历史告警与解除时间”或“通用表格”。如下所示
当前告警
子项数固定为两项(即为两列),第一项为告警事件,第二项为告警时间。当产生报警,数据记录控件显示当前的告警和触发时间;当报警解除时,数据记录控件不显示告警信息。如下所示
历史告警
子项数固定为两项(即为两列),第一项为告警事件,第二项为告警时间。当产生报警时,数据记录控件会显示的告警和触发时间;当报警解除时,告警数据仍显示在表格里,可通过滚动条查阅过去的告警信息。如下所示
历史告警与解除时间
子项数固定为三项(即为三列),第一项为告警事件,第二项为告警时间,第三项为解除时间。当产生报警时,数据记录控件会显示的告警和触发时间;当告警事件解除时,显示解除的时间,告警数据仍显示在表格里,可通过滚动条查阅过去的告警信息。如下所示
通用表格
子项数默认为两项(即为两列),最大可设置为“10”项(列),可用作记录数据功能,记录的内容可以是中文、字母、数字,如下所示
显示顺序
设置显示的顺序,可选为“时间顺序”或“时间逆序”
对齐方式
设置数据显示的对齐方式,可选为“左对齐”、“居中对齐”或“右对齐”
子项数目
设置每一条记录包含的子项数,该项参数当且仅当记录类型为“通用表格”设置有效
子项宽度
设置每个子项的宽度比例,如设置为“30;40;50”
显示记录数
设置控件显示的记录条数,即是显示的行数。如设置为“10”,如下所示
最大记录数
设置最大的记录条数,存满之后,覆盖旧的记录,默认1024条
单条记录大小
设置单条记录大小,最大为256个字节。该项参数当且仅单记录类型为“通用表格”设置才有效。
是否存储
设置记录的数据是否存储到FLASH(断电保存),可选为“是”或“否”,该存储地址和用户存储128K空间、协议与变量里面的存储、历史曲线等共用一块存储区域
- 存储地址:每放置一个数据记录控件,都必须重新设置一次存储地址,避免存储地址重叠
预留存储空间
给该“数据记录控件”预留的存储空间大小
该项参数VisualTFT自动计算,预留存储空间=单条记录大小*最大记录数 + 24。如下所示,单条记录大小“100”字节,最大记录数为1024条,则需要给该控件预留102424个字节存储
- 当前告警:固定为6个字节,不可更改,不支持掉电保存
- 历史告警:固定为6个字节,不可更改,支持掉电保存
- 历史告警与解除时间:固定为10个字节,不可更改,支持掉电保存。
- 通用表格:默认为100个字节,最大为256个字节,根据用户MCU发送的数据字节数而定。支持掉电保存
注:数据记录控件与历史曲线共用存储块,开启数据存储时,应设置存储地址,否则会出现,数据存储异常、显示异常。
数据存储地址计算:
数据控件存储大小= 最大记录数*单挑记录大小+24(单位:字节)
历史曲线存储大小= 采样点数+30(单位:字节)
告警解析
当记录类型为“当前告警”、“历史告警”、“历史告警与解除时间”时,可定义告警解析。对告警进行文字显示,如定义数值0,为“高温”,颜色为红色,如下所示
当对该控件分别发送数值0、1、8时,如下所示,被定义的0、1此时显示的告警解析的内容,未被定义的8显示的还是数值
13.2 通用表格
画面配置
在【通用表格】画面的“背景图片”导入相应的美工图片,画面中添加1个数据记录控件(控件ID:1)和3个按钮控件(控件ID:2-4),如下所示
属性配置
数据记录控件属性
在数据记录控件的属性窗口中,设置【显示记录数】为“6”、【单条记录数】为“40”,属性配置如下所示
添加记录按钮
用于添加一条告警记录。在按钮控件(控件ID:2)的属性窗口中,设置【触摸虚框】为“否”、【按下时的图片】为对应的素材路径、【裁剪】为“勾选”,属性配置如下所示
填写“添加”按钮按下的对内指令:
- 点击【对内指令】→“按下时”
- 弹出指令填写框,选择“指令助手”
- 在指令助手界面,左侧导航栏选择【数据记录控件】
- 设置“数据记录控件”区域的指令参数。如例程中,添加一条“广州大彩;0001;”的记录
- 复制指令,填写指令在按钮对内指令,如下所示
导出数据按钮
同理,“导出数据”按钮,实现导出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),如下所示
属性配置
数据记录控
在数据记录控件的属性窗口中,设置【记录类型】为“历史告警与解除时间”、设置【显示记录数】为“5”,属性配置如下所示
点击告警解析,对告警进行文字显示,如:定义数值0,为“高温”,颜色为红色,如下所示。依次定义数值1-4的解析和颜色
【触发告警】按钮控件
在按钮控件(控件ID:2)的属性窗口中,设置【触摸虚框】为“否”、【按下时的图片】为对应的素材路径、【裁剪】为“勾选”,填写【对内指令】→“按下时”为“触发告警指令”,如下所示
【解除告警】按钮控件
在按钮控件(控件ID:3)的属性窗口中,设置【触摸虚框】为“否”、【按下时的图片】为对应的素材路径、【裁剪】为“勾选”,填写【对内指令】→“按下时”为“解除告警指令”,如下所示
【导出记录】按钮控件
参考【13.2 通用表格即可】
运行预览
运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机
屏上控制
按下“触发告警”按钮,数据记录控件第一行显示“高温和时间”记录;按下“解除告警”按钮,数据记录控件第一行显示“解除时间”;当按下“导出数据”时,U盘/SD根目录下显示文件是“以导出的RTC时间命名的CSV文件”,如下所示
指令触发/解除告警
左侧导航栏选择【数据记录控件】,设置“告警”区域的指令参数。如例程中,设置【历史告警与解除时间】中的数据记录控件(控件ID:1),触发数值为1的触发告警,点击“发送”;接着选择“解除告警”,如下所示
单片机程序
用户单片机控制数据记录控件的程序,参考开发包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
// 解除时间为屏的内部时间
……
}