一种串口通讯新模型的研究和应用分析

时间:2022-07-01 12:45:27

一种串口通讯新模型的研究和应用分析

【摘 要】本文通过借鉴I/O完成端口模型的核心思想,建立了一种新型的串口通讯模型。这种模型提出“通讯元”作为协议性串口通讯的最小单位,将“通讯元”提交到事件队列线程中自动进行处理,不仅可以使处理过程变得更加简单,同时使运行效率得到大大提升。除此之外,本文在这种模型的基础上,设计了一个协议性串口通讯模块,可以将通讯底层的细节封装起来,提供更加方便快捷的通讯接口。

【关键词】串口通讯;通讯元;新模型,应用

由于各种服务器的应用,经常会面对大量的数据通信及客户端连接请求,使得服务器无法正常地进行工作。这些与服务器的数据传输有着相同的特点:每个连接上收发的数据包容量非常小,但客户连接量非常大。微软公司在Winsock2中引入的完成端口模型,具有最高的数据吞吐率和最好的伸缩性,可以处理大量的并发连接。随着连接数的增多及通信错误率的增加,协调和管理众多线程,是一个非常复杂的问题。本文建立了一种新型的串口通讯模型,并设计了一个协议性串口通讯模块,在工业造气炉监控组态软件设计中,该模块的应用具有接口简单、运行机制高效稳定的特点。

一 、I/O完成端口的简介

I/O完成端口是一种非常高效的通讯模型,它可以利用少量的工作线程对大量的异步I/O进行处理,使得非I/O处理和I/O处理能够同时进行,从而满足大并发量的管理工作。利用多线程使并行执行的效率进一步提高及避免线程阻塞是完成端口的最终目标。

通过多线程的方式对客户端的通信请求进行处理,每个客户端要求连接socket时,需要重新启动一个新的线程与客户端进行通信。在运行的线程之间,CPU不能进行上下文的切换工作。主要原因是由于线程切换需要花费大量的时间,并且在客户端连接线程较多的情况下,会大大降低CPU的执行效率。微软这种模型,就是为了解决这类问题。完成端口模型可以在工作线程较少的情况下,对大量的socket操作进行处理,防止线程切换开销,大大提高网络通信的性能。

二、串口通讯新模型

这种新型的通讯模型是在I/O完成端口模型的核心思想上建立起来的,它提出将“通讯元”作为协议性串口通讯的最小单位,“通讯元”主要由接收数据处理函数的绑定、等待接收的命令长度、发送的数据三个部分组成。“通讯元”相当于I/O完成接中的消息一样,会被提交到事件队列线程中进行处理。其结构利用了composite设计模式核心思想,封装每次通讯底层的细节,对外提供方便快捷的通讯接口。通讯元接口与接收命令对象、发送命令对象、数据处理对象存在聚合关系。这种新型的设计结构,不仅可以简化通讯的处理过程,同时可以更加便捷的为通讯元添加其他相关的对象,从而实现程序的可移植性。

(一)串口通讯新模型的工作机制

当程序正式启动之后,首先需要开启通讯元引擎,对通讯元和串口进行初始化设置。然后又通讯元引擎来创建超时处理列队、消息处理列队、发送列队和接受列队。当串口发生通讯操作时,再启动工作者线程,将通讯元进入消息列队。按照先进先出的原则,工作者线程首先提取对头的通讯元,然后将空闲的线程从线程池中取出来,在空闲线程中依次对处理函数与通讯元是否处于发送等待状态、是否绑定在一起、是否超时进行判断,同时相应的处理各种状态,消除无效的通讯元,按照一定的方式循环往复进行。

三、串口通讯新模块的设计

(一)设计流程

由指定数目的工作者线程和一个主线程可以构成一个系统。获取串口操作、创建工作者线程、创建通讯元队列、初始化通信模块等是主线程需要完成的主要工作。产生通讯元使,需要首先标记自身的状态,主要包括该通讯元是接收信息通讯元或发送信息通讯元以及下位机的ID号。同时,程序还需要对通讯元

的数量居容量的进行初始化设置,将要接收或发送的数据装入通讯元中。最后对通讯元的超时处理方式进行标记。

工作者线程的具有实现异步操作的作用,将通讯元从通讯元队列中取出来,对通讯元是否处于超时状态进行判断,如果不处于超时的状态,则对通讯员的当前的状态进行解析,同时相应的处理各种状态,消除无效的通讯元是工作者线程需要完成的主要工作。工作者线程是与多线程并行工作的。程序首先对线程池中的线程状态进行扫描,空闲线程将第一个通讯元从通讯元的队列中取出来进行解析,在对通讯元进行解析时,这种通讯元所对应的下位机信息可以第一时间被上位机获取到,从而确保该通讯元对应的下位机与上位机的通信过程能够准确的进行。当通讯元处于发送状态时,程序会首先对串口缓冲区的状态进行判断,当缓冲区为空时,则执行该通讯元;当通讯元处于接收状态时,当前的线程会首先挂起,等待与该通讯元相对应的下机位发送信息;当通讯元处于处理状态时,程序会为得到通讯元中的数据会调用解析函数,当通讯元被标记为无效时,该通讯元会被程序删除(如图1所示)。

(二)仿真实验

四、结语

综上所述,这种串口通讯新模型是在I/O完成端口模型的核心思想上建立起来的,它不仅能够对多线程进行合理的利用和管理,同时可以对多串口通信的线程进行有效的管理,使系统的工作效率得到有效地提升,程序的可移植性得到大大加强。在工业造气炉监控组态软件设计中,采用了该模型,经过实践表明,该模型的应用具有接口简单、运行机制高效稳定的特点。

参考文献:

[1]李晓月.基于IOCP机制的CSCW网络通信层设计[J].河南机电高等专科学校学报, 2014,22(02):19-21.

[2]张九宴.VC多线程串口通讯编程技术在GPS导航的应用介绍[J].全球定位系统,2012,23(06):44-46.

[3]罗琦琨,张庆陵,向明.神经电检诊仪上位机与下位机的数据通信[J].微计算机应用,2013,66(01):32-35.

作者简介:

管来奇(1991--),男,山东青岛人,武汉轻工大学电气与电子工程学院电气工程及其自动化专业2010级本科生

上一篇:对电网继电保护综合自动化系统的研究 下一篇:浅谈基于单片机的数据串口通信