excel学习库

excel表格_excel函数公式大全_execl从入门到精通

控件的应用与控制——数据记录控件(下)

控件的应用与控制——数据记录控件(下)

事件功能说明:

1、 数据记录控件,“方法”使用说明

数据记录控件的数据信息以每一条信息(条目)为单位,组成一组数据集合。在控件的各项操作使用中,也是以条目的形式进行整体的操作控制过程。如,添加条目,删除条目等。数据记录在屏幕上的呈现形式为表格数据。每一横行显示的信息即为一组条目数据。列数信息表现的是条目的个数。

数据记录控件的属性变量功能不足以满足控件操作的需要,因此加入了“方法”功能。在概述中我们解释了“方法”的作用。现在具体描述“方法”在控件操作中具体有哪些指令内容以及如何操作的过程,指令格式等。“方法”的应用是以代码指令的形式传达给系统去执行,可以在相关事件中写入有关“方法”的代码指令集,或者通过串口通讯,以串口数据的形式通过外部设备发送给HMI系统,完成“方法”的操作过程。数据信息的内容依然是“方法”的代码指令信息。

(1) insert方法,追加一条记录

功能描述: 数据记录控件的内容是表格式的清单列表。横向内容代表的是一条数据记录信息条目。纵向内容代表的是条目信息的排列顺序。所以该insert方法的功能含义就是在数据列表的末尾项后面,新加入一条数据信息条目。

格式: int insert(string newtxt)

int-“方法”的函数数据类型

insert-“方法”指令名称

括号内的内容为“方法”函数的参数变量(形参)

string-“方法”函数中的形参数据类型

newtxt-“方法”函数中的形参名称,条目内容信息由多个字段组成,字段间用“^”标识符做分隔。也可以对该项条目的其它参数信息进行设置,如背景色,字体色等。使用<font>标签进行设定,格式为 <font b=1024,p=123>。

“方法”函数被成功执行返回数据值1,否则返回数据值0。即成功返回1,失败返回0。

例:

data0.insert("1^2^3^4") (将添加记录第一格设置为1,第二格设置为2,第三格为3,第四格为4)

字符串直接输入。

t0.txt="1^2^3^4"

data0.insert(t0.txt)

字符串赋值给字符变量,由字符变量输入。

③将背景颜色设置为1024(绿色),将字体颜色设置为63488(红色),添加内容为1 2 3

data0.insert("<font b=1024,p=63488>1^2^3")

带表格参数的条目信息设置。

注:字段使用^分割,控件识别到一个^就会自动写入^后面字符串;如果识别连续两个^,则该格为空

(2) delete方法,删除数据

功能描述: 删除条目信息,可一次删除一条也可以多条同时删除。

格式: int delete(int starid,int qty)

starid-待删除数据条目的起始id

qty-从starid开始,向下删除的条目数量

“方法”函数被成功执行返回数据值1,否则返回数据值0。即成功返回1,失败返回0。

例:  data0.delete(data0.val,1)

指令含义为删除从data0.val数值开始的,一条条目信息。同时,data0.val表示当前选中条目的信息,所以也理解为从选中的条目信息开始,删除一条条目信息。

(3) up方法,修改一条记录

功能描述: 修改一条已经存在的条目信息中的各项内容。

格式: int up(string newtxt,int index)

newtxt-“方法”函数中的形参名称,条目内容信息由多个字段组成,字段间用“^”标识符做分隔。也可以对该项条目的其它参数信息进行设置,如背景色,字体色等。使用<font>标签进行设定,格式为 <font b=1024,p=123>。

index-整数类型的形参变量,代表条目的序列号信息。也是每个条目的id信息,其中表头的id为-1,向下从0开始,以此类推。

“方法”函数被成功执行返回数据值1,否则返回数据值0。即成功返回1,失败返回0。

例:

data0.up("1^2^3^4",5) (将id号为5的条目信息修改为"1^2^3^4")

t8.txt="1^2^3^4"

data0.up(t8.txt,data.val) (t8.txt的字符内容写入当前选中的数据记录)

(4) clear方法,清空所有数据记录

功能描述: 清除所有条目信息,无参数。

格式: int clear()

例:

data0.clear() 清空数据记录中所有数据(只留下表头)

2、 关于数据记录在使用中出现黑屏的现象分析

字段含义:文件配置数据与组件配置数据不匹配。建议删除该文件。系统将重新创建正确的数据文件:sd0/ xxx.data

(1)控件列表布局和之前设置不一致(即修改了相关属性变量lengthmaxvaldez数据值) 导致黑屏。

解决方法:

方法一:修改数据记录控件属性path的指向路径或文件名称。系统自动重新建立新的data文件。

方法二:根据提示信息,打开软件中菜单栏文件的“虚拟sd卡文件夹”,删除原data文件,再次运行时,让系统重新生成该data文件,就是新的参数文件了。

方法三:修改dez属性。dez为表格列数(即字段数属性变量)。当dez数值为已经生成的data文件中的dez参数不一致时,会出现黑屏。要么如方法二解决方案,要么就保持dez的数值一致即可去除黑屏。

(2)工程下载到屏出现黑屏。这是屏无法读取到sd卡问题。

问题及解决方法:

可能存储器卡槽中没有sd卡,或者卡的格式不对(非FAT32格式),再或者sd卡质量问题无法识别。解决办法为尝试更换一张新卡。

(3)将数据记录保存到ram中。路径设置后黑屏。

问题及解决方法:

ram为系统给数据记录分配的临时存储区,只能做为带电调试应用,一旦断电后,不具备断电保持功能。所以,每次上电后,因为寻找不到原ram文件,只能建立新的数据记录文件,每一次上电开机都是重新建立新文件的过程。

在系统工具栏中点击设备”按钮,在工程选项中,内存文件存储区大小设置应该(至少大于65kb=65560Byte :如果不行的话要适当加大大小。)后,工程进入调试界面就可以正常使用了。也就是说,必须要保证分配的内存存储空间要大于系统实际应用的空间。

(4)多个数据记录打开同一个路径下文件导致黑屏

问题及解决方法: 这是因为文件已经被上一个数据记录打开导致新的数据记录无法打开文件。分两种情况分析,情况一,同一页面下,两个数据记录控件不能同时调用同一个数据记录文件。应该分别调用不同的数据记录文件。也就是说path的路径指向文件不能相同。但是不同名的文件也可以内容完全相同。可以尝试复制想要使用的同一个文件的方法,来满足应用需求。

情况二,不同页面下,意味着数据记录控件也不相同,也同样不能够调用同一个数据记录文件。如果想要实现对同一个文件的调用的话。则最好建立一个参数相同的data文件,做为切换应用的替代文件,中转文件。当前页面在跳转其它页面前,将数据记录控件的path指向替代文件的路径。在跳转后,将跳转后的当前页面的数据记录控件的path指向真正应用的data文件。

3、 数据记录控件的文件存储方式分析

在正常使用数据记录控件的情况下,是将数据记录的文件信息存入外部存储器的sd卡中,在sd卡中自动生成数据记录的调用文件(data文件)。

使用sd卡的要求,首先设定控件的path路径指向,路径设置 例:属性path: sd0/1.datasd卡最大支持32g容量,一定要格式化为FAT32格式,不能有隐藏分区,不能用做过U盘启动的卡(因为做了U盘启动的卡一定有隐藏分区),尽量使用原装卡,以免出现兼容性问 题导致无法识别到sd卡。

其次,HMI系统无法读取到sd卡,数据记录控件会呈现黑屏状态。数据存放在sd卡的data文件中,如果HMI系统关机也不会删除sd卡的文件(除非手动指令删除)。即掉电保存或称为非易失保存。

sd卡中的data文件可以导入到PC机电脑中,再通过官方工具转换成csv文件,csv文件可以由excel软件直接打开。这样可以实现数据的下载,保存和通用性的功能。转换工具软件可以在官方网站进行下载。

在不使用外部存储器sd卡的情况下,可以使用内部ram作为数据记录文件的存储空间,使用前需要先修改控件属性变量path的路径指向,路径设置为:属性path: ram/xxx.data。这样就可以将数据记录文件建立在系统内部的内存当中。内存的空间是可以由系统自行设定的,所以在使用前需要评估数据记录文件的占用字节空间的大小情况,保障设定的内存应用空间要足够大于数据记录文件的大小,保证“装得下”。内存文件存储区大小设置为100000Byte(至少大于65kB=65560Byte) 设置后软件的系统准备工作就完成了。

在没有设置该项的情况下,使用ram会导致控件黑屏。ram是系统中的内存单元,不具备关机,掉电保存的功能。所以每次开机使用时都会重新生成新的data文件,而其中的数据内容也会消失不见。

如何利用ram来实现sd卡中的非易失功能呢?我们可以将其与系统中的非易失存储单元eeprom结合使用。也就是说,如果量不大的情况下是可以考虑保存到eeprom,eeprom存储空间为1k。如果数据量大还是建议保存到sd卡中。

那么如何将数据记录中数据储存到eeprom中?在使用中,ram单元负责建立新的数据记录控件的表格环境,属于一个没有数据的空表格。eeprom里面存储的不是data文件,而是每一条条目中的数据信息,因为条目信息为一组字符串的组合。所以eeprom里面是以条目为单位的一组一组的字符串数据内容。在使用中,通过开机上电的初始化事件,调取eeprom中的每条条目信息写入空表格中,完成对之前数据记录内容的保存与读取过程。步骤如下,

   ①数据记录控件的保存过程需要程序一条一条的来完成,先选中相应数据记录中的数据(data0.val=2),再提取出(t0.txt=data0.txt)其中的条目信息。为避免互相干扰,使用t0.txt做为中间的转换控件,也可以直接使用va0.txt变量控件。t0控件的属性变量txt_maxl的设置要能够装下整个条目的字符串长度,否则有可能无法全部读取整条数据。造成的结果是,数据在表格中的显示不完整。

②通过系统指令集中的wepo指令将条目信息逐条写入eeprom,调用时,通过系统指令集中的repo令,同样的方法从eeprom中读取出来。

4、 数据记录控件使用中的翻页功能设计实现

数据记录控件在使用中,对于条目的选择与查询过程是通过滑动条目的形式进行操作的。当条目数量足够多时,滑动操作就会显得吃力。这时,可以考虑采用按页翻转跳跃的查询形式。

实现控件的翻页查询功能,需要用到系统变量sys0。系统变量是全局性质的变量,不论系统运行在哪一个页面状态下,都不会自动刷新或改变系统变量的数据值(人为的主动操作除外)。在之前讲过的系统变量都是具有指定功能的专用系统变量,不能随意的调用或用于其它事项。

HMI系统中提供了3个全局性的,可用于数据保存与交换的系统变量。也可以称它们为自由变量,分别为sys0,sys1,sys2。自由变量在系统中没有定义具体的应用功能,即没有与系统的任何一项应用功能相关联。只作为单独存在的中间变量使用。它是全局性的,变量中的数据在程序的所有页面中有效。页面的刷新与切换都不会使该系统变量数值发生改变。

利用全局性自由变量sys0的应用特点,我们就可以实现数据记录控件的查询翻页功能。首先我们需要了解,数据记录表格在窗口中的移动位置与哪些属性变量有关。从数据记录表格在窗口中的初始状态开始计算,当我们查询表格时,主要的操作就是拖动控件表格单元,使其逐条向上移动。当停止拖动时,当前表格位置与初始表格位置的相对移动距离,就是我们需要实施控制的主要数据信息。与之相对应的属性变量为val_y,当前纵向滑动值。该项为可读写单元,当我们对此项数值进行修改时,就可以将指定的表格位置显示在控件窗口中。该项变量的移动值是以点阵像素的数值来计算的。

每个条目的高度由控件的hig属性变量进行设置和决定。其数值就是条目高度的点阵数值。根据以上描述,要实现指定条目数的翻页功能,只需要将条目的高度数值hig与条目数量相乘就可以实现。条目数量可以使用sys0系统变量通过赋值的形式来实现。也可以在其它控件的事件中,进行机动的赋值调整实现。

转化成表格翻页的移动公式就是,

data0().val_y = data0().hig x sys0

  这样,每一次实施翻页操作时,只需要改动一下sys0系统变量的数值就可以实现了。如,设计“下翻页“按钮控件,在点击事件中逐级调节sys0的数值,即可实现翻页功能。

5、 数据记录在控件中的排序控制

    数据记录条目在控件中的排列顺序分为正序与倒序排列两种。通过对控件属性变量order的设置来实现顺序显示。为1时,数据记录呈正序显示,为0时,数据记录呈倒序显示。

     不论数据记录表格在控件中正序显示,还是倒序显示,每一个条目项的id编号是不变的,始终保持初始状态时,每一项条目的初始编号数值。

6、 外部设备对数据记录控件的控制操作说明

外部设备通过标准串口实现与HMI系统的数据通讯功能。所以,外部设备如果想要控制其中的数据记录控件单元,只需要发送与控件相关的代码指令就可以了。

外部设备发送给HMI系统的指令必须是由HMI各种指令集中的程序指令组成的。将代码指令转换成一组二进制代码数据,再加入串口通讯的结束标识符信息,内容为3个16进制数0xff,0xff,0xff,由这两部分内容构成一个完整的数据包,通过串口发送给HMI系统。完成外部设备对HMI系统的操作控制。

如果代码指令内容是关于数据记录控件的操作内容,如属性变量的设置或方法的调用等。也就实现了外部设备对数据记录控件的相关设置与数据记录操作的控制。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接