CN109460231A - 基于xml的上位机软件实现方法 - Google Patents
基于xml的上位机软件实现方法 Download PDFInfo
- Publication number
- CN109460231A CN109460231A CN201811116193.1A CN201811116193A CN109460231A CN 109460231 A CN109460231 A CN 109460231A CN 201811116193 A CN201811116193 A CN 201811116193A CN 109460231 A CN109460231 A CN 109460231A
- Authority
- CN
- China
- Prior art keywords
- message
- xml
- type
- frame
- upper computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于XML的上位机软件实现方法,该上位机软件实现方法包括自动生成所述数据通信协议,包括:S1,读取帧头协议描述XML;S2,生成帧头协议表示类;S3,读取帧体描述XML;S4,判断XML是否为新导入或已被修改,若是,则执行步骤S5,否则转至步骤S7;S5,生成帧体类代码;S6,保存所述帧体类代码;S7,读取所述帧体类代码;S8,动态编译所述帧体类代码并将程序集加载至内存;S9,获取程序集及其类型,遍历类型集合,保存类型至类型字典。该上位机软件实现方法能够将XML文件按照数据通信协议描述规则解释生成源代码,诸多的上位机软件可以被具备特定功能集的XML配置文件所替代,使得上位机软件具备良好的可扩展性与可维护性。
Description
技术领域
本发明是关于软件设计领域,特别是关于一种基于XML的上位机软件实现方法。
背景技术
在工业控制领域,工控机用于对设备进行检测、控制或业务数据交互。现实中,设备种类繁多,功能复杂多样,以满足各种不同的应用场景。而这些设备大多会配有相应的上位机软件,运行于工控机之上,来完成设备检测、控制或业务数据交互等操作。
上位机软件通过与设备交换数据来完成所需功能,而数据的格式即数据通信协议是问题的关键,不同的协议具有不同的意义,用于实现不同的功能。上位机软件复杂多样的本质是数据通信协议的复杂多样。
在工业生产中,上位机软件一般采用硬编码的方式实现,不同功能的设备配以不同编码实现的上位机软件。设备功能即使有一点改动,可能也要重新生成一版匹配的上位机软件。这会造成程序员工作重复性增加,开发工作量加大,且开发出的软件可扩展性也较差。而且随着时间的推移,软件数量与软件版本数量也会急速增长,给日后的维护工作带来巨大压力。因此,有必要设计一种方法来减少程序员的重复性工作,缩短开发周期,节约开发成本,并使软件具备良好的可扩展性与可维护性。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容
本发明的目的提供一种基于XML的上位机软件实现方法,其能够将XML文件内容按照数据通信协议描述规则解释并生成源代码,诸多的上位机软件可以被一套套的具备特定功能集的XML配置文件所替代,该方法实现的上位机软件具备良好的可扩展性与可维护性。
为实现上述目的,本发明提供了一种基于XML的上位机软件实现方法,上位机与下位机之间按照数据通信协议交换消息来实现特定的功能,该上位机软件实现方法包括自动生成所述数据通信协议,所述自动生成所述数据通信协议包括:S1,读取帧头协议描述XML,所述帧头协议描述XML配置了上位机与下位机通信时的帧结构;S2,应用所述帧头协议描述XML的配置信息,生成帧头协议表示类;S3,读取帧体描述XML,帧体携带着消息;S4,判断所述帧头协议描述XML或所述帧体描述XML是否为新导入或已被修改,若是,则执行步骤S5,否则转至步骤S7;S5,读取所述帧体描述XML信息以及所述帧头协议表示类,将其中的配置信息拼接成帧体类代码;S6,本地保存所述帧体类代码;S7,读取所述帧体类代码;S8,动态编译所述帧体类代码并将程序集加载至内存;S9,获取已编译的程序集及所述程序集中定义的类型,遍历类型集合,并保存类型至类型字典。
在一优选的实施方式中,所述帧头协议描述XML的配置信息包括:用于标识消息发送平台的源地址、用于标识消息接收平台的目的地址、用于标识消息正文所携带信息类别的消息类别、用于标识有效数据占用的比特位宽的数据长度、用于表示待传输消息的主体部分的消息正文、用于标识多字节数据传输时各字节的存储顺序的字节序。
在一优选的实施方式中,所述S3中的消息包括查询类消息、设置类消息、应答类消息、主动上报类消息,其中,查询与设置类消息分别有对应的应答类消息。
在一优选的实施方式中,所述S4中判断所述帧头协议描述XML或帧体描述XML是否为新导入或已被修改包括:本地维护了一套所述帧头协议描述XML以及帧体描述XML修改日期的配置信息,该修改日期的配置信息记录了所述XML文件名称,以及文件最后修改时间,当为所述XML文件生成代码时,首先判断配置信息是否包含该文件名,若不包含则执行代码生成操作,并将文件名与修改时间写入配置信息,若包含文件名则进一步比较文件修改时间,若时间不一致则执行代码生成操作,并将新的修改时间同步至配置信息,否则不再生成代码。
在一优选的实施方式中,该上位机软件实现方法还包括:应用帧体描述XML中的信息,完成用户界面的动态生成。
在一优选的实施方式中,生成所述用户界面包括:读取帧体描述XML,所述帧体描述XML包括消息概要信息和数据项信息,所述消息概要信息包括消息名称、操作类别、消息代号;应用所述消息概要信息生成主行,读取所述消息名称显示在表格的消息名称列,并且读取操作类别,生成设置按钮或查询按钮,读取消息代号,并将所述消息代号附加至主行,与主行关联;应用所述数据项信息生成子行,所述数据项的类型有枚举型、整型、浮点型和字符型,其中对枚举型数据项采用组合框呈现,对整型数据项采用整数文本框呈现,对浮点型数据项采用浮点数文本框呈现,对字符型采用普通文本框呈现。
在一优选的实施方式中,该上位机软件实现方法还包括:生成界面后,在数据发送阶段创建类型实例,进行所述类型实例的序列化,并且发出序列结果。
在一优选的实施方式中,在数据发送阶段创建类型实例,进行所述类型实例的序列化,并且发出序列结果包括:首先点击所述设置按钮或查询按钮,获取消息代号与消息属性信息;获取该消息代号在所述类型字典中对应的类型,然后通过该类型获取在其中声明该类型的程序集,最后从所述程序集中查找本类型,使用系统激活器创建类型实例;通过调用类型的属性值设置成员,将所述消息属性信息设置到对应属性;获取类型的序列化方法并调用从而实现类型实例的序列化;将生成的序列化字节流经由通信端口发出。
在一优选的实施方式中,该上位机软件实现方法还包括:进行主动上报类消息以及应答类消息的接收、处理及显示。
在一优选的实施方式中,进行主动上报类消息以及应答类消息的接收、处理及显示包括:从通信端口接收所述主动上报类消息或应答类消息的数据;根据帧头格式定义,选取指定的校验算法,计算所述数据的校验值,比较该校验值与所述数据中原有校验值是否一致,若一致则表明所述数据无误,继续进行后续处理;根据帧头格式定义,从所述数据中获取消息代号,判断该消息代号是否在所述类型字典中,若在所述类型字典中,则认为是合法的消息,获取对应的消息类型,然后通过.NET Framework反射机制动态创建类型实例,获取类型的反序列化方法并调用,将字节流携带的信息存储于类型实例中;最后进行界面显示,所述主动上报类消息在消息接收列表显示,所述应答类消息在设置或查询行显示。
与现有技术相比,根据本发明的基于XML的上位机软件实现方法是基于XML(可扩展标记语言)与.NET Framework(NET框架)技术,首先抽象出一套数据通信协议描述XML,来对协议进行结构化的描述。基于此XML可动态生成软件源码与用户界面。将XML文件内容按照数据通信协议描述规则解释并生成源代码,采用.NET Framework动态编译技术,编译源代码并将生成的程序集载入内存,通过.NET Framework反射机制使用内存程序集元数据动态创建类型实例,来实现各种所需功能。将XML文件内容按照数据通信协议描述规则解释并生成用户界面,界面采用表格来对各XML描述内容进行一致性的呈现。所以只需要一个通用的解释执行终端外加一些XML功能配置文件即可构成一个具备指定功能的上位机软件,因此诸多的上位机软件可以被一套套的具备特定功能集的XML配置文件所替代,有了通用的解释执行终端后不再需要编写其它适配代码,可以说软件是配置出来的。软件功能通过配置实现,省去了编写大量重复代码,降低了软件制作难度,非专业编码人员也可自由定制软件。减少了软件数量,只需维护一些与功能匹配的配置文件,降低了维护难度。简化了日后版本升级工作,版本升级时只需提供一套新版的配置文件,省去了对软件的安装部署工作。软件功能在运行时确定,而不是被硬编码限定住,这增加了软件的可扩展性。
附图说明
图1是现有的多种上位机软件实现方法与本发明一实施方式的上位机实现方法的对比图;
图2是根据本发明一实施方式的数据通信协议的代码自动生成方法的流程图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
本发明基于XML(可扩展标记语言)与.NET Framework(NET框架)技术,首先抽象出一套数据通信协议描述XML,来对协议进行结构化的描述。基于此XML可动态生成软件源码与用户界面。将XML文件内容按照数据通信协议描述规则解释并生成源代码,采用.NETFramework动态编译技术,编译源代码并将生成的程序集载入内存,通过.NET Framework反射机制使用内存程序集元数据动态创建类型实例,来实现各种所需功能。将XML文件内容按照数据通信协议描述规则解释并生成用户界面,界面采用表格来对各XML描述内容进行一致性的呈现。所以只需要一个通用的解释执行终端外加一些XML功能配置文件即可构成一个具备指定功能的上位机软件。这样的话诸多的上位机软件可以被一套套的具备特定功能集的XML配置文件所替代,如图1所示。有了通用的解释执行终端后不再需要编写其它适配代码,可以说软件是配置出来的。软件功能通过配置实现,省去了编写大量重复代码,降低了软件制作难度,非专业编码人员也可自由定制软件。减少了软件数量,只需维护一些与功能匹配的配置文件,降低了维护难度。简化了日后版本升级工作,版本升级时只需提供一套新版的配置文件,省去了对软件的安装部署工作。软件功能在运行时确定,而不是被硬编码限定住,这增加了软件的可扩展性。
该基于XML的上位机软件实现方法包括:自动生成数据通信协议代码。图2是根据本发明一实施方式的基于XML的上位机软件实现方法的流程图。该实施方式的数据通信协议代码自动生成方法包括下列步骤:
在步骤S1中读取帧头协议描述XML:帧头协议XML描述了上位机与下位机通信时的帧结构,数据帧携带了上位机与下位机交互的消息。在本发明中,帧头协议描述XML包括如下内容:
a)源地址:源地址用于标识消息发送平台。其节点示例如下:
节点说明:
Valid为有效性标识,标识本数据项有效性,若无效则本数据项不占位;
Type为数据类型,将数据类型分为数值型、枚举型、字符串三种类型,数值型包括Byte、UInt16、UInt32、Double,枚举型为Enum,字符型为String;
Position标识本数据项在比特流中的起始位置;
Length标识本数据项占用的比特位宽;
BeforeContent为消息正文前后标识,标识本数据项在消息正文前面还是后面,消息正文可能是变长的,若在消息正文前面则起始位置为绝对位置,否则为相对消息正文结尾的位置;
b)目的地址:目的地址用于标识消息接收平台。其节点示例如下:
c)消息类别:消息类别用于标识消息正文所携带信息的类别。其节点示例如下:
d)数据长度:数据长度用于标识有效数据占用的比特位宽。其节点示例如下:
节点说明:
CalcuStartPosi为比特位宽计算起始位置,采用相对消息正文起始的位置;
CalcuEndPosi为比特位宽计算截止位置,采用相对消息正文结尾的位置;
本例中,计算起始位置与截止位置均为0,数据长度与消息正文长度相等。
e)消息正文:消息正文表示待传输信息的主体部分。其节点示例如下:
f)校验:校验用于检验数据的完整性和正确性。其节点示例如下:
节点说明:
CheckAlgorithm为校验算法,如奇校验、偶校验、CRC8ATM、CRC16、CRCITU、CRC32、CRC32C等。
g)字节序:字节序用于标识多字节数据传输时各字节的存储顺序。其节点示例如下:
节点说明:
Value为字节序类别,包括大端序(BigEndian)与小端序(LittleEndian)。
在步骤S2中应用配置信息,生成帧头协议表示类:帧头协议表示类保有步骤S1中的帧头协议描述XML的所有配置信息,并且应用于步骤S5中的帧体类代码动态生成,以及数据接收阶段的数据校验等过程,应用配置信息。
在步骤S3中,读取帧体描述XML:上位机与下位机通过交换消息来实现不同的功能,帧体携带着各种不同的消息。可选地,将消息归纳为四类,查询类、设置类、应答类、主动上报类,其中查询与设置类消息分别有对应的应答类消息。帧体描述XML示例如下:
节点说明:
ConfigMessage1作为消息类名使用,应为合法的标识符,一般起有意义的英文名称。
Sketch为消息概要,消息概要包括消息名称(Name)、操作类别(Operation,包括查询、设置、应答、主动上报等类别)以及消息代号(MessageId),若为查询或设置类消息,则消息概要还包括应答消息代号(AnsMessageId)。I
tem1~Item3为ConfigMessage1消息包含的数据项,作为属性成员名使用,应为合法的标识符,一般起有意义的英文名称。Item1~Item3分别为数值型、枚举型、字符型数据项的示例。
a)Item1子节点说明:
Name为数据项名称,在拼接实例字符串表示方法代码时用到,详见步骤S5中ToString方法拼接。
Visible为界面可见性标识,为true时会为本数据项创建界面元素,显示到界面,为false时本数据项界面不可见。
Value为数据项默认值,软件打开时数据项的初始显示值。
Type为数据类型,本例为Double型,属于数值型,其它数值型有Byte、UInt16、UInt32、UInt64等,数值型一般具有最大值(MaxValue)、最小值(MinValue)、传输数据最低有效位代表数值(LSB)等特性。本例中最低有效位代表数值为0.5,若数据项值为10.0,则实际传输数值为20,即10.0/0.5。
Length标识数据项占用的比特位数。
Code为待传输数值的编码方式。若数据项为值类型,则待传输数值=数据项值/LSB,Code包括None与BCD。None表示无编码,直接按数值传递。BCD表示要将数值转换为BCD码后传递。若数据项为枚举类型,枚举集合中的每个元素对应一个数值,对枚举值也进行类似的编码处理。若数据项为字符型,Code包括如ANSI、GB2312、UTF-8等诸多编码方式,要先将字符编码后再进行传递。
b)Item2子节点说明:
Items为枚举集合中的元素,对应到界面组合框中的下拉选项。
Values为枚举值,与Items中的元素一一对应。本例中,0代表“元素1”,1代表“元素2”,2代表“元素3”。
c)Item3子节点说明:
FixedLength标识数据项是否占用固定比特位数,为true时Length节点有效,比特位数取自Length节点,为false时,比特位数取决于字符串长度与编码方式。
在步骤S4中,若帧头协议描述XML或帧体描述XML为新导入或已被修改,则执行步骤S5,否则转至步骤S7:为了避免代码重复生成,只针对新导入或已被修改过的XML生成代码,并将代码保存至本地,方便以后使用。这种代码条件生成机制是基于配置文件实现的,本地维护了一套XML修改日期的配置信息,配置信息如下所示:
<XMLFile fileName="ConfigMessage1"modifyTime="2018-07-19 11:12:13"/>
<XMLFile fileName="QueryMessage1"modifyTime="2018-07-19 16:17:18"/>
其中,fileName记录了XML文件名称,modifyTime记录了文件最后修改时间。当为XML文件生成代码时,首先判断配置信息是否包含该文件名。若不包含则执行代码生成操作,并将文件名与修改时间写入配置信息。若包含文件名则进一步比较文件修改时间,若时间不一致则执行代码生成操作,并将新的修改时间同步至配置信息,否则不再生成代码。
在步骤S5中调用帧体类代码生成方法生成帧体类代码:帧体类代码生成方法读取帧体描述XML信息,将其中的配置信息拼接成帧体类代码,具体完成了命名空间、类名、构造函数、属性、方法等的拼接。
在步骤S6中本地保存帧体类代码。
在步骤S7中读取之前生成的帧体类代码。
在步骤S8中动态编译代码并将程序集加载至内存。
优选地,基于XML的上位机软件实现方法成方法还包括:应用帧体描述XML中的信息,完成用户界面的动态生成。在本实施例中,以表格的形式来呈现用户界面。一个帧体XML描述一条消息,对应表格中的一行记录,若消息有多个数据项则以子行呈现,一个主行包含多个子行,即采用组模式呈现。查询类、设置类、应答类消息均在此界面呈现,主动上报类消息单独显示在消息接收列表中。若设置与查询消息的名称相同,则在一行显示,分别对应某业务的设置与查询操作。
用户可修改设置参数,点击设置按钮将参数封装于消息实体并发出,收到应答消息后在结果栏显示操作结果,成功或失败,收不到应答的话显示失败。
用户可修改查询参数,点击查询按钮将参数封装于消息实体并发出,收到应答消息后将查询结果信息显示在同行的设置参数编辑区中,并在结果栏给出成功提示,收不到应答的话显示失败。
由于Winform与Wpf中均没有包含分组功能的表格控件,要实现本效果可考虑自定义DataGridView或DataGrid控件。简单起见,也可直接采用第三方控件库DevExpress或DotNetBar,可选地,以DotNetBar为例对界面的动态生成过程进行阐述。界面生成包括下列步骤:首先读取帧体描述XML;然后应用消息概要信息生成主行,最后应用数据项信息生成子行。
具体地,应用概要信息生成主行包括:读取消息名称(Name节点)显示在表格的消息名称列。读取操作类别(Operation节点),若值为“Config”则生成设置按钮,若为“Query”则生成查询按钮。读取消息代号(MessageId节点),并将代号附加至主行Tag属性,与主行关联。消息代号也与消息实例关联,这种关联是通过类型字典(见代码生成阶段步骤S9)实现的,通过消息代号可获取对应的消息类型,通过.NET Framework反射机制可动态创建指定类型的实例。消息代号同时与表格的一行及消息实例关联,充当了桥梁的作用,也即将表格的一行与消息实例关联在了一起。
具体地,应用数据项信息生成子行包括:数据项的类型有枚举型、整型、浮点型和字符型,各种类型数据项的编辑方法不尽相同,故采用不同的控件来分别呈现。对枚举型数据项采用组合框呈现,枚举元素与组合框下拉列表元素一一对应。对整型数据项采用整数文本框呈现,对浮点型数据项采用浮点数文本框呈现,配置中的最大值(MaxValue)、最小值(MinValue),用于设置整数或浮点数文本框的MaxValue、MinValue属性(MaxValue、MinValue属性用于限定用户输入范围),以及用于生成范围提示信息。对字符串型数据项采用普通文本框呈现。
生成数据项子行时,会将数据项节点字符(如“Item1”)附加至子行Tag属性,与子行关联起来,而节点字符也用于生成消息类的属性,也即消息类的属性与子行关联在了一起。用户可编辑行中的参数,参数的值即对应属性的值。软件收到消息后,也会将消息实例中的属性值显示在对应的行中。
总之,主行与带有的子行一起对应到一个消息实例,每一个子行对应实例的一个属性,对子行中参数的修改都会保存到对应的属性中去。这种关联是通过将消息代号、属性名称等信息附加到表格行实现的。
优选地,所述基于XML的上位机软件实现方法还包括:在数据发送阶段创建类型实例,进行实例序列化,发出序列结果。数据发送阶段包括下列步骤:
首先点击设置或查询:点击后,获取所在主行与子行的Tag属性,从中提取出消息代号与消息属性信息。
然后创建类型实例:首先获取类型字典中消息代号对应的类型,然后通过类型获取在其中声明该类型的程序集,最后从程序集中查找本类型,使用系统激活器创建类型实例。
进一步设置实例属性:通过调用类型的属性值设置成员,可将获得的属性值设置到对应属性。
然后进行实例序列化:获取类型的序列化方法并调用从而实现实例序列化。
最后发送序列化结果:将上一步生成的序列化字节流经由通信端口发出,通信端口可为串口、网口或USB等任意上位机通信端口,可采用配置文件来配置端口信息,以确定发送方式。
优选地,所述基于XML的上位机软件实现方法还包括:完成主动上报类和应答类消息的接收、处理及显示。该过程具体包括:
首先从端口接收数据。
然后校验数据:根据帧头格式定义,选取指定的校验算法,计算数据的校验值,比较计得的校验值与数据中原有校验值是否一致。若一致则表明数据无误,则继续进行后续解析处理。
进一步反序列化获得类型实例:根据帧头格式定义,从数据中获取消息代号,判断消息代号是否在类型字典(见代码生成阶段步骤S9)中,若在类型字典中则认为是合法的消息,获取对应的消息类型,然后通过.NET Framework反射机制动态创建类型实例,获取类型的反序列化方法并调用,将字节流携带的信息存储于实例中。
最后进行界面显示。主动上报类消息直接在消息接收列表显示。应答类消息在表格中对应的设置或查询行显示,行的定位是通过行附加的Tag信息实现的,Tag中包含有消息代号与属性信息。
综上所述,本实施方式的基于XML的上位机软件实现方法具有如下优点:实现的上位机软件具有良好的可扩展性,软件功能可通过配置文件灵活定制;降低了软件制作难度,非专业编码人员也可自由定制软件;省去了大量重复代码的编写,提升工作效率,降低开发成本;从对各种软件的维护转为对XML配置文件的维护,降低了软件维护难度;减少、简化了软件安装部署工作;此方案适用于多种常见的上位机应用场景。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
Claims (10)
1.一种基于XML的上位机软件实现方法,上位机与下位机之间按照数据通信协议交换消息来实现特定的功能,其特征在于,该上位机软件实现方法包括自动生成所述数据通信协议,所述自动生成所述数据通信协议包括:
S1,读取帧头协议描述XML,所述帧头协议描述XML配置了上位机与下位机通信时的帧结构;
S2,应用所述帧头协议描述XML的配置信息,生成帧头协议表示类;
S3,读取帧体描述XML,帧体携带着消息;
S4,判断所述帧头协议描述XML或所述帧体描述XML是否为新导入或已被修改,若是,则执行步骤S5,否则转至步骤S7;
S5,读取所述帧体描述XML以及所述帧头协议表示类,将其中的配置信息拼接成帧体类代码;
S6,本地保存所述帧体类代码;
S7,读取所述帧体类代码;
S8,动态编译所述帧体类代码并将程序集加载至内存;以及
S9,获取已编译的程序集及所述程序集中定义的类型,遍历类型集合,并保存类型至类型字典。
2.如权利要求1所述的基于XML的上位机软件实现方法,其特征在于,所述帧头协议描述XML的配置信息包括:用于标识消息发送平台的源地址、用于标识消息接收平台的目的地址、用于标识消息正文所携带信息类别的消息类别、用于标识有效数据占用的比特位宽的数据长度、用于表示待传输消息的主体部分的消息正文、用于标识多字节数据传输时各字节的存储顺序的字节序。
3.如权利要求1所述的基于XML的上位机软件实现方法,其特征在于,所述S3中的消息包括查询类消息、设置类消息、应答类消息、主动上报类消息,其中,查询与设置类消息分别有对应的应答类消息。
4.如权利要求1所述的基于XML的上位机软件实现方法,其特征在于,所述S4中判断所述帧头协议描述XML或帧体描述XML是否为新导入或已被修改包括:
本地维护了一套所述帧头协议描述XML以及帧体描述XML修改日期的配置信息,该修改日期的配置信息记录了所述XML文件名称,以及文件最后修改时间,当为所述XML文件生成代码时,首先判断配置信息是否包含该文件名,若不包含则执行代码生成操作,并将文件名与修改时间写入配置信息,若包含文件名则进一步比较文件修改时间,若时间不一致则执行代码生成操作,并将新的修改时间同步至配置信息,否则不再生成代码。
5.如权利要求1所述的基于XML的上位机软件实现方法,其特征在于,该上位机软件实现方法还包括:应用帧体描述XML中的信息,完成用户界面的动态生成。
6.如权利要求5所述的基于XML的上位机软件实现方法,其特征在于,生成所述用户界面包括:
读取帧体描述XML,所述帧体描述XML包括消息概要信息和数据项信息,所述消息概要信息包括消息名称、操作类别、消息代号;
应用所述消息概要信息生成主行,读取所述消息名称显示在表格的消息名称列,并且读取操作类别,生成设置按钮或查询按钮,读取消息代号,并将所述消息代号附加至主行,与主行关联;以及
应用所述数据项信息生成子行,所述数据项的类型有枚举型、整型、浮点型和字符型,其中对枚举型数据项采用组合框呈现,对整型数据项采用整数文本框呈现,对浮点型数据项采用浮点数文本框呈现,对字符型采用普通文本框呈现。
7.如权利要求6所述的基于XML的上位机软件实现方法,其特征在于,该上位机软件实现方法还包括:生成界面后,在数据发送阶段创建类型实例,进行所述类型实例的序列化,并且发出序列结果。
8.如权利要求7所述的基于XML的上位机软件实现方法,其特征在于,在数据发送阶段创建类型实例,进行所述类型实例的序列化,并且发出序列结果包括:
首先点击所述设置按钮或查询按钮,获取消息代号与消息属性信息;
获取该消息代号在所述类型字典中对应的类型,然后通过该类型获取在其中声明该类型的程序集,最后从所述程序集中查找本类型,使用系统激活器创建类型实例;
通过调用类型的属性值设置成员,将所述消息属性信息设置到对应属性;
获取类型的序列化方法并调用从而实现类型实例的序列化;以及
将生成的序列化字节流经由通信端口发出。
9.如权利要求8所述的基于XML的上位机软件实现方法,其特征在于,该上位机软件实现方法还包括:进行主动上报类消息以及应答类消息的接收、处理及显示。
10.如权利要求9所述的基于XML的上位机软件实现方法,其特征在于,进行主动上报类消息以及应答类消息的接收、处理及显示包括:
从通信端口接收所述主动上报类消息或应答类消息的数据;
根据帧头格式定义,选取指定的校验算法,计算所述数据的校验值,比较该校验值与所述数据中原有校验值是否一致,若一致则表明所述数据无误,继续进行后续处理;
根据帧头格式定义,从所述数据中获取消息代号,判断该消息代号是否在所述类型字典中,若在所述类型字典中,则认为是合法的消息,获取对应的消息类型,然后通过.NETFramework反射机制动态创建类型实例,获取类型的反序列化方法并调用,将字节流携带的信息存储于类型实例中;以及
最后进行界面显示,所述主动上报类消息在消息接收列表显示,所述应答类消息在设置或查询行显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811116193.1A CN109460231B (zh) | 2018-09-25 | 2018-09-25 | 基于xml的上位机软件实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811116193.1A CN109460231B (zh) | 2018-09-25 | 2018-09-25 | 基于xml的上位机软件实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109460231A true CN109460231A (zh) | 2019-03-12 |
CN109460231B CN109460231B (zh) | 2022-02-22 |
Family
ID=65606907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811116193.1A Active CN109460231B (zh) | 2018-09-25 | 2018-09-25 | 基于xml的上位机软件实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109460231B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110061990A (zh) * | 2019-04-19 | 2019-07-26 | 天津光电通信技术有限公司 | 一种dtu协议扩展方法 |
CN112069176A (zh) * | 2020-08-26 | 2020-12-11 | 北京航天发射技术研究所 | 一种通讯协议的数据库设计方法、装置、设备和存储介质 |
CN112825032A (zh) * | 2019-11-20 | 2021-05-21 | 北京配天技术有限公司 | 一种软件参数配置方法及具有存储功能的装置 |
CN114422622A (zh) * | 2022-01-14 | 2022-04-29 | 徐工汉云技术股份有限公司 | 一种工程机械设备工况数据解析方法 |
CN114518906A (zh) * | 2022-01-25 | 2022-05-20 | 厦门锐谷通信设备有限公司 | 一种基于xml描述文件的设备配置参数管理系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399528A (zh) * | 2013-03-06 | 2013-11-20 | 中国电力科学研究院 | 一种Modbus从站模拟器系统的自动生成方法 |
CN106126196A (zh) * | 2015-12-30 | 2016-11-16 | 中国人民解放军63686部队 | 一种基于xml的结构化多变量信息帧的界面赋值方法 |
US20160379160A1 (en) * | 2001-02-08 | 2016-12-29 | The Boeing Company | Communication system, method and computer program product for transferring an electronic file |
CN108509201A (zh) * | 2018-03-20 | 2018-09-07 | 深圳神州数码云科数据技术有限公司 | 一种代码生成方法和装置 |
-
2018
- 2018-09-25 CN CN201811116193.1A patent/CN109460231B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160379160A1 (en) * | 2001-02-08 | 2016-12-29 | The Boeing Company | Communication system, method and computer program product for transferring an electronic file |
CN103399528A (zh) * | 2013-03-06 | 2013-11-20 | 中国电力科学研究院 | 一种Modbus从站模拟器系统的自动生成方法 |
CN106126196A (zh) * | 2015-12-30 | 2016-11-16 | 中国人民解放军63686部队 | 一种基于xml的结构化多变量信息帧的界面赋值方法 |
CN108509201A (zh) * | 2018-03-20 | 2018-09-07 | 深圳神州数码云科数据技术有限公司 | 一种代码生成方法和装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110061990A (zh) * | 2019-04-19 | 2019-07-26 | 天津光电通信技术有限公司 | 一种dtu协议扩展方法 |
CN112825032A (zh) * | 2019-11-20 | 2021-05-21 | 北京配天技术有限公司 | 一种软件参数配置方法及具有存储功能的装置 |
CN112069176A (zh) * | 2020-08-26 | 2020-12-11 | 北京航天发射技术研究所 | 一种通讯协议的数据库设计方法、装置、设备和存储介质 |
CN112069176B (zh) * | 2020-08-26 | 2024-01-30 | 北京航天发射技术研究所 | 一种通讯协议的数据库设计方法、装置、设备和存储介质 |
CN114422622A (zh) * | 2022-01-14 | 2022-04-29 | 徐工汉云技术股份有限公司 | 一种工程机械设备工况数据解析方法 |
CN114422622B (zh) * | 2022-01-14 | 2023-03-28 | 徐工汉云技术股份有限公司 | 一种工程机械设备工况数据解析方法 |
CN114518906A (zh) * | 2022-01-25 | 2022-05-20 | 厦门锐谷通信设备有限公司 | 一种基于xml描述文件的设备配置参数管理系统及方法 |
CN114518906B (zh) * | 2022-01-25 | 2024-05-14 | 厦门锐谷通信设备有限公司 | 一种基于xml描述文件的设备配置参数管理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109460231B (zh) | 2022-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109460231A (zh) | 基于xml的上位机软件实现方法 | |
US11741293B2 (en) | Systems and methods of a script generation engine | |
CN108885545B (zh) | 用于实时数据流编程语言的工具和方法 | |
US8091071B2 (en) | Method and system for template-based code generation | |
US6769095B1 (en) | Hierarchically structured control information editor | |
US7152229B2 (en) | Workflow code generator | |
JP3272014B2 (ja) | 階層構造データ処理情報を含むデータ処理辞書を作成する方法及び装置 | |
CN101841515B (zh) | 可变目标的协议数据单元编解码代码自动生成的实现方法 | |
US7490098B2 (en) | Apparatus, system, and method for processing hierarchical data in disparate data repositories | |
US20050283758A1 (en) | Bi-directional programming system/method for program development | |
JP5350428B2 (ja) | 自動プログラム生成装置、方法及びコンピュータプログラム | |
CN109739494B (zh) | 一种基于Tree-LSTM的API使用代码生成式推荐方法 | |
JP6479184B2 (ja) | コンピュータ実行可能なモデルリバースエンジニアリング方法及び装置 | |
CN111104106A (zh) | 集成业务流程与通讯报文的可视化开发方法、系统及介质 | |
CN101996131A (zh) | 基于xml封装关键字的gui自动测试方法及自动测试平台 | |
WO1999046689A9 (en) | Execution of extended activity diagrams by code generation | |
Prehofer et al. | From internet of things mashups to model-based development | |
CN111581920A (zh) | 文档转换方法、装置、设备及计算机存储介质 | |
CN111124380A (zh) | 一种前端代码生成方法 | |
CN100505743C (zh) | 通用消息解释器的实现方法 | |
CN101980546A (zh) | 智能网平台、业务执行方法和分析业务异常的方法 | |
US20020147963A1 (en) | Method and apparatus for generating machine control instructions | |
US20230072988A1 (en) | System and a method for automatic generation of smart contracts across blockchain platforms | |
WO2004051470A1 (ja) | プログラム自動変換方法およびプログラム自動変換装置 | |
CN112817585B (zh) | 一种基于Unity编辑器的Cocos2dx UI界面搭建方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |