探究一种用户友好的C++串口类设计

2018-06-11 09:43王星
科学与财富 2018年14期
关键词:串口通信模块化

王星

摘要:在信息化社会中,串口通信在安装与设计相关设备设施中均有广泛性应用,文章阐述了一类以ActiveX控件MSComm和MFC Library Regular DLL为基点的C++串口设计,采用经细致规划的函数接口和消息体制,最大限度的精简了串口编辑程序。和直接采用MSComm控件相比较,采用该类型串口进行编程,能够有效降低串口编程的难度系数,使用者只有具备基礎的串口知识,能够顺利的书写出正常运作的串口流程。

关键词:ActiveX控件;MSComm;串口通信;模块化

C++为当下结构最为繁杂,以及功能最为强大的一类windows应用程序开发工具,怎样有效应用C++研发串行通信程序去达到工控系统的实时通信,是社会各个领域中关注的焦点,也是行业领域发展期间面对的重难点。串口通信自身具备成本低廉、操作过称简易、可靠性高、远距离传输等优势,应用范畴不断拓展。有效应用计算机上的串口能为对装、设备进行参数规划等工作创造诸多便利条件,设备间数据传导目标也顺利实现,故此规划具备操作串口功能的计算机程序使极为普及的编程任务。

1当前Windows操作系统上进行串口编程的几种方法

1.1采用微软C运行时库的I/O函数

在对串口操作过程中,可应用_inp、_inpw、_inpd、_outp等函数,上述函数最大的特征是能够直接对串口芯片施以相关操作行为。这就需要编程人员对串口硬件的工作原理与程序有全面性了解[1]。

1.2应用Windows API函数

即应用Windows API中的ReadFile、WriteFile、BuildComDCB等函数进行相关操作。上述函数应用过程具有一定难度,只有在对系统内文件有整体认识以及设备管理具有一定深度情况下,才可有效应用。

1.3应用第三方串口通信类

第三方串口通信类以CSerialPort,cnComm等为主,应用制定的语言编写,并装包成类(class),内部采用调用Windows API方式,达到对串口的有效操作。

2 用户友好的串口DLL和C++串口类规划

2.1串口DLL的规划

MSComm控件具备运行稳定可靠属性,为本文设计工作的开展与运行提供了坚实基础。从性质上分析,MSComm为一类ActiveX控件,只有在ActiveX容器内其才会运作,并将效能发挥出来。对话框是较为典型的ActiveX容器。故此,本文规划了一个对话框类CommCtnr,若将MSComm控件插进对话框类CommCtnr内,Visual C++开发环境将会自行取代MSComm控件产生代理类CMSComm,其将CMSComm类的对象设为对话框类CommCtnr的数据成员[2]。

使用者可直接把有关的.cpp、.h文件以及.rc资源文件拷贝到自己的工程目录内,但上述过程运行相对复杂,且耗用大量时间。更有效的方法是把有关的文件独立编译为一个动态链接库(DLL),用户只需调用该动态链接库,就可顺利的进行串口操作。MFC能促使两类动态链接库运转:①MFC Library Extension DLL;②MFC Library Regular DLL。前者可把整个C++类设为DLL的外部接口,以助力于DL过程,但要求用户需采用C++语言编程,只有在动态链衔接MFC库时,DLL的效能才会发挥出来,用户群规模可能有所减缩,故此本文设计期间不采用该种方式。而应用MFC Library Regular

DLL方式,其可提供多类编程语言设计的客户程序。因为其对外界的接口只认可是C风格的函数,故此其与类(class)类型的参数之间产生互斥效应。故此,本文在对每一C风格函数接口规划过程中,均需一个无符号整型的参数代表串口号,串口号和串口存在一一对应关系,在DLL内部串口号有针对的被转型为MSComm串口控件。在提供串口号的情况下,就可实现对相关串口进行操作,为用户创造诸多便利条件。

2.2用户友好的消息的规划

消息传递为Windows程序之间以及程序内部信息互换的主要渠径,本文应用自定义的消息去落实客户程序和DLL间的交互任务。为DLL设计了三种消息,MSComm控件若传送消息,就会立即被转型为者三类消息之一,最后发送给客户程序:①接收数据消息;②传送数据消息;③硬件控制消息或者是串口错误[3]。

消息的实际数值大小取决于客户程序,于串口初始化之际,就把消息值传达给DLL。那么在后续运转期间,存在相关的串口事件发生时,DLL就会把对应的消息传送给给客户程序。

2.3用户友好的C++串口类规划

客户程序能够直接应用DLL的导出函数,对串口的程序进行编辑,该类函数属于C风格的函数。对于C++编程人员而言,本文规划了一个C++串口类Mcomm,其为DLL导出函数的包装类,也被称之为称为代理类客户程序经由Mcomm操作串口,能够将C++语言面向对象的优势彰显出来,和C风格接口相比较,该类借口结构更显简洁,并且其还能够自主管理串口资源的获得与传导过程,以降低客户程序的运行负担,进一步提升串口编程的简易性与快捷性,遵照了简洁、清晰、易用的设计哲学理念。应用Mcomm难度和寻常的C++类几乎无差异,把mcomm.h文件囊括在项目内即可。

3结束语

本文以ActiveX控件MSComm为基点,规划了一类串口通信DLL库,进而设计了一个C++串口类,创设了一类对用户友好的串口编程渠道,大幅度降低了串口程序编写难度。此时,程序员只需具备最基础的串口知识,就可以实现编程目标,为非专业程序员以及程序编写初学者提供巨大帮助。在实践中,发现DLL库内编程语言类型众多,此时非C/C++程序员也可以应用其对串口程序进行编辑。

参考文献:

[1] 翁花群, 林元国. 基于Visual C++的数字图像处理实验教学软件开发[J]. 廊坊师范学院学报(自然科学版), 2015, 15(1):24-28.

[2] 丁立波. 基于ARM9和Qt的嵌入式视频监控系统的设计[D]. 南昌大学, 2011,12(14):124-7413.

[3]王尹圣, 曾国强, 李强,等. 基于C#与C++混编的轻元素X荧光测量软件[J]. 核电子与探测技术, 2015(4):394-398.

猜你喜欢
串口通信模块化
模块化自主水下机器人开发与应用
基于模块化控制系统在一体化教学中的应用
模块化住宅
ACP100模块化小型堆研发进展
从模块化中得到的二氧化碳
模块化VS大型工厂
基于Qt和Flash的嵌入式Linux软件架构设计
串口通信在智能家居监控系统中的应用
基于OpenCV的室内照明智能控制系统设计与实现
基于MSP430单片机的窄带无线数据传输模块的设计