zoukankan      html  css  js  c++  java
  • intouch制作历史报警查询(时间查询,筛选关键字)

    在项目中,intouch制作历史报警查询已属于标配功能,如何做出按时间以及关键字来进行综合查询,提高历史报警查询效率仍然是一个值得研究的问题,接下来参考网上文章自己总结下如何制作。

    1.DTPicker格式制作

    首先,时间选择器的安装不再一一演示,(安装32位office系统,从向导中安装date and time picker即可)。然后,选择自定义格式,这里格式十分重要,直接关系到时间查询的准确性(12小时制,24小时制的区别)。

    格式如下:yyyy-M-d H:mm:ss

    控件时间,设置为上午/下午以区分24小时,时间选择为本地时间。

    2020/5/4:备注

    %H参数可以直接修改为24小时制

    总体效果如下:

    2.过滤器编写

    过滤器的原理其实很简单,就是利用AlmDbViewCtrl控件本身自带的过滤器属性进行XML文档配置,然后再后台拼凑去过滤器的格式,填充好相应的查询关键字内容即可。

    1.首先,编辑好过滤器路径和文件

    C:Program Files (x86)WonderwareInTouch est.xml

    2.查看文件格式和内容,试着手动新建一个看看格式。

    3.可以利用自定义函数去拼凑相应格式,填写相应内容。

    编写quickfunction函数:ALMFILTERSEARCH

    FileDelete("C:Program Files (x86)WonderwareInTouch	est.xml");
    FileWriteMessage( "C:Program Files (x86)WonderwareInTouch	est.xml",0, HIST_XMLCODE +"<FILTER_FAVORITES><RECORD><FILTERNAME>MYFILTER</FILTERNAME><ELEMENT>", 0 );
    IF HIST_SEARCHINDEX == 1 THEN
        FileWriteMessage( "C:Program Files (x86)WonderwareInTouch	est.xml",-1, "<NAME>名称</NAME><ORIGNAME>Name</ORIGNAME><OPERATOR>LIKE</OPERATOR><VALUE>%"+CONDITION+"%</VALUE><PARENT>0</PARENT>", 0);
    ELSE 
        FileWriteMessage( "C:Program Files (x86)WonderwareInTouch	est.xml",-1, "<NAME>报警注释</NAME><ORIGNAME>Alarm Comment</ORIGNAME><OPERATOR>LIKE</OPERATOR><VALUE>%"+CONDITION+"%</VALUE><PARENT>0</PARENT>", 0);  
    ENDIF;
    FileWriteMessage( "C:Program Files (x86)WonderwareInTouch	est.xml", -1, "</ELEMENT></RECORD></FILTER_FAVORITES>", 0 );
    #AlmDbViewCtrl1.FilterFavoritesFile = "C:Program Files (x86)WonderwareInTouch	est.xml";

    其中:HIST_XMLCODE为内存消息,存放xml头部消息(<?xml version="1.0" encoding="GB2312"?>)

    HIST_SEARCHINDEX为内存整型,单选按钮选择状态(选择标记名为1)

    CONDITION为内存消息,此处为查询的关键字内容。

    3.脚本编写

    脚本的话,主要分为窗口脚本,以及查询按钮脚本。窗口脚本主要用于填写显示时,初始化脚本。查询则为点击查询时,所约束的时间和过滤器内容。

    窗口脚本:规定默认时间选择当天一天时间,历史报警也显示为该天中所有报警信息。

    #DTPicker1.value = $DateString+" "+ "00:00:00";
    #DTPicker2.value = $DateString+"  "+"23:59:59";
    #AlmDbViewCtrl1.SpecificTime = 1;
    #AlmDbViewCtrl1.StartTime = StringMid(#DTPicker1.value,6,2) + "/" + StringMid(#DTPicker1.value,9,2) + "/" + StringMid(#DTPicker1.value,1,4) + " "+ StringMid(#DTPicker1.value,13,2) + StringMid(#DTPicker1.value,16,2) +StringMid(#DTPicker1.value,19,2) ;
    #AlmDbViewCtrl1.EndTime = StringMid(#DTPicker2.value,6,2) + "/" + StringMid(#DTPicker2.value,9,2) + "/" + StringMid(#DTPicker2.value,1,4) + " " + StringMid(#DTPicker2.value,13,2) + StringMid(#DTPicker2.value,16,2) +StringMid(#DTPicker2.value,19,2) ;
    #AlmDbViewCtrl1.Refresh();

    2020/5/4:备注

    上述脚本在实际过程中存在小bug,会跳出月/日或年不对的问题,怀疑是03此类月份,和3月有写法上的不同,特此修改。

    #DTPicker1.value = $DateString+" "+ "00:00:00";
    #DTPicker2.value = $DateString+"  "+"23:59:59";
    #AlmDbViewCtrl1.SpecificTime = 1;
    #AlmDbViewCtrl1.StartTime=#DTPicker1.Month+ "/"+ #DTPicker1.Day+"/"+#DTPicker1.Year +" " + #DTPicker1.Hour+ ":"+ #DTPicker1.Minute+":"+#DTPicker1.Second;
    #AlmDbViewCtrl1.EndTime=#DTPicker2.Month + "/"+ #DTPicker2.Day+"/"+#DTPicker2.Year +" " + #DTPicker2.Hour+ ":"+ #DTPicker2.Minute+":"+ #DTPicker2.Second;
    #AlmDbViewCtrl1.Refresh();

    查询脚本:条件判断,和调用quickfunctions函数建立过滤器判断。

    #AlmDbViewCtrl1.StartTime=#DTPicker1.Month+ "/"+ #DTPicker1.Day+"/"+#DTPicker1.Year +" " + #DTPicker1.Hour+ ":"+ #DTPicker1.Minute+":"+#DTPicker1.Second;
    #AlmDbViewCtrl1.EndTime=#DTPicker2.Month + "/"+ #DTPicker2.Day+"/"+#DTPicker2.Year +" " + #DTPicker2.Hour+ ":"+ #DTPicker2.Minute+":"+ #DTPicker2.Second;
    #AlmDbViewCtrl1.GroupName = "$SYSTEM";
    
    IF CONDITION <> "" THEN
    CALL ALMFILTERSEARCH(CONDITION);
    #AlmDbViewCtrl1.ShowFilter();
    
    ELSE
    
    #AlmDbViewCtrl1.Refresh();
    
    ENDIF;
    

    4.演示效果

    5.总结

    基本功能已经实现,在实际使用过程中若是还存在问题,再后续补充。

  • 相关阅读:
    51 Nod 1068 Bash游戏v3
    51 Nod Bash 游戏v2
    51 Nod 1073 约瑟夫环
    UVA 12063 Zeros and ones 一道需要好好体会的好题
    51 Nod 1161 Partial sums
    2018中国大学生程序设计竞赛
    UVA 11971 Polygon
    UVA 10900 So do you want to be a 2^n-aire?
    UVA 11346 Possibility
    python with as 的用法
  • 原文地址:https://www.cnblogs.com/cache-yuan/p/12870788.html
Copyright © 2011-2022 走看看