DAQBench在人機界面編程中的應(yīng)用
人機界面是測控應(yīng)用系統(tǒng)開發(fā)的一個重要部分朵耕。DAOBench是凌華科技股份有限公司研發(fā)的一套測量和自動化應(yīng)用的32位ActiveX控件,包括用戶界面淋叶、數(shù)據(jù)分析阎曹、信息整合、SCADA/HMI等各種控件及工具煞檩。使用DAQBench处嫌,用戶可以很容易地開發(fā)出復雜的用戶應(yīng)用系統(tǒng)來顯示信號數(shù)據(jù)、分析所采集到的數(shù)據(jù)斟湃、快速地與Excel熏迹、數(shù)據(jù)庫或Web做信息整合。運用DAQBench的SCADA/HMI功能凝赛,您也可以很快地開發(fā)分布式(distributed)人機界面(HMI)應(yīng)用系統(tǒng)挫勿。可以在任何支持ActiveX標準的軟件開發(fā)平臺使用庭授,包括Visual Basic琴哗、Visual C++、C++Builder粉只、Delphi等吟叙。
1、原理
ActiveX控件的妙處在于暇鸦,控件與應(yīng)用程序總是能融洽地交互揍丘。ActiveX控件提供了三種與應(yīng)用程序交互的基本機制:屬性(Property)、方法(Method)和事件(Event)牺胎。用戶由此三部分來控制控件并開發(fā)程序楞庸。屬性是描述控件的當前狀態(tài)沉年,并影響控件的顯示和行為,屬性值存儲在控件的變量中妄结。方法為定義在控件內(nèi)的函數(shù)(Function)磨夕,方法的使用與控件所提供的功能有關(guān),通常會影響控件本身或其行為蔓姚,大多數(shù)方法的作用也會受到控件當時屬性的影響捕虽。事件是在某些特定情況時,控件所產(chǎn)生的通知事件坡脐,事件被傳遞給控件應(yīng)用程序以執(zhí)行程序中與此事件連接的函數(shù)(Event handler)泄私。
以下舉例說明,如何運用DAQBench控件建立人機界面备闲,以及使用ADLINK的數(shù)據(jù)采集設(shè)備的ActiveX控件進行模擬信號的處理晌端。
我們假設(shè)把一個程序分成兩部分:可視部分(前臺顯示操作的界面)和不可視部分(后臺工作的線程)。本文程序的顯示界面非常簡單恬砂,僅有一個作圖控件及一個退出按鈕咧纠,后臺工作是使用一個虛擬的PCI—9112多功能數(shù)據(jù)采集卡(不需要安裝真正的板卡)產(chǎn)生采樣數(shù)據(jù)。程序流程見圖1泻骤,在程序的開始漆羔,調(diào)用PCI—9112控件的方法StartContAI來激活連續(xù)的AI, 當采樣完成時狱掂,會自動激活PCI—9112控件的事件AiHalfReady 0演痒,在事件響應(yīng)函數(shù)中,通過調(diào)用作圖控件的方法PlotChart 0陈伪,把采集到的數(shù)據(jù)傳送給作圖控件深牲。這樣,我們就能不斷地在屏幕上看到采樣數(shù)據(jù)泛倦,直到程序退出辽松。整個程序只有兩條語句需要鍵盤輸入,其余工作都是通過鼠標點擊來完成的习环。從這個程序您可以感受到用DAQBench的ActiveX控件來做數(shù)據(jù)采集程序是多么的簡單容易街剂。
圖1 程序原理圖
2、編程
以下將以逐步推進(step by step)的方式柏豆,說明如何在微軟的Visual c++6.0下绎弯,運用DAQBench的ActiveX控件來完成數(shù)據(jù)采集的應(yīng)用。
2.1 程序框架的建立
使用Visual C++的MFC AppWizard來建立一個基于對話框的程序框架这毁。
通過File>>New菜單命令建立一個新的項目版逼,其會打開New的對話框。在Projects頁面中,選擇[MFC AppWizard(exe)]項目類型钮隙,在Project name中輸入項目名稱:MZR 點0K阅嘶。
在Step 1對話框選擇[Dialog based]選項, 點Finish>>點0K载迄。
這樣讯柔,應(yīng)用程序向?qū)?gòu)建一個新的項目和程序的框架,并自動在對話框編輯器中打開程序?qū)υ捒颉?br>
2.2 加載DAQBench控件
把需要的ActiveX控件添加到控件工具欄(Control Toolbar)的步驟如下:
(1) 選擇Project>> Add To Project >>Components And Controls?項目护昧,然后魂迄,在接著出現(xiàn)的對話框中,使用鼠標雙擊Registered ActiveX Controls目錄條目惋耙。這樣就會打開一系列計算機上已經(jīng)安裝和注冊的ActiveX控件清單捣炬。選擇并插入需要的ActiveX控件到您的項目和控件工具欄中。
(2) 選擇繪圖ActiveX控件(文件名)DAQBench DChart Control—(ADLINK)绽榛,單擊Insert按鈕湿酸,在隨后的對話框中使用鼠標點選OK,接受缺省的類名和文件名灭美。
(3) 選擇數(shù)據(jù)采集ActiveX控件(文件名)NuDAQ PCI—9112 Control—(ADLINK)推溃,單擊Insert按鈕,單擊確定按鈕届腐,單擊OK按鈕万窄,接受缺省的類名和文件名。
(4) 添加完畢船遣,返回Components And Controls Gallery對話框,單擊Close按鈕卸腐。
這樣样呜,就在對話框編輯器的控件工具欄中,加進了繪圖控件DAQBench DChart Control和數(shù)據(jù)采集控件NuDAQ PCI—9112 Control屿赶,可以方便地將控件加入到對話框中覆珍。
2.3 程序設(shè)計
將控件添加到控件工具欄之后,就可以在設(shè)計應(yīng)用程序的用戶界面時使用控件了差机。開發(fā)者可以使用對話框編輯器將控件放置在對話框上纱轨。具體操作步驟如下:
刪除窗體上帶TODO消息的靜態(tài)文本控件,并刪除確定按鈕倡超。
單擊Controls工具條底部的DChart按鈕倔剩,并通過鼠標點擊把它放在對話框中,ActiveX控件可以象標準Windows控件一樣插入對話框扎怨,并可調(diào)整位置與大小盖呼。
選擇Controls工具條底部的PCI—9112按鈕,把它放在對話框中適當?shù)奈恢茫益I點擊對話框中的PCI—9112控件几晤,在打開的菜單中選擇屬性(Properties)约炎,就會出現(xiàn)一個帶有各種不同屬性字段的屬性頁對話框。通過屬性頁對話框蟹瘾,你可以對這個特定的控件進行設(shè)置圾浅,具體數(shù)值見表1。
表1 控件NuDAQ PCI-9112 Control屬性設(shè)置
在用戶使用控件編寫程序之前憾朴,要先為該控件設(shè)定一個變量名稱狸捕。下面為作圖控件和采樣控件設(shè)定相應(yīng)變量:通過快捷鍵Ctrl+W,打開MFC Class Wizard對話框,在Member Variables標簽中將Class name設(shè)置為CMZRDlg伊脓,通過Add Variables?按鈕給其中的控件標識號添加變量府寒,變量的定義見表2。
表2 對話框中相應(yīng)控件變量的
定義PCI—9112控件的事件處理函數(shù)报腔,通過快捷鍵Ctrl+W,在MFC Class Wizard窗口中株搔,按下Message Maps 標簽并在Object Ids字段中選IDC_PCI9112CTRLI控件,在Messages字段中選AiHalfReady纯蛾,單擊Add Function按鈕肌辑,添加數(shù)據(jù)采集控件的AiHalfReady消息響應(yīng)函數(shù),接受缺省的函數(shù)名留旱,單擊Edit Code按鈕以定位到該函數(shù)刹造,在其中加入下列代碼:
void
CMZRDlg::OnAiHalfReadyPci9112ctrl1(VARIANT FAR*ScaledData,VARIANT FAR*BinaryCodes)
{
//TODO:Add your control notification handler code here
m_Chart.PlotChart(ScaledData)格你;// 將ScaledData中的采樣數(shù)據(jù)傳遞給作圖控件劫欣。
}
在初始化函數(shù)中啟動數(shù)據(jù)采集函數(shù):
定位到對話框初始化函數(shù)void CMzRDlg::OnInitDialog(),在其結(jié)尾return TRUE述逾;語句之前加入下列語句
BOOL CMZRDlg::OnInitDialog()
{
CDialog::OnInitDialog()盹清;
/TODO :Add extra initialization here VARIANT Filename;
m_Pci9112.StartContAI(Filename)殴客;//激活連續(xù)
return TRUE曾辙; //return TRUE unless you set the focus to a control
}
2.4 程序測試
通過按Ctrl_F5鍵直接在Developer Studio中運行程序,運行結(jié)果如圖2所示傀铃。
圖2 運行結(jié)果
開發(fā)環(huán)境:本文假設(shè)您已經(jīng)安裝了Visual C++6.0和DAQBench和PCIS—OCX糕米。
DAQBench和PCIS—OCX這兩個軟件可從凌華公司的網(wǎng)站(http://www.a(chǎn)dlinktech.com/download area/software.htm)下載。
3茫经、結(jié)束語
DAQBench提供了6O余種ActiveX控件巷波,可以幫助您快速地完成量測及自動化控制的應(yīng)用系統(tǒng)。說的更簡單一點卸伞,您可以把DAQBench想像成一套積木褥紫,里面的每一塊積木都有特定的形狀姜性。您只要選擇適當?shù)姆e木, 便可以拼出各式各樣您想要的東西髓考。用DAQBench來開發(fā)程序也是這樣部念,您只要選擇適當?shù)目刂圃瑢⑺鼈兤礈愒谝黄鸢惫剑憧梢酝瓿赡膽?yīng)用系統(tǒng)開發(fā)儡炼。由于ActiveX控件技術(shù)具有代碼的可移植性和復用性,具有開發(fā)成本低查蓉,執(zhí)行效率佳乌询,程序彈性大,開放性架構(gòu)易于擴充等優(yōu)點豌研,DAQBench擁有越來越多的用戶群妹田。
如果使用傳統(tǒng)的API或DLL編程來完成上述功能,至少需要幾百行代碼淌璧。對于所有用戶拳镊,DAOBench都能使人機界面的開發(fā)變得更輕松也更有效率。通過直觀的圖形界面禽忧,使用戶很容易用他們自己的HMI來完成更多的工作寓吼。非編程人員或只擁有很少編程背景的人員,都能用很少的工作來創(chuàng)建相當有效的系統(tǒng)衙乡。使用戶可以專注于解決測量和控制問題治牲,而無需受困于編程過程。
為用戶的操作構(gòu)建一種有效的人機界面(HMI)純粹是一種個人行為箱歪,因為每一種安裝都不一樣趁悦,都具有不同的要求、目標及需求揽膏。因此為您的操作創(chuàng)建一種合適的人機界面委蒿,意味著需先徹底了解您的過程及其周邊系統(tǒng)……然后再從能對它們進行監(jiān)控及調(diào)整的角度來創(chuàng)建對這些過程的反應(yīng)。選擇何種方式來創(chuàng)建或加強您的HMI跑事,在很大程度上取決于您個人的偏好及能力别粮,永遠都不會有“唯一”的方式懈词。HMI最終將向零編程方向發(fā)展蛇耀。
聲明:本網(wǎng)站所收集的部分公開資料來源于互聯(lián)網(wǎng),轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享坎弯,并不代表本站贊同其觀點和對其真實性負責纺涤,也不構(gòu)成任何其他建議。本站部分作品是由網(wǎng)友自主投稿和發(fā)布抠忘、編輯整理上傳撩炊,對此類作品本站僅提供交流平臺,不為其版權(quán)負責。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻拧咳、圖片伯顶、文字如涉及作品版權(quán)問題,請第一時間告知骆膝,我們將根據(jù)您提供的證明材料確認版權(quán)并按國家標準支付稿酬或立即刪除內(nèi)容祭衩,以保證您的權(quán)益!聯(lián)系電話:010-58612588 或 Email:editor@mmsonline.com.cn阅签。
- 暫無反饋
編輯推薦
- 2025新年特刊:打造新質(zhì)生產(chǎn)力,智啟未來新篇章
- 定義制造業(yè)未來的數(shù)控加工中心技術(shù)專題
- 航空航天及交通領(lǐng)域先進制造技術(shù)應(yīng)用專題
- 解碼消費電子產(chǎn)品生產(chǎn)的數(shù)字化之路技術(shù)專題
- 精密智能機床舰绘,助力制造升級技術(shù)專題
- 汽車輕量化驅(qū)動下的零部件加工應(yīng)用專題
- 高性能銑刀實現(xiàn)高精加工生產(chǎn)技術(shù)專題
- 航空航天發(fā)動機解決方案專題
- 高效齒輪加工生產(chǎn)技術(shù)方案專題
- 金屬加工液的性能不止?jié)櫥夹g(shù)應(yīng)用專題