一种数据中转方法、装置和计算机可读存储介质转让专利

申请号 : CN201911086462.9

文献号 : CN110809048B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵龙飞来杰王帅杨思成陈相羽张正友

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本发明实施例公开了一种数据中转方法、装置和计算机可读存储介质;本发明实施例在接收发送端发送的待中转数据包后,该待中转数据包携带发送端标识和至少一个接收端标识,根据通信协议,解析待中转数据包的内存存储模式,并将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包,然后,根据接收端标识,对统一后待中转数据包进行分割,得到接收端标识对应的初始待发送数据包,当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包,并将待发送数据包发送至接收端标识对应的接收端;可以扩展特定系统下通信的自由度。

权利要求 :

1.一种数据中转方法,其特征在于,包括:

接收发送端发送的待中转数据包,所述待中转数据包携带发送端标识和至少一个接收端标识,所述待中转数据包中还包括正文数据;

根据通信协议,解析所述待中转数据包的内存存储模式,当所述正文数据存在多种内存存储模式时,确定所述正文数据的原始数据结构;

对所述正文数据的原始数据结构转换为目标数据结构,得到转换后正文数据;

根据所述通信协议,确定目标内存存储模式;

在所述转换后正文数据中将内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待中转数据包;

根据所述接收端标识,对所述统一后待中转数据包进行分割,得到所述接收端标识对应的初始待发送数据包;

当所述发送端标识与预设标识匹配时,根据所述通信协议,将所述初始待发送数据包的所述目标内存存储模式进行还原,得到待发送数据包,并将所述待发送数据包发送至所述接收端标识对应的接收端。

2.根据权利要求1所述的数据中转方法,其特征在于,所述待中转数据包中还包括起始位标识数据,所述起始位标识数据用于指示正文数据在所述待中转数据包中的位置,所述根据通信协议,解析所述待中转数据包的内存存储模式,包括:采用单字节寄存器对所述待中转数据包进行读取;

当读取到所述起始位标识数据时,在所述待中转数据包中识别出正文数据;

根据所述通信协议,确定所述正文数据的内存存储模式。

3.根据权利要求2所述的数据中转方法,其特征在于,所述采用单字节寄存器对所述待中转数据包进行读取,包括:将所述待中转数据包划分为多个单字节数据;

确定当前需要处理的单字节数据,得到当前单字节数据;

通过所述单字节寄存器,对当前单字节数据与预设起始位标识数据进行匹配;

当所述当前单字节数据与预设起始位标识数据匹配时,确定在所述待中转数据包中读取到所述起始位标识数据;

当所述当前单字节数据与预设起始位标识数据不匹配时,将所述当前单字节数据从所述单字节寄存器中去除,将当前单字节数据更新为下一个单字节数据,并返回执行通过所述单字节寄存器,对当前单字节数据与预设起始位标识数据进行匹配的步骤,直到读取到所述起始位标识数据为止。

4.根据权利要求2所述的数据中转方法,其特征在于,所述在所述待中转数据包中识别出正文数据,包括:将所述起始位标识数据之后的单字节数据依次存储至预设容量的缓存器;

当所述缓存器的容量存储满时,在存储至所述缓存器的数据中提取正文长度信息;

根据所述正文长度信息,在所述待中转数据包中识别出正文数据。

5.根据权利要求4所述的数据中转方法,其特征在于,所述根据所述正文长度信息,在所述待中转数据包中识别出正文数据,包括:在所述待中转数据包中筛选出所述起始位标识数据和存储至所述缓存器的数据以外的剩余数据;

对所述剩余数据进行排序,得到排序后剩余数据;

根据所述正文长度信息,在所述排序后剩余数据中识别出所述正文数据。

6.根据权利要求5所述的数据中转方法,其特征在于,所述根据长度信息,在所述排序后剩余数据中识别出所述正文数据,包括:从所述排序后剩余数据的第一个字节开始,在所述排序后剩余数据中筛选出所述正文长度信息对应字节的初始正文数据;

在所述初始正文数据中筛选出转义字符数据;

对所述转义字符数据进行数据还原,得到所述正文数据。

7.根据权利要求6所述的数据中转方法,其特征在于,所述在所述转换后正文数据中将内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待中转数据包,包括:在所述转换后正文数据中筛选出单个字节的数字,得到单字节数字;

将所述单字节数字转换为第一字符串;

对所述转换后正文数据除了所述单字节数字以外的字符的内存存储模式进行调整,得到统一的目标内存存储模式的第二字符串;

将所述第一字符串和所述第二字符串进行合并,得到统一数据格式的统一后待中转数据包。

8.根据权利要求7所述的数据中转方法,其特征在于,所述对所述转换后正文数据除了所述单字节数字以外的字符的内存存储模式进行调整,得到统一的目标内存存储模式的第二字符串,包括:在所述转换后正文数据中筛选出所述单字节数字以外的剩余字符;

对所述剩余字符按照内存存储模式进行分类;

根据分类结果,将不同类型的字符进行分段,并进行隔离;

在隔离区域,对所述不同类型的字符的内存存储模式统一为所述目标内存存储模式,得到所述第二字符串。

9.根据权利要求8所述的数据中转方法,其特征在于,所述在隔离区域,对所述不同类型的字符的内存存储模式统一为所述目标内存存储模式,得到所述第二字符串,包括:在所述隔离区域,分别确定所述不同类型字符的高位字节和低位字节;

根据所述目标内存存储模式,将所述高位字节与所述低位字节进行统一,得到所述内存存储模式统一为目标内存存储模式的字符;

将所述字符转换为字符串,得到所述第二字符串。

10.根据权利要求1所述的数据中转方法,其特征在于,所述根据所述接收端标识,对所述统一后待中转数据包进行分割,得到所述接收端标识对应的初始待发送数据包,包括:在所述统一后待中转数据包中筛选出所述接收端标识对应的待发送数据;

在所述统一后待中转数据包中对所述待发送数据进行标记;

根据标记结果,对所述统一后待中转数据包进行分割,得到初始待发送数据包。

11.根据权利要求10所述的数据中转方法,其特征在于,所述当所述发送端标识与预设标识匹配时,根据所述通信协议,将所述初始待发送数据包的所述目标内存存储模式进行还原,得到待发送数据包,并将所述待发送数据包发送至所述接收端标识对应的接收端,包括:将所述发送端标识与预设标识进行匹配;

当所述发送端标识与预设标识匹配时,根据所述通信协议,将所述初始待发送数据包的所述目标内存存储模式进行还原,得到待发送数据包;

将所述待发送数据包发送至所述接收端标识对应的接收端。

12.根据权利要求11所述的数据中转方法,其特征在于,所述根据所述通信协议,将所述初始待发送数据包的所述目标内存存储模式进行还原,得到待发送数据包,包括:根据所述通信协议,对所述初始待发送数据包的所述目标内存存储模式进行还原,得到还原后初始待发送数据包;

将所述还原后初始待发送数据包中的所述目标数据结构转换为所述原始数据结构,得到转换后初始待发送数据包;

对所述转换后初始待发送数据包进行转义字符操作,得到所述待发送数据包。

13.一种数据中转装置,其特征在于,包括:

接收单元,用于接收发送端发送的待中转数据包,所述待中转数据包携带发送端标识和至少一个接收端标识,所述待中转数据包中还包括正文数据;

解析单元,用于根据通信协议,解析所述待中转数据包的内存存储模式,当所述正文数据存在多种内存存储模式时,确定所述正文数据的原始数据结构;对所述正文数据的原始数据结构转换为目标数据结构,得到转换后正文数据;根据所述通信协议,确定目标内存存储模式;在所述转换后正文数据中将内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待中转数据包;

分割单元,用于根据所述接收端标识,对所述统一后待中转数据包进行分割,得到所述接收端标识对应的初始待发送数据包;

发送单元,用于当所述发送端标识与预设标识匹配时,根据所述通信协议,将所述初始待发送数据包的所述目标内存存储模式进行还原,得到待发送数据包,并将所述待发送数据包发送至所述接收端标识对应的接收端。

14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至12任一项所述的数据中转方法中的步骤。

说明书 :

一种数据中转方法、装置和计算机可读存储介质

技术领域

[0001] 本发明涉及通信技术领域,具体涉及一种数据中转方法、装置和计算机可读存储介质。

背景技术

[0002] 近年来,随着通信技术的发展,工业中的设备与设备的通信也变得日益便捷,现有的工业通信技术主要采用的是基于Modbus(一种串行通信协议)的远程终端单元(Remote Terminal Unit,RTU)来中转数据以实现工业设备与设备之间的通信。
[0003] 在对现有技术的研究和实践过程中,本发明的发明人发现现有的数据中转方法中,对报文信息数据的解析方式比较单一,当报文信息数据中存在多种内存存储模式的混编数据时,无法进行解析,因此,大大影响了特定系统下通信的自由度。

发明内容

[0004] 本发明实施例提供一种数据中转方法、装置和计算机可读存储介质。可以扩展特定系统下通信的自由度。
[0005] 一种数据中转方法,包括:
[0006] 接收发送端发送的待中转数据包,所述待中转数据包携带发送端标识和至少一个接收端标识;
[0007] 根据通信协议,解析所述待中转数据包的内存存储模式,并将所述待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包;
[0008] 根据所述接收端标识,对所述统一后待中转数据包进行分割,得到所述接收端标识对应的初始待发送数据包;
[0009] 当所述发送端标识与预设标识匹配时,根据所述通信协议,将所述初始待发送数据包的所述目标内存存储模式进行还原,得到待发送数据包,并将所述待发送数据包发送至所述接收端标识对应的接收端。
[0010] 相应的,本发明实施例提供一种数据中转装置,包括:
[0011] 接收单元,用于接收发送端发送的待中转数据包,所述待中转数据包携带发送端标识和至少一个接收端标识;
[0012] 解析单元,用于根据通信协议,解析所述待中转数据包的内存存储模式,并将所述待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包;
[0013] 分割单元,用于根据所述接收端标识,对所述统一后待中转数据包进行分割,得到所述接收端标识对应的初始待发送数据包;
[0014] 发送单元,用于当所述发送端标识与预设标识匹配时,根据所述通信协议,将所述初始待发送数据包的所述目标内存存储模式进行还原,得到待发送数据包,并将所述待发送数据包发送至所述接收端标识对应的接收端。
[0015] 可选的,在一些实施例中,所述解析单元,具体可以用于采用单字节寄存器对所述待中转数据包进行读取,当读取到所述起始位标识数据时,在所述待中转数据包中识别出正文数据,根据所述通信协议,确定所述正文数据的内存存储模式。
[0016] 可选的,在一些实施例中,所述解析单元,具体可以用于将所述待中转数据包划分为多个单字节数据,确定当前需要处理的单字节数据,得到当前单字节数据,通过所述单字节寄存器,对当前单字节数据与预设起始位标识数据进行匹配,当所述当前单字节数据与预设起始位标识数据匹配时,确定在所述待中转数据包中读取到所述起始位标识数据,当所述当前单字节数据与预设起始位标识数据不匹配时,将所述当前单字节数据从所述单字节寄存器中去除,将当前单字节数据更新为下一个单字节数据,并返回执行通过所述单字节寄存器,对当前单字节数据与预设起始位标识数据进行匹配的步骤,直到读取到所述起始位标识数据为止。
[0017] 可选的,在一些实施例中,所述解析单元,具体可以用于将所述起始位标识数据之后的单字节数据依次存储至预设容量的缓存器,当所述缓存器的容量存储满时,在存储至所述缓存器的数据中提取正文长度信息,根据所述正文长度信息,在所述待中转数据包中识别出正文数据。
[0018] 可选的,在一些实施例中,所述解析单元,具体可以用于在所述待中转数据包中筛选出所述起始位标识数据和存储至所述缓存器的数据以外的剩余数据,对所述剩余数据进行排序,得到排序后剩余数据,根据所述正文长度信息,在所述排序后剩余数据中识别出所述正文数据。
[0019] 可选的,在一些实施例中,所述解析单元,具体可以用于从所述排序后剩余数据的第一个字节开始,在所述排序后剩余数据中筛选出所述正文长度信息对应字节的初始正文数据,在所述初始正文数据中筛选出转义字符数据,对所述转义字符数据进行数据还原,得到所述正文数据。
[0020] 可选的,在一些实施例中,所述解析单元,具体可以用于当所述正文数据存在多种内存存储模式时,确定所述正文数据的原始数据结构,对所述正文数据的原始数据结构转换为目标数据结构,得到转换后正文数据,根据所述通信协议,确定所述目标内存存储模式,在所述转换后正文数据中将内存存储模式统一为目标内存存储模式,得到统一数据格式的所述统一后待中转数据包。
[0021] 可选的,在一些实施例中,所述解析单元,具体可以用于在所述转换后正文数据中筛选出单个字节的数字,得到单字节数字,将所述单字节数字转换为第一字符串,对所述转换后正文数据除了所述单字节数字以外的字符的内存存储模式进行调整,得到统一的目标内存存储模式的第二字符串,将所述第一字符串和所述第二字符串进行合并,得到统一数据格式的统一后待中转数据包。
[0022] 可选的,在一些实施例中,所述解析单元,具体可以用于在所述转换后正文数据中筛选出所述单字节数字以外的剩余字符,对所述剩余字符按照内存存储模式进行分类,根据分类结果,将不同类型的字符进行分段,并进行隔离,在隔离区域,对所述不同类型的字符的内存存储模式统一为所述目标内存存储模式,得到所述第二字符串。
[0023] 可选的,在一些实施例中,所述解析单元,具体可以用于在所述隔离区域,分别确定所述不同类型字符的高位字节和低位字节,根据所述目标内存存储模式,将所述高位字节与所述低位字节进行统一,得到所述内存存储模式统一为目标内存存储模式的字符,将所述字符转换为字符串,得到所述第二字符串。
[0024] 可选的,在一些实施例中,所述分割单元,具体可以用于在所述统一后待中转数据包中筛选出所述接收端标识对应的待发送数据,在所述统一后待中转数据包中对所述待发送数据进行标记,根据标记结果,对所述统一后待中转数据包进行分割,得到初始待发送数据包。
[0025] 可选的,在一些实施例中,所述发送单元,具体可以用于将所述发送端标识与预设标识进行匹配,当所述发送端标识与预设标识匹配时,根据所述通信协议,将所述初始待发送数据包的所述目标内存存储模式进行还原,得到待发送数据包,将所述待发送数据包发送至所述接收端标识对应的接收端。
[0026] 可选的,在一些实施例中,所述发送单元,具体可以用于根据所述通信协议,对所述初始待发送数据包的所述目标内存存储模式进行还原,得到还原后初始待发送数据包,将所述还原后初始待发送数据包中的所述目标数据结构转换为所述原始数据结构,得到转换后初始待发送数据包,对所述转换后初始待发送数据包进行转义字符操作,得到所述待发送数据包。
[0027] 此外,本发明实施例还提供一种电子设备,包括处理器和存储器,所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序实现本发明实施例提供的数据中转方法。
[0028] 此外,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一种数据中转方法中的步骤。
[0029] 本发明实施例在接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识,根据通信协议,解析待中转数据包的内存存储模式,并将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包,然后,根据接收端标识,对统一后待中转数据包进行分割,得到接收端标识对应的初始待发送数据包,当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包,并将待发送数据包发送至接收端标识对应的接收端;由于该方案可以对多种内存存储模式的混编数据的内存存储模式进行统一,得到统一后待中转数据包,完成对混编数据的解析,并根据解析结果,将待中转数据包中的待发送数据包发送至接收端标识对应的接收端,因此,可以大大扩展特定系统下通信的自由度。

附图说明

[0030] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0031] 图1是本发明实施例提供的数据中转方法的场景示意图;
[0032] 图2是本发明实施例提供的数据中转方法的流程示意图;
[0033] 图3是本发明实施例提供的识别正文数据的流程示意图;
[0034] 图4是本发明实施例提供的发送待发送数据包的流程示意图;
[0035] 图5是本发明实施例提供的数据中转方法的另一流程示意图;
[0036] 图6是本发明实施例提供的统一内存存储模式的流程示意图;
[0037] 图7是本发明实施例提供的数据中转装置的结构示意图;
[0038] 图8是本发明实施例提供的数据中转装置的解析单元的结构示意图;
[0039] 图9是本发明实施例提供的数据中转装置的分割单元的结构示意图;
[0040] 图10是本发明实施例提供的数据中转装置的发送单元的结构示意图;
[0041] 图11是本发明实施例提供的电子设备的结构示意图。

具体实施方式

[0042] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043] 本发明实施例提供一种数据中转方法、装置和计算机可读存储介质。其中,该数据中转装置可以集成在电子设备中,该电子设备可以是服务器,也可以是终端等设备。
[0044] 例如,参见图1,以数据中转装置集成在电子设备中为例,接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识,根据通信协议,解析待中转数据包的内存存储模式,并将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包,然后,根据接收端标识,对统一后待中转数据包进行分割,得到接收端标识对应的初始待发送数据包,当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包,并将待发送数据包发送至接收端标识对应的接收端。
[0045] 以下分别进行详细说明。需要说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
[0046] 本实施例将从数据中转装置的角度进行描述,该数据中转装置具体可以集成在电子设备中,该电子设备可以是服务器,也可以是终端等设备;其中,该终端可以包括平板电脑、笔记本电脑、以及个人计算(PC,Personal Computer)等设备。
[0047] 一种数据中转方法,包括:
[0048] 接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识,根据通信协议,解析待中转数据包的内存存储模式,并将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包,根据接收端标识,对统一后待中转数据包进行分割,得到接收端标识对应的初始待发送数据包,当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包,并将待发送数据包发送至接收端标识对应的接收端。
[0049] 如图2所示,该数据中转方法的具体流程如下:
[0050] 101、接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识。
[0051] 其中,待中转数据包可以为发送端设备需要通过数据中转装置中转给接收端的数据包,比如,设备A需要将信息1发送给设备B,将信息2发送给设备C,此时将信息1和信息2组成数据包,该数据包不能直接发送给设备B和设备C,需要第三方设备中转,则该数据包就可以为待中转数据包。
[0052] 所谓数据包,可以为在通信协议中通信传输的数据单位,数据包可以携带发送端标识和接收端标识,以通信协议为Modbus RTU为例,则数据包可以为Modbus RTU的报文信息和发送端设备的发送端标识,其中报文信息中一般由地址码、功能码,数据区和检验码,如下表1所示:
[0053] 表1:Modbus RTU的报文信息的指令格式
[0054]
[0055] 其中,起始位标识数据可以为预先设定的整个报文信息的数据起始位数据,用于提示该起始位标识数据之后的数据为完整的报文信息,该数据起始位数据并不属于报文信息,只是属于起始控制指令,接收到该控制指令后,就开始接收完整的报文信息,与起始控制指令相对应的还可以包括终止控制指令,终止控制指令可以在地址码之后,终止控制指令也并不是报文信息中的数据,只是用于提示用户控制指令已经结束,现在可以开始读取功能码。因此,以表1为例,该报文信息的数据可以为01/10/01/8D/00/04/00/00/00/01/A8/7E。地址码存储接收端的身份标识,也称从机的身份标识(Identity Document,ID),功能码定义了常用的读写字节的操作,数据区为报文信息中的正文数据,该正文数据为发送给接收端的数据,一般为二进制数据,数据区根据不同的功能会有所不同,最后的检验码检测收到的数据是否完整。
[0056] 例如,接收发送端发送的待中转数据的方式有多种,比如,可以通过有线网络和无线网络进行接收,可以为互联网,也可以为局域网,将通过有线或无线网络接收的待中转数据包缓存至本地,再通过串口的形式去以单个字节或者多个字节的形式去接收待中转数据包中的数据。还可以从第三方数据池或者数据库中接收发送端发送的待中转数据包。比如,发送端将待中转数据包的数据和接收端标识发送或者放置与数据池或者数据库,当数据库或者数据池中接收到数据和接收端标识时,向数据中转装置发送接收请求,数据中转装置在数据库或数据池中提取数据和接收端标识,将数据和接收标识按照预设的通信协议自行打包生成待中转数据包。
[0057] 102、根据通信协议,解析待中转数据包的内存存储模式,并将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包。
[0058] 其中,内存存储模式可以为数据中字节的排列方式,常见的内存存储模式可以为大端模式和小端模式,大端模式可以为数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放。而小端模式可以为数据的高字节保存在内存的高地址中,而数据的低字节保存在内在的低地址中,这种存储模式将地址的高低和数据位权有效结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。其中,小端模式常用于本地主机中,大端模式常用于网络通信上。
[0059] (1)根据通信协议,解析待中转数据包的内存存储模式。
[0060] S1、采用单字节寄存器对待中转数据包进行读取。
[0061] 其中,单字节寄存器可以为具有单个字节存储容量的高速存贮部件,可以用来暂存指令、数据和地址,由于其容量为一个字节,因此,可以存贮一个字节的指令、数据和地址。
[0062] 例如,将待中转数据包划分为多个单字节数据,比如,以表1为例,数据可以划分为01/10/01/8D/00/04/00/00/00/01/A8/7E,还包括一个起始位标识数据05,该起始位标识数据为控制指令。确定当前需要处理的单字节数据,得到当前单字节数据,比如,通过串口去依次读取单字节数据,当读取到第一个单字节数据01时,此时01就为当前单字节数据。通过当前单字节寄存器,对当前单字节数据与预设起始位标识数据进行匹配,比如,将当前单字节数据发送至单字节寄存器进行寄存,在单字节寄存器中将当前单字节数据与预设起始位标识数据进行匹配,譬如,比如,预设起始位标识数据为单字节数据05,此时将当前单字节数据与单字节数据05进行匹配。当当前单字节数据与预设起始位标识数据05匹配成功时,则确定该当前单字节数据为起始位标识数据05。当当前单字节数据与预设起始位标识数据不匹配时,比如,当前单字节数据为A8时,将当前单字节数据A8从单字节寄存器中去除,将当前单字节数据更新为下一位单字节数据,则此时当前单字节数据为7E,对当前单字节数据与预设起始位标识数据进行匹配的步骤,直到读取到所述起始位标识数据为止,比如,将当前单字节数据7E与预设起始位标识数据进行匹配,很显然,匹配失败,则将当前单字节数据更新为7E的下一位单字节数据,假设下一位单字节数据为05时,此时,将当前单字节数据
05与预设起始位标识数据进行匹配,很显然可以匹配成功,假如,仍然匹配失败时,将当前单字节数据继续进行更新,得到更新后的当前单字节数据,将更新后的当前单字节数据继续与预设起始位标识数据进行匹配,直到匹配成功为止。
[0063] S2、当读取到起始位标识数据时,在待中转数据包中识别出正文数据。
[0064] 其中,起始位标识数据用于指示正文数据在待中转数据包中的位置,根据正文数据在待中转数据包的位置,可以在待中转数据包中识别出正文数据。所谓正文数据为Modbus RTU的报文信息中的正文,即发送给接收端的数据。
[0065] 如图3所述,在待中转数据包中识别出正文数据的流程如下:
[0066] A1、将起始位标识数据之后的单字节数据依次存储至预设容量的缓存器。
[0067] 其中,缓存器可以为对数据、指令和地址等进行缓存的存储容器,一般的容量都不是特别大。
[0068] 例如,将起始位标识数据之后的单字节数据依次存储至预设容量的缓存器中,比如,以表1的报文信息为例,当起始位标识数据为05时,则将单字节数据05之后的数据依次存储至预设容量的缓存器中,假设预设容量为6个字节,则将单字节数据05之后6个字节的单字节数据存储至低容量的缓存器之后,该缓存器的容量就已经存储满了,则该缓存器中存储的单字节数据为01/10/01/8D/00/04,其中,需要强调的是,当报文信息中存在终止控制指令时,该控制指令并不是报文信息中的数据,因此,该终止控制指令可以不用存储至缓存器中。
[0069] A2、当缓存器的容量存储满时,在存储至缓存器的数据中提取正文长度信息。
[0070] 其中,正文长度信息可以为指示在待中转数据包中正文数据所在的长度,长度以字节为单位,比如,正文长度信息为04时,则表明在待中转数据包中的正文数据的长度为4个字节的二进制数据。
[0071] 例如,当缓存器的容量存储满时,比如,缓存器的容量为6个字节的单字节数据,则缓存器中存储6个字节的单字节数据时,该缓存器的容量存储满。在存储至缓存器的数据中提取正文长度信息,比如,以表1的报文信息的结构为例,存储至缓存器的单字节数据分别为01/10/01/8D/00/04,在6个单字节数据中按照预设策略提取正文长度,譬如,可以设定为从6个单字节数据中的最后一个字节中提取正文长度信息,则提取出的正文长度信息为04,说明该待中转数据包中的正文数据的长度为4个字节,还可以那个从6个单字节数据中的最后两个字节中提取正文长度信息,比如,最后两个单字节数据为00和04,00和04对应的可以是两个寄存器的数量,一个寄存器对应两个字节的数据,因为00和04对应的为2个寄存器,因此,可以得出该报文信息中的正文长度信息为4个字节,由于Modbus通信协议中正文数据一般为二进制数据,因此,可以得出正文数据的长度为4个二进制数据。
[0072] 其中需要说明的是,可以根据实际应用来设置提取正文长度信息的单字节数据的位置和数量,还可以根据实际应用来设置。
[0073] A3、根据正文长度信息,在待中转数据包中识别出正文数据。
[0074] 例如,根据正文长度信息,比如,以正文长度信息为4个字节的二进制数据为例。在待中转数据包中筛选出起始位标识数据和存储至缓存器的数据以外的剩余数据,比如,以表1的报文信息的结构为例,将待中转数据包中的除了起始位标识数据05和存储至缓存器的6个单字节数据01/10/01/8D/00/04以外的数据筛选出剩余数据。对剩余数据进行排序,识别出正文数据的长度之后,继续接收该报文信息的剩余数据,譬如,以表1为例,剩余数据为00/00/00/01/A8/7E,将接收到这些数据按照接收时间进行排序,得到排序后的剩余数据为00/00/00/01/A8/7E。根据正文长度信息,在排序后剩余数据中识别出正文数据,比如,从排序后剩余数据的第一个字节00开始,在排序后剩余数据中筛选出正文长度信息对应字节的正文数据,可以得到正文数据为00/00/00/01。假设起始位标识数据为01时,此时可以发现,正文数据中也存在起始位标识数据,在这种情况下,发送端在发送待中转数据包之前需要对正文数据中跟起始位标识数据相同的数据进行转义字符操作。因此在这种情况下,接收到正文数据后,需要对正文数据中通过转义字符操作的数据进行还原,还原为01,才可以得到正文数据00/00/00/01。
[0075] 其中,需要强调的时,本发明实施例采用单字节寄存器和低容量缓存器可以快速便捷的在待中转数据中识别出正文数据,而现有技术采用的时对整条报文信息进行读取,读取到最后的CRC校验码时,对CRC校验码进行识别并进行校验,校验通过时,才能继续在整条报文信息中提取到相应的正文数据,在高频通信中,当通信信道较为可靠时,对整条报文信息判断再操作反而会影响通信效率。
[0076] S3、根据通信协议,确定正文数据的内存存储模式。
[0077] 其中,通信协议可以为双方实体完成通信或服务所必须遵循的规则和约定。通过通信信道和设备互连起来的多个不同地理位置的数据通信系统,要使其能协同工作实现信息交换和资源共享,它们之间必须具有共同的语言。交流什么、怎样交流及何时交流,都必须遵循某种互相都能接受的规则。这个规则就是通信协议。
[0078] 例如,根据通信协议,确定正文数据中每一部门二进制数据的内存存储模式,比如,内存存储模式为大端模式和小端模式为例,假设正文数据中包含多个部门的二进制数据,譬如,正文数据分为A、B和C三个部分,其中,A为00/10/01/10,通信协议中直接规定了该部分的二进制数据为大端模式,因此,通过通信协议,可以直接确定每个部分的二进制数据的内存存储模式。
[0079] (2)将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包。
[0080] C1、当正文数据存在多种内存存储模式时,确定正文数据的原始数据结构;
[0081] 例如,当正文数据中存在大端模式和小端模式混编时,确定正文书的原始数据结构,根据Modbus的通信协议可以得出,正文数据的原始数据为二进制数据。
[0082] C2、对正文数据的原始数据结构转换为目标数据结构,得到转换后正文数据。
[0083] 例如,将二进制正文数据转换为目标数据结构,得到转换后正文数据,比如,目标数据结构可以为十六进制字符,将二进制正文数据转换为十六进制字符,在数据结构转换过程中,二进制数据转换为十六进制字符时,每个单字节数据的内存存储模式不会发变化,比如,在二进制数据中单个字节二进制数据和对应的十六进制字符的内存存储模式保持一致,比如,二进制数据0100和对应的十六进制字符的内存存储模式保持一致。
[0084] C3、根据通信协议,确定目标内存存储模式。
[0085] 例如,根据通信协议,针对转换后正文数据,确定内存存储模式,比如,根据通信协议,为了识别转换后正文数据中每个接收端标识对应的数据,需要确定一种统一格式数据的目标内存存储模式,可以将十六进制字符转换为字符串,则目标内存存储模式为字符串对应的目标内存存储模式,即目标内存存储模式为大端模式。
[0086] C4、在转换后正文数据中将内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待中转数据包。
[0087] 例如,在转换后正文数据中筛选出单个字节的数字,得到单字节数字,比如,在转换后正文数据中筛选出0、1或2等单个字节的单字节数字,将筛选出的单字节数字转换为第一字符串。在转换后正文数据中除了单字节数字以外的字符的内存存储模式进行调整,得到统一的目标内存存储模式的第二字符串,比如,在转换后正文数据中筛选出单字节数字以外的剩余字符,对剩余字符按照内存存储模式进行分类,比如,将大端模式的字符的分为一类,将小端模式的字符分为一类,将不同类型的字符进行分段,并进行隔离,在隔离区域,分别确认大端模式和小端模式对应的字符的高位字节和低位字节。根据目标内存存储模式,将高位字节与低位字节进行统一,得到内存存储模式统一的目标内存存储模式的字符,比如,当目标内存存储模式为大端模式时,此时针对大端模式的字符的内存存储模式保持不变,针对小端模式的字符,将小端模式的字符的高位字节和低位字节相互转换,因为,小端模式的字符,高位字节存储在高位内存中,低位字节存储在低位内存中,此时将高位字节和低位字节相互转化,则存储在高位内存中的高位字节变为低位字节,存储在低位内存的低位字节变为高位字节,因此,小端模式的字符此时的内存存储模式已经变成大端模式,使得剩余字符中的所有字符的内存存储模式变为目标内存存储模式,将剩余字符转换为第二字符串。将单字节数字的第一字符串和剩余字符的第二字符串进行合并,得到统一数据格式的统一后待中转数据包,此时,待中转数据包中的需要发送的正文数据已经变成统一数据格式的字符串数据了。
[0088] 其中,在此需要强调的是,对于统一正文数据的内存存储模式,可选的,还可以直接基于原始数据结构进行调整,也就是直接基于二进制正文数据进行统一,但是由于二进制数据的可读性太差,导致在二进制数据中对高位字节和低位字节的转换效率较低。而采用十六进制字符,对高位字节和低位字节的转换非常便捷。因此,本实施例采用十六进制字符对内存存储模式(大小端模式)进行统一。
[0089] 103、根据接收端标识,对统一后待中转数据包进行分割,得到接收端标识对应的初始待发送数据包。
[0090] 其中,初始待发送数据包可以为发送给每一个接收端的数据包,该初始数据包中的数据的格式仍然为统一的数据格式,比如,统一为字符串。但是,根据通信协议,接收端不能识别和读取这种数据格式,接收端可以读取二进制数据,因此,还需要进一步还原数据结构,所以称为初始待发送数据包。
[0091] 例如,在统一后待中转数据包中筛选接收端标识对应的待发送数据,比如,以统一后待中转数据包中的数据为字符串为例,在字符串数据中筛选出每个接收端标识对应的待发送数据,譬如,在字符串数据中包括发送给设备A的数据1和发送给设备B的数据2,根据设备A和设备B的标识筛选出数据1和数据2。在统一后待中转数据包中对待发送数据进行标记,比如,在待中转数据包中标记出数据1和数据2的位置。根据标记结果,对统一后待中转数据包进行分割,得到初始待发送数据包,比如,对待中转数据包中的字符串数据按照数据1和数据2的标记进行分割,得到包含数据1的第一部分字符串数据和包含数据2的第二部分字符串数据,将发送端标识和对应的接收端标识分别打包至第一部分字符串数据和第二部分字符串数据,得到设备A对应的初始待发送数据包和设备B对应的初始待发送数据包。
[0092] 104、当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包,并将待发送数据包发送至接收端标识对应的接收端。
[0093] 其中,待发送数据包可以为发送至各个接收端对应的数据信息。该待发送数据包包括正文数据、发送端标识和对应的接收端标识。
[0094] 如图4所示,将待发送数据包发送至接收端标识对应的接收端的流程如下;
[0095] (1)将发送端标识与预设标识进行匹配。
[0096] 例如,将发送端标识与预设标识进行匹配,比如,当发送端设备标识为设备A,在预设标识信息中对设备A进行匹配,如果匹配成功,表明该设备A是合法的发送端设备,可以进行下一步的操作不走,如果匹配不成功,则表明该设备A是非法的发送端设备,此时结束对初始待发送数据包的处理或者传输。
[0097] (2)当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包。
[0098] 例如,当发送端设备为合法的发送端设备时,根据通信协议,对初始待发送数据包的目标内存存储模式进行还原,得到待发送数据包。比如,将每个接收端标识对应的初始待发送数据包中字符串数据转换为十六进制字符,根据通信协议,对每个字符的目标内存存储模式进行还原,由于目标内存存储模式为大端模式,因此,将原本采用大端模式的字符的内存存储模式不调整,将原本采用小端模式的字符的内存存储模式还原为小端模式,得到还原后初始待发送数据包。将还原后初始待发送数据包中的目标数据结构转换为原始数据结构,得到转换后初始待发送数据包。比如,将还原后初始待发送数据包中的十六进制字符转换为二进制数据,得到二进制的初始待发送数据包。为了避免发送给接收端的数据中,正文数据中出现起始位标识数据的字节,因此,需要对转换后初始待发送数据包进行转义字符操作,得到每个接收端标识对应的待发送数据包。
[0099] 在此需要强调的是,转换为二进制,是根据通信协议,根据Modbus RTU接收端可以读取二进制数据,对其他格式的数据无法读取。
[0100] (3)将待发送数据包发送接收端标识对应的接收端。
[0101] 例如,在接收端标识中提取出接收端接收待发送数据包的接收地址,根据该接收地址,将待发送数据包发送至接收端标识对应的接收端。具体的发送方式可以有多种,比如,可以通过有线或无线网络,将待发送数据包直接发送至接收地址对应的接收端,还可以先发送一个发送数据请求给接收地址对应的接收端,当接收到接收端的同意指令时,再将待发送数据包发送至该接收端,当未接收到接收端的指令时,可以设定一个等待时间,当等待时间一到仍未收到接收端的同意指令时,将待发送数据包发送至该接收端。将待发送数据包发送至接收端时,还可以给发送端发送一个反馈信息,该反馈信息可以包括发送时间和接收端标识等信息。
[0102] 由以上可知,本实施例在接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识,根据通信协议,解析待中转数据包的内存存储模式,并将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包,然后,根据接收端标识,对统一后待中转数据包进行分割,得到接收端标识对应的初始待发送数据包,当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包,并将待发送数据包发送至接收端标识对应的接收端;由于该方案可以对多种内存存储模式的混编数据的内存存储模式进行统一,得到统一后待中转数据包,完成对混编数据的解析,并根据解析结果,将待中转数据包中的待发送数据包发送至接收端标识对应的接收端,因此,可以大大扩展特定系统下通信的自由度。
[0103] 根据上面实施例所描述的方法,以下将举例作进一步详细说明。
[0104] 在本实施例中,将以该数据中转装置具体集成在电子设备,多种内存存储模式分别为大端模式和小端模式,目标数据结构为十六进制字符,目标内存存储模式为字符串对应的大端模式为例进行说明。
[0105] 如图5所示,一种数据中转方法,具体流程如下:
[0106] 201、电子设备接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识。
[0107] 例如,电子设备可以通过有线网络和无线网络进行接收,可以为互联网,也可以为局域网,将通过有线或无线网络接收的待中转数据包缓存至本地,再通过串口的形式去以单个字节或者多个字节的形式去接收待中转数据包中的数据。还可以从第三方数据池或者数据库中接收发送端发送的待中转数据包。比如,发送端将待中转数据包的数据和接收端标识发送或者放置与数据池或者数据库,当数据库或者数据池中接收到数据和接收端标识时,向数据中转装置发送接收请求,数据中转装置在数据库或数据池中提取数据和接收端标识,将数据和接收标识按照预设的通信协议自行打包生成待中转数据包。
[0108] 202、电子设备根据通信协议,解析待中转数据包的内存存储模式。
[0109] (1)采用单字节寄存器对待中转数据包进行读取。
[0110] 例如,电子设备将待中转数据包划分为多个单字节数据,比如,以表1为例,可以划分为01/10/01/8D/00/04/00/00/00/01/A8/7E,还包括一个起始位标识数据05,该起始位标识数据为控制指令。确定当前需要处理的单字节数据,得到当前单字节数据,比如,通过串口去依次读取单字节数据,当读取到第一个单字节数据01时,此时01就为当前单字节数据。通过当前单字节寄存器,对当前单字节数据与预设起始位标识数据进行匹配,比如,将当前单字节数据发送至单字节寄存器进行寄存,在单字节寄存器中将当前单字节数据与预设起始位标识数据进行匹配,譬如,比如,预设起始位标识数据为单字节数据05,此时将当前单字节数据与单字节数据05进行匹配。当当前单字节数据与预设起始位标识数据05匹配成功时,则确定该当前单字节数据为起始位标识数据05。当当前单字节数据与预设起始位标识数据不匹配时,比如,当前单字节数据为A8时,将当前单字节数据A8从单字节寄存器中去除,将当前单字节数据更新为下一位单字节数据,则此时当前单字节数据为7E,对当前单字节数据与预设起始位标识数据进行匹配的步骤,直到读取到所述起始位标识数据为止,比如,将当前单字节数据7E与预设起始位标识数据进行匹配,很显然,匹配失败,则将当前单字节数据更新为7E的下一位单字节数据,假设下一位单字节数据为05时,此时,将当前单字节数据05与预设起始位标识数据进行匹配,很显然可以匹配成功,假如,仍然匹配失败时,将当前单字节数据继续进行更新,得到更新后的当前单字节数据,将更新后的当前单字节数据继续与预设起始位标识数据进行匹配,直到匹配成功为止。
[0111] (2)当读取到起始位标识数据时,电子设备在待中转数据包中识别出正文数据。
[0112] D1、电子设备将起始位标识数据之后的单字节数据依次存储至预设容量的缓存器。
[0113] 例如,以表1的报文信息为例,当起始位标识数据为05时,则将单字节数据05之后的数据依次存储至预设容量的缓存器中,假设预设容量为6个字节,则电子设备将单字节数据05之后6个字节的单字节数据存储至低容量的缓存器之后,该缓存器的容量就已经存储满了,则该缓存器中存储的单字节数据为01/10/01/8D/00/04,其中,需要强调的是,当报文信息中存在终止控制指令时,该控制指令并不是报文信息中的数据,因此,该终止控制指令可以不用存储至缓存器中。
[0114] D2、当缓存器的容量存储满时,电子设备在存储至缓存器的数据中提取正文长度信息。
[0115] 例如,当缓存器的容量为6个字节的单字节数据,则缓存器中存储6个字节的单字节数据时,该缓存器的容量存储满。在存储至缓存器的数据中提取正文长度信息,比如,以表1的报文信息的结构为例,存储至缓存器的单字节数据分别为01/10/01/8D/00/04,在6个单字节数据中按照预设策略提取正文长度,譬如,可以设定为从6个单字节数据中的最后一个字节中提取正文长度信息,则提取出的正文长度信息为04,说明该待中转数据包中的正文数据的长度为4个字节,还可以那个从6个单字节数据中的最后两个字节中提取正文长度信息,比如,最后两个单字节数据为00和04,00和04对应的可以是两个寄存器的数量,一个寄存器对应两个字节的数据,因为00和04对应的为2个寄存器,因此,可以得出该报文信息中的正文长度信息为4个字节,由于Modbus通信协议中正文数据一般为二进制数据,因此,可以得出正文数据的长度为4个二进制数据。
[0116] D3、电子设备根据正文长度信息,在待中转数据包中识别出正文数据。
[0117] 例如,以正文长度信息为4个字节的二进制数据为例,电子设备在待中转数据包中筛选出起始位标识数据和存储至缓存器的数据以外的剩余数据,比如,以表1的报文信息的结构为例,将待中转数据包中的除了起始位标识数据05和存储至缓存器的6个单字节数据01/10/01/8D/00/04以外的数据筛选出剩余数据。对剩余数据进行排序,识别出正文数据的长度之后,继续接收该报文信息的剩余数据,譬如,以表1为例,剩余数据为00/00/00/01/A8/7E,将接收到这些数据按照接收时间进行排序,得到排序后的剩余数据为00/00/00/01/A8/7E。根据正文长度信息,在排序后剩余数据中识别出正文数据,比如,从排序后剩余数据的第一个字节00开始,在排序后剩余数据中筛选出正文长度信息对应字节的正文数据,可以得到正文数据为00/00/00/01。假设起始位标识数据为01时,此时可以发现,正文数据中也存在起始位标识数据,在这种情况下,发送端在发送待中转数据包之前需要对正文数据中跟起始位标识数据相同的数据进行转义字符操作。因此在这种情况下,接收到正文数据后,需要对正文数据中通过转义字符操作的数据进行还原,还原为01,才可以得到正文数据
00/00/00/01。
[0118] (3)根据通信协议,电子设备确定正文数据的内存存储模式。
[0119] 例如,根据通信协议,电子设备确定正文数据中每一部门二进制数据的内存存储模式,比如,内存存储模式为大端模式和小端模式为例,假设正文数据中包含多个部门的二进制数据,譬如,正文数据分为A、B和C三个部分,其中,A为00/10/01/10,通信协议中直接规定了该部分的二进制数据为大端模式,因此,通过通信协议,可以直接确定每个部分的二进制数据的内存存储模式。
[0120] 203、电子设备将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包。
[0121] 如图6所示,将内存存储模式统一为目标内存存储模式的流程如下:
[0122] (1)当正文数据存在多种内存存储模式时,电子设备确定正文数据的原始数据结构。
[0123] 例如,当正文数据中存在大端模式和小端模式混编时,确定正文书的原始数据结构,根据Modbus的通信协议可以得出,正文数据的原始数据为二进制数据。
[0124] (2)电子设备对正文数据的原始数据结构转换为目标数据结构,得到转换后正文数据。
[0125] 例如,电子设备将二进制正文数据转换为十六进制字符,在数据结构转换过程中,二进制数据转换为十六进制字符时,每个单字节数据的内存存储模式不会发变化,比如,在二进制数据中单个字节二进制数据和对应的十六进制字符的内存存储模式保持一致,比如,二进制数据0100和对应的十六进制字符的内存存储模式保持一致。
[0126] (3)根据通信协议,电子设备确定目标内存存储模式。
[0127] 例如,根据通信协议,电子设备为了识别转换后正文数据中每个接收端标识对应的数据,需要确定一种统一格式数据的目标内存存储模式,可以将十六进制字符转换为字符串,则目标内存存储模式为字符串对应的目标内存存储模式,即目标内存存储模式为大端模式。
[0128] (4)电子设备在转换后正文数据中将内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待中转数据包。
[0129] 例如,电子设备在转换后正文数据中筛选出单个字节的数字,得到单字节数字,比如,在转换后正文数据中筛选出0、1或2等单个字节的单字节数字,将筛选出的单字节数字转换为第一字符串。在转换后正文数据中除了单字节数字以外的字符的内存存储模式进行调整,得到统一的目标内存存储模式的第二字符串,调整过程主要针对大小端字符和单字节数字进行规范字节字符的操作,比如,在转换后正文数据中筛选出单字节数字以外的剩余字符,对剩余字符按照内存存储模式进行分类,比如,将大端模式的字符的分为一类,将小端模式的字符分为一类,将不同类型的字符进行分段,并进行隔离,在隔离区域,分别确认大端模式和小端模式对应的字符的高位字节和低位字节。根据目标内存存储模式,将高位字节与低位字节进行统一,得到内存存储模式统一的目标内存存储模式的字符,比如,当目标内存存储模式为大端模式时,此时针对大端模式的字符的内存存储模式保持不变,针对小端模式的字符,将小端模式的字符的高位字节和低位字节相互转换,因为,小端模式的字符,高位字节存储在高位内存中,低位字节存储在低位内存中,此时将高位字节和低位字节相互转化,则存储在高位内存中的高位字节变为低位字节,存储在低位内存的低位字节变为高位字节,因此,小端模式的字符此时的内存存储模式已经变成大端模式,使得剩余字符中的所有字符的内存存储模式变为目标内存存储模式,将剩余字符转换为第二字符串。将单字节数字的第一字符串和剩余字符的第二字符串进行合并,得到统一数据格式的统一后待中转数据包,此时,待中转数据包中的需要发送的正文数据已经变成统一数据格式的字符串数据了。
[0130] 204、根据接收端标识,电子设备对统一后待中转数据包进行分割,得到接收端标识对应的初始待发送数据包。
[0131] 例如,电子设备在字符串数据中筛选出每个接收端标识对应的待发送数据,比如,在字符串数据中包括发送给设备A的数据1和发送给设备B的数据2,根据设备A和设备B的标识筛选出数据1和数据2。在统一后待中转数据包中对待发送数据进行标记,比如,在待中转数据包中标记出数据1和数据2的位置。根据标记结果,对统一后待中转数据包进行分割,得到初始待发送数据包,比如,对待中转数据包中的字符串数据按照数据1和数据2的标记进行分割,得到包含数据1的第一部分字符串数据和包含数据2的第二部分字符串数据,将发送端标识和对应的接收端标识分别打包至第一部分字符串数据和第二部分字符串数据,得到设备A对应的初始待发送数据包和设备B对应的初始待发送数据包。
[0132] 205、电子设备将发送端标识与预设标识进行匹配。
[0133] 例如,将发送端标识与预设标识进行匹配,比如,当发送端设备标识为设备A,在预设标识信息中对设备A进行匹配,如果匹配成功,表明该设备A是合法的发送端设备,可以进行下一步的操作不走,如果匹配不成功,则表明该设备A是非法的发送端设备,此时结束对初始待发送数据包的处理或者传输。
[0134] 206、当发送端标识与预设标识匹配时,电子设备根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包。
[0135] 例如,当发送端设备为合法的发送端设备时,根据通信协议,对初始待发送数据包的目标内存存储模式进行还原,得到待发送数据包。比如,将每个接收端标识对应的初始待发送数据包中字符串数据转换为十六进制字符,根据通信协议,对每个字符的目标内存存储模式进行还原,由于目标内存存储模式为大端模式,因此,将原本采用大端模式的字符的内存存储模式不调整,将原本采用小端模式的字符的内存存储模式还原为小端模式,得到还原后初始待发送数据包。将还原后初始待发送数据包中的十六进制字符转换为二进制数据,得到二进制的初始待发送数据包。为了避免发送给接收端的数据中,正文数据中出现起始位标识数据的字节,因此,需要对转换后初始待发送数据包进行转义字符操作,得到每个接收端标识对应的待发送数据包。
[0136] 207、电子设备将待发送数据包发送接收端标识对应的接收端。
[0137] 例如,电子设备在接收端标识中提取出接收端接收待发送数据包的接收地址,根据该接收地址,将待发送数据包发送至接收端标识对应的接收端。具体的发送方式可以有多种,比如,可以通过有线或无线网络,将待发送数据包直接发送至接收地址对应的接收端,还可以先发送一个发送数据请求给接收地址对应的接收端,当接收到接收端的同意指令时,再将待发送数据包发送至该接收端,当未接收到接收端的指令时,可以设定一个等待时间,当等待时间一到仍未收到接收端的同意指令时,将待发送数据包发送至该接收端。将待发送数据包发送至接收端时,还可以给发送端发送一个反馈信息,该反馈信息可以包括发送时间和接收端标识等信息。
[0138] 由以上可知,本实施例电子设备在接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识,根据通信协议,解析待中转数据包的内存存储模式,并将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包,然后,根据接收端标识,对统一后待中转数据包进行分割,得到接收端标识对应的初始待发送数据包,当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包,并将待发送数据包发送至接收端标识对应的接收端;由于该方案可以对多种内存存储模式的混编数据的内存存储模式进行统一,得到统一后待中转数据包,完成对混编数据的解析,并根据解析结果,将待中转数据包中的待发送数据包发送至接收端标识对应的接收端,因此,可以大大扩展特定系统下通信的自由度。
[0139] 为了更好地实施以上方法,本发明实施例还提供一种数据中转装置,该数据中转装置可以集成在电子设备,比如服务器或终端等设备中,该终端可以包括平板电脑、笔记本电脑和/或个人计算机等。
[0140] 例如,如图7所示,该数据中转装置可以包括接收单元301、解析单元302、分割单元303、发送单元304,如下:
[0141] (1)接收单元301;
[0142] 接收单元301,用于接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识。
[0143] 例如,接收单元301,具体可以用于通过有线网络和无线网络进行接收,可以为互联网,也可以为局域网,将通过有线或无线网络接收的待中转数据包缓存至本地,再通过串口的形式去以单个字节或者多个字节的形式去接收待中转数据包中的数据。还可以从第三方数据池或者数据库中接收发送端发送的待中转数据包。
[0144] (2)解析单元302;
[0145] 解析单元302,用于根据通信协议,解析待中转数据包的内存存储模式,并将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包。
[0146] 其中,解析单元302可以包括解析子单元3021和统一子单元3022,如图8所示,具体如下:
[0147] 解析子单元3021,用于采用单字节寄存器对待中转数据包进行读取,当读取到起始位标识数据时,在待中转数据包中识别出正文数据,根据通信协议,确定正文数据的内存存储模式。
[0148] 统一子单元3022,用于当正文数据存在多种内存存储模式时,确定正文数据的原始数据结构,对正文数据的原始数据结构转换为目标数据结构,得到转换后正文数据,根据通信协议,确定目标内存存储模式,在转换后正文数据中将内存存储模式统一为目标内存存储模式,得到统一数据格式的所述统一后待中转数据包。
[0149] 例如,解析子单元3021采用单字节寄存器对待中转数据包进行读取,当读取到起始位标识数据时,在待中转数据包中识别出正文数据,根据通信协议,确定正文数据的内存存储模式,统一子单元3022当正文数据存在多种内存存储模式时,确定正文数据的原始数据结构,对正文数据的原始数据结构转换为目标数据结构,得到转换后正文数据,根据通信协议,确定目标内存存储模式,在转换后正文数据中将内存存储模式统一为目标内存存储模式,得到统一数据格式的所述统一后待中转数据包。
[0150] (3)分割单元303;
[0151] 分割单元303,用于根据接收端标识,对统一后待中转数据包进行分割,得到接收端标识对应的初始待发送数据包。
[0152] 其中,分割单元303可以包括筛选子单元3031、标记子单元3032和分割子单元3033,如图9所示,具体如下:
[0153] 筛选子单元3031,用于在统一后待中转数据包中筛选出接收端标识对应的待发送数据;
[0154] 标记子单元3032,用于在统一后待中转数据包中对待发送数据进行标记;
[0155] 分割子单元3033,用于根据标记结果,对统一后待中转数据包进行分割,得到初始待发送数据包。
[0156] 例如,筛选子单元3031在统一后待中转数据包中筛选出接收端标识对应的待发送数据,标记子单元3032在统一后待中转数据包中对待发送数据进行标记,分割子单元3033根据标记结果,对统一后待中转数据包进行分割,得到初始待发送数据包。
[0157] (4)发送单元304;
[0158] 发送单元304,用于当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包,并将待发送数据包发送至接收端标识对应的接收端。
[0159] 其中,发送单元304可以包括匹配子单元3041、还原子单元3042和发送子单元3043,如图10所示,具体如下:
[0160] 匹配子单元3041,用于将发送端标识与预设标识进行匹配;
[0161] 还原子单元3042,用于当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标内存存储模式进行还原,得到待发送数据包;
[0162] 发送子单元3043,用于将待发送数据包发送至接收端标识对应的接收端。
[0163] 例如,匹配子单元3041将发送端标识与预设标识进行匹配,还原子单元3042当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标内存存储模式进行还原,得到待发送数据包,发送子单元3043将待发送数据包发送至接收端标识对应的接收端。
[0164] 具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
[0165] 由以上可知,本实施例接收单元301在接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识,解析单元302根据通信协议,解析待中转数据包的内存存储模式,并将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包,然后,分割单元303根据接收端标识,对统一后待中转数据包进行分割,得到接收端标识对应的初始待发送数据包,发送单元304当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包,并将待发送数据包发送至接收端标识对应的接收端;由于该方案可以对多种内存存储模式的混编数据的内存存储模式进行统一,得到统一后待中转数据包,完成对混编数据的解析,并根据解析结果,将待中转数据包中的待发送数据包发送至接收端标识对应的接收端,因此,可以大大扩展特定系统下通信的自由度。
[0166] 本发明实施例还提供一种电子设备,如图11所示,其示出了本发明实施例所涉及的电子设备的结构示意图,具体来讲:
[0167] 该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图11中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
[0168] 处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
[0169] 存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
[0170] 电子设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
[0171] 该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
[0172] 尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
[0173] 接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识,根据通信协议,解析待中转数据包的内存存储模式,并将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包,然后,根据接收端标识,对统一后待中转数据包进行分割,得到接收端标识对应的初始待发送数据包,当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包,并将待发送数据包发送至接收端标识对应的接收端。
[0174] 例如,接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识,采用单字节寄存器对待中转数据包进行读取,当读取到起始位标识数据时,在待中转数据包中识别出正文数据,根据通信协议,确定正文数据的内存存储模式,当正文数据存在多种内存存储模式时,确定正文数据的原始数据结构,对正文数据的原始数据结构转换为目标数据结构,得到转换后正文数据,根据通信协议,确定目标内存存储模式,在所述转换后正文数据中筛选出单个字节的数字,得到单字节数字,将单字节数字转换为第一字符串,对转换后正文数据除了单字节数字以外的字符的内存存储模式进行调整,得到统一的目标内存存储模式的第二字符串,将第一字符串和第二字符串进行合并,得到统一数据格式的统一后待中转数据包,在统一后待中转数据包中筛选出接收端标识对应的待发送数据,在统一后待中转数据包中对待发送数据进行标记,根据标记结果,对统一后待中转数据包进行分割,得到初始待发送数据包,将发送端标识与预设标识进行匹配,当发送端标识与预设标识匹配时,根据所述通信协议,对初始待发送数据包的目标内存存储模式进行还原,得到还原后初始待发送数据包,将还原后初始待发送数据包中的目标数据结构转换为原始数据结构,得到转换后初始待发送数据包,对转换后初始待发送数据包进行转义字符操作,得到待发送数据包,将待发送数据包发送至接收端标识对应的接收端。
[0175] 以上各个操作的具体实施可参见前面的实施例,在此不作赘述。
[0176] 由以上可知,本发明实施例在接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识,根据通信协议,解析待中转数据包的内存存储模式,并将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包,然后,根据接收端标识,对统一后待中转数据包进行分割,得到接收端标识对应的初始待发送数据包,当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包,并将待发送数据包发送至接收端标识对应的接收端;由于该方案可以对多种内存存储模式的混编数据的内存存储模式进行统一,得到统一后待中转数据包,完成对混编数据的解析,并根据解析结果,将待中转数据包中的待发送数据包发送至接收端标识对应的接收端,因此,可以大大扩展特定系统下通信的自由度。
[0177] 本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
[0178] 为此,本发明实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种数据中转方法中的步骤。例如,该指令可以执行如下步骤:
[0179] 接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识,根据通信协议,解析待中转数据包的内存存储模式,并将待中转数据包的内存存储模式统一为目标内存存储模式,得到统一数据格式的统一后待转中转数据包,然后,根据接收端标识,对统一后待中转数据包进行分割,得到接收端标识对应的初始待发送数据包,当发送端标识与预设标识匹配时,根据通信协议,将初始待发送数据包的目标存储模式进行还原,得到待发送数据包,并将待发送数据包发送至接收端标识对应的接收端。
[0180] 例如,接收发送端发送的待中转数据包,该待中转数据包携带发送端标识和至少一个接收端标识,采用单字节寄存器对待中转数据包进行读取,当读取到起始位标识数据时,在待中转数据包中识别出正文数据,根据通信协议,确定正文数据的内存存储模式,当正文数据存在多种内存存储模式时,确定正文数据的原始数据结构,对正文数据的原始数据结构转换为目标数据结构,得到转换后正文数据,根据通信协议,确定目标内存存储模式,在所述转换后正文数据中筛选出单个字节的数字,得到单字节数字,将单字节数字转换为第一字符串,对转换后正文数据除了单字节数字以外的字符的内存存储模式进行调整,得到统一的目标内存存储模式的第二字符串,将第一字符串和第二字符串进行合并,得到统一数据格式的统一后待中转数据包,在统一后待中转数据包中筛选出接收端标识对应的待发送数据,在统一后待中转数据包中对待发送数据进行标记,根据标记结果,对统一后待中转数据包进行分割,得到初始待发送数据包,将发送端标识与预设标识进行匹配,当发送端标识与预设标识匹配时,根据所述通信协议,对初始待发送数据包的目标内存存储模式进行还原,得到还原后初始待发送数据包,将还原后初始待发送数据包中的目标数据结构转换为原始数据结构,得到转换后初始待发送数据包,对转换后初始待发送数据包进行转义字符操作,得到待发送数据包,将待发送数据包发送至接收端标识对应的接收端。
[0181] 以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0182] 其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
[0183] 由于该计算机可读存储介质中所存储的指令,可以执行本发明实施例所提供的任一种数据中转方法中的步骤,因此,可以实现本发明实施例所提供的任一种数据中转方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
[0184] 以上对本发明实施例所提供的一种数据中转方法、装置和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。