




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、LabVIEW 高級編程技巧,內(nèi)容概要,National Instruments 公司簡介 LabVIEW 高級編程技巧 用戶定義的調(diào)試指示器 定時(shí)循環(huán) 基于事件觸發(fā)的編程 改善VI的性能 調(diào)用動(dòng)態(tài)鏈接庫,National Instruments: 虛擬儀器倡導(dǎo)者,建立于1976年 超過1,000種測試測量產(chǎn)品 在40個(gè)國家設(shè)有直屬分支機(jī)構(gòu),600家系統(tǒng)聯(lián)盟商,中國: 研發(fā), 區(qū)域咨詢, 技術(shù)支持, 市場,NI 客戶的分布,超過25,000個(gè)客戶分布在多達(dá)80個(gè)國家 財(cái)富500強(qiáng)中95的制造型企業(yè),1. 調(diào)試指示器,靈活的調(diào)試工具,可詳細(xì)顯示數(shù)據(jù)線上通過的數(shù)據(jù) 指示器的操作可以體現(xiàn) VI 的靈
2、活性和強(qiáng)大功能 傳統(tǒng)的調(diào)試指示器存在一些缺點(diǎn),如只能顯示數(shù)組中的一個(gè)元素,用戶定義的調(diào)試指示器,能顯示各種數(shù)據(jù)類型 可定制指示器外觀 可定制指示器處理功能 設(shè)置條件斷點(diǎn),定制你的需求,指示器不僅僅可以顯示數(shù)據(jù) 將數(shù)據(jù)錄入文件 對兩個(gè)指示器之間的執(zhí)行進(jìn)行定時(shí) 計(jì)算總的調(diào)用次數(shù)或是每秒的調(diào)用次數(shù),內(nèi)建的定制指示器,在數(shù)據(jù)連線上點(diǎn)擊鼠標(biāo)右鍵 菜單顯示所有相關(guān)的指示器 指示器存放在目錄 vi.lib_probesdefault下,Keep graphics below the text and to the right,客戶指示器的結(jié)構(gòu),包含一個(gè)控件 控件的數(shù)據(jù)類型就是所指示的數(shù)據(jù)線 包含一個(gè)指示器
3、Boolean, 類似條件斷點(diǎn) True = 暫停執(zhí)行 False = 繼續(xù)執(zhí)行,Keep graphics below the text and to the right,2. 定時(shí)循環(huán),精確的定時(shí) while 循環(huán) 多個(gè)時(shí)鐘頻率的定時(shí) 反饋, 動(dòng)態(tài)定時(shí)特性 多達(dá)128個(gè)循環(huán)優(yōu)先級 examplesgeneraltimedloop.llb,定時(shí)循環(huán)的配置,定時(shí)循環(huán),3. 基于事件的編程,管理用戶界面,通常采用的方法有中斷響應(yīng)和事件驅(qū)動(dòng) 中斷響應(yīng)采用輪詢機(jī)制處理,非常占用CPU資源,還可能會(huì)丟失用戶界面的響應(yīng) 事件驅(qū)動(dòng)無需輪詢即可捕捉到相關(guān)事件,順序處理捕捉到的所有事件,不會(huì)丟失也不會(huì)顛倒順序
4、,事件舉例,事件結(jié)構(gòu)不需要輪詢就可以捕捉到自定義菜單上的用戶選擇 ItemTag 返回菜單條目 MenuRef 返回菜單的 refnum,Virtual Instrument,事件類型,Application,事件舉例: 退出應(yīng)用程序 超時(shí),Control,事件舉例: 關(guān)閉前面板 VI 上的鼠標(biāo)移動(dòng),事件舉例: 改變控件數(shù)值 特定控件上的鼠標(biāo)移動(dòng),通知事件和可濾除事件,通知事件 通知 LabVIEW 發(fā)生了一個(gè)用戶行為; 只能在 Event Data Node中使用 可濾除事件 在用戶界面處理之前驗(yàn)證或改變事件數(shù)據(jù),避免影響 VI; 可在 Event Filter Node 和 Event D
5、ata Node 中使用,LabVIEW 7 新事件,更多的用戶界面事件 動(dòng)態(tài)注冊的事件 用戶定義的事件 ActiveX 事件,事件結(jié)構(gòu)的組成部分,Event Selector Label 確定觀察的事件 Timeout 等待事件的毫秒數(shù); 缺省值 1 (無限期) Defaulted Tunnels 新型tunnel, 允許未連線的事件案例提供缺省值 Dynamic Event Terminals 用于動(dòng)態(tài)事件的注冊,事件結(jié)構(gòu)的組成部分,Event Data Node 確定事件發(fā)生時(shí) LV 提供的數(shù)據(jù),與 Unbundle By Name 函數(shù)類似 Event Filter Node 確定Ev
6、ent Data Node 中可提供的數(shù)據(jù)子集,可供事件案例修改,事件結(jié)構(gòu)的基本使用,通常在 While 循環(huán)中使用 每次循環(huán)只處理一次事件,其它時(shí)間休眠 在事件結(jié)構(gòu)的左側(cè)邊框端口上可獲得事件數(shù)據(jù),事件結(jié)構(gòu)的配置,通過對話框來配置事件,右擊事件結(jié)構(gòu)的邊框 ,選擇 “Edit Events Handled by This Case”,事件注冊和面板鎖定,包含事件結(jié)構(gòu)的 VI 被預(yù)留以后,事件就成為已注冊的 已注冊事件發(fā)生后, 會(huì)進(jìn)入隊(duì)列等待直到相應(yīng)的事件結(jié)構(gòu)開始執(zhí)行,事件不會(huì)丟失也不會(huì)出現(xiàn)順序混亂 默認(rèn)情況下, 前面板被鎖定直到事件被處理完 可以關(guān)閉鎖定,但只針對過濾事件 VI 變成空閑后,事件
7、被注銷,3.1 動(dòng)態(tài)事件,下列情況時(shí),需要?jiǎng)討B(tài)注冊事件: 事件注冊只能發(fā)生在應(yīng)用程序的某些部分 在程序運(yùn)行過程中需要改變哪些 VIs 或控件可以發(fā)生事件 在 subVI 中處理事件,而不是僅在注冊事件的 VI 中,動(dòng)態(tài)事件,Register For Events Event Structure Unregister For Events Create User Event Generate User Event Destroy User Event,編程模型,注冊 事件,連接到 事件結(jié)構(gòu),選擇 動(dòng)態(tài)事件,注銷 事件,3.2 程序產(chǎn)生的 (用戶) 事件,Register For Events E
8、vent Structure Unregister For Events Create User Event Generate User Event Destroy User Event,用戶事件編程模型,創(chuàng)建并注冊用戶事件,產(chǎn)生 用戶事件,注銷 用戶事件,消滅 用戶事件,用戶事件舉例,3.3 ActiveX 事件,Register Event Callback,ActiveX 編程模型,注冊ActiveX 事件,選擇事件,創(chuàng)建和編輯Callback VI,總結(jié):事件處理結(jié)構(gòu),允許在subvi中處理事件代碼 提供統(tǒng)一的,簡化的事件處理機(jī)制 用戶界面 接口控制 外部代碼 硬件觸發(fā) 用戶定義事件
9、注冊和非注冊事件,4. 改善VI 的性能,改進(jìn)內(nèi)存使用 使用高效數(shù)組函數(shù) 謹(jǐn)慎處理字符串和數(shù)組 避免不必要的復(fù)雜數(shù)據(jù)結(jié)構(gòu) 減少 I/O 開銷 減少 I/O 調(diào)用的次數(shù) 減少開啟和關(guān)閉資源的次數(shù) 減少屏幕更新,4.1 改進(jìn)內(nèi)存使用,LabVIEW 處理了大部分內(nèi)存管理的細(xì)節(jié) 資源分配, 復(fù)制, 釋放, 溢出 減少程序框圖的大小 提高可讀性和穩(wěn)定性 內(nèi)存管理自動(dòng)進(jìn)行,你不需要過多的干預(yù) 理解 LabVIEW 是何時(shí)并如何為你“代勞”內(nèi)存管理的可以大大提高 對內(nèi)存使用的效率,VI 在內(nèi)存中的數(shù)據(jù)結(jié)構(gòu),Front Panel Block Diagram Code 框圖編譯成機(jī)器碼 Data Space
10、 Control/indicator 數(shù)值 Block diagram 常量 動(dòng)態(tài)定義的數(shù)據(jù),VI 何時(shí)加載到內(nèi)存中,始終載入 data 平臺(tái)符合時(shí)載入Code (Mac OS, Windows, Sun, Linux) Panel 和 Diagram 在必要時(shí)載入 (recompiling),Main VI,SubVI,Always in memory,Resident sometimes,Front Panel,Block Diagram,Code,Data Space,Front Panel,Block Diagram,Code,Data Space,內(nèi)存使用情況,Tools Advan
11、ced Profile VIs 勾選 “Profile Memory Usage” 雖然看起來不大,但如果是在一個(gè)循環(huán)結(jié)構(gòu)中,就會(huì)累加出一個(gè)很大結(jié)果。 在高速運(yùn)行的循環(huán)結(jié)構(gòu)中,不要顯示 subVI 的前面板 如果可能,將循環(huán)結(jié)構(gòu)移到 subVI 中完成。,全局和局部變量,每一次變量的讀操作都會(huì)給數(shù)據(jù)生成一個(gè)新的緩沖區(qū) 在使用大數(shù)組、字符串或復(fù)雜數(shù)據(jù)結(jié)構(gòu)時(shí)會(huì)帶來很大影響 從內(nèi)存使用和執(zhí)行速度來看,使用數(shù)據(jù)線永遠(yuǎn)是更有效的方法,屬性節(jié)點(diǎn),使用屬性節(jié)點(diǎn)會(huì)引起線程間的交換,從而降低效率 如果只是為了更新控件的值,不要使用屬性節(jié)點(diǎn) 如果同時(shí)改變其它屬性,更新數(shù)值不會(huì)造成更大損失,因?yàn)榫€程交換已經(jīng)發(fā)生了,
12、更新前面板控件,GoodBetterBest,創(chuàng)建高效的平行框圖,LabVIEW 周期性地在平行循環(huán)間切換 使用 Wait (ms) function 確保不太重要的循環(huán)占用較少的處理器時(shí)間,5. 共享庫函數(shù),What? Windows 中的 .dll, UNIX/Linux 中的 .so, 等等 Why? 降低磁盤空間和內(nèi)存占用 How? 應(yīng)用程序只在需要的時(shí)候調(diào)用庫函數(shù) 程序開始執(zhí)行以后,由運(yùn)行鏈接編輯器來處理所有調(diào)用,動(dòng)態(tài)鏈接庫 (DLL),Microsoft Windows 中的一種軟件模塊 包含可執(zhí)行代碼和可被Windows應(yīng)用程序或其它 DLL 調(diào)用的數(shù)據(jù) 函數(shù)和數(shù)據(jù)只有在運(yùn)行狀態(tài)
13、下,被Windows 應(yīng)用程序或其它DLL調(diào)用時(shí)才被加載和鏈接 一個(gè) DLL 包括: 一個(gè)特殊函數(shù) (DllMain) 幾個(gè)編程者自定義來完成常用任務(wù)的函數(shù),DLL 特性,不能單獨(dú)運(yùn)行的可執(zhí)行文件 應(yīng)用程序要求時(shí),由操作系統(tǒng)加載 應(yīng)用程序把 DLL 代碼作為自己二進(jìn)制文件的一部分來使用 應(yīng)用程序不需要知道原始DLL是由什么語言編寫的,也不需要清楚這些功能是如何實(shí)現(xiàn)的。 DLL就像一個(gè)有輸出函數(shù)的黑盒子,LabVIEW 中調(diào)用 Shared Library/DLL,Advanced Call Library Function Node 右擊 Call Library Function Node,
14、選擇 Configure 來調(diào)用DLL中的特定函數(shù),Call Library Function 的配置,指定需調(diào)用的 DLL 函數(shù)和函數(shù)參數(shù) 選擇 dll 的調(diào)用規(guī)則; 對于 Win32 dll 來說,可以是缺省 (stdcall) 或 C.,Call Library Function 和 Win32 DLLs,函數(shù)參數(shù)可以是以下類型:,Void 數(shù)字型 有符號/無符號 8-bit, 16-bit 和 32-bit 整數(shù) 4-byte, 單精度數(shù) 8-byte, 雙精度數(shù),數(shù)組 數(shù)組數(shù)據(jù)指針 數(shù)組句柄 字符串 C Pascal G (LabVIEW) Adapt to Type,DLL 實(shí)例:
15、 MessageBoxA 函數(shù),回傳類型,函數(shù)名,參數(shù): HWNDhWnd 32-bit 無符號整數(shù). 確定 parent window. 此時(shí)為 NULL. LPCSTRlpText C-style string LPCSTRlpCaption C-style string UINTuType unsigned 32-bit integer value.,回傳類型: int 32-bit signed integer,調(diào)試 Call Library Function,如果 VI不執(zhí)行或者導(dǎo)致死機(jī), 檢查下列可能: DLL的路徑名是否正確 如果錯(cuò)誤信息是 function not found
16、in library, 檢查函數(shù)名的拼寫、語法和大小寫 傳遞給 DLL函數(shù)的所有參數(shù)都有數(shù)據(jù)線連接到 Call Library Function 圖標(biāo)的輸入端口上. 檢查數(shù)據(jù)類型和參數(shù)順序 使用了正確的調(diào)用規(guī)則: C 或者缺省(stdcall); The Win32 API 使用 缺省(stdcall) 規(guī)則 需要更多幫助, 請參閱 Using External Code in LabVIEW 手冊,Creating DLLs in LabVIEW,編寫和 測試 VI,從VI 創(chuàng)建DLL,最終應(yīng)用 程序中 調(diào)用 DLL,LabVIEW 中創(chuàng)建 DLL,要?jiǎng)?chuàng)建其它編程環(huán)境中可輕松調(diào)用的DLL, 需要注意以下幾點(diǎn): 調(diào)用規(guī)則 應(yīng)用程序的結(jié)構(gòu) 輸入/輸出參數(shù) (包括可選項(xiàng)) 函數(shù)原型聲明,參數(shù) 數(shù)組選項(xiàng),數(shù)字量的數(shù)組可以是: 任意整數(shù)類型 單 (4-byte) 精度浮點(diǎn)數(shù) 雙 (8-byte) 精度浮點(diǎn)數(shù) 創(chuàng)建DLL時(shí),可以選擇如何從DLL中傳遞數(shù)據(jù) 通過數(shù)值或引用, 作為數(shù)組數(shù)據(jù)指針或者數(shù)組句柄指針等等 根據(jù)DLL最終如何使用來選擇合適的項(xiàng)目,參數(shù) 字符串選項(xiàng),LabVIEW 字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冷藏合同范本
- 加工車間轉(zhuǎn)租合同范本
- 不見面簽訂租賃合同范本
- 2025年合肥貨運(yùn)車從業(yè)考試題
- 個(gè)人施工承攬合同范本
- app開發(fā)合同范本模板
- 加工訂單合同范本模板
- 農(nóng)村供熱服務(wù)合同范本
- 個(gè)人股權(quán)質(zhì)押合同范本
- 光租船合同范本
- GB/T 5392-2004林業(yè)機(jī)械油鋸技術(shù)條件
- GB/T 26535-2011國家重要濕地確定指標(biāo)
- GA/T 1133-2014基于視頻圖像的車輛行駛速度技術(shù)鑒定
- 食品安全 PPT課件7農(nóng)獸藥化學(xué)性污染對食品安全性的影響
- 世界電影史-全-課件
- 介入科人員崗位職責(zé)
- 病死畜禽無害化處理課件
- ncast課錄播系統(tǒng)簡介
- 華為認(rèn)證 HCIA-Security 安全 H12-711考試題庫(共800多題)
- 《區(qū)域大地構(gòu)造學(xué)》全套教學(xué)課件
- 接地電阻測試記錄表范本
評論
0/150
提交評論