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

?

基于VC++的油井環(huán)境參數(shù)顯示系統(tǒng)

2013-04-25 07:28:22簡秦勤范俊峰劉嘉寧
電子科技 2013年1期
關(guān)鍵詞:環(huán)境參數(shù)網(wǎng)絡(luò)通信線程

簡秦勤,范俊峰,劉嘉寧

(西安電子科技大學 電子工程學院,陜西 西安710071)

油田的勘探、鉆井、測井等都是野外作業(yè),流動性強、作業(yè)點多、傳輸距離遠,施工現(xiàn)場與公司之間的信息交流具有重要意義。為監(jiān)測油井的環(huán)境信息,設(shè)計了一個油井環(huán)境參數(shù)采集和顯示系統(tǒng),系統(tǒng)框圖如圖1所示。井下數(shù)據(jù)采集模塊負責采集油井的環(huán)境參數(shù)信息,通過電力載波線將數(shù)據(jù)上傳至井上ARM板數(shù)據(jù)接收模塊中,完成了數(shù)據(jù)的采集和傳輸功能,但是工作人員并不能讀取采集的數(shù)據(jù)?;诖耍O(shè)計了一個基于VC++的上位機顯示系統(tǒng),本系統(tǒng)可以直觀地顯示ARM板中存放的油井環(huán)境參數(shù)信息。

油井環(huán)境參數(shù)顯示系統(tǒng)就是利用面向?qū)ο笏枷刖帉懸粋€上位機軟件,將ARM板中的數(shù)據(jù)轉(zhuǎn)存到電腦中并以曲線的形式動態(tài)顯示,這樣既滿足了工作人員日后查看數(shù)據(jù)的需要,也可以根據(jù)曲線走勢了解油井環(huán)境的變化情況。

圖1 油井環(huán)境參數(shù)采集顯示系統(tǒng)框圖

1 系統(tǒng)功能

在開采過程中,需要對油井的溫度、壓力等參數(shù)進行測量,以監(jiān)控采油過程。利用驅(qū)動電機的電力線進行井下數(shù)據(jù)采集和通信,不僅減少額外的通信設(shè)備,降低鉆井的設(shè)計體積,而且能夠節(jié)約成本,實現(xiàn)高效利用。

對油井的環(huán)境參數(shù)采集之后,通過電力線上傳到ARM板中,完成了數(shù)據(jù)的采集和保存功能,但工作人員卻無法讀取數(shù)據(jù),并沒有實現(xiàn)監(jiān)測的功能。文中采用Visual C++面向?qū)ο蠓椒ǎ?-2]設(shè)計一個上位機軟件,實現(xiàn)對油井環(huán)境參數(shù)的接收和顯示功能。

2 系統(tǒng)設(shè)計

上位機顯示系統(tǒng)主要由接收和顯示兩個模塊組成。其系統(tǒng)流程如圖2所示,軟件界面如圖3所示。其中“選擇連接方式”、“建立連接,接收數(shù)據(jù)”兩部分屬于接收模塊,“顯示數(shù)據(jù)”屬于顯示模塊。

顯示模塊可以調(diào)整顯示速率,顯示區(qū)間,點擊“暫?!辨I后可以通過鼠標點擊曲線獲得該點的數(shù)值和時間。通過選擇起始時間和截止時間還可以對一段時間內(nèi)的數(shù)據(jù)進行局部放大。

為增強軟件使用的靈活性,接收模塊和顯示模塊既可以共同使用,也可以獨立使用。兩個模塊獨立使用時可以使用兩者之一的任一種功能。若用戶只需要保存數(shù)據(jù)可以僅使用接收模塊的功能,將ARM板中的數(shù)據(jù)轉(zhuǎn)到電腦中。電腦中保存的數(shù)據(jù)是以一定格式存儲的,方便日后查看。若用戶想觀測電腦中已有數(shù)據(jù)可以使用顯示模塊的功能,通過選擇指定的文件以曲線的形式觀測數(shù)據(jù)的變化情況。

圖2 系統(tǒng)流程圖

圖3 軟件界面

3 系統(tǒng)實現(xiàn)

3.1 接收模塊

為同ARM板建立穩(wěn)定的連接,保證數(shù)據(jù)準確傳輸,同時也為了提供更加靈活的通信模式,使整個系統(tǒng)更加穩(wěn)定、靈活,接收模塊提供了3種通信方式:網(wǎng)絡(luò)通信[3-4]、串口通信[4]、USB通信。通信方式由用戶根據(jù)實際情況在界面上自由選擇選擇。

3.1.1 網(wǎng)絡(luò)通信

網(wǎng)絡(luò)通信具有可靠性高、穩(wěn)定性強的特點,還可以達到較高的數(shù)據(jù)吞吐率。當用戶選擇采用網(wǎng)絡(luò)通信的方式時,首先需要用一根網(wǎng)線將上位機與ARM板連接,然后在軟件界面上選擇“網(wǎng)口”的連接方式,這樣就可采用網(wǎng)絡(luò)通信的方式與ARM板建立連接,操作簡單易行。

選擇“網(wǎng)口”的連接方式之后,“串口”、“USB”兩種連接方式變灰,不可選。點擊“開始”按鈕,數(shù)據(jù)開始傳輸,當數(shù)據(jù)接收成功后會彈出“數(shù)據(jù)接收完畢”的提示,如圖4所示。

圖4 網(wǎng)絡(luò)通信

上位機軟件作為客戶端,主動與ARM開發(fā)板裝載的Linux服務(wù)器系統(tǒng)建立連接,為保證傳輸?shù)目煽啃圆捎肨CP連接,連接成功之后開始約定的“3次握手”協(xié)議,如圖5所示。

圖5 “3次握手”協(xié)議

“3次握手”協(xié)議保證了通信的暢通,此后開始接收ARM板中的數(shù)據(jù)。網(wǎng)絡(luò)通信采用的是上位機每接收2 000 Byte的數(shù)據(jù)向ARM板發(fā)送“transmit”指令,ARM收到指令后才會再次發(fā)送2 000 Byte的數(shù)據(jù)直至全部發(fā)送完畢,此時ARM板向上位機發(fā)送“over”指令表示通信結(jié)束。

網(wǎng)絡(luò)通信采用多線程的方式與服務(wù)器端建立連接,接收數(shù)據(jù)。主要用到4個靜態(tài)函數(shù):threadClient、threadRecvData、threadSendData和threadAnalyData。(1)threadClient:客戶端線程,與服務(wù)器端(ARM板)建立連接。(2)threadRecvData:接收消息線程,接收服務(wù)器端(ARM板)發(fā)送的數(shù)據(jù)信息。(3)threadSendData:發(fā)送消息線程,每發(fā)送完一條消息,該線程自動結(jié)束。(4)threadAnalyData:消息解析線程,解析接收服務(wù)器端(ARM板)發(fā)送的數(shù)據(jù)信息并以一定的格式保存到電腦中。

3.1.2 串口通信

串口是指數(shù)據(jù)一位一位地順序傳送,其特點是通信線路簡單,只要一對傳輸線就可以實現(xiàn)雙向通信,適用于遠距離通信,但傳送速度較慢,多用于工控和測量設(shè)備以及部分通信設(shè)備中。用戶選擇串口通信時,首先用串口線將上位機與ARM板連接,然后選擇上位機軟件中的串口連接方式。在彈出的串口配置框中對串口進行配置,包括波特率、數(shù)據(jù)位和停止位,配置完成之后雙方可以依照相同的配置進行串口通信,實現(xiàn)數(shù)據(jù)的傳遞和交換。

選擇“串口”之后,“網(wǎng)口”、“USB”選項變灰不可選,點擊“開始”按鈕,開始接收數(shù)據(jù),當接收數(shù)據(jù)成功之后同樣會提示“數(shù)據(jù)接收完畢”,如圖6所示。

圖6 串口通信

對串口進行初始化配置后,進行圖5所示的“3次握手”協(xié)議,在這之后進行數(shù)據(jù)的傳輸。與網(wǎng)絡(luò)通信的不同之處在于,進行“3次握手”之后串口可以一次性接收ARM板中的全部數(shù)據(jù),中途不需要向ARM板發(fā)送“transmit”指令。當數(shù)據(jù)接收完畢后,ARM板同樣會向上位機發(fā)送一個“over”指令。

串口通信同樣采用多線程方式,在對串口進行初始化配置之后采用StartMonitoring函數(shù)監(jiān)聽串口的數(shù)據(jù)情況。有數(shù)據(jù)到來時采用OnSerialCommu函數(shù)解析處理數(shù)據(jù)。串口通信主要采用CSerialPort類,該類對串口的相關(guān)操作進行了封裝,方便了后續(xù)的調(diào)用。CSerialPort類中比較重要的幾個方法:(1)InitPort:串口初始化函數(shù),對串口進行初始化配置,與ARM板上的串口配置要保持一致。(2)StartMonitoring:開啟線程,監(jiān)聽串口的數(shù)據(jù)情況。(3)WriteToPort:采用函數(shù)重載的方式定義了4個同名函數(shù),功能都是向串口寫數(shù)據(jù)。(4)CommThread:靜態(tài)函數(shù),監(jiān)聽串口的數(shù)據(jù)情況。(5)StopMonitoring:退出線程。

3.1.3 USB通信

USB即通用串行總線,是一個外部總線標準,用于規(guī)范電腦與外部設(shè)備的連接和通訊,是一種高速總線,可以實現(xiàn)大量數(shù)據(jù)的高速傳輸。系統(tǒng)中的USB通信是與上述兩種截然不同的通信方式:將U盤插入開發(fā)板后,開發(fā)板上的Linux系統(tǒng)會自動檢測到U盤的插入,從而將油井的環(huán)境參數(shù)文件拷貝至U盤中,再將U盤與電腦連接,在軟件界面上選擇“USB”的連接方式之后,通過文件操作讀取并解析U盤中的油井參數(shù)數(shù)據(jù)文件。

USB通信實質(zhì)就是文件讀取操作,主要用到StartUSB函數(shù)。StartUSB函數(shù)具有文件打開、文件讀取、數(shù)據(jù)解析、數(shù)據(jù)保存、文件關(guān)閉這些功能。用戶選擇“USB”的連接方式后,“網(wǎng)口”、“串口”變灰,成為不可選狀態(tài)。點擊“確定”按鈕選中待讀取的數(shù)據(jù)文件,點擊“開始”按鈕進行數(shù)據(jù)的解析、存儲。當數(shù)據(jù)接收完畢之后,同樣會彈出對話框提示,如圖7所示。

圖7 USB通信

3.2 顯示模塊

顯示模塊主要負責解析和處理油井的環(huán)境參數(shù),并將處理后的數(shù)據(jù)以曲線的形式直觀地顯示出來。油井參數(shù)包含4個數(shù)據(jù)信息,分別在4個方框中顯示,如圖8所示。

圖8 數(shù)據(jù)顯示結(jié)果

顯示模塊將保存的數(shù)據(jù)以曲線的形式在界面上進行顯示,可根據(jù)需求對曲線的顯示速率進行調(diào)整。由曲線的走勢可以準確、直觀地觀測數(shù)據(jù)的變化情況。點擊“暫停”鍵在曲線靜止時可以獲得鼠標點擊處的數(shù)值和時間,這樣對于問題區(qū)域可以了解其發(fā)生時間,這對于油井觀測具有很重要意義。

顯示模塊用CHistogramCtrl類實現(xiàn),是從MFC類庫中的CWnd類繼承來的。CHistogramCtrl類可以動態(tài)顯示給定的數(shù)據(jù)點,這樣數(shù)據(jù)點的個數(shù)就不會受到屏幕大小的限制。CHistogramCtrl類中比較重要的方法如下:(1)Create:創(chuàng)建繪圖區(qū)。(2)SetRange:設(shè)置繪圖區(qū)域點的顯示范圍。(3)SetPos:對待顯示的點進行相應的轉(zhuǎn)換。(4)SetSpeed:設(shè)置曲線的顯示速率。(5)DrawLine:畫圖函數(shù)。(6)OnTimer:調(diào)用DrawLine函數(shù),使曲線按一定的速率動態(tài)顯示。

數(shù)據(jù)顯示時,為得到鼠標點擊處的數(shù)值和時間采用了CList鏈表類,創(chuàng)建了4個CList的指針對象*m_pList1、*m_pList2、*m_pList3、*m_pList4。4個CList指針對象均指向一定長度的隊列,隊列的長度是界面最多所能顯示的點數(shù)。當隊列長度達到最大值時,在隊列一端進行出隊操作,另一端進行入隊操作,兩端同時進行。這樣通過對鼠標點擊處的屏幕坐標進行相應的轉(zhuǎn)換即可得到當前點在隊列中的位置,找到該位置的數(shù)值即可得到鼠標點擊處的數(shù)據(jù)和時間值。

4 結(jié)束語

油井上位機顯示系統(tǒng)對于油井參數(shù)的觀測具有重要的意義,它大幅減輕了油井工作人員的工作強度。采用上位機顯示系統(tǒng)將ARM板中的數(shù)據(jù)以一定的格式存儲在電腦中并加以顯示,一方面可以直觀地觀測數(shù)據(jù)的變化情況,另一方面將數(shù)據(jù)保存在電腦中也方便了日后的查看。系統(tǒng)采用將數(shù)據(jù)和操作封裝面向?qū)ο笏枷?,使系統(tǒng)的開發(fā)具有靈活性、可靠性和可擴充性。在系統(tǒng)運行過程中,會及時給出各種操作的提示或?qū)﹀e誤操作的警告,使用戶操作更加便捷。軟件界面美觀、操作簡單,可操作性強。

[1] 孫鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.

[2] 侯俊杰.深入淺出MFC[M].2版.武漢:華中科技大學出版社,2001.

[3]STEVENS W R,F(xiàn)ENNER B,ANDREW M R.Unix網(wǎng)絡(luò)編程[M].3版.北京:電子工業(yè)出版社,2010.

[4] 王險峰,劉寶宏.Windows環(huán)境下的多線程編程原理與應用[M].北京:清華大學出版社,2002.

猜你喜歡
環(huán)境參數(shù)網(wǎng)絡(luò)通信線程
基于云平臺的智能家居環(huán)境參數(shù)協(xié)同監(jiān)控系統(tǒng)設(shè)計
列車動力學模型時變環(huán)境參數(shù)自適應辨識
基于網(wǎng)絡(luò)通信的智能照明系統(tǒng)設(shè)計
電子制作(2019年15期)2019-08-27 01:11:48
一種食用菌大棚環(huán)境參數(shù)測控系統(tǒng)設(shè)計
電子制作(2019年7期)2019-04-25 13:17:10
網(wǎng)絡(luò)通信中信息隱藏技術(shù)的應用
基于小型固定翼移動平臺的區(qū)域大氣環(huán)境參數(shù)采集系統(tǒng)設(shè)計
電子測試(2018年4期)2018-05-09 07:27:32
基于網(wǎng)絡(luò)通信的校園智能音箱設(shè)計
電子制作(2018年1期)2018-04-04 01:48:30
談計算機網(wǎng)絡(luò)通信常見問題及技術(shù)發(fā)展
電子制作(2017年17期)2017-12-18 06:41:06
淺談linux多線程協(xié)作
Linux線程實現(xiàn)技術(shù)研究
崇信县| 八宿县| 芒康县| 萨迦县| 湘阴县| 外汇| 怀宁县| 陆良县| 扎赉特旗| 历史| 中牟县| 房产| 崇文区| 曲周县| 林西县| 海安县| 靖安县| 伊川县| 汶上县| 句容市| 宜兰县| 德令哈市| 桐庐县| 甘泉县| 义马市| 嘉祥县| 昌平区| 南宁市| 三门峡市| 延津县| 台前县| 洱源县| 敖汉旗| 吉林省| 嘉峪关市| 和龙市| 嘉禾县| 金川县| 小金县| 随州市| 大安市|