999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VC++6.0實現無閃爍連續實時曲線

2014-06-27 05:46:27王玉菡曾自強
關鍵詞:設備

王玉菡,曾自強

(1.重慶理工大學電子信息與自動化學院,重慶 400054; 2.川慶鉆探工程有限公司測井公司,重慶 400021)

基于VC++6.0實現無閃爍連續實時曲線

王玉菡1,曾自強2

(1.重慶理工大學電子信息與自動化學院,重慶 400054; 2.川慶鉆探工程有限公司測井公司,重慶 400021)

工業現場常需要實時采集數據并在軟件中將數據動態顯示出來。運用VC++6.0編程工具,在基本對話框中的靜態文本控件上,利用雙緩沖技術實現無閃爍時間驅動的動態實時曲線,并在實踐中取到了較好的效果。

VC++6. 0;基本對話框;雙緩沖;實時曲線

在生產和實驗過程中,常常需要對被測對象進行實時數據采集,然后將數據傳輸到工控機,以動態曲線的方式顯示出來,以便人們對現場的了解和控制。因此顯示動態實時曲線在工控自動化的界面程序設計中是一種不可缺少的功能。它不但可以給人呈現出一種直觀的視覺效果,更重要的是能夠實時地顯示、存儲采集到的數據[1]。

在實現實時動態曲線的過程中會發現編寫出來的曲線經常會出現閃爍的情況,而且隨著顯示界面復雜程度的增加和刷新時間的加快,閃爍越加明顯,嚴重影響了軟件的效果[2]。為了解決這一問題,可以采用第三方的軟件來進行處理。例如:一是可以使用組態軟件來進行開發;二是使用別人開發的類和DLL庫。對于組態軟件,雖然功能較齊全,能夠大大縮短工業監控系統開發研制的周期,提高系統的可靠性,但它們的價格相對比較昂貴,帶有加密狗,而且對于小型監控系統來說,有許多功能用不上,造成了資源的浪費[3]。對于第二種方法,雖然有不少類可以實現動態曲線,但是大多數實例都是基于單文檔的動態曲線,沒有X軸動態時間坐標,而用得最多的基本對話框就更少了,并且這些封裝好了的庫文件不可修改,引入這些控件或類后將在工程中加入不少文件,使得工程文件變得龐大。

本文利用VC++6.0平臺,基于MFC基本對話框中的靜態文本控件,利用雙緩沖技術實現無閃爍時間驅動的動態實時曲線[4]。

1 圖形閃爍問題分析

地面監控系統軟件在定時器的控制下每隔一段時間就采集一次數據,并將數據顯示成曲線。Windows中負責系統與繪圖程序之間的信息交換和圖形輸出的是GDI(圖形設備接口)。GDI建立在抽象層之上,與設備無關,使程序員無需關心硬件設備及設備驅動就可以將應用程序的輸出轉化為硬件設備上的輸出。在Windows的MFC中,發送繪圖的消息為WM_PAINT,它的響應函數是On-Paint()函數,所有的GDI繪圖程序都在OnPaint ()函數中。當窗口發生變化,創建窗體或調用了Invalidate(),InvalidateRect()等函數時就會觸發WM_PAINT消息重繪窗口;在重繪窗口時,先響應OnEraseBkgnd()函數利用背景色擦除窗口顯示區,再調用OnPaint()函數重新繪圖;當背景色和顯示窗口顏色相差較大且刷新時間較快時,由于這樣的一擦一繪,造成了圖像顏色的反差,就出現了閃爍問題[5-7]。如果背景顏色差別較大閃爍就更為明顯。

為了解決閃爍問題,單純的禁止背景重繪是不夠的。因為如果這樣,每次繪制圖像時都沒有將原來的圖像清除,造成了圖像的殘留,于是在窗體重繪時,畫面往往會變得亂七八糟[8]。要實現快速的繪圖必須采用雙緩沖繪圖技術,其基本思路是先在內存中作圖,然后用BitBlt函數將作好的圖復制到前臺。

2 圖形閃爍問題解決方法

2.1 雙緩沖

在基本對話框中,為了實現曲線繪制的無閃爍必須采用雙緩沖。所謂雙緩沖,就是指繪圖不是直接繪制在當前設備上(前端緩沖),而是首先創建一個與當前設備環境兼容的內存設備環境(后端緩沖),所有繪圖工作都在內存中完成,最后再利用BitBlt將內存設備環境中的內容拷貝到前端設備環境,步驟見圖1。由于所有的繪圖操作都是在后端緩沖區內完成的,而在屏幕上只執行一次圖形操作,因而能消除由多重繪制所引起的圖形閃爍。

圖1 雙緩沖步驟

2.2 調用OnPaint()函數和UpdateWindow()函數

所有文獻都提到了雙緩沖,但是僅使用該方法是不夠的。由于MFC具有消息機制,為了重繪一般是在定時器OnTimer()函數中使用Invalidate ()函數觸發WM_PAINT消息,從而調用OnPaint ()函數進行繪圖。但是由于WM_PAINT消息的優先級很低,需要等消息隊列中的其他消息發送完后才能被處理,所以調用Invalidate等函數后窗口不會立即重繪,還是會出現閃爍。本文的做法是在OnTimer()函數中直接調用OnPaint()函數,不使用函數觸發WM_PAINT消息,同時在OnPaint ()函數中在獲取了靜態文本框窗口句柄pWnd后使用它的UpdateWindow()函數。UpdateWindow與Invalidate類似,都可以觸發WM_PAINT消息,不同之處在于UpdateWindow發送的WM_PAINT消息立即被執行無需排隊,這樣就解決了閃爍問題。

3 編程實例

采集數據的實時繪制是一個經常需要用到的功能。本文以數據采集為例來說明如何消除曲線的閃爍。整個采集系統框圖如圖2所示。首先地面軟件每一秒鐘向下位機發送命令請求單片機發送數據,單片機判斷請求并作出相應的響應。如果數據格式正確則回應,否則不回應。上位機收到下位機發送上來的數據后,根據固定格式讀取出數據,并以曲線的方式顯示出來。數據及其計算的結果還被存儲在數據庫中,以便查詢。歷史曲線以曲線的方式顯示歷史數據。

圖2 采集系統框圖

采用本文方法的曲線繪制程序主要步驟:

之后進行前后效果對比。由于是每秒采集一次數據即每秒畫一次圖,當程序最小化再放大或是快速拖動時會出現短暫的無曲線現象(見圖3)。采用本文的方法后,無論怎么拖動、遮擋、最小化都不會出現閃爍(見圖4)。當停止定時器,中斷了與下位機的通訊后,畫面固定,也不會消失。

圖3 使用無閃爍方法前

圖4 使用無閃爍方法后

4 結束語

本文較好地解決了對話框繪圖閃爍的問題,能夠實現實時滾動的動態曲線,且時間能夠相應地變化。當停止了計時器時,曲線并不會消失。當再次啟動定時器時,程序將根據當前的時間重新繪圖。掌握了這種方法之后,用戶可以根據自己的需要加以擴展和改變,就能得到復雜的動態曲線。程序更改后可以同時繪制多條曲線,也可以設置曲線顏色、線型等屬性。

由于本文中對時間精度要求不高,一秒一次,所以采用SetTimer定時器即可。若要提高要求應采用多媒體定時器。為了更好地繪制不同形狀的曲線,最好使用GDI++,這樣效果更佳。

[1]王玉菡.Visual C++編程實現動態曲線的4種方法[J].重慶工學院學報:自然科學版,2008,22(6):95-97.

[2]陳喜陽,張克危,彭玉成.VC在監測系統中圖形刷新問題的研究[J].工業控制計算機,2004,17(4):27-29.

[3]魏慶勇,王陽明,陳久康.VC環境下工業監控軟件趨勢曲線顯示畫面的實現[J].機電一體化,2001(6):62-64.

[4]寇光杰,武玉強.基于VC++線程的動態數據曲線的繪制方法[J].計算機應用研究,2004(5):178-180.

[5]程巖,湯永佐,劉巖.基于VC++實現實時數據監控和顯示方法[J].山東科學,2010(2):83-85.

[6]唐海全,邵才瑞,李洪強.隨鉆測井曲線無閃爍繪制技術[J].測井技術,2010,34(5):479-482.

[7]江建國,溫少營,張瑞楠.基于雙緩沖技術的GDI+無閃爍繪圖[J].計算機應用,2012,32(S2):136-139.

[8]張亮.基于雙緩沖技術的VC++圖形刷新技術的原理和實現[J].福建電腦,2010(6):110.

[9]Thompson R D.MFC開發人員參考手冊[M].北京:機械工業出版社,1998.

[10]Davis Chapman.學用Visual C++6.0[M].駱長樂,譯.北京:清華大學出版社,1999.

(責任編輯 楊黎麗)

Realization of Continuous Real-time Curve without Flicker Based on VC++6.0

WANG Yu-han1,ZENG Zi-qiang2
(1.School of Electronic Information and Automation,Chongqing University of Technology,Chongqing 400054,China;
2.Chuanqing Drilling Logging Company,Chongqing 400021,China)

In the industry field,we often need to collect real-time data and display it in the software.This paper mainly introduces using the VC++6.0 programming to realize dynamic driven real-time curve without flicker by double buffering technology on the static text control of the dialog based box.

VC++6. 0;dialog based;double buffering;real-time curve

TP39

A

1674-8425(2014)04-0123-04

10.3969/j.issn.1674-8425(z).2014.04.026

2014-01-18

王玉菡(1981—),女,河北冀州人,碩士,主要從事智能儀器研究。

王玉菡,曾自強.基于VC++6.0實現無閃爍連續實時曲線[J].重慶理工大學學報:自然科學版,2014(4): 123-126.

format:WANG Yu-han,ZENG Zi-qiang.Realization of Continuous Real-time Curve without Flicker Based on VC+ +6.0[J].Journal of Chongqing University of Technology:Natural Science,2014(4):123-126.

猜你喜歡
設備
諧響應分析在設備減振中的應用
調試新設備
當代工人(2020年13期)2020-09-27 23:04:20
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
廣播發射設備中平衡輸入與不平衡輸入的轉換
電子制作(2018年10期)2018-08-04 03:24:48
食之無味,棄之可惜 那些槽點滿滿的可穿戴智能設備
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
HTC斥資千萬美元入股虛擬現實設備商WEVR
IT時代周刊(2015年8期)2015-11-11 05:50:37
Automechanika Shanghai 2014 之“看” 汽保設備篇
如何在設備采購中節省成本
主站蜘蛛池模板: 国产香蕉国产精品偷在线观看| 亚洲色图欧美激情| www精品久久| 性欧美在线| 中文字幕亚洲电影| 国产91丝袜在线播放动漫| 国产精品黑色丝袜的老师| 黄色网页在线播放| 手机在线国产精品| 久久精品丝袜高跟鞋| 全午夜免费一级毛片| 青草娱乐极品免费视频| 国产熟睡乱子伦视频网站| 99精品高清在线播放| 动漫精品中文字幕无码| 超碰aⅴ人人做人人爽欧美| 亚洲无码A视频在线| 无码一区二区三区视频在线播放| 免费精品一区二区h| 国产91无码福利在线| 精品三级网站| 国产精品19p| 亚洲精品无码久久毛片波多野吉| 久久毛片基地| 欧美黑人欧美精品刺激| 国产成人高清精品免费| 国产精品高清国产三级囯产AV| 四虎影视国产精品| 欧美a在线看| 玩两个丰满老熟女久久网| 亚洲无码91视频| 久久这里只精品热免费99| 国模沟沟一区二区三区| 综合色亚洲| 成人无码区免费视频网站蜜臀| 亚洲国产亚洲综合在线尤物| 中文字幕亚洲专区第19页| 国产精品成人观看视频国产 | 国产精品99在线观看| 欧美一道本| 国产一级妓女av网站| 女人18一级毛片免费观看 | 亚洲人成在线免费观看| 亚洲国模精品一区| 91精品免费高清在线| 欧美亚洲中文精品三区| 国产综合网站| 国产毛片基地| 午夜啪啪福利| 色婷婷亚洲十月十月色天| 91无码网站| 全部免费毛片免费播放 | 无码专区在线观看| 国产精品自在线拍国产电影| 草逼视频国产| 成人精品区| 亚洲综合专区| 久久这里只有精品8| 国产成人午夜福利免费无码r| 91精品专区国产盗摄| 8090成人午夜精品| 亚瑟天堂久久一区二区影院| 国产精品浪潮Av| 亚洲国产中文综合专区在| 亚洲国产精品VA在线看黑人| 亚洲精品福利网站| 四虎影视8848永久精品| 中文字幕1区2区| 欧美影院久久| 亚洲一区无码在线| 欧美.成人.综合在线| 丁香婷婷久久| 亚洲自偷自拍另类小说| 亚洲欧美精品在线| 五月激情婷婷综合| 成人国产一区二区三区| 二级特黄绝大片免费视频大片| 香蕉伊思人视频| 久久久久青草线综合超碰| 特级aaaaaaaaa毛片免费视频| 全午夜免费一级毛片| 久久国产精品无码hdav|