一种串口通讯新模型探究和应用

一种串口通讯新模型探究和应用摘要:该文借鉴I/O完成端口模型(IOCP)的核心思想,建立了一个适用于协议性串口通讯的新模型。该模型提出了一个协议性串口通讯的最小单位一一“通讯元”,将“通讯元”提交到事件队列线程中自动处理,简化了处理过程并提高了运行效率。同时,该文基于该模型设计出了一个协议性串口通讯模块,以封装通讯底层的细节,从而提供方便的通讯接口。将该模块应用于工业造气炉监控组态软件设计中,实际运行表明:该模型具有简单的接口和稳定、高效的运行机制。关键词:IOCP;串口通讯;通讯元中图分类号:TN915文献标识码:A文章编号:1009-3044(2013)04-0689-04TheResearchandApplicationofaNewSerialCommunicationModelCHENGeng(CollegeofInformationScience&Technology,XiamenUniversity,Xiamen361005,China)Abstract:Inthispaper,thecoreideaof1/0CompletionPortModelisborrowedtobuildanewmodel,whichissuitablefortheserialcommunicationbasedonprotocoLAminimumunitcalled'communicationunit,isputforwardinthismode1.Thecommunicationunit,issubmittedtoanevent-queue-threadandisdealtautomatically.Itwillhelptosimplifytheprocessandincreaseoperationalefficiency.Meanwhile,inthispaper,aserialcommunicationmodulebasedonthemodelisdesignedtoofferaconvenientcommunicationinterface・Themoduleisappliedinthesnoopwareofindustrialgasifier・It,sprovedthatthismodelhasasimpleinterfaceandefficientoperationmechanism.Keywords:IOCP;serialcommunication;communicationunitWeb服务器、网络游戏服务器等应用经常会面对海量的客户端连接请求以及数据通信,这种海量的并发的连接请求与数据通信,往往成为制约服务器正常工作的因素。这些与服务器的数据传输具有共同的特点:客户连接量是海量的,但每个连接上收发的数据包容量是较小的。微软公司在Winsock2中引入的完成端口(CompletionPort,IOCP)模型提供了最好的伸缩性和最高的数据吞吐率,是处理大量并发连接的最佳方案。在上位机与多台下位机通过串口通信的环境中,随着连接数的增多,系统通信的速度降低,通信错误率增加,如何有效的管理和协调众多线程,是一个比较困难的问题。该文基于IOCP核心思想提出了一个通讯元模型,并针对实际应用设计了一个支持多串口通讯模块。该模块应用于工业造气炉监控组态软件设计中,实际运行表明:该模型具有简单的接口和稳定、高效的运行机制。1I/O完成端口模型(IOCP)简介1.1完成端口完成端口是Windows提供的一种高效的I/O模型,它利用少量的工作线程来完成大量的异步I/O处理,使得I/O处理和非I/O处理能够重叠并行的进行,从而满足大并发量管理工作。完成端口的目标就是利用多线程来最大化提高并行执行的效率,避免线程上不必要的阻塞,减少线程上下文切换带来的资源和时间开销。1.2完成端口工作原理完成端口会创建一个消息队列和一个线程池。根据计算机系统中的处理器数目,建立相应的工作者线程,这些线程专门用来处理和客户端通信。当客户端建立新的socket连接时,该socket连接的句柄就与完成端口绑定起来。该socket的网络通信请求按照先进先出的方式进入到完成端口的消息队列中去。线程池取出空闲的线程,让线程扫描完成端口中的消息队列,取出队列里面的通信请求(如发送数据、接收数据)并处理。等处理完毕后再扫描队列里面的下一个网络通信请求,如此循环。需要注意的是,完成端口对工作线程的管理具有一定的原则:首先在创建完成端口时要制定最大的并发线程数(补充的后文流程),一般情况是一个处理器对应一个并发线程,而工作线程的数量大于或等于最大并发线程书。考虑到线程会进入挂起的状态,为了让应用程序有足够的工作线程为I/O请求服务,一般创建工作线程的个数为CPU个数的两倍。1.3完成端口优势多线程的方式来处理客户端的socket通信请求,每一个客户端要求连入socket时,都要启动一个新的线程与客户端进行通信。CPU不得不在运行的线程之间进行上下文的切换。因为线程切换是相当占用CPU时间的,当客户端的连入线程过多时,CPU的执行效率...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?