通讯协议转换方法与装置与流程

文档序号:11156699阅读:605来源:国知局
通讯协议转换方法与装置与制造工艺

本公开涉及通信技术领域,具体而言,涉及一种可转换多种通讯协议的通讯协议转换方法与装置。



背景技术:

在通讯前置通讯系统开发中,经常需要为适应第三方系统自定义通讯协议而进行系统开发。现有的自定义通讯协议主要有长度约定和结束格式串约定两种常用约定:长度约定是指发送方在报文中的一定位置写入报文长度,接收方解析报文中的该报文长度标识,进而接收完整的报文。结束格式串约定是指发送方在报文的尾端写入约定的结束符,接收方在收到结束格式串后,获知接收完整。

不同第三方系统的自定义通讯协议对报文长度的格式、在报文长度在报文中的位置定义、结束符号的定义等约定各不相同,前置通讯系统开发者通常需要针对每个第三方系统进行开发,甚至在部署运行后,如果第三方接口变动,开发者还需要进行重新对前置通讯系统进行开发编译部署。

图1是一种现有的前置通讯系统对接多个第三方系统的结构示意图。参考图1,前置通讯系统在对接第三方系统时,每对接一个新系统,就需要开发一个新的通讯模块,以将第三方系统的请求通讯数据转换为前置通讯系统真正需要的业务请求数据并提交给前置通讯系统,以及将前置通讯系统应答的业务数据转换为匹配第三方自定义通讯协议的通讯数据返回给对应的第三方系统。

因此,现有技术中的通讯模块开发方式比较繁琐,且容易出错,在项目实施中,这类对接第三方系统的开发往往还会占用较多工作量,拖延开发进度。为了节省项目开发时间,提高项目开发效率,需要一种高效的通讯协议转换方法。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本公开的目的在于提供一种通讯协议转换方法与装置,用于至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或多个问题。

根据本公开的一个方面,提供一种通讯协议转换方法,包括:

用格式串描述通讯协议,保存对应至少一个通讯协议的多个格式串;

接收报文发送任务,接收业务数据以及目标通讯系统标识;

根据所述目标通讯系统标识确定目标通讯协议,查找对应所述目标通讯协议的格式串;

根据所述业务数据以及所述格式串生成符合所述目标通讯协议的报文,将所述报文发送给所述目标通讯系统。

在本公开的一种示例性实施例中,所述根据所述业务数据以及所述格式串生成符合所述目标通讯协议的报文包括:

将所述格式串加载为描述符数组;

根据所述业务数据,按照所述格式串每个字符标识的含义,遍历填写所述描述符数组;

输出填写完成的描述符数组作为报文。

在本公开的一种示例性实施例中,所述用格式串描述通讯协议包括:

设置域描述符、第三方系统的信息以及通讯协议中域的映射关系;

根据所述第三方系统的信息、所述映射关系以及接收到的实际通讯协议,确定所述第三方系统的通讯协议的域类型排列顺序;

使用域描述符描述所述域类型,根据所述域类型排列顺序排列所述域描述符。

在本公开的一种示例性实施例中,所述域类型包括长度域、结束字符串域、同步字符域、长度计算开始标识、普通字符占位以及连接关闭标识。

根据本公开的一个方面,提供一种通讯协议转换方法,包括:

用格式串描述通讯协议,保存对应至少一个通讯协议的多个格式串;

接收报文请求任务,识别目标通讯系统;

根据所述目标通讯系统确定目标通讯协议,查找对应所述目标通讯协议的格式串;

根据所述格式串将来自所述目标通讯系统的报文接收完整,并识别所述报文中的业务数据。

在本公开的一种示例性实施例中,所述根据所述格式串将来自所述目标通讯系统的报文接收完整包括:

将所述格式串加载为描述符数组;

根据所述格式串每个字符标识的含义接收所述报文,遍历填写所述描述符数组;

识别填写完成的描述符数组中的业务数据。

在本公开的一种示例性实施例中,所述用格式串描述通讯协议包括:

设置域描述符、第三方系统的信息以及通讯协议中域的映射关系;

根据所述第三方系统的信息、所述映射关系以及接收到的实际通讯协议,确定所述第三方系统的通讯协议的域类型排列顺序;

使用域描述符描述所述域类型,根据所述域类型排列顺序排列所述域描述符。

在本公开的一种示例性实施例中,所述域类型包括长度域、结束字符串域、同步字符域、长度计算开始标识、普通字符占位以及连接关闭标识。

根据本公开的一个方面,提供一种通讯协议转换装置,包括:

格式串生成模块,用于用格式串描述通讯协议,保存对应至少一个通讯协议的多个格式串;

任务接收模块,用于接收报文发送任务,接收业务数据以及目标通讯系统标识;

格式串匹配模块,用于根据所述目标通讯系统标识确定目标通讯协议,查找对应所述目标通讯协议的格式串;

报文生成模块,用于根据所述业务数据以及所述格式串生成符合所述目标通讯协议的报文,将所述报文发送给所述目标通讯系统。

在本公开的一种示例性实施例中,所述报文生成模块包括:

数组生成单元,用于将所述格式串加载为描述符数组;

数组填写单元,用于根据所述业务数据,按照所述格式串每个字符标识的含义,遍历填写所述描述符数组;

数组输出单元,用于输出填写完成的描述符数组作为报文。

在本公开的一种示例性实施例中,所述格式串生成模块包括:

元素设置单元,用于设置域描述符、第三方系统的信息以及通讯协议中域的映射关系;

协议分析单元,用于根据所述第三方系统的信息、所述映射关系以及接收到的实际通讯协议,确定所述第三方系统的通讯协议的域类型排列顺序;

协议描述单元,用于使用域描述符描述所述域类型,根据所述域类型排列顺序排列所述域描述符。

在本公开的一种示例性实施例中,所述域类型包括长度域、结束字符串域、同步字符域、长度计算开始标识、普通字符占位以及连接关闭标识。

根据本公开的一个方面,提供一种通讯协议转换装置,包括:

格式串生成模块,用于用格式串描述通讯协议,保存对应至少一个通讯协议的多个格式串;

任务接收模块,用于接收报文请求任务,识别目标通讯系统;

格式串匹配模块,用于根据所述目标通讯系统确定目标通讯协议,查找对应所述目标通讯协议的格式串;

数据提取模块,用于根据所述格式串将来自所述目标通讯系统的报文接收完整,并识别所述报文中的业务数据。

在本公开的一种示例性实施例中,所述数据提取模块包括:

数组生成单元,用于将所述格式串加载为描述符数组;

数组填写单元,用于根据所述格式串每个字符标识的含义接收所述报文,遍历填写所述描述符数组;

数据识别单元,用于识别填写完成的描述符数组中的业务数据。

在本公开的一种示例性实施例中,所述格式串生成模块包括:

元素设置单元,用于设置域描述符、第三方系统的信息以及通讯协议中域的映射关系;

协议分析单元,用于根据所述第三方系统的信息、所述映射关系以及接收到的实际通讯协议,确定所述第三方系统的通讯协议的域类型排列顺序;

协议描述单元,用于使用域描述符描述所述域类型,根据所述域类型排列顺序排列所述域描述符。

在本公开的一种示例性实施例中,所述域类型包括长度域、结束字符串域、同步字符域、长度计算开始标识、普通字符占位以及连接关闭标识。

本公开提供的通讯协议转换方法通过使用由域描述符组成的格式串描述多种通讯协议,并在与第三方系统通讯时使用格式串生成或识别第三方系统报文,将通讯协议转换模块开发过程变更为格式串生成过程。由于生成格式串相对于分别为各通讯协议编写代码更为简单,实施人员不需关注通讯细节,且格式串生成模块可以一次开发,多次使用,多次测试验证,避免了在直接编写通讯协议代码方式下,代码效率及质量依赖于程序员技术能力的情况,实现了灵活转换多种通讯协议、降低通讯开发门槛及工作量、提高项目开发效率的效果。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出一种现有的前置通讯系统对接多个第三方系统的结构示意图。

图2示意性示出本公开示例性实施例中一种通讯协议转换方法的流程图。

图3示意性示出本公开示例性实施例中另一种通讯协议转换方法的流程图。

图4示意性示出本公开示例性实施例中通讯协议转换方法的结构示意图。

图5A示意性示出本公开示例性实施例中前置通讯系统接收第三方系统信息的流程示意图。

图5B示意性示出本公开示例性实施例中前置通讯系统向第三方系统发送信息的流程示意图。

图6A示意性示出本公开示例性实施例中第三方系统A的通讯协议示意图。

图6B示意性示出本公开示例性实施例中第三方系统B的通讯协议示意图。

图7示意性示出本公开示例性实施例中一种通讯协议转换装置的方框图。

图8示意性示出本公开示例性实施例中一种另通讯协议转换装置的方框图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。

此外,附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

下面结合附图对本公开示例实施方式进行详细说明。

图2是本公开示例性实施例中一种通讯协议转换方法的流程图。

参考图2,通讯协议转换方法100可以包括:

步骤S102,用格式串描述通讯协议,保存对应至少一个通讯协议的多个格式串。

步骤S104,接收报文发送任务,接收业务数据以及目标通讯系统标识。

步骤S106,根据所述目标通讯系统标识确定目标通讯协议,查找对应所述目标通讯协议的格式串。

步骤S108,根据所述业务数据以及所述格式串生成符合所述目标通讯协议的报文,将所述报文发送给所述目标通讯系统。

本公开提供的通讯协议转换方法通过使用由域描述符组成的格式串描述多种通讯协议,并在与第三方系统通讯时使用格式串生成或识别第三方系统报文,将通讯协议转换模块开发过程变更为格式串生成过程。由于生成格式串相对于分别为各通讯协议编写代码更为简单,实施人员不需关注通讯细节,且格式串生成模块可以一次开发,多次使用,多次测试验证,避免了在直接编写通讯协议代码方式下,代码效率及质量依赖于程序员技术能力的情况,实现了灵活转换多种通讯协议、降低通讯开发门槛及工作量、提高项目开发效率的效果。

下面对通讯协议转换方法200的各步骤进行详细说明。

步骤S102,用格式串描述通讯协议,保存对应至少一个通讯协议的多个格式串。

在本公开的一种示例性实施例中,用格式串描述通讯协议包括:

1)设置域描述符、第三方系统的信息以及通讯协议中域的映射关系。

可以通过存储一映射表实现本步骤。该映射表可以存储域描述符、第三方系统信息以及通讯协议中的各个域的映射关系。其中,域描述符用于描述通信协议中的各个域的类型,例如长度域、结束格式串域、同步字符域、长度计算开始标识、普通字符占位、连接关闭标识等域类型,在描述时也可以对域描述符添加一些附加的修饰性描述。

域描述符可以采用如下定义方式,但并不限于此。

A/a:字符占位符号,用于描述报文中的一段数据,占位符号紧接数字表示该字符占用字节数,大写表示丢弃数据。例如,在发送过程中,A16表示舍弃发送报文中对应位置的16个字节数据,接收方不会收到这16个字节;在接收过程中A16表示从发送方接收16个字节并丢弃,客户端最终接收的报文中不包含此内容。

L/l:长度占位符号,用于描述长度域,需要附加用于描述长度域实际类型的标识,如32位无符号网络字节序整形、格式串类型及实际占用位数等。长度占位符号后可以紧跟长度存储类型,例如,LN32表示32位网络字节序,LN16表示16位网络字节序,LC8表示8字节字符型长度。长度域是判断报文大小的主要标识,在发送过程中,程序自动计算添加此域内容,字母大小写不敏感。在接收过程中,程序通过获取此域的值来判断实际报文长度。需要注意到是,大写字母表示舍弃这个域的内容不放入最终报文中。

H/h:报文头标识,用于描述报文头位置,当需要描述数据体长度时,此标识可以用于确定计算数据体长度的开始位置。发送时,程序根据此位置计算长度,字母大小写不敏感;接收时,程序结合此标识判断报文是否接收完整。大写字母表示丢弃本标识之前的数据,不将其写入最终报文中。

S/s:同步字符,用于描述一些应用层协议中的同步字符。同步字符占位符号后紧跟同步字符内容的16进制数据编码。发送时,程序自动填充此域,字母大小写不敏感;接收时,程序校验此域的内容,大写字母表示舍弃这个域的数据不放入最终报文。

T/t:结束符串,用于描述一些采用结束符来确定完整报文的应用层协议。结束符号后紧跟实际结束符的16进制数据编码。发送时,程序自动添加此域内容,字母大小写不敏感;接收时,大写字母表示舍弃这个结束符串,不放入最终报文。

$:流结束描述符号,用于描述一些采用TCP半关闭方式来确定完成报文的应用层协议。发送时,此符号可以触发程序在发送数据完毕后关闭发送端;接收时,此符号可以使程序接收数据直至连接断开。

2)根据第三方系统的信息、映射关系以及接收到的实际通讯协议,确定第三方系统的通讯协议的域类型排列顺序。

在此步骤中,可以根据用户输入的第三方系统信息,基于接收到的实际通讯协议,参照前述步骤中存储的映射表,分析实际通讯协议,确定第三方系统的通讯协议的域类型排列顺序。

3)使用域描述符描述域类型,根据域类型排列顺序排列域描述符。

在得到根据上述域类型排列顺序后,使用域描述符替换该顺序中的每个域类型,从而组合成描述该通讯协议的格式串。本步骤中的域类型可以包括长度域、结束字符串域、同步字符域、长度计算开始标识、普通字符占位以及连接关闭标识,但本领域技术人员可根据实际情况自由设置,本公开不以此为限。

在一些实施例中,本步骤元可提供图形配置界面,以方便使用者设置或查看格式串。

步骤S104,接收报文发送任务,接收业务数据以及目标通讯系统标识。方法100可以用于前置通讯系统对一或多个第三方系统发送通讯报文。在接收到报文发送任务时,可以提取本次任务的业务数据以及目标通讯系统标识。目标系统标识可以为前置通讯系统自定义,例如可以为数字、字母或字符串等。

步骤S106,根据所述目标通讯系统标识确定目标通讯协议,查找对应所述目标通讯协议的格式串。在确定目标通讯系统后,可以根据前述步骤中存储的映射表确定该目标通讯系统的通讯协议,并加载该通讯协议对应的格式串。

步骤S108,根据所述业务数据以及所述格式串生成符合所述目标通讯协议的报文,将所述报文发送给所述目标通讯系统。

在本公开的一种示例性实施例中,所述根据所述业务数据以及所述格式串生成符合所述目标通讯协议的报文包括:

1)将所述格式串加载为描述符数组。

可以根据格式串中的域描述符将格式串加载为描述符数组,按照域描述符顺序排列该数组,并确认数组大小。

2)根据所述业务数据,按照所述格式串每个字符标识的含义,遍历填写所述描述符数组。在一些实施例中,可以使用Switch-Case结构实现遍历描述符数组。

3)输出填写完成的描述符数组作为报文。

图3是本公开示例性实施例中另一种通讯协议转换方法的流程图。

参考图3,通讯协议转换方法200可以包括:

步骤S202,用格式串描述通讯协议,保存对应至少一个通讯协议的多个格式串。

步骤S204,接收报文请求任务,识别目标通讯系统。

步骤S206,根据所述目标通讯系统确定目标通讯协议,查找对应所述目标通讯协议的格式串。

步骤S208,根据所述格式串将来自所述目标通讯系统的报文接收完整,并识别所述报文中的业务数据。

方法200可以用于前置通讯系统获取多个第三方系统的报文,提高通讯协议转换效率。

下面对通讯协议转换方法200的各步骤进行详细说明。

在步骤S202,用格式串描述通讯协议,保存对应至少一个通讯协议的多个格式串。

在本公开的一种示例性实施例中,所述用格式串描述通讯协议包括:设置域描述符、第三方系统的信息以及通讯协议中域的映射关系;根据所述第三方系统的信息、所述映射关系以及接收到的实际通讯协议,确定所述第三方系统的通讯协议的域类型排列顺序;使用域描述符描述所述域类型,根据所述域类型排列顺序排列所述域描述符。

在本公开的一种示例性实施例中,所述域类型包括长度域、结束字符串域、同步字符域、长度计算开始标识、普通字符占位以及连接关闭标识。

步骤S202的各子步骤可参照步骤S102中的详细描述,本公开于此不再赘述。

步骤S204,接收报文请求任务,识别目标通讯系统。

当前置通讯系统需要接收一或多个第三方系统的报文时,只需要发送目标通信系统标识给实现方法200的装置。

步骤S206,根据所述目标通讯系统确定目标通讯协议,查找对应所述目标通讯协议的格式串。

步骤S208,根据所述格式串将来自所述目标通讯系统的报文接收完整,并识别所述报文中的业务数据。

在本公开的一种示例性实施例中,所述根据所述格式串将来自所述目标通讯系统的报文接收完整包括:

1)将所述格式串加载为描述符数组。

2)根据所述格式串每个字符标识的含义接收所述报文,遍历填写所述描述符数组。

在此步骤中,可以判断接收到的报文是否符合格式串中域描述符的描述,并根据域描述符遍历填写描述符数组。

3)识别填写完成的描述符数组中的业务数据。

下面通过具体实施例来对上述方法100与方法200进行详细说明。

图4示意性示出本公开示例性实施例中通讯协议转换方法的结构示意图。参考图4,本公开提供的通讯协议转换方法可以通过在第三方系统A、B......N与前置通讯系统之间增加一个通讯协议转换装置来传输并转换前置通讯系统与第三方系统A、B......N之间的通讯数据,将业务数据与通讯协议分离,为前置通讯系统屏蔽第三方系统不同通讯协议的差异。

根据本方法,前置通讯系统在向第三方系统A、B.....N发送数据时,只需将业务数据及第三方系统标识传递给通讯协议转换装置,通讯协议转换装置会根据该标识查找对应第三方系统的格式串,根据格式串对业务数据进行加工处理,最终产生符合该第三方系统通讯协议规范的数据包,并发送到指定第三方系统。当前置通讯系统向第三方系统A、B....N请求数据时,只需将第三方系统标识告知通讯协议转换装置,通讯协议转换装置会根据标识查找对应格式串,根据格式串将第三方系统发送过来的符合通讯协议规范的报文接收完整,并分离出业务数据,将业务数据返回前置通讯系统。因此,本通讯协议转换方法可以通过配置格式串来替代代码开发过程,提高开发效率。

图5A示意性示出本公开示例性实施例中前置通讯系统接收第三方系统信息的流程示意图。

图5B示意性示出本公开示例性实施例中前置通讯系统向第三方系统发送信息的流程示意图。

参考图5A以及图5B,当前置通讯系统与两个系统(A,B)之间通讯时,首先需要确认两个通讯系统分别对应的通讯协议。

图6A是第三方系统A的通讯协议示意图。

图6B是第三方系统B的通讯协议示意图。

为方便描述,现假设两个系统的某个查询业务请求数据为“john|XMJ&@SSD|”,应答数据为“john|1200.30|”(以C语言的格式串来描述)。

参考图6A以及图6B,前置通讯系统对接系统A时:

发送的请求通讯报文为“\x01\x020014john|XMJ&@SSD|”。其中,0014是因为john|XMJ&@SSD|的业务请求报文长度14字节,4位字符型长度在计算机中存储为0014。

接收的应答通讯报文为“\x01\x020013john|1200.30|”。其中,0013是因为john|1200.30|的业务应答报文长度13字节,4位字符型长度在计算中存储为0013。

对接系统B时:

发送的请求通讯报文为“\x00\x00\x00\x0ejohn|XMJ&@SSD|”。由于网络字节序是低地址保存高位,因此,长度14在计算机中可以保存为\x00\x00\x00\x0e。

接收的应答通讯报文为“\x00\x00\x00\x0djohn|1200.30|”。由于网络字节序是低地址保存高位,长度13在计算机中被保存为\x00\x00\x00\x0d。

对于两个不同的通讯协议A/B,通讯协议转换装置根据映射表中存储的第三方系统的通讯协议规范,参照域描述符定义,使用格式串描述各通讯协议的过程如下:

第一步:生成针对两个第三方系统通讯协议的发送和接收格式串。在一些实施例中,发送和接收格式串可相同。

对接系统A时,可以根据定义的域描述符及通讯协议规范生成格式串S0102LC4Ha*。由于系统A的通讯协议以一个同步字符\x01\x02开头,因此格式串以S0102占位表示协议中的同步字符域,协议中的长度域紧跟同步字符域,且数据类型为4字节字符型数据,因此可以用LC4描述长度域。协议中的长度域后紧接业务数据,且长度域只描述业务数据本身,因此可以用H来表示从此处开始计算报文真正长度,用a*来描述一块由长度确定的数据。大写的SLH和小写的a表示最终传递给前置通讯系统时,只保留业务数据本身。

对接系统B时,可以根据定义的域描述及通讯协议规范生成格式串LN32Ha*。其中,由于系统B的通讯协议以一个32位网络字节序开始的长度描述业务数据,因此格式串以LN32开头;S表示同步字符描述域,0102是对S的附加描述,表示同步字符内容的16进制字符串;L表示长度域,C4/N32是对长度的附加描述,标示长度的存储方式;H表示长度计算开始标识;A表示普通字符占位域,“*”是对A的附加描述,表示此域无明确长度,需要根据实际数据进行计算。

第二步:调用通讯协议转换装置的发送/接收操作,使用格式串发送/接收业务数据。

对接系统A时,前置通讯系统以“S0102LC4Ha*”格式串发送业务数据“john|XMJ&@SSD|”,通讯协议转换装置的处理包含:

a将格式串“S0102LC4Ha*”加载为包含同步字符域、长度域、长度计算开始位置域、字符占位域的描述符数组。

b遍历描述符数组进行处理:

第一项,处理同步字符域S0102:根据附加描述,添加一个“\x01\x02”的发送块,累积长度2(累积长度用于填入通讯协议中的长度域)。

第二项,处理长度域LC4:根据附加描述,添加一个4字节的长度域预留块,累积长度6。

第三项,处理长度计算开始标识:此处表示真正写入通讯协议长度域的值从后继项开始计算,因此修正累积长度为0。

第四项,处理普通字符占位:根据附加描述,添加一个包含整个业务数据的发送块,累积长度为业务数据的长度,由于业务数据长度为14,因此累积长度设置为14。

c根据累积长度14和长度域附加描述c4,将0014串写入长度域预留块。

d调用实际通讯API依次发送发送块中的数据。由前述可知,有3个发送块生成,第一块内容是同步字符“\x01\x02”,第二块内容是长度域“0014”,第三块内容是业务数据“john|XMJ&@SSD|”,因此最终向系统A发送的通讯报文为“\x01\x020014john|XMJ&@SSD|”,符合系统A的通讯协议。

对接系统A时,前置通讯系统以“S0102LC4Ha*”格式串接收系统A的报文数据“\x01\x020013john|1200.30|”,通讯协议转换装置的处理包含:

a将格式串“S0102LC4Ha*”加载为包含同步字符域、长度域、长度计算开始位置域、字符占位域的描述符数组。

b遍历描述符数组进行处理:

第一项,处理同步字符域:根据附加描述,接收2字节数据并与”\x01\x02”进行比较,丢弃不符合描述的数据。

第二项,处理长度域:根据附加描述,接收4字节数据“0013”,转换获得实际数据长度13,丢弃不符合描述的数据。

第三项,处理长度计算开始标识:根据已经获得的数据长度,标记待接收长度为13,根据附加描述,丢弃长度计算开始标识之前的数据。

第四项,处理普通字符占位:根据附加描述和待接收长度,接收13字节数据,并将此数据添加到已接收数据中。

c将已接收数据“john|1200.30|”作为应答报文传递给前置通讯系统。

对接系统B时,前置通讯系统以“LN32Ha*”格式串发送业务数据“john|XMJ&@SSD|”,通讯协议转换装置的处理包含:

a将格式串“LN32Ha*”加载为包含长度域、长度计算开始位置域、字符占位域的描述符数组。

b遍历描述符数组进行处理:

第一项,处理长度域:根据附加描述,添加一个4字节的长度域预留块,累积长度4。

第二项,处理长度计算开始标识:此处表示真正写入通讯协议长度域的值从后继项开始计算,因此修正累积长度为0。

第三项,处理普通字符占位:根据附加描述,添加一个包含整个业务数据的发送块,累积长度为业务数据长度,由于业务数据长度为14,因此累积长度设置为14。

c根据累积长度14和长度域附加描述N32,将“\x00\x00\x00\x0e”写入长度域预留块。

d调用实际通讯API依次发送发送块中的数据。由前述可知,共有两个发送块,第一块为长度域“\x00\x00\x00\x0e”,第二块为业务数据“john|XMJ&@SSD”,因此最终向系统B发送的通讯报文为“\x00\x00\x00\x0ejohn|XMJ&@SSD|”,符合系统B的通讯协议。

对接系统B时,前置通讯系统以“LN32Ha*”格式串接收系统B的报文数据“\x00\x00\x00\x0d john|1200.30|”,通讯协议转换装置的处理包含:

a将格式串“LN32Ha*”加载为包含长度域、长度计算开始位置域、字符占位域的描述符数组。

b遍历描述符数组进行处理:

第一项,处理长度域:根据附加描述,接收4字节数据,获得数据“\x00\x00\x00\x0d”,根据附加描述信息N32,转换获得实际数据长度13(16进制0d值为13),并丢弃不符合描述的数据。

第二项,处理长度计算开始标识:根据已经获得的数据长度,标记待接收长度为13,根据附加描述,丢弃在长度计算开始标识之前的数据。

第三项,处理普通字符占位:根据附加描述和待接收长度,接收13字节数据,并将此数据添加到已接收数据中。

c将已接收数据“john|1200.30|”作为应答业务数据传递给前置通讯系统。

对应于上述方法实施例,本公开还提供一种通讯协议转换装置,可以用于执行上述方法实施例。

图7示意性示出本公开示例性实施例中一种通讯协议转换装置的方框图。参考图7,通讯协议转换装置300可以用于将前置通讯系统的业务数据转换为符合一或多个第三方系统对应的通讯协议的报文并进行发送。装置300可以包括格式串生成模块302、任务接收模块304、格式串匹配模块306以及报文生成模块308。

格式串生成模块302可以用于用格式串描述通讯协议,保存对应至少一个通讯协议的多个格式串。

任务接收模块304可以用于接收报文发送任务,接收业务数据以及目标通讯系统标识。

格式串匹配模块306可以用于根据所述目标通讯系统标识确定目标通讯协议,查找对应所述目标通讯协议的格式串。

报文生成模块308可以用于根据所述业务数据以及所述格式串生成符合所述目标通讯协议的报文,将所述报文发送给所述目标通讯系统。

其中,格式串生成模块302可以包括:

元素设置单元,用于设置域描述符、第三方系统的信息以及通讯协议中域的映射关系。

协议分析单元,用于根据所述第三方系统的信息、所述映射关系以及接收到的实际通讯协议,确定所述第三方系统的通讯协议的域类型排列顺序。

在本公开的一种示例性实施例中,所述域类型包括长度域、结束字符串域、同步字符域、长度计算开始标识、普通字符占位以及连接关闭标识。

协议描述单元,用于使用域描述符描述所述域类型,根据所述域类型排列顺序排列所述域描述符。

报文生成模块308可以包括:

数组生成单元,用于将所述格式串加载为描述符数组。

数组填写单元,用于根据所述业务数据,按照所述格式串每个字符标识的含义,遍历填写所述描述符数组。

数组输出单元,用于输出填写完成的描述符数组作为报文。

图8示意性示出本公开示例性实施例中一种另通讯协议转换装置的方框图。参考图8,通讯协议转换装置400可以用于接收一或多个第三方系统的报文并将其转换为前置通讯系统能够识别的业务数据。装置400可以包括格式串生成模块402、任务接收模块404、格式串匹配模块406以及数据提取模块408。

格式串生成模块402可以用于用格式串描述通讯协议,保存对应至少一个通讯协议的多个格式串。

任务接收模块404可以用于接收报文请求任务,识别目标通讯系统。

格式串匹配模块406可以用于根据所述目标通讯系统确定目标通讯协议,查找对应所述目标通讯协议的格式串。

数据提取模块408可以用于根据所述格式串将来自所述目标通讯系统的报文接收完整,并识别所述报文中的业务数据。

其中,格式串生成模块402可以包括:

元素设置单元,用于设置域描述符、第三方系统的信息以及通讯协议中域的映射关系。

协议分析单元,用于根据所述第三方系统的信息、所述映射关系以及接收到的实际通讯协议,确定所述第三方系统的通讯协议的域类型排列顺序。

在本公开的一种示例性实施例中,所述域类型包括长度域、结束字符串域、同步字符域、长度计算开始标识、普通字符占位以及连接关闭标识。

协议描述单元,用于使用域描述符描述所述域类型,根据所述域类型排列顺序排列所述域描述符。

数据提取模块408可以包括:

数组生成单元,用于将所述格式串加载为描述符数组。

数组填写单元,用于根据所述格式串每个字符标识的含义接收所述报文,遍历填写所述描述符数组。

数据识别单元,用于识别填写完成的描述符数组中的业务数据。

由于装置300、装置400的各功能已在其对应的方法实施例中予以详细说明,本公开于此不再赘述。

在一些实施例中,装置300与装置400可以结合为一个装置,执行前置通讯系统对一或多个第三方系统的报文发送任务和报文接收任务。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1