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

基于VC++6.0實(shí)現(xiàn)無(wú)閃爍連續(xù)實(shí)時(shí)曲線

2014-06-27 05:46:27王玉菡曾自強(qiáng)
關(guān)鍵詞:設(shè)備

王玉菡,曾自強(qiáng)

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

基于VC++6.0實(shí)現(xiàn)無(wú)閃爍連續(xù)實(shí)時(shí)曲線

王玉菡1,曾自強(qiáng)2

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

工業(yè)現(xiàn)場(chǎng)常需要實(shí)時(shí)采集數(shù)據(jù)并在軟件中將數(shù)據(jù)動(dòng)態(tài)顯示出來(lái)。運(yùn)用VC++6.0編程工具,在基本對(duì)話框中的靜態(tài)文本控件上,利用雙緩沖技術(shù)實(shí)現(xiàn)無(wú)閃爍時(shí)間驅(qū)動(dòng)的動(dòng)態(tài)實(shí)時(shí)曲線,并在實(shí)踐中取到了較好的效果。

VC++6. 0;基本對(duì)話框;雙緩沖;實(shí)時(shí)曲線

在生產(chǎn)和實(shí)驗(yàn)過(guò)程中,常常需要對(duì)被測(cè)對(duì)象進(jìn)行實(shí)時(shí)數(shù)據(jù)采集,然后將數(shù)據(jù)傳輸?shù)焦た貦C(jī),以動(dòng)態(tài)曲線的方式顯示出來(lái),以便人們對(duì)現(xiàn)場(chǎng)的了解和控制。因此顯示動(dòng)態(tài)實(shí)時(shí)曲線在工控自動(dòng)化的界面程序設(shè)計(jì)中是一種不可缺少的功能。它不但可以給人呈現(xiàn)出一種直觀的視覺(jué)效果,更重要的是能夠?qū)崟r(shí)地顯示、存儲(chǔ)采集到的數(shù)據(jù)[1]。

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

本文利用VC++6.0平臺(tái),基于MFC基本對(duì)話框中的靜態(tài)文本控件,利用雙緩沖技術(shù)實(shí)現(xiàn)無(wú)閃爍時(shí)間驅(qū)動(dòng)的動(dòng)態(tài)實(shí)時(shí)曲線[4]。

1 圖形閃爍問(wèn)題分析

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

為了解決閃爍問(wèn)題,單純的禁止背景重繪是不夠的。因?yàn)槿绻@樣,每次繪制圖像時(shí)都沒(méi)有將原來(lái)的圖像清除,造成了圖像的殘留,于是在窗體重繪時(shí),畫面往往會(huì)變得亂七八糟[8]。要實(shí)現(xiàn)快速的繪圖必須采用雙緩沖繪圖技術(shù),其基本思路是先在內(nèi)存中作圖,然后用BitBlt函數(shù)將作好的圖復(fù)制到前臺(tái)。

2 圖形閃爍問(wèn)題解決方法

2.1 雙緩沖

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

圖1 雙緩沖步驟

2.2 調(diào)用OnPaint()函數(shù)和UpdateWindow()函數(shù)

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

3 編程實(shí)例

采集數(shù)據(jù)的實(shí)時(shí)繪制是一個(gè)經(jīng)常需要用到的功能。本文以數(shù)據(jù)采集為例來(lái)說(shuō)明如何消除曲線的閃爍。整個(gè)采集系統(tǒng)框圖如圖2所示。首先地面軟件每一秒鐘向下位機(jī)發(fā)送命令請(qǐng)求單片機(jī)發(fā)送數(shù)據(jù),單片機(jī)判斷請(qǐng)求并作出相應(yīng)的響應(yīng)。如果數(shù)據(jù)格式正確則回應(yīng),否則不回應(yīng)。上位機(jī)收到下位機(jī)發(fā)送上來(lái)的數(shù)據(jù)后,根據(jù)固定格式讀取出數(shù)據(jù),并以曲線的方式顯示出來(lái)。數(shù)據(jù)及其計(jì)算的結(jié)果還被存儲(chǔ)在數(shù)據(jù)庫(kù)中,以便查詢。歷史曲線以曲線的方式顯示歷史數(shù)據(jù)。

圖2 采集系統(tǒng)框圖

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

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

圖3 使用無(wú)閃爍方法前

圖4 使用無(wú)閃爍方法后

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

本文較好地解決了對(duì)話框繪圖閃爍的問(wèn)題,能夠?qū)崿F(xiàn)實(shí)時(shí)滾動(dòng)的動(dòng)態(tài)曲線,且時(shí)間能夠相應(yīng)地變化。當(dāng)停止了計(jì)時(shí)器時(shí),曲線并不會(huì)消失。當(dāng)再次啟動(dòng)定時(shí)器時(shí),程序?qū)⒏鶕?jù)當(dāng)前的時(shí)間重新繪圖。掌握了這種方法之后,用戶可以根據(jù)自己的需要加以擴(kuò)展和改變,就能得到復(fù)雜的動(dòng)態(tài)曲線。程序更改后可以同時(shí)繪制多條曲線,也可以設(shè)置曲線顏色、線型等屬性。

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

[1]王玉菡.Visual C++編程實(shí)現(xiàn)動(dòng)態(tài)曲線的4種方法[J].重慶工學(xué)院學(xué)報(bào):自然科學(xué)版,2008,22(6):95-97.

[2]陳喜陽(yáng),張克危,彭玉成.VC在監(jiān)測(cè)系統(tǒng)中圖形刷新問(wèn)題的研究[J].工業(yè)控制計(jì)算機(jī),2004,17(4):27-29.

[3]魏慶勇,王陽(yáng)明,陳久康.VC環(huán)境下工業(yè)監(jiān)控軟件趨勢(shì)曲線顯示畫面的實(shí)現(xiàn)[J].機(jī)電一體化,2001(6):62-64.

[4]寇光杰,武玉強(qiáng).基于VC++線程的動(dòng)態(tài)數(shù)據(jù)曲線的繪制方法[J].計(jì)算機(jī)應(yīng)用研究,2004(5):178-180.

[5]程巖,湯永佐,劉巖.基于VC++實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)監(jiān)控和顯示方法[J].山東科學(xué),2010(2):83-85.

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

[7]江建國(guó),溫少營(yíng),張瑞楠.基于雙緩沖技術(shù)的GDI+無(wú)閃爍繪圖[J].計(jì)算機(jī)應(yīng)用,2012,32(S2):136-139.

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

[9]Thompson R D.MFC開(kāi)發(fā)人員參考手冊(cè)[M].北京:機(jī)械工業(yè)出版社,1998.

[10]Davis Chapman.學(xué)用Visual C++6.0[M].駱長(zhǎng)樂(lè),譯.北京:清華大學(xué)出版社,1999.

(責(zé)任編輯 楊黎麗)

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

WANG Yu-h(huán)an1,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—),女,河北冀州人,碩士,主要從事智能儀器研究。

王玉菡,曾自強(qiáng).基于VC++6.0實(shí)現(xiàn)無(wú)閃爍連續(xù)實(shí)時(shí)曲線[J].重慶理工大學(xué)學(xué)報(bào):自然科學(xué)版,2014(4): 123-126.

format:WANG Yu-h(huán)an,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.

猜你喜歡
設(shè)備
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
調(diào)試新設(shè)備
基于VB6.0+Access2010開(kāi)發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡(jiǎn)單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
廣播發(fā)射設(shè)備中平衡輸入與不平衡輸入的轉(zhuǎn)換
電子制作(2018年10期)2018-08-04 03:24:48
食之無(wú)味,棄之可惜 那些槽點(diǎn)滿滿的可穿戴智能設(shè)備
500kV輸變電設(shè)備運(yùn)行維護(hù)探討
HTC斥資千萬(wàn)美元入股虛擬現(xiàn)實(shí)設(shè)備商WEVR
Automechanika Shanghai 2014 之“看” 汽保設(shè)備篇
如何在設(shè)備采購(gòu)中節(jié)省成本
主站蜘蛛池模板: 精品无码一区二区三区在线视频| 试看120秒男女啪啪免费| 成人国产免费| 无码有码中文字幕| 无码福利日韩神码福利片| 国内精品免费| 日韩不卡高清视频| 欧美精品高清| 国产极品美女在线| 五月天久久婷婷| 四虎永久在线视频| 在线免费a视频| 亚洲国产日韩在线观看| 欧美午夜视频在线| 看av免费毛片手机播放| 在线欧美一区| 亚洲天堂.com| 国产精品久久久久久搜索| 久久五月天综合| 91久久天天躁狠狠躁夜夜| 四虎成人精品在永久免费| 538国产在线| 亚洲AⅤ综合在线欧美一区| jizz国产视频| 亚洲一级毛片| 国产精品自在在线午夜| 久久一日本道色综合久久| 国产青青草视频| 成人永久免费A∨一级在线播放| 免费全部高H视频无码无遮掩| 国产农村精品一级毛片视频| 国产一区二区三区精品久久呦| 国产精品va| 中文字幕资源站| 亚洲三级色| 亚洲AV无码久久天堂| 为你提供最新久久精品久久综合| 91丝袜美腿高跟国产极品老师| 国产视频自拍一区| 亚洲第一黄色网| 伊人色天堂| 国产美女叼嘿视频免费看| 成人午夜精品一级毛片| 91啦中文字幕| a毛片在线| 欧美激情综合| 91麻豆国产在线| 日韩精品免费一线在线观看| 国产一区二区视频在线| 欧美在线伊人| 老汉色老汉首页a亚洲| 香港一级毛片免费看| 欧美日韩中文字幕二区三区| 国产精品手机在线播放| 中文字幕亚洲电影| 亚洲美女久久| 精品乱码久久久久久久| 久久黄色影院| 爆乳熟妇一区二区三区| 欧美高清国产| 性视频一区| 色窝窝免费一区二区三区| 国产成人一区| 国产精品一区在线观看你懂的| 久久女人网| 九九热视频在线免费观看| 亚卅精品无码久久毛片乌克兰| 在线亚洲天堂| 老熟妇喷水一区二区三区| 久久成人免费| 青青青国产视频| 国产日韩欧美视频| 久久精品国产在热久久2019| 欧美区一区| 97影院午夜在线观看视频| 亚洲第一精品福利| 四虎亚洲国产成人久久精品| 中文字幕调教一区二区视频| 99视频在线观看免费| 中文字幕在线播放不卡| 国产黄色片在线看| 婷婷亚洲天堂|