国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

POS實時監(jiān)控軟件多線程通信設計及實現(xiàn)

2015-12-23 01:00:12劉艷群朱莊生
計算機工程與設計 2015年6期
關鍵詞:控件線程以太網

劉艷群,朱莊生

(1.北京航空航天大學 慣性技術重點實驗室,北京100191;2.北京航空航天大學 新型慣性技術儀表與導航系統(tǒng)技術國防重點學科實驗室,北京100191)

0 引 言

位置姿態(tài)測量系統(tǒng) (position and orientation system,POS)[1,2]主要由慣性測量單元 (inertial measurement unit,IMU)、全球定位系統(tǒng) (global position system,GPS)、POS計算機系統(tǒng) (POS computer system,PCS)和后處理軟件組成[3],因此POS系統(tǒng)是一個復雜且有大量數(shù)據信息傳遞和存儲的系統(tǒng)。從POS工程應用背景的需求來說,需要對POS系統(tǒng)進行實時監(jiān)控,但要實現(xiàn)對POS系統(tǒng)的實時監(jiān)控,首要解決是通信問題。監(jiān)控軟件常用監(jiān)控接口有串口、USB口、網口等。監(jiān)控軟件一般采用單一的接口作為監(jiān)控接口,但這種方式會導致監(jiān)控能力受到接口性能的限制。例如:串口數(shù)據傳輸速度和傳輸距離導致監(jiān)控軟件只能實現(xiàn)低速、短距離的監(jiān)控;以太網雖能實現(xiàn)高速、遠距離監(jiān)控,但大數(shù)據量的傳輸會造成數(shù)據流阻塞和資源浪費。

本文基于Windows Socket的網絡數(shù)據傳輸和MSComm串口通信原理,設計基于TCP/IP 協(xié)議的流式套接字的網絡數(shù)據傳輸和MSComm 串口監(jiān)控多線程通信系統(tǒng),實現(xiàn)對POS系統(tǒng)的數(shù)據傳輸及系統(tǒng)的監(jiān)控,消除了單一監(jiān)控接口的弊端,充分利用了不同通信方式的優(yōu)勢,實現(xiàn)優(yōu)勢互補,具有很好的工程應用價值。

1 多線程通信方法

1.1 POS系統(tǒng)

POS的基本工作原理如圖1所示,系統(tǒng)由IMU 和POS導航計算機兩大部分組成,POS導航計算機集成了系統(tǒng)供電單元、GNSS接收單元、數(shù)據處理單元、數(shù)據存儲單元等;IMU 由加速計、陀螺儀和溫度傳感器等各類傳感器構成。利用IMU 可實時連續(xù)地測量載體的角速度和加速度信息,通過積分運算可得載體的位置、速度和姿態(tài)等參數(shù),但由于積分運算會導致誤差的積累而引發(fā)導航結果的發(fā)散;GNSS單元通過獲取衛(wèi)星信號實時解算得到高精度的位置信息,但其數(shù)據更新率低;因此將兩者組合起來,綜合二者的優(yōu)點,實現(xiàn)優(yōu)勢互補,經過平滑、事后差分等后處理,可以獲得更高精度的位置姿態(tài)信息。

圖1 POS的基本工作原理

由于POS應用于各種載荷,POS接口也從單一的串口向多樣的、高速、可靠接口發(fā)展,目前POS 的接口資源有:串口RS-232、串口RS-422、CAN 口、以太網等。

由于串口RS-232和RS-422結構簡單,編程簡易,已廣泛作為工業(yè)通信的一種手段。串口RS-232的最大傳輸距離約為15m,最大傳輸速率為460800b/s;串口RS-422的最大傳輸距離約為1200 多米,最大傳輸速率為10Mb/s。但串口RS-232、RS-422 通信的可靠性低,抗噪聲干擾性弱,以及其傳輸速度和傳輸距離的限制,使其通信能力受到嚴重的局限。

CAN 總線屬于工業(yè)現(xiàn)場總線,是一種有效支持分布式控制或實時控制的串行通信網絡。與一般的通信總線相比,CAN 總線網絡各節(jié)點之間的數(shù)據通信實時性強,通信速率最高可達1Mb/s,但傳輸距離與速率成反比例。CAN 總線適用于大數(shù)據量短距離或者長距離小數(shù)據量,實時性要求比較高的通信。

以太網通信是一種高速、可靠的通信方式,目前10、100Mb/s的快速以太網已開始廣泛應用,1Gb/s以太網技術也逐漸成熟。且通信網絡具有更高的帶寬和性能,通信協(xié)議有更高的靈活性,是任何一種通信手段所無法比擬得。

根據各接口的特點,在POS中串口主要用于器件間的低速數(shù)據傳輸,如與監(jiān)控上位機間的數(shù)據傳輸;CAN 總線通信主要用于與載荷間的高速數(shù)據傳輸;以太網通信主要用于高速數(shù)據的存儲傳輸。本文提出一種多線線程的通信方案,采用以太網通信和串口通信并行使用,解決了高速數(shù)據傳輸和實時監(jiān)控的問題。

1.2 多線程通信設計總體方案

MFC中有兩類線程,分別稱之為用戶界面線程和工作者線程。用戶界面線程擁有自己的消息隊列和消息循環(huán)來處理界面消息,可以與用戶進行交互;工作者線程沒有消息循環(huán),一般用來完成后臺計算和維護任務。本文提出的多線程方法總臺方案是:在工作者線程中開啟一個以太網通信工作線程,利用Windows Socket 控件建立了基于TCP/IP協(xié)議的以太網通信[4-7],在軟件后臺運行,實現(xiàn)與POS系統(tǒng)高速數(shù)據的傳輸;在用戶界面線程運行串口通信線程,利用MSComm 控件設計串口通信[8-11],實現(xiàn)與用戶的交互,實現(xiàn)對POS系統(tǒng)狀態(tài)的實時監(jiān)控;利用工作者線程與用戶界面線程擁有各自的消息響應機制,不會產生干擾的特性,實現(xiàn)了以太網和串口并行通信??傮w設計方案流程如圖2所示。

圖2 多線程通信設計流程

2 多線程通信設計

2.1 串口通信設計

MSComm 控件有兩種處理通信的方式,一種是事件驅動方式;另一種是定時或不定時查詢方式。本次設計要實現(xiàn)對POS系統(tǒng)的實時監(jiān)控,因此對程序的實時性和速度要較高要求,所以本次設計選擇了事件驅動方式。串口通信設計流程如圖3所示。

(1)對MSComm 控件的進行初始化配置

將MSComm 控件通信端口設置為端口1;波特率為9600,無校驗位,8位數(shù)據位,1位停止位;以二進制方式接收數(shù)據;當緩沖器有數(shù)據就觸發(fā)OnComm 事件;每次都將緩沖區(qū)的數(shù)據全部接收。

(2)編寫OnComm 事件處理函數(shù)

利用GetCommEvent()函數(shù)獲取串口事件,當返回值為2時表示緩沖區(qū)有數(shù)據;將緩沖區(qū)的數(shù)據提取出來。

(3)利用SetPortOpen函數(shù)打開串口

BOOL CMSComm::SetPortOpen (BOOL Value)

當Value設置為TURE 時串口打開;設置為FALSE則串口關閉。

(4)利用函數(shù)通過串口向POS系統(tǒng)的下位機發(fā)送指令

2.2 以太網通信設計

Windows Socket支持兩種類型的套接字,即流式套接字 (SOCK _STREAM)和數(shù)據報套接字 (SOCK _DGRAM)。因為POS系統(tǒng)的復雜性,和考慮系統(tǒng)安全可靠性要求,本次設計采用的是流式套接字。且采用TCP/IP協(xié)議,上位機監(jiān)控軟件作為客戶端,POS系統(tǒng)作為服務器。以太網通信設計流程如圖4所示。

圖4 以太網通信流程

(1)以太網初始化,加載套接字數(shù)據庫,創(chuàng)建流式套接字,將套接字設為非阻塞模式。

(2)利用WSAAsyncSelect函數(shù)建立套接字的事件通知

(3)添加網絡事件處理函數(shù)OnSockt。

(4)利用connect函數(shù)創(chuàng)建與POS系統(tǒng)服務器的連接

2.3 多線程設計

多線程設計流程如圖2所示。串口通信界面線程位于主線程中,完成MSComm 控件的初始化后,就開啟串口通信界面線程,因此多線程的設計主要是針對以太網工作線程設計。

(1)創(chuàng)建Windows Socket工作線程的入口函數(shù)

DWORD WINAPI ThreadFun(LPVOID pThread)

創(chuàng)建工作線程時,首先要先建立線程的入口函數(shù),當工作線程被啟動后會轉入該函數(shù),并且函數(shù)退出時工作線程就會結束。ThreadFun是入口函數(shù)名,也就是工作線程開始執(zhí)行時代碼所在的函數(shù)地址,pThread是工作線程傳遞的入口函數(shù)的參數(shù)。如2.1節(jié)所述WSAAsyncSelect函數(shù)實現(xiàn)套接字自主監(jiān)控網絡事件的功能,一旦啟動該函數(shù),將啟動一個網絡事件監(jiān)控的一個線程,因此若在主線程即界面線程中就調用該函數(shù),則會與串口消息的OnComm 事件處理函數(shù)發(fā)生沖突,因此將在工作線程的入口函數(shù)調用WSAAsyncSelect函數(shù),為其開辟另一個工作線程,實現(xiàn)網絡通信和串口通信的并行執(zhí)行。

(2)利用CreatThread函數(shù)創(chuàng)建Windows Socket工作線程

參數(shù)lpThreadAttributes用來決定線程句柄是否可以被子線程繼承,此處將其設為NULL,令返回的句柄不能被繼承;參數(shù)dwStackSize指定新線程的堆棧的大小,將其設為0,線程將與進程的主線程堆棧相同;參數(shù)lpStartAddress是指向線程的入口函數(shù),即2.3 節(jié) (1)中所建立的函數(shù);參數(shù)lpParameter是線程傳遞給線程入口函數(shù)的參數(shù);參數(shù)dwCreationFlags設為0,使得線程產生后立即執(zhí)行;參數(shù)lpThreadId用來存放返回線程ID。

(3)利用Terminate Thread函數(shù)終止線程

BOOL Terminate Thread (HANDLE hThread,DWORD dwExitCode);

3 界面設計及實驗驗證

3.1 界面設計

3.1.1 設計通信接口配置界面

界面由兩部分組成,一個是MSComm 串口通信配置;另一個是Windows Socket 套接字的配置。效果如圖5所示。

通過對相關參數(shù)的配置,實現(xiàn)了對MSComm 串口和Windows Socket套接字的初始化,只要啟動連接則建立了與POS系統(tǒng)的連接,可以實現(xiàn)數(shù)據傳輸和系統(tǒng)監(jiān)控。

3.1.2 串口監(jiān)控主界面設計

監(jiān)控界面由三大部分組成,一是系統(tǒng)的通信狀態(tài)顯示;二是系統(tǒng)的工作狀態(tài)顯示;三是系統(tǒng)的工作參數(shù)顯示。效果如圖6所示。

3.2 實驗驗證

實驗采用北京航空航天大學研制的1.5代光纖POS系統(tǒng),測試系統(tǒng)如圖7所示。

圖5 通信接口配置界面

圖6 串口監(jiān)控主界面

圖7 測試系統(tǒng)結構

測試結果:POS系統(tǒng)靜態(tài)測試實驗驗證了,多方式通信并行性的可行性,上位機既能實時通過串口監(jiān)控POS系統(tǒng)的工作狀態(tài),同時能通過網口實時存儲GPS接收機的實時衛(wèi)星導航結果數(shù)據。圖8和圖9是測試結果。

圖8 上位機實時串口監(jiān)控結果

圖9 網口實時存儲的衛(wèi)星導航結果數(shù)據

4 結束語

本文利用多線程方法,提出開辟工作線程,將以太網通信置于后臺運行,避免了與界面線程的串口通信的沖突,因此實現(xiàn)了以太網通信和串口通信并行通信。該方案有效的利用了網絡通信和串口通信各自的優(yōu)點,使得上位機既能實現(xiàn)與POS系統(tǒng)的高速數(shù)據傳輸,又能實現(xiàn)對POS系統(tǒng)監(jiān)控。但該方案還存在不足之處,這兩種通信方式只是獨自運行,并未進行數(shù)據交流共享,下一步可研究兩種通信方式的數(shù)據交換共享,充分利用數(shù)據信息,擴展其功能。

[1]HAN Rui.Motion compensation system for SAR based on GPS/IMU intetgrated navigation [J].Journal of Chinese Inertial Technology,2013,21 (3):308-311 (in Chinese). [韓銳.一種基于GPS/IMU 組合導航的機載SAR 運動補償方案[J].中國慣性技術學報,2013,21 (3):308-311.]

[2]YANG Sheng,F(xiàn)ANG Jiancheng.Design and realization of POS data acquisition and processing system based on double DSP [J].Chinese Journal of Scientific Instrument,2008,29(9):1822-1826 (in Chinese). [楊勝,房建成.基于雙DSP的POS數(shù)據采集與處理系統(tǒng)的設計與實現(xiàn) [J].儀器儀表學報,2008,29 (9):1822-1826.]

[3]FANG Jiancheng,ZHANG Zhou,GONG Xiaolin.Modeling and simulation of transfer alignment for distributed POS [J].Journal of Chinese Inertial Technology,2012,20 (4):379-385 (in Chinese).[房建成,張舟,宮曉琳.機載分布式POS傳遞對準建模與仿真 [J].中國慣性技術學報,2012,20(4):379-385.]

[4]ZHOU Kun,F(xiàn)U Desheng.Data transmission and security on net based on Windows socket[J].Computer Engineering and Design,2007,28 (22):5381-5383 (in Chinese). [周坤,傅德勝.基于Windows Socket的網絡數(shù)據傳輸及其安全 [J].計算機工程與設計,2007,28 (22):5381-5383.]

[5]GONG Chao,GONG Liang.TCP/IP-based OPC communication between heterogeneous platforms [J].Computer Engineering,2008,44 (21):62-64 (in Chinese).[鞏超,宮亮.基于TCP/IP的異構平臺OPC通信 [J].計算機工程,2008,44 (21):62-64.]

[6]XIAO Meihua,YU Liquan.Model extraction and reliability verification on SOCKET communition program [J].Computer Science,2012,39 (11):102-106 (in Chinese). [肖美華,余立全.SOCKECT 通信程序模型抽取及可靠性驗證 [J].計算機科學,2012,39 (11):102-106.]

[7]WANG Yuanyang,ZHOU Yuanping.The accomplishment of multi-pthread communication based on socket model in the Linux[J].Microcomputer Information,2009,25 (5-3):70-72 (in Chinese).[王遠洋,周淵平.Linux下基于socket多線程并發(fā)通信的實現(xiàn)[J].微計算機信息,2009,25 (5-3):70-72.]

[8]WANG Jianxin,YAN Jun.Application of MSComm and Multthread in data acquisition system [J].Computer Applications and Software,2006,23 (4):134-136 (in Chinese). [王建新,嚴駿.MSComm 和多線程在數(shù)據采集系統(tǒng)中的應用 [J].計算機應用與軟件,2006,23 (4):134-136.]

[9]ZHANG Guolong,XU Xiaosu.Design of simulation inertial measurement units based on multithreading of VC++ [J].Journal of Chinese Inertial Technology,2009,17 (1):20-23(in Chinese).[張國龍,徐曉蘇.基于VC++多線程技術的模擬慣性測量組件設計 [J].中國慣性技術學報,2009,17(1):20-23.]

[10]QU Wenxin,F(xiàn)AN Xiaoya.Research progress in memory technique of the multi-core and multi-thread processor [J].Computer Science,2007,34 (4):13-16 (in Chinese).[屈文新,樊曉椏.多核多線程處理器存儲技術研究進展 [J].計算機科學,2007,34 (4):13-16.]

[11]FENG Junyu,DAI Qingyun.Realtime data collecting system basing on Multi-thread serial communition technology [J].Microcomputer Information,2006,22 (10):149-152 (in Chinese).[馮峻域,戴青云.基于多線程串口通信的生產數(shù)據實時采集系統(tǒng)[J].微計算機信息,2006,22 (10):149-152.]

猜你喜歡
控件線程以太網
基于1500以太網養(yǎng)豬場的智能飼喂控制系統(tǒng)的設計與實現(xiàn)
關于.net控件數(shù)組的探討
軟件(2018年7期)2018-08-13 09:44:42
淺談linux多線程協(xié)作
談實時以太網EtherCAT技術在變電站自動化中的應用
電子制作(2017年24期)2017-02-02 07:14:44
一種90W高功率以太網供電系統(tǒng)的設計
電源技術(2015年7期)2015-08-22 08:48:48
淺談EPON與工業(yè)以太網在貴遵高速公路中的應用
Linux線程實現(xiàn)技術研究
就這樣玩會VBA中常見的自定義控件
電腦迷(2012年24期)2012-04-29 00:44:03
么移動中間件線程池并發(fā)機制優(yōu)化改進
在PowerBuUder中利用WinSock控件制作簡單的Web服務器
长汀县| 宝山区| 铜鼓县| 江西省| 子洲县| 博爱县| 湘西| 新丰县| 常山县| 聂拉木县| 上栗县| 武胜县| 巴彦淖尔市| 泰和县| 乐业县| 宁晋县| 张家港市| 襄樊市| 察隅县| 雷波县| 甘洛县| 白河县| 灌阳县| 蚌埠市| 延安市| 阳江市| 福安市| 祥云县| 行唐县| 叙永县| 阿尔山市| 龙山县| 金昌市| 无为县| 忻城县| 平泉县| 宁乡县| 永善县| 镇安县| 正安县| 兴宁市|