• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種串口通訊新模型的研究和應(yīng)用分析

    2014-04-29 00:00:00管來(lái)奇
    數(shù)字化用戶 2014年9期

    【摘 要】本文通過(guò)借鑒I/O完成端口模型的核心思想,建立了一種新型的串口通訊模型。這種模型提出“通訊元”作為協(xié)議性串口通訊的最小單位,將“通訊元”提交到事件隊(duì)列線程中自動(dòng)進(jìn)行處理,不僅可以使處理過(guò)程變得更加簡(jiǎn)單,同時(shí)使運(yùn)行效率得到大大提升。除此之外,本文在這種模型的基礎(chǔ)上,設(shè)計(jì)了一個(gè)協(xié)議性串口通訊模塊,可以將通訊底層的細(xì)節(jié)封裝起來(lái),提供更加方便快捷的通訊接口。

    【關(guān)鍵詞】串口通訊;通訊元;新模型,應(yīng)用

    由于各種服務(wù)器的應(yīng)用,經(jīng)常會(huì)面對(duì)大量的數(shù)據(jù)通信及客戶端連接請(qǐng)求,使得服務(wù)器無(wú)法正常地進(jìn)行工作。這些與服務(wù)器的數(shù)據(jù)傳輸有著相同的特點(diǎn):每個(gè)連接上收發(fā)的數(shù)據(jù)包容量非常小,但客戶連接量非常大。微軟公司在Winsock2中引入的完成端口模型,具有最高的數(shù)據(jù)吞吐率和最好的伸縮性,可以處理大量的并發(fā)連接。隨著連接數(shù)的增多及通信錯(cuò)誤率的增加,協(xié)調(diào)和管理眾多線程,是一個(gè)非常復(fù)雜的問(wèn)題。本文建立了一種新型的串口通訊模型,并設(shè)計(jì)了一個(gè)協(xié)議性串口通訊模塊,在工業(yè)造氣爐監(jiān)控組態(tài)軟件設(shè)計(jì)中,該模塊的應(yīng)用具有接口簡(jiǎn)單、運(yùn)行機(jī)制高效穩(wěn)定的特點(diǎn)。

    一 、I/O完成端口的簡(jiǎn)介

    I/O完成端口是一種非常高效的通訊模型,它可以利用少量的工作線程對(duì)大量的異步I/O進(jìn)行處理,使得非I/O處理和I/O處理能夠同時(shí)進(jìn)行,從而滿足大并發(fā)量的管理工作。利用多線程使并行執(zhí)行的效率進(jìn)一步提高及避免線程阻塞是完成端口的最終目標(biāo)。

    通過(guò)多線程的方式對(duì)客戶端的通信請(qǐng)求進(jìn)行處理,每個(gè)客戶端要求連接socket時(shí),需要重新啟動(dòng)一個(gè)新的線程與客戶端進(jìn)行通信。在運(yùn)行的線程之間,CPU不能進(jìn)行上下文的切換工作。主要原因是由于線程切換需要花費(fèi)大量的時(shí)間,并且在客戶端連接線程較多的情況下,會(huì)大大降低CPU的執(zhí)行效率。微軟這種模型,就是為了解決這類問(wèn)題。完成端口模型可以在工作線程較少的情況下,對(duì)大量的socket操作進(jìn)行處理,防止線程切換開(kāi)銷,大大提高網(wǎng)絡(luò)通信的性能。

    二、串口通訊新模型

    這種新型的通訊模型是在I/O完成端口模型的核心思想上建立起來(lái)的,它提出將“通訊元”作為協(xié)議性串口通訊的最小單位,“通訊元”主要由接收數(shù)據(jù)處理函數(shù)的綁定、等待接收的命令長(zhǎng)度、發(fā)送的數(shù)據(jù)三個(gè)部分組成?!巴ㄓ嵲毕喈?dāng)于I/O完成接中的消息一樣,會(huì)被提交到事件隊(duì)列線程中進(jìn)行處理。其結(jié)構(gòu)利用了composite設(shè)計(jì)模式核心思想,封裝每次通訊底層的細(xì)節(jié),對(duì)外提供方便快捷的通訊接口。通訊元接口與接收命令對(duì)象、發(fā)送命令對(duì)象、數(shù)據(jù)處理對(duì)象存在聚合關(guān)系。這種新型的設(shè)計(jì)結(jié)構(gòu),不僅可以簡(jiǎn)化通訊的處理過(guò)程,同時(shí)可以更加便捷的為通訊元添加其他相關(guān)的對(duì)象,從而實(shí)現(xiàn)程序的可移植性。

    (一)串口通訊新模型的工作機(jī)制

    當(dāng)程序正式啟動(dòng)之后,首先需要開(kāi)啟通訊元引擎,對(duì)通訊元和串口進(jìn)行初始化設(shè)置。然后又通訊元引擎來(lái)創(chuàng)建超時(shí)處理列隊(duì)、消息處理列隊(duì)、發(fā)送列隊(duì)和接受列隊(duì)。當(dāng)串口發(fā)生通訊操作時(shí),再啟動(dòng)工作者線程,將通訊元進(jìn)入消息列隊(duì)。按照先進(jìn)先出的原則,工作者線程首先提取對(duì)頭的通訊元,然后將空閑的線程從線程池中取出來(lái),在空閑線程中依次對(duì)處理函數(shù)與通訊元是否處于發(fā)送等待狀態(tài)、是否綁定在一起、是否超時(shí)進(jìn)行判斷,同時(shí)相應(yīng)的處理各種狀態(tài),消除無(wú)效的通訊元,按照一定的方式循環(huán)往復(fù)進(jìn)行。

    三、串口通訊新模塊的設(shè)計(jì)

    (一)設(shè)計(jì)流程

    由指定數(shù)目的工作者線程和一個(gè)主線程可以構(gòu)成一個(gè)系統(tǒng)。獲取串口操作、創(chuàng)建工作者線程、創(chuàng)建通訊元隊(duì)列、初始化通信模塊等是主線程需要完成的主要工作。產(chǎn)生通訊元使,需要首先標(biāo)記自身的狀態(tài),主要包括該通訊元是接收信息通訊元或發(fā)送信息通訊元以及下位機(jī)的ID號(hào)。同時(shí),程序還需要對(duì)通訊元

    的數(shù)量居容量的進(jìn)行初始化設(shè)置,將要接收或發(fā)送的數(shù)據(jù)裝入通訊元中。最后對(duì)通訊元的超時(shí)處理方式進(jìn)行標(biāo)記。

    工作者線程的具有實(shí)現(xiàn)異步操作的作用,將通訊元從通訊元隊(duì)列中取出來(lái),對(duì)通訊元是否處于超時(shí)狀態(tài)進(jìn)行判斷,如果不處于超時(shí)的狀態(tài),則對(duì)通訊員的當(dāng)前的狀態(tài)進(jìn)行解析,同時(shí)相應(yīng)的處理各種狀態(tài),消除無(wú)效的通訊元是工作者線程需要完成的主要工作。工作者線程是與多線程并行工作的。程序首先對(duì)線程池中的線程狀態(tài)進(jìn)行掃描,空閑線程將第一個(gè)通訊元從通訊元的隊(duì)列中取出來(lái)進(jìn)行解析,在對(duì)通訊元進(jìn)行解析時(shí),這種通訊元所對(duì)應(yīng)的下位機(jī)信息可以第一時(shí)間被上位機(jī)獲取到,從而確保該通訊元對(duì)應(yīng)的下位機(jī)與上位機(jī)的通信過(guò)程能夠準(zhǔn)確的進(jìn)行。當(dāng)通訊元處于發(fā)送狀態(tài)時(shí),程序會(huì)首先對(duì)串口緩沖區(qū)的狀態(tài)進(jìn)行判斷,當(dāng)緩沖區(qū)為空時(shí),則執(zhí)行該通訊元;當(dāng)通訊元處于接收狀態(tài)時(shí),當(dāng)前的線程會(huì)首先掛起,等待與該通訊元相對(duì)應(yīng)的下機(jī)位發(fā)送信息;當(dāng)通訊元處于處理狀態(tài)時(shí),程序會(huì)為得到通訊元中的數(shù)據(jù)會(huì)調(diào)用解析函數(shù),當(dāng)通訊元被標(biāo)記為無(wú)效時(shí),該通訊元會(huì)被程序刪除(如圖1所示)。

    (二)仿真實(shí)驗(yàn)

    四、結(jié)語(yǔ)

    綜上所述,這種串口通訊新模型是在I/O完成端口模型的核心思想上建立起來(lái)的,它不僅能夠?qū)Χ嗑€程進(jìn)行合理的利用和管理,同時(shí)可以對(duì)多串口通信的線程進(jìn)行有效的管理,使系統(tǒng)的工作效率得到有效地提升,程序的可移植性得到大大加強(qiáng)。在工業(yè)造氣爐監(jiān)控組態(tài)軟件設(shè)計(jì)中,采用了該模型,經(jīng)過(guò)實(shí)踐表明,該模型的應(yīng)用具有接口簡(jiǎn)單、運(yùn)行機(jī)制高效穩(wěn)定的特點(diǎn)。

    參考文獻(xiàn):

    [1]李曉月.基于IOCP機(jī)制的CSCW網(wǎng)絡(luò)通信層設(shè)計(jì)[J].河南機(jī)電高等??茖W(xué)校學(xué)報(bào), 2014,22(02):19-21.

    [2]張九宴.VC多線程串口通訊編程技術(shù)在GPS導(dǎo)航的應(yīng)用介紹[J].全球定位系統(tǒng),2012,23(06):44-46.

    [3]羅琦琨,張慶陵,向明.神經(jīng)電檢診儀上位機(jī)與下位機(jī)的數(shù)據(jù)通信[J].微計(jì)算機(jī)應(yīng)用,2013,66(01):32-35.

    作者簡(jiǎn)介:

    管來(lái)奇(1991--),男,山東青島人,武漢輕工大學(xué)電氣與電子工程學(xué)院電氣工程及其自動(dòng)化專業(yè)2010級(jí)本科生

    平潭县| 海林市| 驻马店市| 吉安市| 枣阳市| 延庆县| 唐山市| 建平县| 紫金县| 罗山县| 虎林市| 荥经县| 盐源县| 电白县| 石城县| 永顺县| 响水县| 得荣县| 中超| 夏河县| 梧州市| 无锡市| 双流县| 陆河县| 太和县| 巨野县| 思南县| 闸北区| 永定县| 建瓯市| 望江县| 许昌县| 会泽县| 阿克陶县| 定远县| 平江县| 隆林| 堆龙德庆县| 页游| 隆化县| 玛多县|