龙源期刊网协议编程与实现作者:戴振民来源:《电子技术与软件工程》2018年第17期摘要对于嵌入式软件系统的开发而言,上位机软件的编写尤为重要,很多嵌入式工程师都广泛关注上位机软件编写的研发领域。本文主要介绍的就是一种上位机软件的编程方法,提供了最新Qt5库编写的MODBUS协议的方案。【关键词】串口语言状态及编程MODBUS开发出一款适合上位机控制的应用软件,在智能电子线路的研制过程中非常必要,对于一般的嵌入式应用软件的开发而言,总是会遇到各种上位机软件编写的难题,上位机软件编写的核心任务之一就是串口通信语言的编写。利用一些比较传统的上位机软件开发工具,例如VB6等软件,都基本上只能适用于比较老旧的Windows操作系统,而C++又因为过于复杂而不便于被嵌入式工程师所利用,本文介绍的这种Qt5串口的编程方案,掌握起来比较轻松,功能也非常强大。1Qt5串口如何进行通信Qt5串口可以实现跨平台的开发,是一个贯通C++和GUI的开发框架,可以调用模块化的C++类的数据库,实现和VisualC++软件可以调用的MFC库一样的功能,相比较其他软件接口而言Qt的编程更加简便快捷,实现了跨平台的功能,具备强大的扩展性,可以广泛用于嵌入式软件的开发之用。利用Qt进行编程的优势在于信号的使用机制可以利用开发工具中带的QtCreater进行编写,Qt最新的版本目前叫做Qt5,其中用于串口通信的模块主要是类似于QSerialPort和类似于QSerialPortInfo的平台。1.1串口的列举通过静态的方法利用QSerialPortInfo可以实现所有端口的列举,通过获取端口的有用信息,可以常见的方法例如通过isBUSY的方法判断出端口在运行中所处的状态,如果是忙碌的状态,则可以通过PortName的方法获取端口的名字,可以利用QSerialPortinfo的方法对对象输入所要调用的QSerialPort所关联的对象的SetPort进行SetPortName的方法,或者也可以采用参数的方法进行调用,例如将QSerialPortinfo的对象看成是一个参数,利用setPort的方法进行调用,将他们设置成一个设备的串口。1.2串口的设置方法龙源期刊网在上位机中进行串口通信的步骤就是选择串口的参数,嵌入式设备开发的必备一步就是进行参数的设置。在Qt5中,可以使用QSerialPort对象来进行抽象的端口设置,进行端口的封装和相关操作。在构成了一个QSerialPort对象之后,可以通过SetPortName或者采用SetPort的方法进行参数设置,在打开了该端口之后,QSerialPort就可以对进入设备的信息进行检测,进行初始化设置,或者也可以使用其他的例如setFlowControl的方法对流控模式、波的频率和数据的帧格式进行重新设计,例如串口的波特率可以为19200,数据帧可以为8N1。1.3串口数妮的读写方法数据的收发是串口通信的核心,利用强大的QSerialPort软件对对象文件进行设置,可以让简单的读写指令实现串口的设计目标,可以利用readline和readall指令对端口的情况进行调用,如果利用一次数据就读写完整了数据,余下的数据会存放在QSerialPort软件里面,作为其中的缓存数据,新的数据会储存在缓存的尾部,利用例如setread和buffersize的方法对缓冲区域的大小进行设置。串口数据适合读取的时机关系密切的,时机的选择问题通常涉及到两个路径,一个是循环不断的串口路径,另一个是可能接受的一些数据,但是去掉其中的一些任务,并不会对其他任务指令造成阻塞,一般采用的是GUI的应用,或者选择其他的Qt的强大信号机制。进行连接的是QSerialPort和readyread进行数据的接受,通过数据的端口对槽函数进行读取。如果串口可以进行数据接收,槽函数就可以实现数据调用,可以利用的数据端口在函数调用的过程中涉及到数据的列队问题,可以方便对之后的数据包进行读取操作,作为设置代码的一种手段。1.4串口的关闭串口的操作需要使用close函数进行,关闭端口,停止I/O操作。2MODBUS协议的实现方法想要实现端口的可靠通信问题,还需要具备的是可靠的串口通信协议,MODBUS就是一种协议,在工业领域已经获得了广泛的应用,下文介绍的一些方法就是MODBUS协议在工业产业生产中已经获得过广泛的推广,该协议在Qt串口的运行过程中也可能发挥更大的作用。2.1MOUBUS的简介MOUBUS协议是一种简单的利用电子控制原理工作的通信软件,是一种通信语言,通过MOUBUS协议可以实现控制器之间的沟通与互动,控制神经网络和设备之间实现通信的顺畅,并且其已经成为了工业的一种标准,利用该设备,不同的厂商之间的设备可以实现兼容互通,构成一种互联的工业网络,为了实现监控的集中和可控制,还会尝试机器识别的方法实现控制器之间的消息互通,通过各种结构实现网络通信,如果通过一种机制可以和另外一种机制实现设备之间的沟通互联,一种设备将会能够回应其他设备的请求,设备可以学会侦测错误记录并进行及时更正。可以通过一种控制器对另外一种设备的访问,将侦测出来的错误记录通过龙源期刊网路径记载的形式储存起来,在制定了相应的网络格局之后实现公共格式的共享。MODBUS的消息帧可以分成RTU消息帧和常见的ASCII消息帧,通过RTU消息帧可以实现CRC冗余循环的效验,通过LRC纵向冗余的效验功能,可以实现ASCII消息帧的效验。对MODBUS的关键内容进行效验在于解码其消息帧,考虑到串口通信中可能出现各种信息传输的错误问题,可靠的消息帧的检测可以采用机器编码的方式进行,根据消息帧的数据结构可以实现同一设计模式下的数据功能转换。数据程序的包装转换可以通过起始状态的消息更新进行,当收到一部分数据之后,就会对应的进入下一个工作状态,接收到的信息因而不会出现错误的可能,如果仅仅是简单的数据丢失,则不必再等待另一个数据帧的传输。3结语本文介绍了数据包的开发方案和实现方法,本文阐明了Qt5串口如何进行编程,根据状态机的数据如何进行解码等一些软件功能的实现方法,根据实践检验,该种测试方案编程容易,工作起来也非常稳定。参考文献[1]龙灏.SQLite数据库在Qt5开发环境中的应用[J].电子世界,2017(24):61+63.[2]谢学刚.基于Qt5.0的机器人上位机系统的设计[D].东北农业大学,2016.[3]谢学刚,董桂菊,于猛,郭凯敏,郭志强,朱铁欣.基于Qt5.0的机器人姿态检测与控制系统的设计[J].农机化研究,2016,38(04):90-93+98.[4]范贵生,虞慧群,陈丽琼,刘冬梅,分布式嵌入式系统的自适应能耗管理和分析[J].软件学报,2014,25(02):419-438.[5]任慰,以实时操作系统为中心的嵌入式系统平台化设计研究[D].华中科技大学,2013.