一种支持多接口协议处理的软件框架实现方法
【专利摘要】本发明涉及一种支持多接口协议处理的软件框架实现方法,包括如下步骤:1)对各种通信端口建立端口对象类,生成消息队列,并启动消息守护线程;2)对所有启动的消息守护线程进行监听,并进行消息队列处理和数据/协议字典解析;3)设置端口类型,并进行消息建立和消息发送。该方法对多接口的设计更简单,程序结构更清晰,函数调用更方便,代码实现更高效,同时该框架方法具有良好的可扩展性。
【专利说明】一种支持多接口协议处理的软件框架实现方法
【技术领域】
[0001]本发明涉及一种通信接口协议实现方法,特别是涉及一种支持多接口协议处理的软件框架实现方法。
【背景技术】
[0002]随着网络、通讯和计算机系统的大规模应用和发展,各种通讯手段和传输模式不断增加,其中串口通讯由于协议透明、设备投资少、编程简单等诸多优点而被广泛应用,在数据采集、监视、通信及控制领域占重要地位;网络通讯更是空前发展、广泛应用,TCP/IP协议成为互联网通信事实上的标准,遵循TCP/IP协议的设备能方便即时接入互联网进行通信;在一个大型应用系统中往往使用多种通讯方式进行数据通讯和控制,如串口通讯、并口通讯、网络通讯等等,不同的通讯设备使用不同的接口协议,设计人员需要针对不同的通讯方式进行不同的接口设计,虽然接口不同,但对信息的处理方法大致相同,如何支持、控制好协议间的交互关系并方便的支持扩展等,给系统设计增加了难度。
【发明内容】
[0003]本文给出了一种基于RS422串口和TCP/IP网络接口通信的软件框架实现方法,该方法将RS422串口和TCP/IP网络接口通信进行统一设计,包括缓冲设计、中断处理流程、消息队列优先级处理、异常信息处理等,建立端口初始化、守护线程接收、信息发送三个入口函数,设计人员只需要调用简单的三个接口函数,就能够完成对通讯接口数据的接收和发送,而不用关心其具体的处理方法和实现方法,使信息数据与设备接口分离,减少了技术难度,提高了工作效率。该框架具有良好的可扩展性,已增加K 口设备入口,正在进行接口验证。
[0004]本发明的目的通过以下技术方案来实现:
[0005]一种支持多接口协议处理的软件框架实现方法,该实现方法包括如下步骤:
[0006]I)对各种通信端口建立端口对象类,生成消息队列,并启动消息守护线程;
[0007]2)对所有启动的消息守护线程进行监听,并进行消息队列处理和数据/协议字典解析;
[0008]3)设置端口类型,并进行消息建立和消息发送。
[0009]所述步骤I中的建立端口对象类包括建立串口或网口类,并进行参数设置。
[0010]所述步骤I中的生成消息队列是根据不同的端口类型建立不同的列表。
[0011]所述步骤I中的启动消息守护线程是指根据端口数目启动相应的消息守护线程。
[0012]所述步骤2中的消息队列处理是将收到的消息按不同的端口类型列入不同的消息队列,并采用堆栈式缓冲区,设置一个读指针和一个写指针,对缓冲区进行数据的读出和写入。
[0013]所述步骤2中的数据/协议字典解析是根据用户协议建立数据/协议字典的基础上,对信息头进行分析,正确解析完整数据并完成对数据的处理。[0014]本发明的优点在于:
[0015]本发明是在VC提供的串口和网络接口 API的基础上设计的,与现有技术不同的是本发明采用了一种支持RS422串口和TCP/IP网络接口通信的软件框架,并形成C++动态链接库,设计师只需要调用头文件中的几个函数,并完成对关键参数的设置,就可以轻松实现对RS422串口和TCP/IP网络接口的通讯。其优点是对多接口的设计更简单,程序结构更清晰,函数调用更方便,代码实现更高效,同时该框架具有良好的可扩展性。
【专利附图】
【附图说明】
[0016]图1:本发明软件框架实现方法流程图。
【具体实施方式】
[0017]图1所示为本发明的软件框架组成示意图,一种支持多接口协议处理的软件框架实现方法,其软件框架通过CreatePort模块1、ReceiveData模块2、SendData模块3来实现。该实现方法包括如下步骤:
[0018]I) CreatePort模块I对各种通信端口建立端口对象类,生成消息队列,并启动消息守护线程;
[0019]2) ReceiveData模块2对所有启动的消息守护线程进行监听,并进行消息队列处理和数据/协议字典解析;
[0020]3) SendData模块3设置端口类型,并进行消息建立和消息发送。
[0021]以下对各个步骤详细介绍。
[0022]CreatePort模块I包括建立端口对象类、生成消息队列、启动消息守护线程三个步骤,其中建立端口对象类是根据不同端口建立不同端口对象类,如果是串口,则建立通用串口类CreateSerialPort O,并对该串口进行参数设置,包括端口类型、端口号、波特率,奇偶校验,数据位个数、数据停止位、缓冲区大小等参数,如果是网口,则建立网口类CreateSockPort O,并对该网口进行参数设置,包括传输类型(TCP、UDP、MCP)、端口号、IP地址等参数;生成消息队列是根据不同的端口类型建立不同的列表,串口类列表统一为m_SerialPortList,网口类列表统一为m_SockPortList ;启动消息守护线程是不进行端口分类,有多少个端口就启动多少个的消息守护线程。其中,头文件.h和实现文件.cpp的简化代码如下:
[0023]CSocketPort* m_pSocketPort;//网 口类对象指针
[0024]CSerialPort* m_pSerialPort; // 串 口类对象指针
[0025]CSocketCallback m_SocketCallBack;//网 口类守护线程
[0026]CSerialCallback m_SerialCalIBack;// 串 口类守护线程
[0027]m_pSocketPort=CreateSockPort () ;// 初始化网口 类参数
[0028]m_pSerialPort=CreateSerialPort () ;// 初始化串口类参数
[0029]ReceiveData模块2包括守护线程监听、消息队列处理、数据/协议字典解析三个步骤,其中守护线程监听是对所有启动的消息守护线程进行监听,有消息时触发接收请求;消息队列处理是将收到的消息按不同的端口类型列入不同的消息队列,并采用堆栈式缓冲区,设置一个读指针和一个写指针,对缓冲区进行数据的读出和写入;数据/协议字典解析是根据用户协议建立数据/协议字典的基础上,对信息头进行分析,正确解析完整数据并完成对数据的处理。其中,文件.CPP的简化代码如下:
[0030]case TCPHMER://获取网络数据
[0031]m_pSocketPort->tick ();
[0032]break;
[0033]case SERIALHMER://获取串 口数据
[0034]m_pSerialPort->m_pSerialPort.ReceiveChar();
[0035]break;
[0036]SendData模块3是包括端口类型设置、消息建立、消息发送三个步骤,其中端口类型设置是根据不同的端口设置不同的类型标志;消息建立是按照用户数据/协议字典形成正确的消息;消息发送是根据不同的端口,及时向串口和网络端口发送消息。其中,文件.cpp的简化代码如下:
[0037]case TCPHMER://向网络发送数据
[0038]m_pSocketPort->SendMsg(SendBuff, Temp.m_length);
[0039]break;
[0040]case SERIALHMER://向串口发送数据
[0041]m_pSerialPort->SendMsg("HelloP", strlen("HelloP"));
[0042]break;
[0043]本方法的实施,可以使设计人员集中精力关注于系统设计本身的问题或感兴趣的研究方向,减少设计人员在底层基础问题上精力投入,大大缩短设计周期,提高设计效率,具有较好的通用性,可有效避免重复劳动,提高仿真系统的正确性,减少人力资源,提高经济效益。
[0044]应当理解,以上借助优选实施例对本发明的技术方案进行的详细说明是示意性的而非限制性的。本领域的普通技术人员在阅读本发明说明书的基础上可以对各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【权利要求】
1.一种支持多接口协议处理的软件框架实现方法,其特征在于,该实现方法包括如下步骤: 1)对各种通信端口建立端口对象类,生成消息队列,并启动消息守护线程; 2)对所有启动的消息守护线程进行监听,并进行消息队列处理和数据/协议字典解析; 3)设置端口类型,并进行消息建立和消息发送。
2.根据权利要求1所述的一种支持多接口协议处理的软件框架实现方法,其特征在于,所述步骤I中的建立端口对象类包括建立串口或网口类,并进行参数设置。
3.根据权利要求1或2所述的一种支持多接口协议处理的软件框架实现方法,其特征在于,所述步骤I中的生成消息队列是根据不同的端口类型建立不同的列表。
4.根据权利要求3所述的一种支持多接口协议处理的软件框架实现方法,其特征在于,所述步骤I中的启动消息守护线程是指根据端口数目启动相应的消息守护线程。
5.根据权利要求1所述的一种支持多接口协议处理的软件框架实现方法,其特征在于,所述步骤2中的消息队列处理是将收到的消息按不同的端口类型列入不同的消息队列,并采用堆栈式缓冲区,设置一个读指针和一个写指针,对缓冲区进行数据的读出和写入。
6.根据权利要求1所述的一种支持多接口协议处理的软件框架实现方法,其特征在于,所述步骤2中的数据/协议字典解析是根据用户协议建立数据/协议字典的基础上,对信息头进行分析,正确解析完整数据并完成对数据的处理。
【文档编号】H04L29/06GK103795720SQ201410035680
【公开日】2014年5月14日 申请日期:2014年1月24日 优先权日:2014年1月24日
【发明者】郑燕红, 张进, 张庆义 申请人:北京仿真中心