亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        TeeChart控件在轉(zhuǎn)臺(tái)調(diào)試軟件中的應(yīng)用

        2022-04-02 08:53:16蘇長(zhǎng)青張旭明
        軟件工程 2022年4期
        關(guān)鍵詞:圖例控件繪圖

        蘇長(zhǎng)青,張旭明,董 恒

        (九江精密測(cè)試技術(shù)研究所,江西 九江 332000)

        suchangqing6666@163.com;zhangxuming@163.com;dongheng@163.com

        1 引言(Introduction)

        在轉(zhuǎn)臺(tái)調(diào)試過程中,經(jīng)常需要分析調(diào)試過程中某些數(shù)據(jù)的變化,如果調(diào)試數(shù)據(jù)能以圖形化的方式進(jìn)行顯示,并分析計(jì)算調(diào)試數(shù)據(jù)的最大值、最小值、平均值、標(biāo)準(zhǔn)差等統(tǒng)計(jì)特性,往往能極大地方便調(diào)試過程。比如在轉(zhuǎn)臺(tái)控制系統(tǒng)PID參數(shù)的調(diào)試過程中,通常是產(chǎn)生一個(gè)階躍信號(hào),觀察控制系統(tǒng)對(duì)該信號(hào)的響應(yīng)情況,這就需要調(diào)試軟件能夠?qū)㈦A躍信號(hào)和階躍響應(yīng)以曲線的形式同時(shí)顯示出來,調(diào)試人員根據(jù)階躍響應(yīng)曲線的上升時(shí)間、調(diào)整時(shí)間、超調(diào)量等修改PID參數(shù),最終得到符合要求的階躍響應(yīng)曲線,完成轉(zhuǎn)臺(tái)控制器的性能調(diào)試。

        在設(shè)計(jì)轉(zhuǎn)臺(tái)調(diào)試軟件時(shí),通過調(diào)用Windows系統(tǒng)自帶繪圖函數(shù)的方法來實(shí)現(xiàn)實(shí)時(shí)曲線,不但費(fèi)時(shí)費(fèi)力,而且效果往往不盡如人意。而專門為圖表應(yīng)用開發(fā)的軟件庫,往往通過簡(jiǎn)單的編程接口調(diào)用,即可實(shí)現(xiàn)復(fù)雜的繪圖功能,使用起來極其簡(jiǎn)單,并且在繪圖效率上做過專門的優(yōu)化,非常符合實(shí)時(shí)曲線繪制的需求。因此,轉(zhuǎn)臺(tái)調(diào)試軟件選擇基于ActiveX技術(shù)的圖形控件TeeChart進(jìn)行實(shí)時(shí)圖形顯示,并利用開放的事件接口完成統(tǒng)計(jì)計(jì)算的功能。

        2 TeeChart特性(TeeChart features)

        TeeChart是Steema Software公司開發(fā)的圖表圖形組件,其Windows版本基于ActiveX技術(shù)開發(fā),用戶可以通過Visual Studio集成開發(fā)環(huán)境進(jìn)行調(diào)用,支持Visua Basic、Visual C++等編程語言,可以方便地集成到用戶程序中。TeeChart圖形類型支持線條圖、棒形圖、面積圖、餅形圖和其他形狀圖等,并且支持2D和3D風(fēng)格的圖形圖表繪制,提供了圖形化的用戶配置界面及用戶編程接口,用戶甚至只需要幾行代碼就能完成復(fù)雜圖表的顯示,大大提升了圖形化軟件的開發(fā)效率。

        TeeChart控件的主類是TChart,數(shù)據(jù)以Series的形式組織,Series通過TChart向用戶展示,而Axes是TChart和Series之間的接口。TeeChart可對(duì)大多數(shù)值進(jìn)行最佳估計(jì),以盡量減少手動(dòng)定義圖表和系列方法的需要。下面簡(jiǎn)要介紹TChart類的一些數(shù)據(jù)成員。

        TChart.Series:序列(Series)是TeeChart中數(shù)據(jù)的組織形式,用戶可以在圖表中插入多個(gè)序列,并且每個(gè)序列可以有不同的圖形類型,如線條圖、棒形圖、餅形圖,等等。

        TChart.Axes:坐標(biāo)軸(Axes)控制圖表坐標(biāo)軸的屬性。TeeChart支持根據(jù)數(shù)據(jù)內(nèi)容自動(dòng)調(diào)整坐標(biāo)軸的范圍,也支持手工調(diào)整,利用坐標(biāo)軸可以方便地實(shí)現(xiàn)圖形的縮放和平移等操作。

        TChart.Legend:圖例(Legend)控制圖標(biāo)的圖例標(biāo)注。圖例通過在圖形中增加一個(gè)矩形區(qū)域,可以對(duì)序列進(jìn)行圖例標(biāo)注,也可以控制序列的顯示與隱藏。

        TChart.Panel:面板(Panel)可以控制圖表的背景。TeeChart支持用戶使用背景圖片或者漸變色彩等作為圖形繪制的背景。

        TChart.Canvas:畫布(Canvas)是TeeChart開放給用戶的自定義繪圖接口,與Windows自帶的繪圖接口類似,支持TextOut、LineTo、Arc等圖形編程接口。

        3 TeeChart的使用(TeeChart usage)

        根據(jù)數(shù)據(jù)源的生成方式不同,曲線顯示可以采用實(shí)時(shí)曲線和歷史曲線的顯示方式。實(shí)時(shí)曲線顯示時(shí),數(shù)據(jù)是實(shí)時(shí)生成的,通常需要將數(shù)據(jù)存儲(chǔ)至一個(gè)數(shù)組中,隨著數(shù)據(jù)更新,平移數(shù)組中的數(shù)據(jù),保證數(shù)組中的數(shù)據(jù)是最新的,并通過數(shù)組中的數(shù)據(jù)更新曲線。歷史曲線顯示時(shí),數(shù)據(jù)源是已經(jīng)生成的,通常需要將數(shù)據(jù)從數(shù)據(jù)庫中讀取并顯示出來即可,不存在曲線的更新問題。在轉(zhuǎn)臺(tái)調(diào)試中,調(diào)試軟件通常實(shí)時(shí)顯示采集到的調(diào)試數(shù)據(jù),因此僅討論實(shí)時(shí)曲線顯示形式。

        3.1 控件的導(dǎo)入

        TeeChart控件的導(dǎo)入與其他ActiveX控件類似,在Visual Studio開發(fā)環(huán)境中的導(dǎo)入過程分為以下幾步:

        (1)在項(xiàng)目中選擇“工具”,打開“選擇工具箱項(xiàng)”對(duì)話框;

        (2)彈出的“選擇工具箱項(xiàng)”對(duì)話框如圖1所示,選擇“COM組件”標(biāo)簽頁,勾選“TeeChart Pro Activex control v2010”并點(diǎn)擊“確定”,即可添加至當(dāng)前開發(fā)環(huán)境;

        圖1 TeeChart控件的導(dǎo)入Fig.1 Import of TeeChart control

        (3)添加成功后,開發(fā)環(huán)境中在控件面板上會(huì)顯示TeeChart控件的圖標(biāo),將其拖曳到當(dāng)前項(xiàng)目中即可。

        在添加好的控件上點(diǎn)擊右鍵,選擇編輯控件,即可打開TeeChart控件的屬性編輯對(duì)話框,如圖2所示。點(diǎn)擊左側(cè)列表框中的Chart可以設(shè)置其數(shù)據(jù)成員的屬性,包括坐標(biāo)軸、標(biāo)題、圖例、面板等;點(diǎn)擊左側(cè)列表框中的Series可以設(shè)置添加序列。圖表設(shè)置的大部分工作都可以在對(duì)話框中完成,也可以根據(jù)實(shí)際需要,通過代碼來動(dòng)態(tài)修改。為了程序的可移植性,采用代碼的形式來添加序列,具體方法見3.2所述。

        圖2 TeeChart圖形化屬性設(shè)置界面Fig.2 TeeChart graphical attribute setting interface

        3.2 初始化

        TeeChart控件的初始化主要完成控件顏色、圖例、邊距等外觀的設(shè)置,以及圖形縮放、按鍵等屬性的設(shè)置,比較簡(jiǎn)單,具體代碼如下。在實(shí)時(shí)曲線顯示時(shí),為了提高繪圖效率,選擇FastLine作為曲線類型。

        3.3 繪制曲線

        在FastLine的曲線繪制過程中,TeeChart通過用折線擬合曲線的方式來提升繪圖效率,曲線數(shù)據(jù)的添加通過CSeries類來完成,該類提供了Add、AddXY、AddArray等數(shù)據(jù)接口,分別用于點(diǎn)單以及數(shù)組數(shù)據(jù)的添加。當(dāng)序列中的數(shù)據(jù)更新后,TeeChart控件自動(dòng)將序列中的數(shù)據(jù)以折線連接并顯示在圖表中。

        (1)向Series中添加一個(gè)點(diǎn):

        m_chart.Series(0).AddXY(x,y,“Lab”,RGB (255,0,0));

        (2)以數(shù)組的形式添加一組數(shù)據(jù):

        m_chart.Series(0).AddArray(200000,YValues,XValues);

        該接口通常用于歷史曲線顯示時(shí),數(shù)據(jù)大量添加的情況,序列數(shù)據(jù)添加完成后才進(jìn)行一次圖形的更新,相比AddXY接口,其效率有極大提高。

        (3)修改數(shù)據(jù):

        m_chart.Series(0).GetValueLists().GetItems(0).SetValue(index,newValue);

        (4)刪除數(shù)據(jù):

        m_chart.Series(0).Delete(x);

        4 統(tǒng)計(jì)特性的實(shí)現(xiàn)(Implementation of statistical characteristics)

        對(duì)TeeChart 顯示的曲線進(jìn)行統(tǒng)計(jì)分析,需要利用TeeChart開放的繪圖事件接口來實(shí)現(xiàn),實(shí)現(xiàn)步驟如下:

        (1)增加鼠標(biāo)按下事件處理函數(shù)OnMouseDownTchartCurve,在鼠標(biāo)左鍵按下的時(shí)刻,記錄當(dāng)前的坐標(biāo)位置,并設(shè)置bMouseFlag變量,表示進(jìn)入框選模式。

        (2)增加鼠標(biāo)移動(dòng)事件處理函數(shù)OnMouseMoveTchartCurve,當(dāng)處于框選模式時(shí),移動(dòng)鼠標(biāo)時(shí)框選出需要統(tǒng)計(jì)分析的曲線塊。

        (3)增加鼠標(biāo)按鍵彈起事件處理函數(shù)OnMouseUpTchartCurve,在鼠標(biāo)左鍵彈起的時(shí)刻,清除bMouseFlag變量,退出框選模式,并記錄下此時(shí)的坐標(biāo)位置。利用兩個(gè)坐標(biāo)點(diǎn)確定矩形框,并將兩個(gè)坐標(biāo)點(diǎn)的屏幕坐標(biāo)轉(zhuǎn)換到曲線顯示的坐標(biāo)系,得到數(shù)據(jù)塊起始、結(jié)束的橫坐標(biāo),以此范圍計(jì)算數(shù)據(jù)塊的統(tǒng)計(jì)信息。

        (4)增加繪圖完成事件處理函數(shù)AfterDrawTchart,在該函數(shù)中增加計(jì)算完成曲線塊的統(tǒng)計(jì)信息功能,TeeChart在繪圖結(jié)束后將自動(dòng)調(diào)用該函數(shù)。

        幾個(gè)關(guān)鍵函數(shù)的具體實(shí)現(xiàn)代碼如下所示:

        基于TeeChart控件完成的轉(zhuǎn)臺(tái)調(diào)試軟件,其完成界面如圖3所示,在該圖示區(qū)域的左上角,輸出了當(dāng)前選定數(shù)據(jù)塊的統(tǒng)計(jì)信息,并且指示出了當(dāng)前選定的Series,以及選定數(shù)據(jù)塊的范圍。此時(shí)轉(zhuǎn)臺(tái)進(jìn)行正弦運(yùn)動(dòng),圖中區(qū)域?qū)崟r(shí)顯示了用戶位置曲線,可以看到該模式啟動(dòng)和停止時(shí)振幅的變化過程,以及在平穩(wěn)正弦運(yùn)動(dòng)中的一些統(tǒng)計(jì)信息,極大地方便了轉(zhuǎn)臺(tái)調(diào)試過程。

        圖3 利用TeeChart接口實(shí)現(xiàn)統(tǒng)計(jì)功能Fig.3 Implementation of statistical function using TeeChart interface

        5 結(jié)論(Conclusion)

        針對(duì)轉(zhuǎn)臺(tái)調(diào)試測(cè)試軟件調(diào)試數(shù)據(jù)的圖形顯示需求,介紹了TeeChart控件在軟件開發(fā)過程中的應(yīng)用。利用TeeChart提供的屬性和方法,可實(shí)現(xiàn)各類數(shù)據(jù)的繪制,并且通過自定義TeeChart事件接口函數(shù)的方法,實(shí)現(xiàn)了曲線數(shù)據(jù)塊的統(tǒng)計(jì)分析功能,只要稍加修改并添加其他曲線分析算法,就可以實(shí)現(xiàn)更加復(fù)雜、豐富的曲線分析功能,可以顯著縮短軟件的開發(fā)周期和成本?;赥eeChart的開發(fā)應(yīng)用并不局限于轉(zhuǎn)臺(tái)調(diào)試軟件,對(duì)于其他具有數(shù)據(jù)圖形化顯示需求的軟件開發(fā),也有一定的參考價(jià)值。

        猜你喜歡
        圖例控件繪圖
        圖線、箭頭的含義和圖例
        來自河流的你
        “禾下乘涼圖”繪圖人
        找拼圖
        關(guān)于.net控件數(shù)組的探討
        軟件(2018年7期)2018-08-13 09:44:42
        犬狗的畫法(六)
        老年教育(2018年6期)2018-07-06 08:03:18
        基于HTML5 Canvas繪圖技術(shù)應(yīng)用
        如何讓學(xué)生巧用圖例解決數(shù)學(xué)問題
        Surfer和ArcView結(jié)合在氣象繪圖中的應(yīng)用
        河北遙感(2015年2期)2015-07-18 11:11:14
        就這樣玩會(huì)VBA中常見的自定義控件
        電腦迷(2012年24期)2012-04-29 00:44:03
        亚洲美女又黄又爽在线观看| 一区二区三区四区黄色av网站 | 国产日韩三级| 白色月光免费观看完整版| 激情人妻另类人妻伦| 国产在线精品一区二区在线看| 国产成人AV无码精品无毒| 一本色道久久88综合亚洲精品| 亚洲一区二区在线观看免费视频| 色噜噜狠狠综曰曰曰| 男人无码视频在线观看| 亚洲天堂中文字幕君一二三四| 蜜桃视频第一区免费观看| 麻豆精品国产精华液好用吗| 久久久久99精品成人片试看| 伊人不卡中文字幕在线一区二区| 日本a级免费大片网站 | 日本熟妇另类一区二区三区| 又黄又硬又湿又刺激视频免费| 欧美在线不卡视频| 综合人妻久久一区二区精品| 亚洲中文字幕av天堂自拍| 久久人与动人物a级毛片| 欧美成人精品三级在线观看| 亚洲av中文字字幕乱码软件 | 日本免费视频| 影视先锋av资源噜噜| 九九在线精品视频xxx| 区一区二区三免费观看视频| 日韩精品真人荷官无码| 国产喷水福利在线视频| 日韩人妻高清福利视频| 高清中文字幕一区二区| 国产成人一区二区三区影院动漫| 日本免费一区二区三区在线看| 国产在线观看黄片视频免费| 免费网站内射红桃视频| 国产精品揄拍100视频| 99熟妇人妻精品一区五一看片| 91伦理片视频国产精品久久久| 亚洲午夜精品久久久久久人妖|