一种多硬件接口通讯协议软件按需自动生成方法与流程

文档序号:15980581发布日期:2018-11-17 00:17阅读:468来源:国知局

本发明涉及计算机软件领域,特别是涉及一种应用动态链接技术和数据库技术生成所需多硬件接口之一通讯软件的方法。



背景技术:

目前,在大型软件系统开发时,通常存在一个系统包含多种硬件接口的情况。硬件通讯接口往往只有种类的属性的变化,但对于单个开发人员,每次开发需要实现一种硬件通讯接口时,都需要大量时间理解、学习、开发。同时,还会存在开发人员众多的情况,尤其在长工期开发时人员流动性也会大。如图1所示,新的开发人员在硬件接口通讯软件编写上需要重新学习开发。这种情况对于整个项目而言,属于重复工作,会消耗大量的工时,造成系统开发时间大量增加。



技术实现要素:

本发明的目的是为了克服现有技术中的不足,提供一种多硬件接口通讯协议软件按需自动生成方法,该方法只需用户明白基本的通讯接口需求,即可生成所需硬件通讯协议,用户使用时只需在主程序中直接引用调用即可。同一系统不同部分的开发人员均可快速使用。由此可以大量减少整个系统开发时间。

本发明的目的是通过以下技术方案实现的:

一种多硬件接口通讯协议软件按需自动生成方法,包括线下协议统一和线上自动生成两个阶段;

所述线下协议统一阶段包括以下步骤:

(1)确定项目涉及的所有硬件种类和属性基本数据;

(2)建立数据库,将基本协议数据的结构构建在数据库中,基本协议数据包括协议集名、协议名、上行、下行、帧头、字段长度、字段内容、开始位置、结束位置和帧尾;

(3)为每种硬件建立单独的通讯管道;

(4)编写管道操作程序、数据按位解析程序和数据按位装填程序组成预置程序;

(5)根据硬件的特异属性,编写可直接连接底层驱动的程序用以实现硬件接口的特异性,并将其编入预置程序;

所述线上自动生成阶段包括以下步骤:

A.用户录入基本数据,基本数据是由线下协议统一阶段规划完成;录入的数据存入数据库中;

B.根据程序自动生成技术编写程序自动生成程序;

C.调用程序自动生成程序;程序自动生成程序读取数据库中用户的需求后,在预置程序后生成可直接调用的接口通讯函数;

D.对生成后的预置程序进行动态编译生成动态链接库。

进一步的,步骤(4)中数据按位解析的流程为:

a)将数据长度、开始位置、结束位置从数据库读出并存储在数组中,同时初始化一个输出数组以存储解析出的数据;

b)依次对每个字段进行解析,解析出的字段依次填入输出数组;

c)取出字段长度,判断字段所在缓冲区的字节编号,确定字段的位置;

d)判断字段长度是否为8的整数倍,是则整段复制到输出数组当前位置,不是则按位复制到输出数组当前位置;全部字段解析完成后,返回的输出数组既是所需数据。

进一步的,步骤(4)中数据按位装填的流程为:

a)将数据长度、开始位置和结束位置从数据库读出存储到数组中;

b)依次对每个字段进行填充并确定字段的位置;

c)判断需要填充的字段长度是否为8的倍数,是则整段填充;不是则按位填充。

与现有技术相比,本发明的技术方案所带来的有益效果是:

通过本发明方法可快速生成想要的硬件通讯协议程序,大大减少开发人员的重复工作时间。同时具有很好的普适性,整个项目的各个开发单位都可以从中受益。

附图说明

图1是现有技术中通常面临的情况示意图。

图2是本发明方法在软件系统开发中所处位置示意图。

图3是本发明方法中线下协议统一阶段的流程示意图。

图4是本发明方法中线上自动生成阶段的流程示意图。

图5-1和图5-2分别是数据按位解析和数据按位装填的流程图。

具体实施方式

下面结合附图对本发明作进一步的描述。

如图2至图5-2所示,本发明方法的核心在于自动生成技术,自动生成的前提是协议统一。因此发明实现分为了两个部分:(一)线下协议统一,主要使用传输编码格式统一技术、管道技术和程序预制技术。(二)线上自动生成,主要使用数据库技术、程序自动生成技术和动态链接技术。

通过本发明方法可以实现将目前主流的硬件通讯协议统一。首先,进行功能统一。将系统开发可能用到的硬件接口的功能统一化成两种功能——上行和下行。不同硬件接口实现的功能不一样,但宏观上还是对数据的接收和发送。这对于一个大型的系统而言,既是上行和下行。接下来统一数据传输格式,将数据传输格式统一为帧头、数据加帧尾的格式。不同协议之间最大的区别是它的每段数据长度不尽相同,比如同样以字节长的帧头,有的可能是2位+3位+2位,有的则可能是4位+4位。为了统一这种情况,为每个数据段设置了开始位置和结束位置,因此可以对不同协议可能出现的不同数据段精确诠释。

为了统一所用上下行操作,本发明采用了操作系统管道机制,管道是一种用于在进程间共享数据的机制,其实质是一段共享内存。Windows系统为这段共享的内存设计采用数据流I/0的方式来访问。由一个进程读、另一个进程写,类似于一个管道两端,因此这种进程间的通信方式称作“管道”。“管道”可以帮助用户可以绕开底层硬件,直接在上层操作硬件接口进行通讯。同时为不同硬件接口设置不同的管道,可以使多个硬件接口在上层并行工作。

本发明还使用了程序预制技术,来实现自动生成功能的铺垫工作。该技术依据统一量的结构,编写预制程序。预制程序包括管道操作程序,数据按位解析程序和数据按位装填程序。管道操作程序是为了本次操作可以调用到该接口对应的管道。数据按位解析和数据按位装填程序则是对应统一格式对数据进行上行和下行的数据封装操作,以便不同硬件不同协议下的数据可以统一进行接收和发送。

数据库技术是按照数据结构来组织、存储和管理数据的仓库。本发明利用数据库来进行数据的存储、架构和提取。

程序自动生成技术是读取数据库的基本数据后,程序自动生成程序按读取的协议生成代码,并将代码按规范的格式打印在预制程序后面。以串口为例,属性基本数据是每个硬件接口独有的基本数据,串口的属性基本数据包括通道号、使用协议、波特率、数据位长度、校验位等。协议基本数据在线下阶段统一完成,对所用接口通用。协议基本数据包括协议集名、协议名、上行或下行、帧头、字段长度、字段内容、开始位置和结束位置等。协议集对应一个硬件接口的多个通讯函数,它里面包括了该接口的不同协议,如下行(通道号0)、下行(通道号1)或上行(通道号0)等。之后对应基本数据生成所需协议,协议分为上行和下行两种。程序自动生成程序读取到这些后生成可供用户调用的主函数。从返回类型开始生成,一直到程序结尾的“}”。并将生成的程序填入预置程序中,形成一个完整的协议。

最后使用动态链接技术对生成的协议进行动态编译。用自动生成出的程序编译成用户可以方便调用的动态链接库。动态链接库是Windows操作系统时,实现共享函数库概念的一种方式。动态链接使进程可以调用不属于其可执行代码的函数。用户使用时,在系统代码中添加动态链接库后,就可以直接调用自动生成的硬件接口通讯软件。

具体实施过程中,应事先调研好本次系统开发需要涉及的所有硬件需求和属性基本数据。之后对每种硬件建立单独的通讯管道。本实施例以串口为例:

一、线下协议统一阶段

见图3,串口的属性基本数据包括通道号、使用协议、波特率、数据位长度和校验位。属性基本数据中,多数可以在统一后的协议里实现,比如数据位长度、校验位和通道号。对于波特率和使用协议这种特异属性,采用专门写个连接底层驱动函数的方法。在最终调用动态链接库时,直接声明底层驱动函数就实现了这些特异属性。

基本协议基本参数包括:协议集名称、协议名、上行或下行、帧头、字段长度、字段内容、开始位置、结束位置、数据和帧尾。

串口的数据格式为帧头+数据段长度+数据段+校验位。假设每一帧想传输252个字节,那么一帧数据格式为:

对应到统一格式上,帧头55AA长度,数据段即为数据段,帧尾为校验位。那么统一格式的设置方法为:(所有单位按位取)

统一后的格式在线上阶段会存入数据库中,自动生成程序在读取数据库后便可知道协议的具体格式。

之后为串口预设一个管道。以windows系统下的pipe为例介绍管道操作程序。首先需要为管道设置一个管道名,同时编写一个可以通过管道名获得管道句柄的函数。还要准备的管道的读函数和写函数。至此,管道操作程序准备完成。

数据按位解析和数据按位装填是该发明的底层原理核心。该函数通过读取协议基本信息来生成和解析协议数据。其逻辑流程如图5-1和5-2所示。数据按位解析首先需要将数据长度、开始位置、结束位置从数据库读出存储在数组中,同时初始化一个输出数组来存储解析出的数据。然后依次对每个数据段进行解析,开始位置数组和结束位置数组可以帮助确定数据段的位置。确定数据段位置后,进行判断。如果需要解析的数据段长度是8的倍数,说明数据是以字节填充,因此可以以字节为单位解析。如果不是8的倍数,就按位解析将其填入输出数组。全部数据段解析完成后,返回的输出数组既是想要得到的数据。数据按位装填首先同样需要将数据长度,开始位置和结束位置从数据库读出存储到数组中。然后依次对每个数据段进行填充。依据开始位置和结束位置判断当前需要填充的位置。如果需要填充的数据段长度是8的倍数,则同理可以整段填充。如果不是,则按位填充。所有数据段填完即完成功能。

将预制程序写进预置程序文件,等待自动生成阶段填充。预制程序的函数均要做到可以直接调用。

系统中其他硬件的预置程序,均可按照以上方法生成至预制程序文件中。每一个大型系统开发过程中,生成一个预置程序文件,可满足该项目使用。

二、线上自动生成阶段

首先需要用户将线下协议统一阶段中统一后的协议格式输入数据库,自动生成程序会读取数据库后生成所需程序在预置程序后面,流程如图4所示。自动生成程序负责生成图3中的生成程序伪代码。自动生成程序首先从数据库中读取协议基本数据,并存储。然后打开预制程序文件,将光标定位至文件另起一行的尾部。之后按程序格式将内容依照生成程序伪代码输入文件。最后将程序文件编译为动态链接库。至此,线上自动生成阶段完成。

在大型系统开发时,只需一名开发者明白硬件基本原理,生成所需动态链接库。其他开发者需要使用时均可在程序中直接调用。

本发明并不限于上文描述的实施方式。以上对具体实施方式的描述旨在描述和说明本发明的技术方案,上述的具体实施方式仅仅是示意性的,并不是限制性的。在不脱离本发明宗旨和权利要求所保护的范围情况下,本领域的普通技术人员在本发明的启示下还可做出很多形式的具体变换,这些均属于本发明的保护范围之内。

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