• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      網(wǎng)絡(luò)化儀器儀表協(xié)議服務(wù)器端設(shè)計(jì)與實(shí)現(xiàn)

      2015-01-29 02:58:14龐新法
      電子設(shè)計(jì)工程 2015年14期
      關(guān)鍵詞:服務(wù)器端網(wǎng)絡(luò)化端口

      龐新法

      (陜西省委黨??萍冀萄胁?陜西 西安 710061)

      通過對(duì)傳統(tǒng)網(wǎng)絡(luò)設(shè)備的定義進(jìn)行擴(kuò)展,將儀器儀表納入網(wǎng)絡(luò)管理的范疇,使得其已經(jīng)不再是孤立的、單獨(dú)的設(shè)備,而是將測(cè)試技術(shù)、互聯(lián)網(wǎng)技術(shù)、計(jì)算機(jī)技術(shù)結(jié)合在一起的網(wǎng)絡(luò)儀器系統(tǒng)。但網(wǎng)絡(luò)化儀器間難以進(jìn)行協(xié)同工作,進(jìn)而限制測(cè)量系統(tǒng)測(cè)量效率。為了實(shí)現(xiàn)網(wǎng)絡(luò)化儀器間的通信,本文將HiSLIP協(xié)議、虛擬儀器設(shè)計(jì)技術(shù)與網(wǎng)絡(luò)化測(cè)控系統(tǒng)相結(jié)合,利用HiSLIP協(xié)議,設(shè)計(jì)網(wǎng)絡(luò)化儀器間的通信原理,并給出了協(xié)議服務(wù)器端設(shè)計(jì)與實(shí)現(xiàn)。

      協(xié)議的服務(wù)器端主要實(shí)現(xiàn)與儀器端的連接,并且實(shí)現(xiàn)為遠(yuǎn)端控制軟件提供連接、數(shù)據(jù)傳輸?shù)确?wù),和協(xié)議的客戶端配套實(shí)現(xiàn)通信通道的建立。服務(wù)器端程序,主要完成等待連接建立,連接建立,數(shù)據(jù)傳輸,和容錯(cuò)處理等。

      HiSLIP[1]協(xié)議服務(wù)器端的設(shè)計(jì)是與客戶端相對(duì)應(yīng),其功能也分為以下幾部分:協(xié)議啟動(dòng)及前期準(zhǔn)備;等待客戶端發(fā)起連接;與客戶端進(jìn)行數(shù)據(jù)交互;容錯(cuò)處理等??蛻舳说?4個(gè)交互,在服務(wù)器端程序中均一一對(duì)應(yīng),使用的消息類型會(huì)部分不同。

      1 服務(wù)器端總體設(shè)計(jì)

      根據(jù)IVI規(guī)范,儀器端的HiSLIP協(xié)議服務(wù)器端執(zhí)行流程如圖1所示,啟動(dòng)后,在同一個(gè)端口(4880)上創(chuàng)建兩個(gè)TCP連接,分別作為同步通道和異步通道。在同步通道上可雙向發(fā)送字符型命令,代理將數(shù)據(jù)按照HiSLIP的幀格式封裝,并交由下層TCP協(xié)議。

      協(xié)議啟動(dòng)時(shí),申請(qǐng)?zhí)捉涌诓⒔壎?880端口,啟動(dòng)端口偵聽,若有連接請(qǐng)求則查詢是否超過最大連接數(shù),如果超過則拒絕請(qǐng)求,否則建立連接。建立連接成功后,創(chuàng)建子進(jìn)程,并將父進(jìn)程的鏈接信息復(fù)制一份給子進(jìn)程,完成后,即可進(jìn)行數(shù)據(jù)的傳輸。父進(jìn)程會(huì)查詢是否有關(guān)閉連接的請(qǐng)求,如果有則關(guān)閉連接,如果沒有則繼續(xù)偵聽端口。

      2 協(xié)議啟動(dòng)

      服務(wù)器端協(xié)議啟動(dòng),和客戶端基本一致,申請(qǐng)Socket并進(jìn)行端口4880綁定,之后等待客戶端發(fā)起連接。通過執(zhí)行函數(shù)intserver_initialize來實(shí)現(xiàn)協(xié)議啟動(dòng)的準(zhǔn)備工作。

      3 連接建立

      根據(jù)協(xié)議要求,服務(wù)器端需要配合客戶端完成兩次連接的建立,按建立的前后順序,第一次是同步通道,第二次是異步通道[2-3]。

      圖1 服務(wù)器端的協(xié)議流程Fig.1 The agreement process on the server side

      3.1 建立連接過程中需要使用的消息類型序列

      在接收到客戶端Initialize消息后,向客戶端發(fā)送消息類型為InitializeResponse的消息,其中包含的數(shù)據(jù)有,是否是重疊模式(overlap-mode),服務(wù)器協(xié)議版本,以及會(huì)話 ID,此時(shí)第一個(gè)連接即同步通道建立完成。消息格式為,<0>。

      在接收到客戶端AsyncInitialize消息后,服務(wù)器端向客戶端發(fā)送消息類型為AsyncInitializeResponse的消息,其中包含的額數(shù)據(jù)只有服務(wù)器端程序的廠商號(hào)(server-vendorID)。此時(shí),第二個(gè)連接即異步通道建立完成。消息格式為,<0><0>。

      3.2 對(duì)遠(yuǎn)端儀器進(jìn)行鎖操作的消息類型序列

      首先接收到AsyncLockInfo消息類型,服務(wù)器返回消息AsyncLockInfoResponse,其中包含已經(jīng)授權(quán)的鎖個(gè)數(shù)和鎖類型等信息。格式為,<0>。

      接收到AsyncLock消息時(shí),使用消息AsyncLockResponse告知客戶端,加鎖成功還是失敗,或者釋放鎖成功還是失敗。在該消息中包含的數(shù)據(jù)有,請(qǐng)求加鎖標(biāo)志位和請(qǐng)求釋放鎖標(biāo)志,等待加鎖超時(shí)時(shí)間,鎖信息描述等。加鎖時(shí)發(fā)送給客戶端的消息的格式為,<0=failure,1=success,3=error><0><0>;釋放鎖時(shí)發(fā)送給客戶端的消息格式消息格式為,<1=success exclusive,2=success shared, 3=error><0><0>。

      3.3 服務(wù)器端響應(yīng)客戶端的消息尺寸使用的消息序列

      收到客戶端AsyncMaximumMessageSize消息后,服務(wù)器端通過消息AsyncMaximumMessageSizeResponse來向客戶端告知服務(wù)器端可以接受的最大消息尺寸,該消息中包含由8字節(jié)無符號(hào)整形數(shù)據(jù)表示的消息尺寸信息。消息格式為,<0><0><8><8-byte size>。

      通過 執(zhí)行函數(shù) staticinthandle_initialize_response(hislip_message*recv_message,char*send_buf,int*send_len)處理客戶端發(fā)起同步通道連接時(shí)服務(wù)器端的響應(yīng)過程。

      通過執(zhí)行函數(shù)staticinthandle_async_initialize_response(hislip_message*recv_message,char*send_buf,int*send_len)處理客戶端發(fā)起異步通道連接時(shí)服務(wù)器端的響應(yīng)過程。

      第一,社區(qū)服刑人員的主觀因素。一是存在文化程度差異,量表的表述不能完全理解,工作人員若協(xié)助解釋則會(huì)形成暗示,影響測(cè)量效果;二是量表題量多且為客觀題,社區(qū)服刑人員為節(jié)省時(shí)間隨意填寫,造成無效量表過多;三是多數(shù)社區(qū)服刑人員對(duì)心理常識(shí)知之甚少,都是“心盲”,主觀配合程度差。

      通過執(zhí)行函數(shù)staticinthandle_async_message_size(hislip_message*recv_message,char*send_buf,int*send_len) 向客戶端發(fā)送服務(wù)器端能夠接受的消息最大尺寸。

      4 數(shù)據(jù)交互

      數(shù)據(jù)交互[4-5]部分與客戶端相對(duì)應(yīng),同樣使用兩種消息類型Data和DataEND,這兩種消息類型的消息使用方法與客戶端一致,即儀器獲取的數(shù)據(jù)發(fā)送給客戶端,服務(wù)器端使用Data或DataEND消息進(jìn)行發(fā)送[7],如果可以滿足不超過最大消息長(zhǎng)度的情況下,使用DataEND消息類型進(jìn)行發(fā)送,如果超過了最大消息長(zhǎng)度,則先使用Data消息類型進(jìn)行發(fā)送若干,在剩余的數(shù)據(jù)不超過最大消息尺寸時(shí),使用DataEND發(fā)送完剩余的數(shù)據(jù)。

      在發(fā)送消息的內(nèi)容上與客戶端有所區(qū)別,服務(wù)器端使用的消息中不包含交付標(biāo)志,消息中的其他內(nèi)容和客戶端發(fā)送給服務(wù)器端的一致,包含消息ID,數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)。消息格式為,<0><0>。在接收到Data和DataEND消息時(shí),對(duì)其進(jìn)行處理的函數(shù)如下。

      5 容錯(cuò)處理

      服務(wù)器端的容錯(cuò)處理有:致命錯(cuò)誤及同步恢復(fù)交互;錯(cuò)誤告知交互;中斷交互。這些主要是配合客戶端保證整個(gè)協(xié)議能夠穩(wěn)定有序運(yùn)行,與客戶端的容錯(cuò)處理能夠一一對(duì)應(yīng),這里不再贅述。

      6 程序設(shè)計(jì)實(shí)現(xiàn)

      根據(jù)上述設(shè)計(jì)過程以及各種交互的含義,時(shí)序關(guān)系,進(jìn)行程序設(shè)計(jì)[6-7],程序?qū)崿F(xiàn)使用C語(yǔ)言實(shí)現(xiàn),運(yùn)行在Linux系統(tǒng)之上,程序中的模塊[8-9]主要有,通道建立初始化模塊,數(shù)據(jù)接收模塊,數(shù)據(jù)發(fā)送模塊等。

      通過協(xié)議服務(wù)器端源代碼中的一些功能函數(shù)介紹,說明協(xié)議服務(wù)器端的執(zhí)行過程如下。

      實(shí)現(xiàn)初始化服務(wù)器端,初始化完成后,等待客戶端的HiSLIP連接。

      staticinthandle_async_message_size()

      處理客戶端發(fā)送的協(xié)商雙方發(fā)送的消息尺寸的請(qǐng)求消息。

      staticintrecv_message_handle()

      接收從客戶端發(fā)送過來的數(shù)據(jù),并進(jìn)行初步處理,對(duì)接收的數(shù)據(jù)包按照消息類型進(jìn)行識(shí)別,識(shí)別后調(diào)用相關(guān)功能函數(shù)予以處理。

      staticintcommunicate_device()

      實(shí)現(xiàn)協(xié)議與設(shè)備的直接通信,在Linux下儀器設(shè)備,被抽象成設(shè)備文件,這里的與設(shè)備通信實(shí)質(zhì)上是協(xié)議在VFS下對(duì)文件的操作。

      staticinthandle_async_lock()

      處理客戶端發(fā)送的給設(shè)備資源加鎖和釋放鎖的操作。

      void send_data()和 void send_dataend()

      實(shí)現(xiàn)向客戶端發(fā)送數(shù)據(jù)操作。

      7 結(jié)束語(yǔ)

      本文通過對(duì)協(xié)議服務(wù)器端的詳細(xì)設(shè)計(jì),并在此基礎(chǔ)上結(jié)合客戶端的設(shè)計(jì)及控制端和儀器網(wǎng)絡(luò)代理的設(shè)計(jì),實(shí)現(xiàn)了儀器間通信。在局域網(wǎng)環(huán)境下,通過示波器A和示波器B間的通信測(cè)試,證明本文提出的方案能夠?qū)崿F(xiàn)儀器與控制端、儀器和儀器的通信。

      [1]LXI HiSLIPTest Procedures[EB/OL].(2011-10-20).http://www.ivifoundation.org

      [2]吳念,強(qiáng)彥.UNIX網(wǎng)絡(luò)程序設(shè)計(jì)[M].北京.科學(xué)出版社,2011.

      [3]余成波,王士彬,李洪兵.網(wǎng)絡(luò)化儀器技術(shù)與實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,2010.

      [4]林玉池.測(cè)量控制與儀器儀表前沿技術(shù)及發(fā)展趨勢(shì)[M].天津:天津大學(xué)出版社,2005.

      [5]董永清.Linux C編程實(shí)戰(zhàn)[M].北京:人民郵電出版社,2008.

      [6]宋寶華.Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解[M].北京.人民郵電出版社,2008.

      [7]陳莉君,康華.Linux操作系統(tǒng)原理與應(yīng)用[M].北京.清華大學(xué)出版社,2006.

      [8]李宥謀,劉釗遠(yuǎn),馬博.嵌入式系統(tǒng)開發(fā)[M].北京.清華大學(xué)出版社,2011.

      [9]夏亞君,黃縉華,顧博川,等.運(yùn)行服務(wù)總線綜合評(píng)價(jià)方法與評(píng)測(cè)工具研究[J].陜西電力,2014(12):21-25.XIA Ya-jun, HUANG Jin-hua, GU Bo-chuan, et al.Comprehensive evaluation method and evaluation tool for operation service bus[J].Shaanxi Electric Power,2014(12):21-25.

      猜你喜歡
      服務(wù)器端網(wǎng)絡(luò)化端口
      一種端口故障的解決方案
      淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
      成功(2018年10期)2018-03-26 02:56:14
      端口阻塞與優(yōu)先級(jí)
      當(dāng)代新聞學(xué)的網(wǎng)絡(luò)化發(fā)展
      新聞傳播(2016年11期)2016-07-10 12:04:01
      在Windows中安裝OpenVPN
      初識(shí)電腦端口
      電腦迷(2015年6期)2015-05-30 08:52:42
      生成樹協(xié)議實(shí)例探討
      基于OPC的網(wǎng)絡(luò)化群梯管理系統(tǒng)開發(fā)
      網(wǎng)絡(luò)化時(shí)代社會(huì)認(rèn)同的深刻變遷
      我國(guó)食品安全網(wǎng)絡(luò)化治理的思考
      宁城县| 兴安县| 永康市| 会同县| 增城市| 托克逊县| 吴堡县| 塘沽区| 玉屏| 万荣县| 青海省| 内乡县| 鄂托克旗| 叶城县| 河南省| 洮南市| 莎车县| 元氏县| 临武县| 乳源| 太保市| 辽阳市| 梓潼县| 西乡县| 龙胜| 西充县| 长葛市| 区。| 镇坪县| 蓬溪县| 泰州市| 嘉兴市| 锦州市| 珠海市| 鄂托克旗| 台北市| 镇巴县| 瓦房店市| 含山县| 文水县| 通化县|