一种继电保护自动测试系统中字符串比较的方法和系统的制作方法

文档序号:9810635阅读:419来源:国知局
一种继电保护自动测试系统中字符串比较的方法和系统的制作方法
【技术领域】
[0001]本发明涉及电力系统继电保护自动测试领域,更具体地涉及一种继电保护自动测试系统中字符串比较方法和系统。
【背景技术】
[0002]目前,各个继电保护设备厂家生产的装置设备数据模型与变电站整站SCD文件描述的设备数据模型之间存在一定差异,包括设备数据模型目录结构、数据集以及单个数据的定义标准等。因此在继电保护自动测试系统生成自动测试方案前,需针对装置设备数据模型和变电站SCD文件之间进行匹配性测试。字符串比较算法可以找出两个字符串之间所有相同部分以及不同部分,在进行匹配性测试时,利用该算法的比较结果提取关键字,再根据关键字技术提高匹配度;设备数据模型测试程序界面显示测试结果,包括装置设备数据模型与SCD文件两者的所有数据,字符串比较算法可将匹配成功的数据之间相同部分和不同部分用不同颜色的字体显示,使界面显示更直观。
[0003]传统的比较字符串的算法是判断两个字符串是否相同或一个字符串中是否包含另一个字符串,并且当字符串中同时存在英文字符和汉字时,不能做出正确比较,这样的算法不能直接应用在继电保护自动测试系统中。在进行继电保护自动测试时,对装置设备数据模型的测试要求找出两个字符串中所有相同部分和不同部分,解决此问题时,传统字符串比较算法正确率较低,尤其在两个字符串相同字符块较多时存在明显的局限性。

【发明内容】

[0004]为了解决现有字符串比较算法的上述缺点而提出本发明。本发明提供了一种继电保护自动测试系统中字符串比较的方法和系统,用于比较装置设备数据模型与变电站整站SCD文件两者对应数据之间的不同之处。
[0005]—方面,本发明提出了一种继电保护自动测试系统中字符串的比较方法,其特征在于包括:
[0006]步骤一:比较两个字符串长度,长的设为主串,短的设为子串;
[0007]步骤二:在子串中取副子串,其中初始副子串为子串本身;
[0008]步骤三:判断副子串长度是否22;
[0009]步骤四:当确定副子串长度22时,判断在主串里面是否能查找到副子串;
[0010]步骤五:当确定在主串里面能找到副子串时,将主串和子串中副子串部分设为两个字符串相同部分;
[0011]步骤六:更新在主串中查找副子串的头位置;
[0012]步骤七:判断是否继续查找;
[0013]步骤八:更新副子串,重复步骤二?步骤八,直到满足结束查找条件。
[0014]另一方面,本发明提出了一种继电保护自动测试系统中字符串比较的系统,包括:
[0015]初始化模块,用于比较两个字符串长度,长的设为主串,短的设为子串,以及在子串中取副子串,其中初始副子串为子串本身;
[0016]副子串长度判断模块,用于判断副子串长度是否22;
[0017]查找判断模块,用于在副子串长度判断模块确定副子串长度22时,判断在主串里面是否能查找到副子串;
[0018]相同字符串设置模块,用于在查找判断模块确定在主串里面能找到副子串时,将主串和子串中副子串部分设为两个字符串相同部分;
[0019]主串中的查找头位置更新模块,用于更新在主串中查找副子串的头位置;
[0020]继续查找判断模块,用于判断是否继续查找;以及
[0021]副子串更新模块,用于在查找判断模块确定在主串中未找到副子串和在遍历全部副子串判断I吴块中确定未遍历完副子串时,更新副子串。
[0022]与现有技术相比,本发明的有益效果包括:
[0023]本发明提供的一种继电保护自动测试系统中字符串比较的方法和系统,比较两个字符串长度,长的设为主串,短的设为子串;在子串中取副子串(初始副子串为子串本身);判断副子串长度是否小于2;当确定副子串长度不小于2时,判断在主串里面是否能查找到副子串;当确定在主串里面能找到副子串时,将主串和子串中副子串部分设为两个字符串相同部分;更新在主串中查找副子串的头位置;判断是否遍历完全部副子串;以及更新副子串。在继电保护自动测试系统中,需对装置设备数据模型与变电站SCD文件相匹配,使用本发明的字符串比较方法和系统可以比较出两者数据之间的异同,为提取关键字以及根据关键字技术进行匹配奠定了基础,减少人工匹配与比较的工作量,可以提高匹配度。
【附图说明】
[0024]图1是根据本发明的一个实施例的继电保护自动测试系统中字符串比较的方法的流程图;
[0025]图2是根据本发明的一个实施例的继电保护自动测试系统中字符串比较的系统框图。
【具体实施方式】
[0026]提供参考附图的下面描述以帮助全面理解本发明的示范性实施例。其包括各种细节以助于理解,而应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识至IJ,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,省略了对公知功能和结构的描述。
[0027]下面结合附图,对本发明的一个实施例的继电保护自动测试系统中字符串的比较方法和系统的【具体实施方式】进行详细地说明。
[0028]本发明的一个实施例的继电保护自动测试系统中字符串比较的方法的流程图如图1所示,具体的流程包括以下步骤:
[0029]S101、比较两个字符串长度,长的设为主串,短的设为子串;
[0030]S102、在子串中取副子串(初始副子串为子串本身);
[0031]S103、判断副子串长度是否2 2;若是,执行步骤5104;若否,执行步骤5107;
[0032]S104、当确定副子串长度2 2时,判断在主串里面是否能查找到副子串;若是,执行步骤S105 ;若否,执行步骤S108 ;
[0033]S105、当确定在主串里面能找到副子串时,将主串和子串中副子串部分设为两个字符串相同部分;
[0034]S106、更新在主串中查找副子串的头位置;
[0035]S107、判断是否继续查找;若是,执行步骤S108;若否,结束查找;
[0036]S108、更新副子串,重复步骤二?步骤八,直到结束查找。
[0037]下面对上述各步骤的具体实现方式进行详细的说明。
[0038]上述步骤S102中在子串中取副子串,具体地可以使用MFC类库CString类里Mid成员函数从子串中取副子串StrTemp I:
[0039]StrTempl = SubString->Mid( i , j)
[0040]其中,SubString表示指向子串的指针;SubString->Mid(i,j)表示取子串中从索引为i(第一个字符索引为i = 0,后面的依次类推)的字符开始长度为j的字符串。进一步地,上述步骤S102中初始副子串为子串本身表示初始i = 0,j = SubArry。其中i表示副子串取子串中的字符串第一个字符索引(子串第一个字符索引为i = 0,后面的依次类推表示该字符串长度;SubArry表不子串长度。
[0041]上述步骤S104中判断在主串里面是否能找到副子串包括:
[0042]使用MFC类库CString类里find成员函数在主串中找副子串:
[0043]SourceBegin = Source->F ind(StrTempl,Findnext)
[0044]其中,SourceBegin表示在主串中找到副子串时的头位置,并且如果没找到则为-1 ; Source表示指向主串的指针;Source->Find(StrTempI ,Findnext)表示在主串中从索引为Findnext (第一个字符索弓I为Findnext = O,后面的依次类推)的字符开始找StrTemp I。
[0045]当返回SourceBegin值为-1时,确定没有在主串中找到副子串;以及
[0046]当返回SourceBegin值不为-1时,确定在主串中找到副子串。
[0047]上述步骤S106中,其中通过以下来更新在主串中查找副子串的头位置:用Findnext表示更新后的头位置,贝Ij
[0048]F indnext = SourceBegin+j
[0049]其中,SourceBeg
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1