数据匹配处理的方法、计算机存储介质及输入输出设备与流程
未命名
08-02
阅读:83
评论:0

1.本技术涉及但不限于嵌入式芯片技术,其中涉及一种数据匹配处理的方法、计算机存储介质及输入输出设备。
背景技术:
2.在一些支持大量不同指令协议并有多种输入输出接口的应用,如测量测绘、机械控制、物联网、智能驾驶和可穿戴设备等应用,包含多种输入输出设备进行多种类型数据交互,系统需要支持上千条指令协议。以um960嵌入式定位模块为例,该芯片应用于通过多种输入输出设备进行多种类型数据交互的平台,采用的是freertos(是面向微控制器和小型微处理器的实时操作系统)嵌入式平台,也可应用到linux、windows等x86平台和arm-linux、嵌入式可配置操作系统(ecos)、ucos(一般指实时多任务操作系统)等多种嵌入式平台因产品设计需求,系统需要支持上千条指令协议;用户可通过多个串口或网口,与um960模块进行交互。用户先输入指令协议字符串,然后经过um960内的数据解析匹配程序的处理后,再输出反馈数据。
3.相关技术对指令协议进行应用时,存在以下问题:1、通过数据库进行实现指令协议的存储和管理;但额外增加数据库系统和对应的数据库应用接口,占用更多的系统资源(如存储、cpu),特别不适合在嵌入式系统中应用。2、通过模运算来计算不同字符串的哈希值,采样的是遍历匹配的方式进行字符串匹配,计算和查询匹配的效率低,影响数据的查询和处理速度,计算获得的哈希表,表内有属性值的行分布不均匀问题,增加了计算哈希值的复杂度。3、增加、删除、修改已有的输入输入设备和指令协议,会影响其他配置的加载和使用,可扩展性差。普通的字符串哈希算法,计算效率低。4、大批量指令协议(如上千条指令协议),不适合大批量管理,指令协议的管理和使用产生复杂的处理逻辑。5、因不确定后续指令协议扩展数量,一般起始就申请很大的存储空间,浪费存储空间的资源。
4.综上,管理维护大批量指令协议和不同输入输出(io)设备,提高数据解析匹配的处理效率,是支持大量不同指令协议的应用过程中一个有待解决的问题。
技术实现要素:
5.以下是对本技术详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
6.本技术实施例提供一种数据匹配处理的方法、计算机存储介质及输入输出设备,能够提高数据解析匹配的处理效率。
7.本技术实施例提供了一种数据匹配处理的方法,包括:
8.接收指令协议字符串;
9.在接收到的指令协议字符串存在于预先设置的静态变量数据结构时,执行该指令协议字符串对应的输入输出设备的绑定处理;
10.根据执行的绑定处理,输出指令协议字符串执行后的反馈数据;
11.其中,所述静态变量数据结构中包含预先加载的第一哈希表文件和第二哈希表文件;所述第一哈希表文件为对第一文本文件进行哈希运算处理获得的文件,所述第一文本文件包括指令协议信息;所述第二哈希表文件为对第二文本文件进行哈希运算处理获得的文件,所述第二文本文件包括输入输出设备信息。
12.另一方面,本技术实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述数据匹配处理的方法。
13.再一方面,本技术实施例还提供一种输入输出设备,包括:存储器和处理器,所述存储器中保存有计算机程序;其中,
14.处理器被配置为执行存储器中的计算机程序;
15.所述计算机程序被所述处理器执行时实现如上述数据匹配处理的方法。
16.本技术实施例通过对指令协议信息和输入输出设备信息进行双字符串哈希处理,提高了数据解析匹配的处理效率。
17.本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
18.附图用来提供对本技术技术方案的进一步理解,并且构成说明书的一部分,与本技术的实施例一起用于解释本技术的技术方案,并不构成对本技术技术方案的限制。
19.图1为本技术实施例数据匹配处理的方法的流程图;
20.图2为本技术实施例输入输出设备的组成框图。
具体实施方式
21.为使本技术的目的、技术方案和优点更加清楚明白,下文中将结合附图对本技术的实施例进行详细说明。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互任意组合。
22.在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
23.图1为本技术实施例数据匹配处理的方法的流程图,如图1所示,包括:
24.步骤101、接收指令协议字符串;
25.步骤102、在接收到的指令协议字符串存在于预先设置的静态变量数据结构时,执行该指令协议字符串对应的输入输出设备的绑定处理;
26.步骤103、根据执行的绑定处理,输出指令协议字符串执行后的反馈数据;
27.其中,静态变量数据结构中包含预先加载的第一哈希表文件和第二哈希表文件;第一哈希表文件为对第一文本文件进行哈希运算处理获得的文件,第一文本文件包括指令协议信息;第二哈希表文件为对第二文本文件进行哈希运算处理获得的文件,第二文本文件包括输入输出设备信息。
28.在一种示例性实例中,本技术实施例可以由输入输出设备执行上述步骤101-103
的处理。
29.在一种示例性实例中,加载第一哈希表文件和第二哈希表文件到静态变量数据结构之前,本技术实施例方法参照相关技术:在运行的代码中关联第一哈希表文件和第二哈希表文件。本技术实施例程序运行时,包含代码段、堆栈段和数据段;其中,数据段用来存储全局变量和静态变量等;编译程序(指本技术实施例中的运行的代码)时,已经为数据段的全局变量和静态变量分配内存;在分配内存时,本技术实施例为第一哈希表文件和第二哈希表文件配置预先设置的偏移地址,从而实现在运行的代码中关联第一哈希表文件和第二哈希表文件的处理。编译好的程序是一个二进制文件,又叫固件(firmware)文件,通过烧写工具,将固件烧写到嵌入式平台指定的闪存(flash)地址中;嵌入式平台正常工作时,先从指定的地址加载固件,通过引导程序,将代码段(代码部分)和数据段(数据部分)迁移到内存中;其中,第一哈希表文件和第二哈希表文件作为静态变量数据结构存放在数据段;通过主机(pc)端的预处理,生成的哈希表在编译时,所谓静态变量编入固件中,程序初始化运行时,根据偏移地址从flash地址中读取上述第一哈希表文件和第二哈希表文件,并作为静态变量写入内存中,被代码段的相关处理逻辑调用,进行后续哈希匹配处理。
30.在一种示例性实例中,本技术实施例第一文本文件、第二文本文件的存储、第一哈希表文件和第二哈希表文件的生成,可以由编译固件代码的主机实施完成。
31.本技术实施例通过对指令协议信息和输入输出设备信息进行双字符串哈希处理,提升了后续哈希匹配处理的效率,提高了数据解析的处理效率。
32.在一种示例性实例中,第一文本文件中的每一行指令协议信息中可以包含按照第一预设排序的以下一项或任意组合的字段:第一哈希地址初始值、指令协议的唯一身份编号id、指令协议字符串、指令协议处理函数名称、指令协议类型、指令协议使用说明和指令协议样例;
33.第二文本文件中的每一行输入输出设备信息中可以包含按照第二预设排序的以下一项或任意组合的字段:第二哈希地址初始值、输入输出设备id、输入输出设备字符串和输入输出设备说明。
34.需要说明的是,上述第一预设排序和第二预设排序,可以参照本领域技术人员代码编码的经验和习惯进行设定,也可以根据后续应用进行统一调整。
35.在一种示例性实例中,本技术实施例静态变量数据结构中包含预先加载的第一哈希表文件和第二哈希表文件,包括:
36.一个以上哈希列表数组中包含预先加载的第一哈希表文件和第二哈希表文件。
37.在一种示例性实例中,本技术实施例中的一个以上哈希列表数组,可以包括:
38.用于加载第一哈希表文件内包含指令协议中的命令协议的命令哈希列表数组;
39.用于加载第一哈希表文件内包含指令协议中的信息(log)协议的log哈希列表数组;
40.用于加载第二哈希表文件内包含的输入输出设备信息的设备哈希数组。
41.本技术实施例通过区分命令协议和log协议两种类型,进一步提高了数据的匹配处理效率。
42.需要说明的是,本技术实施例中的信息协议的信息中可以包括本领域技术人员公知的,utc时间信息和位置信息等测量测绘的相关信息,这些信息按照预设的间隔输出(例
如1秒),输入log协议的指令后,板卡响应后输出对应的log信息。比如本技术实施例中提到的gngga com1 1,表示每秒钟通过com1输出一条gngga的信息。
43.在一种示例性实例中,本技术实施例确定接收到的指令协议字符串是否存在于静态变量数据结构,可以通过以下步骤实现:
44.对静态变量数据结构中的第一哈希表文件和第二哈希表文件进行递归的三等分处理,获得相应的等分哈希表;
45.以及,将接收到的指令协议字符串进行哈希运算处理,获得相应的指令协议哈希值;
46.将指令协议哈希值与等分哈希表进行匹配处理,以确定指令协议字符串是否存在于静态变量数据结构;
47.其中,第一哈希表文件三等分处理获得的等分哈希表的最小长度大于或等于预先设定的第一最大长度,第二哈希表文件三等分处理获得的等分哈希表的最小长度大于或等于预先设定的第二最大长度。
48.需要说明的是,递归的三等分处理为本领域技术人员公知的等分处理方式;以第一哈希表文件为例,等分处理的基本操作可以包括:将第一哈希表文件首次等分为三份,假设获得的三份文件为第一三等分文件,判断第一三等分文件是否大于第一最大长度;第一三等分文件大于第一最大长度,将第一三等分文件等分为三份,假设获得的三份文件为第二三等分文件,判断第二三等分文件是否大于第一最大长度;第二三等分文件小于第一最大长度时,则第一三等分文件,为第一哈希表文件拆分获得的等分哈希表;第二三等分文件大于第一最大长度时,继续第二三等分文件的拆分,直至拆分获得的第n等分文件小于第一最大长度时,将第n-1次三等分获得的第n-1三等分文件,确定为第一哈希表文件拆分获得的等分哈希表。
49.在一种示例性实例中,本技术实施例中的哈希运算处理,可以包括:
50.基于均值哈希算法进行的哈希运算处理。
51.本技术实施例第一哈希表文件和第二哈希表文件均通过均值哈希算法计算获得,为均匀分布的哈希表,可以进一步提升后续哈希匹配处理的效率,提高了数据解析匹配的处理效率。
52.在一种示例性实例中,本技术实施例均值哈希算法基于二进制的位运算实现。
53.在一种示例性实例中,本技术实施例基于均值哈希算法进行的哈希运算处理,可以包括:
54.以预设的素数种子作为均值哈希算法的系数,对第一文本文件和第二文本文件进行哈希化计算。在一种示例性实例中,本技术实施例素数种子的选择,可以由本领域技术人员根据经验选定。在一种示例性实例中,确定执行指令协议字符串对应的输入输出设备的绑定处理之后,本技术实施例参照相关技术执行指令协议字符串对应的输入输出设备的绑定处理。
55.在一种示例性实例中,指令协议字符串未存在于静态变量数据结构时,本技术实施例方法还可以包括:输出预设的反馈提示信息。在一种示例性实例中,本技术实施例输出预设的反馈提示信息,可以包括:通过预先设置的人机交互窗口输出反馈提示信息;其中,反馈提示信息中可以包括:指令协议字符串匹配失败的提示信息。
56.在一种示例性实例中,将指令协议哈希值与等分哈希表进行匹配处理之前,本技术实施例方法还可以包括:
57.确定第一哈希表文件中包含的指令协议的字符串的最大长度,将该指令协议的字符串的最大长度确定为第一最大长度;
58.确定第二哈希表文件中输入输出设备的字符串的最大长度,将该输入输出设备的字符串的最大长度确定为第二最大长度;
59.将第一最大长度和第二最大长度写入到头文件中。
60.在一种示例性实例中,本技术实施例将第一最大长度和第二最大长度写入到头文件中包括:写入到上述运行的代码的头文件中。本技术实施例通过将确定的第一最大长度和第二最大长度写入到程序代码的头文件,动态实现存储哈希表的最大长度,方便程序初始化时申请真实需要的存储空间,避免了申请过多的存储空间和因申请的存储空间不足而导致运行异常。
61.在一种示例性实例中,输出指令协议字符串执行后的反馈数据之前,本技术实施例方法还可以包括:
62.在第一文本文件中的指令协议信息包含的log协议中,添加输出反馈数据的输出设备。
63.本技术实施例接收到指令协议字符串时,判断指令协议字符串中是否指定输出设备,未指定输出设备时,参照相关协议将输入设备确定为输出设备。当指令协议字符串中指定输出设备时,将处理指令协议字符串后输出的反馈数据通过指定的输出设备输出。
64.在一种示例性实例中,第一文本文件中的指令协议信息中包含指令协议id,第二文本文件中的输入输出设备信息中包含输入输出设备id,且接收的指令协议字符串存在于静态变量数据结构时,本技术实施例方法还包括:
65.根据预先设定的与输入输出设备id和指令协议id对应的字符串处理函数,对指令协议字符串进行处理。
66.在一种示例性实例中,基于命令参数数量和参数类型不同考虑,本技术实施例命令指令的字符串预先设置有相应的分流处理函数,分流处理函数分别进行参数数量合法性的判断、参数类型合法性的判断、参数数值或字符长度的合法性的判断等。经过分流处理函数处理后,会反馈处理结果,反馈的处理结果包括:将非法输入的错误提示或正确输入的反馈拼成输出的字符串,输出字符串也会与输入输出设备绑定,方便后面通过输出函数反馈给用户。
67.本技术实施例还提供一种计算机存储介质,计算机存储介质中存储有计算机程序,计算机程序被处理器执行时实现上述数据匹配处理的方法。
68.图2为本技术实施例输入输出设备的组成框图,如图2所示,包括:存储器和处理器,存储器中保存有计算机程序;其中,
69.处理器被配置为执行存储器中的计算机程序;
70.计算机程序被处理器执行时实现如上述数据匹配处理的方法。
71.以下通过应用示例对本技术实施例进行简要说明,应用示例仅用于陈述本技术实施例,并不用于限定本技术的保护范围。
72.本技术实施例的数据匹配处理,包括:
73.步骤201、主机将指令协议信息存储为第一文本文件,将输入输出设备信息存储为第二文本文件;
74.在一种示例性实例中,本技术实施例第一文本文件和第二文本文件中的字段分别按照预先设定的顺序排列;在一种示例性实例中,第一文本文件中每一行指令协议信息中所包含的字段从左到右依次为:第一哈希地址初始值、指令协议id、指令协议字符串、指令协议处理函数名称、指令协议类型、指令协议使用说明和指令协议样例。在一种示例性实例中,第二文本文件中每一行输入输出设备信息中所包含的字段从左到右依次为:第二哈希地址初始值、输入输出设备id、输入输出设备字符串和输入输出设备说明。
75.需要说明的是,本技术实施例上述第一哈希地址初始值和第二哈希地址初始值并不是最终真正使用的哈希值,通过后续均匀哈希处理生成在程序里应用的哈希值。
76.在一种示例性实例中,本技术实施例无论是指令协议信息还是输入输出设备信息,每一个信息中可以包含相应的指令协议id和输入输出设备id,用于程序中逻辑处理;指令协议id和输入输出设备id可以按照预先设定的规则,按照添加顺序进行扩展增加,指令协议id和输入输出设备id也会写入到用户手册中,便于用户查询使用。
77.本技术实施例对指令协议信息或输入输出设备信息进行增加、删除或修改操作时,直接对第一文本文件和第二文本文件进行处理即可,第一文本文件和第二文本文件可以与项目程序文件一起通过配置管理工具(svn)进行配套管理维护。为了满足可扩展性和可维护性,存在修改存储输入输出设备的名称字符串和指令协议的字符串的情况。增加字符串可以通过增加新行追加在已有的字符串之后;删除字符串时,可以直接删文本文件中对应的行。本技术实施例无论增加、修改指令协议或删除不用的指令协议,还是增加、修改输入输出设备或删除不用的输入输出设备,只需要修改对应的文本文件即可,提高了管理的灵活性。
78.步骤202、主机编译固件代码时,通过编译预设的均值哈希算法对存储的第一文本文件和第二文本文件进行哈希运算处理,获得对应于第一文本文件的第一哈希表文件和对应于第二文本文件的第二哈希表文件;其中,均值哈希算法基于二进制的位运算实现;
79.本技术实施例通过使用二进制的位运算代替通用哈希算法中的模运算,降低了计算复杂度,提高了计算效率。以下通过4进行模运算和“#”字符进行示例比较说明:“#”字符对应的ascii十进制值为35,模运算为:35%4=3;本技术实施例基于二进制的位运算为:35&3=00100011&0011=3。
80.本技术实施例通过使用第一哈希表文件和第二哈希表文件的双字符串哈希相结合,降低了哈希碰撞的概率;在编译固件代码时动态生成均匀的哈希表文件,减少程序初始化时的资源消耗的同时,为提高指令协议字符串匹配的命中率提供了支持。
81.在一种示例性实例中,相关技术中增加和/或删除指令协议,都会导致已有的配置文本中的哈希表分布不均匀。本技术实施例在pc平台上编译固件代码时,通过调用均值哈希算法的工具处理第一文本文件和第二文本文件,生成第一哈希表文件(hashlist_commandlog.txt)和第二哈希表文件(hashlist_device.txt);第一哈希表文件和第二哈希表文件中包含第一文本文件和第二文本文件通过均值哈希算法计算获得的不同字符串的哈希值;第一哈希表文件和第二哈希表文件为均匀分布的哈希表,以此可以提升后续哈希匹配处理的效率。
82.在一种示例性实例中,本技术实施例为了实现第一哈希表文件和第二哈希表文件的均匀分布,引入素数种子作为系数,进行哈希化计算;使用素数不会产生循环,也会让数据在哈希表中更均匀分布。在一种示例性实例中,本技术实施例选用131作为素数种子;利用选用的素数种子计算字符串的哈希值,以计算含有n个字符的字符串的哈希值公式如下:
83.哈希值=131^(n-1)*p(n-1)+131^(n-2)*p(n-2)+
…
+131^1*p(1)+p(0)
84.其中p(n-1)表示每个字符对应的ascii值。
85.通过以下bkdrhash函数,实现计算字符串的哈希值:
86.int bkdrhash(const char*str)
87.{
88.uint seed=131;//选用131作为素数种子
89.uint hash=0;
90.while(*str)//通过循环,计算输入字符串str的哈希值
91.{
92.hash=hash*seed+(*str);
93.str++;
94.}
95.return(hash&0x7fffffffl);//返回计算出的哈希值的有效位的数值
96.}。
97.步骤203、输入输出设备在运行的代码中关联获得的第一哈希表文件和第二哈希表文件,并加载生成的第一哈希表文件和第二哈希表文件到静态变量数据结构中;其中,静态变量数据结构包括一个以上哈希列表数组;
98.在一种示例性实例中,本技术实施例加载生成的第一哈希表文件和第二哈希表文件到静态变量数据结构中,包括:在嵌入式设备上运行程序时,进行以下初始化操作:通过指令协议管理类的初始化函数,读取第一哈希表文件,将所有指令协议存储到哈希列表中;根据指令协议类型,将哈希列表内指令协议中包含的命令协议存放到命令哈希列表数组,将哈希列表内指令协议中包含的log协议存放到log哈希列表数组中,哈希列表数组中存有第一哈希地址初始值和第二哈希地址初始值通过均匀哈希算法计算获得的哈希值(即合法的哈希地址)。通过设备管理类的初始化函数加载第二哈希表文件,将所有的输入输出设备信息存放到设备哈希数组中;每个设备都有唯一的输入输出设备id和哈希值。本技术实施例通过区分命令协议和log协议两种类型,提高了匹配处理效率。
99.在一种示例性实例中,本技术实施例可以按照预设格式存储上述log协议;例如,按照log名称、设备名称和输出频率的排序存储log协议;以log协议为rangea com1 1为例,该log协议表示:通过com1请求1hz输出频率的rangea的输出。
100.步骤204、输入输出设备接收到外部输入的指令协议字符串时,验证接收到的指令协议字符串是否存在于加载到的静态变量数据结构,并根据验证结果确定是否执行该指令协议字符串与输入输出设备的绑定处理。
101.在一种示例性实例中,本技术实施例输入输出设备中加载的程序,通过调用字符串解析程序,验证外部输入(用户输入)的指令协议字符串是否存在于静态变量数据结构,即是否存在于在前已初始化的指令哈希列表数组或log哈希列表数组中,并完成该指令协
议字符串与输入输出设备的绑定。在一种示例性实例中,本技术实施例每个输入输出设备可以通deviceio类中的输入字符串的校验函数,实现输入的指令协议字符串的校验。
102.本技术实施例通过双字符串哈希处理,为管理维护各输入输出设备与输入的指令协议字符串的对应关系提供了信息支持。
103.在一种示例性实例中,本技术实施例验证接收到的指令协议字符串是否存在于加载到的静态变量数据结构,包括:
104.对加载到的静态变量数据结构中第一哈希表文件和第二哈希表文件,进行递归的三等分处理,获得相应的等分哈希表;第一哈希表文件三等分处理获得的等分哈希表的最小长度大于第一最大长度,第二哈希表文件三等分处理获得的等分哈希表的最小长度大于第二最大长度;
105.将接收到的指令协议字符串通过均值哈希算法进行哈希运算处理,获得对应于该指令协议字符串的指令协议哈希值;其中,均值哈希算法基于二进制的位运算实现;
106.将获得的指令协议哈希值与获得的等分哈希表进行匹配,确定接收到的指令协议字符串是否存在于加载到的静态变量数据结构中。
107.在一种示例性实例中,本技术实施例将输入的指令协议字符串按每个字符对应的ascii十进制值,根据包含二进制的位运算的哈希运算处理,生成相应的哈希值,将生成的哈希值分别与命令哈希列表数组、log哈希列表数组中的哈希值进行匹配处理。
108.在一种示例性实例中,对输入指令协议字符串进行匹配处理之前,本技术实施例方法还包括:
109.分别确定第一哈希表文件中指令协议字符串的第一最大长度和第二哈希表文件中输入输出设备的第二最大长度;
110.将确定的第一最大长度和第二最大长度,写入到程序代码的头文件中。
111.在一种示例性实例中,本技术实施例第一最大长度和第二最大长度的确定,可以在生成第一哈希表文件和第二哈希表文件时执行。通过将确定的第一最大长度和第二最大长度写入到程序代码的头文件,动态实现存储哈希表的最大长度,方便程序初始化时申请真实需要的存储空间,避免了申请过多的存储空间和因申请的存储空间不足而导致运行异常。通过在pc端的均匀哈希预处理和相关的计算,不用在程序运行初始化时计算大量字符串的哈希值,可减轻程序运行初始化时的资源消耗。
112.在一种示例性实例中,获得指令协议哈希值和等分哈希表之后,本技术实施例通过哈希匹配函数确定接收到的指令协议字符串是否存在于加载到的静态变量数据结构中;确定接收到的指令协议字符串存在于加载到的静态变量数据结构时,认为匹配成功,此时确认根据指令协议字符串生成的哈希地址是否合法;若确认生成的哈希地址合法,则进入后续的执行该指令协议字符串对应的输入输出设备的绑定处理及输出指令协议字符串执行后的反馈数据等处理流程;若确定接收到的指令协议字符串未存在于加载到的静态变量数据结构,则认为匹配失败,此时哈希地址非法,则退出处理流程,并反馈给用户:指令协议字符串匹配失败,或输入了不符合协议规范的指令协议字符串。本技术实施例基于第一最大长度和第二最大长度进行匹配处理,将算法复杂度由o(n)*o(n)降低为o(n/log3n)*o(n/log3n),整体复杂度为o(n)o(n/log3n)。
113.本技术实施例对设备名称,即用户交互的输入输出设备的名称,有些物理输入输
出设备的数量是固定的,如串口,有些输入输出设备的数量是根据实际应用的情况动态扩展变化的,如网口,每有一路网络连入,即生成一个虚拟的网络设备名称与之对应,网络连接数量可达上千个,为了更好的管理维护这些网络设备,本技术实施例引入输入输出设备的字符串哈希对输入输出设备进行管理,为了通过设备名称匹配,对用户输入指令协议字符串进行处理后,将反馈数据通过字符串的形式输出到用户想输出的输入输出设备。
114.在一种示例性实例中,本技术实施例默认输入设备和输出设备是相同的,比如用户通过串口1输入命令versiona,在不指定输出设备的情况下,默认将该命令的反馈字符串通过串口1输出;以下是串口1的反馈数据:
115.$command,versiona,response:ok*45;
116.#versiona,37,gps,fine,2253,442308000,0,0,18,844;"ub4b0","r5.00bu ild22875","b123g125r12e15a5bs1z125-hrbmdf0011n1-s20-p20-a3p","-","1953506740603","2023/02/17"*66656294;
117.本技术实施例中的输入设备和输出设备有可能不同,在一种示例性实例中,本技术实施例log协议中包含输出设备的信息,即通过log协议可以指定输出反馈数据的输出设备;比如、通过串口1(即com1)输入log协议的gngga com2 1,表示gngga按1hz的输出频率通过输出串口2(即com2)输出,则处理输入信息后,反馈数据以字符串的形式通过串口2输出。
118.本技术实施例接收到指令协议字符串时,判断指令协议字符串中是否指定输出设备,未指定输出设备时,确定输出设备为输入设备。当指令协议字符串中指定输出设备时,将处理指令协议字符串后输出的反馈数据通过指定的输出设备输出。
119.在一种示例性实例中,本技术实施例指令协议字符串的匹配过程如下:
120.对于指令协议字符串,无论是命令协议还是log协议,均是进行纯字符串的匹配,第一个空格前的字符串就是要识别的字符串。比如配置坐标的命令字符串:mode base 40.078993938 116.236612846 58.0388,只需要对mode进行识别处理即可;再比如请求输出1hz输出频率的gngga:gngga com11,只需要对gngga进行识别处理即可。
121.本技术实施例可标记输入指令协议字符串的输入输出设备,log协议输出会制定对应的io设备。在一种示例实例中,本技术实施例方法还包括将io设备字符串与设备哈希数组进行哈希匹配。本技术实施例在嵌入式系统包含多个io设备端口(即输入输出端口)时,在识别输入的字符串时,同时确定该输入来自的io设备,将输入的字符串与io设备标识绑定,方便在输出对应输入的反馈时,输出到正确的io设备。
122.在一种示例性实例中,本技术实施例方法还包括执行步骤205的处理;
123.步骤205、输入输出设备对哈希匹配成功的指令协议字符串,根据第一哈希表文件和第二哈希表文件,获得设备id和指令协议id,并根据预先设定的与输入输出设备id与指令协议id对应的字符串处理函数,对指令协议字符串进行处理。
124.在一种示例性实例中,本技术实施例中的log协议中的字符串可以是固定的,在一种示例性实例中,log协议中的字符串可以按照log名称、输入输出设备和log频率的方式进行存储;在一种示例性实例中,本技术实施例可以通过一个分流函数对log协议进行统一处理。
125.基于命令参数数量和参数类型不同考虑,本技术实施例命令指令的字符串预先设置有相应的分流处理函数,分流处理函数分别进行参数数量合法性的判断、参数类型合法
性的判断、参数数值或字符长度的合法性的判断等。经过分流处理函数处理后,会反馈处理结果,反馈的处理结果包括:将非法输入的错误提示或正确输入的反馈拼成输出的字符串,输出字符串也会与输入输出设备绑定,方便后面通过输出函数反馈给用户。
126.本技术实施例通过引入双字符串哈希,结合多个输入输出设备名称和每个设备输入的多条不同的指令协议字符串,分别从设备名称维度和输入字符串维度进行管理维护。在pc端编译嵌入式软件的固件时,通过调用支持均值哈希算法,使得第一哈希表文件和第二哈希表文件尽可能的均匀分布,程序运行初始化时,直接加载均匀分布的第一哈希表文件和第二哈希表文件。在输入输出设备的名称字符串匹配和指令协议字符串匹配环节,引入三等分算法,提高了匹配效率;实现了对多个不同io设备及每个设备对应输入的指令协议字符串的高效管理。
127.本技术实施例中的字符串哈希可以是构造一个数字,该数字可唯一代表这个字符串;本技术实施例中字符可以是ascii字符,各个字符对应ascii表都有对应的数值。本技术实施例计算字符串的哈希值,每个字符串的哈希值是唯一的,从而避免了哈希碰撞,实现高效的字符串匹配;进而通过字符串哈希值实现了指令协议、io设备的管理和维护。
128.本技术实施例提高了指令协议的管理效率,增强了指令协议增加、删除和修改的灵活性;通过实验验证,可以支持8000多条指令协议的管理。
129.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
技术特征:
1.一种数据匹配处理的方法,包括:接收指令协议字符串;在接收到的指令协议字符串存在于预先设置的静态变量数据结构时,执行该指令协议字符串对应的输入输出设备的绑定处理;根据执行的绑定处理,输出指令协议字符串执行后的反馈数据;其中,所述静态变量数据结构中包含预先加载的第一哈希表文件和第二哈希表文件;所述第一哈希表文件为对第一文本文件进行哈希运算处理获得的文件,所述第一文本文件包括指令协议信息;所述第二哈希表文件为对第二文本文件进行哈希运算处理获得的文件,所述第二文本文件包括输入输出设备信息。2.根据权利要求1所述的方法,其特征在于:所述第一文本文件中的每一行指令协议信息中包含按照第一预设排序的以下一项或任意组合的字段:第一哈希地址初始值、指令协议的唯一身份编号id、指令协议字符串、指令协议处理函数名称、指令协议类型、指令协议使用说明和指令协议样例;所述第二文本文件中的每一行输入输出设备信息中包含按照第二预设排序的以下一项或任意组合的字段:第二哈希地址初始值、输入输出设备id、输入输出设备字符串和输入输出设备说明。3.根据权利要求2所述的方法,其特征在于,所述第一文本文件中的指令协议信息中包含所述指令协议id,所述第二文本文件中的输入输出设备信息中包含所述输入输出设备id,且接收的指令协议字符串存在于静态变量数据结构时,所述方法还包括:根据预先设定的与所述输入输出设备id和所述指令协议id对应的字符串处理函数,对所述指令协议字符串进行处理。4.根据权利要求1所述的方法,其特征在于,所述静态变量数据结构中包含预先加载的第一哈希表文件和第二哈希表文件,包括:一个以上哈希列表数组中包含预先加载的第一哈希表文件和第二哈希表文件。5.根据权利要求4所述的方法,其特征在于,所述一个以上哈希列表数组,包括:用于加载所述第一哈希表文件内包含指令协议中的命令协议的命令哈希列表数组;用于加载所述第一哈希表文件内包含指令协议中的信息log协议的log哈希列表数组;用于加载所述第二哈希表文件内包含的输入输出设备信息的设备哈希数组。6.根据权利要求1至5任一项所述的方法,其特征在于,确定接收到的指令协议字符串是否存在于静态变量数据结构,通过以下步骤实现:对所述静态变量数据结构中的所述第一哈希表文件和所述第二哈希表文件进行递归的三等分处理,获得相应的等分哈希表;以及,将接收到的指令协议字符串进行哈希运算处理,获得相应的指令协议哈希值;将所述指令协议哈希值与所述等分哈希表进行匹配处理,以确定所述指令协议字符串是否存在于静态变量数据结构中;其中,所述第一哈希表文件三等分处理获得的等分哈希表的最小长度大于或等于预先设定的第一最大长度,所述第二哈希表文件三等分处理获得的等分哈希表的最小长度大于或等于预先设定的第二最大长度。7.根据权利要求1至5任一项所述的方法,其特征在于,所述哈希运算处理,包括:
基于均值哈希算法进行的哈希运算处理。8.根据权利要求7所述的方法,其特征在于,所述均值哈希算法基于二进制的位运算实现。9.根据权利要求7所述的方法,其特征在于,所述基于均值哈希算法进行的哈希运算处理,包括:以预设的素数种子作为均值哈希算法的系数,进行哈希化计算。10.根据权利要求6所述的方法,其特征在于,所述将所述指令协议哈希值与所述等分哈希表进行匹配处理之前,所述方法还包括:确定所述第一哈希表文件中包含的指令协议的字符串的最大长度,将该指令协议的字符串的最大长度确定为所述第一最大长度;确定所述第二哈希表文件中输入输出设备的字符串的最大长度,将该输入输出设备的字符串的最大长度确定为所述第二最大长度;将所述第一最大长度和所述第二最大长度写入到头文件中。11.根据权利要求1至5任一项所述的方法,其特征在于,所述输出所述指令协议字符串执行后的反馈数据之前,所述方法还包括:在所述第一文本文件中的指令协议信息包含的log协议中,添加输出反馈数据的输出设备。12.一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11中任一项所述的数据匹配处理的方法。13.一种输入输出设备,包括:存储器和处理器,所述存储器中保存有计算机程序;其中,处理器被配置为执行存储器中的计算机程序;所述计算机程序被所述处理器执行时实现如权利要求1至11中任一项所述的数据匹配处理的方法。
技术总结
本申请公开一种数据匹配处理的方法、计算机存储介质及输入输出设备,包括:接收指令协议字符串;在接收到的指令协议字符串存在于预先设置的静态变量数据结构时,执行该指令协议字符串对应的输入输出设备的绑定处理;根据执行的绑定处理输出指令协议字符串执行后的反馈数据;其中,静态变量数据结构中包含预先加载的第一哈希表文件和第二哈希表文件;第一哈希表文件为对第一文本文件进行哈希运算处理获得的文件,第一文本文件包括指令协议信息;第二哈希表文件为对第二文本文件进行哈希运算处理获得的文件,第二文本文件包括输入输出设备信息。本申请提高了数据解析匹配的处理效率。率。率。
技术研发人员:任晓斌 兰晓明 胡木吉勒
受保护的技术使用者:和芯星通科技(北京)有限公司
技术研发日:2023.04.24
技术公布日:2023/8/1
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/