版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1天津大學(xué)精儀學(xué)院精講LabVIEW設(shè)計(jì)模式天津大學(xué)精儀學(xué)院陳世利2天津大學(xué)精儀學(xué)院 LabVIEW 設(shè)計(jì)模式 LabVIEW 定時(shí)結(jié)構(gòu)優(yōu)化LabVIEW程序內(nèi)存管理調(diào)用動(dòng)態(tài)鏈接庫(kù)LabVIEW與多線程3天津大學(xué)精儀學(xué)院什么是設(shè)計(jì)模式?什么是設(shè)計(jì)模式? 一種LabVIEW程序模板與架構(gòu) 軟件實(shí)踐中通用的程序架構(gòu),其本質(zhì)是對(duì)很多十分類似的問(wèn)題進(jìn)行總結(jié)歸納的基礎(chǔ)上提煉出的一些具有代表性的軟件開(kāi)發(fā)規(guī)范 具有靈活的配置功能 被廣泛使用4天津大學(xué)精儀學(xué)院使用設(shè)計(jì)模式的益處使用設(shè)計(jì)模式的益處簡(jiǎn)化整個(gè)開(kāi)發(fā)過(guò)程 更容易理解程序代碼 代碼可重用可靠性 被使用多年,被證明其“可用并可靠” 大量技術(shù)資源與例程5天津
2、大學(xué)精儀學(xué)院使用設(shè)計(jì)模式注意事項(xiàng)使用設(shè)計(jì)模式注意事項(xiàng)1、不是一成不變的定律,既要知道有哪些設(shè)計(jì)模式,還要知道每種模式解決實(shí)際應(yīng)用中的哪些問(wèn)題,是如何解決的,效果如何?2、文本式編程語(yǔ)言中廣泛使用的設(shè)計(jì)模式在圖形化數(shù)據(jù)流編程中的應(yīng)用問(wèn)題。6天津大學(xué)精儀學(xué)院注意!注意!有些時(shí)候你沒(méi)有必要選用最復(fù)雜的設(shè)計(jì)模式不要忘記最常見(jiàn)的設(shè)計(jì)模式數(shù)據(jù)流!數(shù)據(jù)流!7天津大學(xué)精儀學(xué)院通用型通用型:狀態(tài)機(jī)模式、消息隊(duì)列模式、用戶界面事件模式專用型:專用型:主從線程模式、生產(chǎn)/消費(fèi)模式、后臺(tái)服務(wù)模式、應(yīng)用程序啟動(dòng)模式、代理模式LabVIEW設(shè)計(jì)模式設(shè)計(jì)模式8天津大學(xué)精儀學(xué)院基本工具基本工具 循環(huán)結(jié)構(gòu) 移位寄存器 分支結(jié)構(gòu)
3、 枚舉型常量 事件結(jié)構(gòu)9天津大學(xué)精儀學(xué)院狀態(tài)機(jī)模式狀態(tài)機(jī)模式“我需要執(zhí)行一系列的事件步驟,但是步驟順序我需要執(zhí)行一系列的事件步驟,但是步驟順序可通過(guò)編程決定的??赏ㄟ^(guò)編程決定的?!?0天津大學(xué)精儀學(xué)院自動(dòng)販賣機(jī)模型自動(dòng)販賣機(jī)模型InitializeWaitChangeQuarterDimeNickelExitVendNo inputQuarter DepositedTotal = 50Change RequestedDime DepositedNickel DepositedTotal 50Total = 50Total = 50Total 50Total = 5011天津大學(xué)精儀學(xué)院基本三要
4、素:基本三要素:狀態(tài)、事件、動(dòng)作狀態(tài)、事件、動(dòng)作12天津大學(xué)精儀學(xué)院背景背景動(dòng)態(tài)結(jié)構(gòu):允許不同的狀態(tài),按通過(guò)編程決定的順序進(jìn)動(dòng)態(tài)結(jié)構(gòu):允許不同的狀態(tài),按通過(guò)編程決定的順序進(jìn)行執(zhí)行行執(zhí)行靜態(tài)順序結(jié)構(gòu)靜態(tài)順序結(jié)構(gòu)13天津大學(xué)精儀學(xué)院狀態(tài)機(jī)結(jié)構(gòu)狀態(tài)機(jī)結(jié)構(gòu)對(duì)于一個(gè)最簡(jiǎn)單的狀態(tài)機(jī)結(jié)構(gòu)而言,它是可以用順序結(jié)構(gòu)代替的;而對(duì)于相對(duì)復(fù)雜的狀態(tài)機(jī)結(jié)構(gòu)而言,卻可以作為測(cè)試流程的組織者和管理者。14天津大學(xué)精儀學(xué)院在在LabVIEW下實(shí)現(xiàn)狀態(tài)機(jī)結(jié)構(gòu)下實(shí)現(xiàn)狀態(tài)機(jī)結(jié)構(gòu) While循環(huán)+Case結(jié)構(gòu) 每一Case即為一個(gè)狀態(tài) 當(dāng)前狀態(tài)中需有決定下一狀態(tài)的判定代碼 使用枚舉常量枚舉常量通過(guò)移位寄存器傳遞至下一狀態(tài)15天津大學(xué)
5、精儀學(xué)院工作流程工作流程初始狀態(tài)初始狀態(tài)FIRST STATE下一狀態(tài)下一狀態(tài)移位寄存器用于傳遞狀態(tài)Case結(jié)構(gòu)對(duì)每一狀態(tài)都配備一個(gè)分支切換代碼根據(jù)執(zhí)行步驟中的結(jié)果來(lái)決定下一狀態(tài)枚舉常量枚舉常量16天津大學(xué)精儀學(xué)院 一個(gè)自定義的枚舉類型對(duì)應(yīng)一個(gè)狀一個(gè)自定義的枚舉類型對(duì)應(yīng)一個(gè)狀態(tài)機(jī)中的狀態(tài)集合態(tài)機(jī)中的狀態(tài)集合枚舉常量枚舉常量 枚舉類型是一種允許程序員自定義枚舉類型是一種允許程序員自定義元素的數(shù)據(jù)類型,它可以顯示數(shù)值對(duì)應(yīng)元素的數(shù)據(jù)類型,它可以顯示數(shù)值對(duì)應(yīng)的具體含義,幫助程序員理解程序中使的具體含義,幫助程序員理解程序中使用的變量值。用的變量值。17天津大學(xué)精儀學(xué)院枚舉常量舉例枚舉常量舉例 控件選板
6、控件選板“Modern”1、枚舉控件、指示、常量、枚舉控件、指示、常量2、默認(rèn)、默認(rèn)U163、修改、修改 Edit Items4、隱式與顯式類型轉(zhuǎn)換、隱式與顯式類型轉(zhuǎn)換18天津大學(xué)精儀學(xué)院DEMO1順序型狀態(tài)機(jī)模式順序型狀態(tài)機(jī)模式數(shù)據(jù)傳數(shù)據(jù)傳遞方式遞方式19天津大學(xué)精儀學(xué)院DEMO2改進(jìn)的順序型狀態(tài)機(jī)模式改進(jìn)的順序型狀態(tài)機(jī)模式1、去掉、去掉i 2、添加一個(gè)移位寄存器、添加一個(gè)移位寄存器20天津大學(xué)精儀學(xué)院DEMO3測(cè)試流程型狀態(tài)機(jī)測(cè)試流程型狀態(tài)機(jī)1、解決順序型狀態(tài)機(jī)不便閱讀和修、解決順序型狀態(tài)機(jī)不便閱讀和修改的問(wèn)題,采用枚舉型常量。改的問(wèn)題,采用枚舉型常量。2、采用自定義型控件,方便修改。、采
7、用自定義型控件,方便修改。over21天津大學(xué)精儀學(xué)院消息隊(duì)列模式消息隊(duì)列模式“我需要執(zhí)行一系列的事件步驟,但是步驟順序可通過(guò)我需要執(zhí)行一系列的事件步驟,但是步驟順序可通過(guò)編程決定的。編程決定的。”步驟是由用戶界面事件決定的,如某個(gè)應(yīng)用程序共要處步驟是由用戶界面事件決定的,如某個(gè)應(yīng)用程序共要處理理4個(gè)狀態(tài),分別是個(gè)狀態(tài),分別是A,B,C和和D,前面板有,前面板有3個(gè)按鈕分別個(gè)按鈕分別控制控制3種運(yùn)行時(shí)的狀態(tài)序列種運(yùn)行時(shí)的狀態(tài)序列ABCD、DCAB和和BDCA。引入消息隊(duì)列模式,通過(guò)建立隊(duì)列緩沖區(qū)來(lái)解決這個(gè)問(wèn)引入消息隊(duì)列模式,通過(guò)建立隊(duì)列緩沖區(qū)來(lái)解決這個(gè)問(wèn)題,這種模式也稱為題,這種模式也稱為“隊(duì)
8、列型狀態(tài)機(jī)模式隊(duì)列型狀態(tài)機(jī)模式”。22天津大學(xué)精儀學(xué)院消息處理過(guò)程消息處理過(guò)程建立消息隊(duì)列加入消息探測(cè)消息EXIT?刪除消息接收消息執(zhí)行代碼銷毀消息隊(duì)列消息源YesNo23天津大學(xué)精儀學(xué)院隊(duì)列建立方式隊(duì)列建立方式隊(duì)列函數(shù)和數(shù)組隊(duì)列函數(shù)和數(shù)組24天津大學(xué)精儀學(xué)院隊(duì)列函數(shù)隊(duì)列函數(shù)最常用的最常用的4個(gè)函數(shù)個(gè)函數(shù)25天津大學(xué)精儀學(xué)院數(shù)組數(shù)組1、數(shù)組函數(shù)、數(shù)組函數(shù)2、配合移位寄存器、配合移位寄存器3、無(wú)需手動(dòng)銷毀隊(duì)列空間、無(wú)需手動(dòng)銷毀隊(duì)列空間26天津大學(xué)精儀學(xué)院數(shù)組方式數(shù)組方式DEMO27天津大學(xué)精儀學(xué)院隊(duì)列函數(shù)方式隊(duì)列函數(shù)方式DEMO28天津大學(xué)精儀學(xué)院隊(duì)列函數(shù)與數(shù)組的不同隊(duì)列函數(shù)與數(shù)組的不同1、消息
9、傳遞方式不同、消息傳遞方式不同 移位寄存器移位寄存器 & FIFO2、釋放消息隊(duì)列的方式不同、釋放消息隊(duì)列的方式不同29天津大學(xué)精儀學(xué)院用戶界面事件模式用戶界面事件模式“我需要輪詢用戶的操作,但是這樣會(huì)降低我程我需要輪詢用戶的操作,但是這樣會(huì)降低我程序的運(yùn)行速度,并且有時(shí)我還檢測(cè)不到序的運(yùn)行速度,并且有時(shí)我還檢測(cè)不到”30天津大學(xué)精儀學(xué)院LabVIEW中基于事件驅(qū)動(dòng)的編程中基于事件驅(qū)動(dòng)的編程LabVIEW事件示例事件示例 按下鼠標(biāo) 鍵盤按鍵 前面板的用戶交互31天津大學(xué)精儀學(xué)院LabVIEW 事件結(jié)構(gòu)事件結(jié)構(gòu) 什么是事件結(jié)構(gòu)? 帶有多個(gè)子框圖的結(jié)構(gòu)節(jié)點(diǎn),就像條件結(jié)構(gòu)條件結(jié)構(gòu) 事件結(jié)構(gòu)是
10、如何工作的? 當(dāng)面板上事件發(fā)生時(shí)才被喚醒 自動(dòng)執(zhí)行相應(yīng)事件框圖內(nèi)的事件代碼 當(dāng)處理完成相應(yīng)事件后便結(jié)束,并不一直循環(huán)等待32天津大學(xué)精儀學(xué)院為什么要使用事件為什么要使用事件結(jié)構(gòu)結(jié)構(gòu) ? 用更簡(jiǎn)單的事件處理替代原來(lái)的查詢循環(huán) 最小化 CPU 的使用 不會(huì)遺漏用戶界面交互事件 可檢測(cè)更多的交互事件 編程生成您自己的事件編程生成您自己的事件33天津大學(xué)精儀學(xué)院用戶界面事件的兩種類型用戶界面事件的兩種類型通知事件通知事件和和過(guò)濾事件過(guò)濾事件34天津大學(xué)精儀學(xué)院事件源:用戶界面事件事件源:用戶界面事件用戶自定義事件用戶自定義事件5個(gè)函數(shù)個(gè)函數(shù)35天津大學(xué)精儀學(xué)院用戶自定義事件用戶自定義事件DEMO36天
11、津大學(xué)精儀學(xué)院事件注冊(cè)事件注冊(cè)靜態(tài)事件注冊(cè):只有用戶界面事件靜態(tài)事件注冊(cè):只有用戶界面事件 選擇事件源(程序、選擇事件源(程序、VI或控件)、特定事件、編輯或控件)、特定事件、編輯 分支處理事件數(shù)據(jù)。分支處理事件數(shù)據(jù)。Vi運(yùn)行時(shí)自動(dòng)注冊(cè)。運(yùn)行時(shí)自動(dòng)注冊(cè)。動(dòng)態(tài)事件注冊(cè):何時(shí)產(chǎn)生何種事件動(dòng)態(tài)事件注冊(cè):何時(shí)產(chǎn)生何種事件37天津大學(xué)精儀學(xué)院靜態(tài)事件注冊(cè)靜態(tài)事件注冊(cè)demo38天津大學(xué)精儀學(xué)院動(dòng)態(tài)事件注冊(cè)動(dòng)態(tài)事件注冊(cè)4個(gè)步驟個(gè)步驟1、獲取要處理事件對(duì)象的、獲取要處理事件對(duì)象的VI服務(wù)器引用;服務(wù)器引用;2、將、將VI服務(wù)器引用連接至服務(wù)器引用連接至“注冊(cè)事件注冊(cè)事件”函數(shù);函數(shù);3、將事件結(jié)構(gòu)放在、將事
12、件結(jié)構(gòu)放在While循環(huán)中,等待處理循環(huán)中,等待處理對(duì)象事件直到終止條件出現(xiàn);對(duì)象事件直到終止條件出現(xiàn);4、通過(guò)取消注冊(cè)時(shí)間函數(shù)停止事件發(fā)生。、通過(guò)取消注冊(cè)時(shí)間函數(shù)停止事件發(fā)生。39天津大學(xué)精儀學(xué)院動(dòng)態(tài)事件注冊(cè)動(dòng)態(tài)事件注冊(cè)demo最值器最值器40天津大學(xué)精儀學(xué)院用戶界面事件用戶界面事件demo一個(gè)動(dòng)態(tài)一個(gè)動(dòng)態(tài)+5個(gè)靜態(tài)個(gè)靜態(tài)41天津大學(xué)精儀學(xué)院狀態(tài)機(jī)狀態(tài)機(jī)用戶界面事件混合用戶界面事件混合demo初始化時(shí)不初始化時(shí)不再需要用戶再需要用戶自定義事件自定義事件42天津大學(xué)精儀學(xué)院其他模式其他模式“我希望同一時(shí)刻能夠處理多個(gè)消息事件,而不我希望同一時(shí)刻能夠處理多個(gè)消息事件,而不是下一個(gè)消息代碼必須等待
13、上一次響應(yīng)完成后才是下一個(gè)消息代碼必須等待上一次響應(yīng)完成后才能執(zhí)行能執(zhí)行”“我不希望消息排隊(duì),等待很煩的,有時(shí)采集數(shù)據(jù)和我不希望消息排隊(duì),等待很煩的,有時(shí)采集數(shù)據(jù)和記錄數(shù)據(jù)應(yīng)該同時(shí)進(jìn)行的記錄數(shù)據(jù)應(yīng)該同時(shí)進(jìn)行的”。43天津大學(xué)精儀學(xué)院主從線程模式主從線程模式通常應(yīng)用于具有多個(gè)通常應(yīng)用于具有多個(gè)同時(shí)發(fā)生的并且擁有同時(shí)發(fā)生的并且擁有不同運(yùn)行速率的線程不同運(yùn)行速率的線程的程序中。比如采集的程序中。比如采集電壓同時(shí)寫入磁盤,電壓同時(shí)寫入磁盤,采集速率采集速率1KHz,記錄,記錄則每則每5秒一次。秒一次。1、數(shù)據(jù)通信采用全局變量、局域變量或共享變量;、數(shù)據(jù)通信采用全局變量、局域變量或共享變量;2、Stop
14、為為Switch模式模式3、有時(shí)會(huì)用到事件發(fā)生模塊、有時(shí)會(huì)用到事件發(fā)生模塊Occurrence44天津大學(xué)精儀學(xué)院生產(chǎn)者生產(chǎn)者/消費(fèi)者消費(fèi)者“我需要可以同時(shí)間執(zhí)行的兩個(gè)過(guò)程,并且需保我需要可以同時(shí)間執(zhí)行的兩個(gè)過(guò)程,并且需保證它們不會(huì)互相影響執(zhí)行速度。證它們不會(huì)互相影響執(zhí)行速度?!?5天津大學(xué)精儀學(xué)院生產(chǎn)者生產(chǎn)者/消費(fèi)者消費(fèi)者全局變量、局域變量或共享變量的每次復(fù)制都是原始數(shù)全局變量、局域變量或共享變量的每次復(fù)制都是原始數(shù)據(jù)的一個(gè)副本,占據(jù)了大量的空間。實(shí)際上只需要使用據(jù)的一個(gè)副本,占據(jù)了大量的空間。實(shí)際上只需要使用一部分緩沖區(qū)作為數(shù)據(jù)存儲(chǔ)的中間部分,這需要借助隊(duì)一部分緩沖區(qū)作為數(shù)據(jù)存儲(chǔ)的中間部分
15、,這需要借助隊(duì)列技術(shù)。列技術(shù)。存儲(chǔ)單元存儲(chǔ)單元數(shù)據(jù)流入數(shù)據(jù)流入數(shù)據(jù)流出數(shù)據(jù)流出46天津大學(xué)精儀學(xué)院生產(chǎn)者生產(chǎn)者/消費(fèi)者具體做法消費(fèi)者具體做法最簡(jiǎn)單模式最簡(jiǎn)單模式47天津大學(xué)精儀學(xué)院在在LabVIEW下實(shí)現(xiàn)生產(chǎn)者下實(shí)現(xiàn)生產(chǎn)者/消費(fèi)者消費(fèi)者 無(wú)數(shù)據(jù)相關(guān)的多個(gè)循環(huán) 主 / 從關(guān)系 在循環(huán)間實(shí)現(xiàn)通訊與同步48天津大學(xué)精儀學(xué)院工作流程工作流程 主循環(huán)負(fù)責(zé)通知各個(gè)從循環(huán)是否執(zhí)行 允許循環(huán)間異步執(zhí)行 數(shù)據(jù)的非相關(guān)性實(shí)現(xiàn)多線程 程序過(guò)程分解 從循環(huán)1從循環(huán)2主循環(huán)49天津大學(xué)精儀學(xué)院實(shí)現(xiàn)循環(huán)間的數(shù)據(jù)通訊實(shí)現(xiàn)循環(huán)間的數(shù)據(jù)通訊 變量 通知器 隊(duì)列 信號(hào)量 集合50天津大學(xué)精儀學(xué)院隊(duì)列隊(duì)列在隊(duì)列中添加元素在隊(duì)列中添
16、加元素從隊(duì)列中釋放元素從隊(duì)列中釋放元素Reference to existing queue in memory選擇隊(duì)列中元素的數(shù)據(jù)類型出列操作需要等待數(shù)據(jù)進(jìn)入或者超時(shí)情況51天津大學(xué)精儀學(xué)院生產(chǎn)者生產(chǎn)者 / 消費(fèi)者循環(huán)消費(fèi)者循環(huán)52天津大學(xué)精儀學(xué)院后臺(tái)服務(wù)模式后臺(tái)服務(wù)模式問(wèn):?jiǎn)枺骸拔倚枰绦蛟诤笈_(tái)運(yùn)行,不要前面板,不要交互我需要程序在后臺(tái)運(yùn)行,不要前面板,不要交互”答:答:“采用采用VI屬性和方法接口,足以使你控制后臺(tái)運(yùn)行的屬性和方法接口,足以使你控制后臺(tái)運(yùn)行的VI” 例子:一個(gè)網(wǎng)絡(luò)服務(wù)監(jiān)聽(tīng)程序,程序只需要接收與客戶端例子:一個(gè)網(wǎng)絡(luò)服務(wù)監(jiān)聽(tīng)程序,程序只需要接收與客戶端Sockets的連接,實(shí)
17、現(xiàn)三次握手,連接完成后將引用交給前端應(yīng)用程序處理,的連接,實(shí)現(xiàn)三次握手,連接完成后將引用交給前端應(yīng)用程序處理,同時(shí)繼續(xù)監(jiān)聽(tīng)。同時(shí)繼續(xù)監(jiān)聽(tīng)。53天津大學(xué)精儀學(xué)院后臺(tái)服務(wù)模式后臺(tái)服務(wù)模式54天津大學(xué)精儀學(xué)院后臺(tái)服務(wù)模式后臺(tái)服務(wù)模式55天津大學(xué)精儀學(xué)院應(yīng)用程序啟動(dòng)模式應(yīng)用程序啟動(dòng)模式 “我想設(shè)計(jì)一個(gè)啟動(dòng)畫面,同時(shí)顯示應(yīng)用程序加載的進(jìn)度,加載我想設(shè)計(jì)一個(gè)啟動(dòng)畫面,同時(shí)顯示應(yīng)用程序加載的進(jìn)度,加載完畢后退出啟動(dòng)畫面,運(yùn)行主程序完畢后退出啟動(dòng)畫面,運(yùn)行主程序”56天津大學(xué)精儀學(xué)院應(yīng)用程序啟動(dòng)模式應(yīng)用程序啟動(dòng)模式1、SubVI目錄目錄2、啟動(dòng)應(yīng)用程序、啟動(dòng)應(yīng)用程序.vi3、主程序、主程序“網(wǎng)絡(luò)實(shí)驗(yàn)系統(tǒng)網(wǎng)絡(luò)實(shí)
18、驗(yàn)系統(tǒng).vi”57天津大學(xué)精儀學(xué)院代理模式代理模式 “我希望頂層我希望頂層VI(主(主VI)需要某個(gè)子)需要某個(gè)子VI時(shí),才將其載入內(nèi)存時(shí),才將其載入內(nèi)存” “可以在應(yīng)用程序中引入遲載入技術(shù)可以在應(yīng)用程序中引入遲載入技術(shù)”58天津大學(xué)精儀學(xué)院代理模式代理模式59天津大學(xué)精儀學(xué)院總結(jié)總結(jié) 設(shè)計(jì)模式 簡(jiǎn)化LabVIEW開(kāi)發(fā)過(guò)程 被廣泛使用及證明其可用 常用的LabVIEW設(shè)計(jì)模式 數(shù)據(jù)流 事件驅(qū)動(dòng) 狀態(tài)機(jī)結(jié)構(gòu) 生產(chǎn)者/消費(fèi)者60天津大學(xué)精儀學(xué)院 而功能型全局變量(functional global variable)是為了避免競(jìng)爭(zhēng)機(jī)制而實(shí)現(xiàn)的一種非重入型子vi61天津大學(xué)精儀學(xué)院定時(shí)結(jié)構(gòu)定時(shí)結(jié)構(gòu)
19、精確的定時(shí) while 循環(huán) 精確的定時(shí)順序結(jié)構(gòu) 多個(gè)時(shí)鐘頻率的定時(shí) 反饋, 動(dòng)態(tài)定時(shí)特性 多優(yōu)先級(jí)設(shè)置 examplesgeneraltimedloop.llb62天津大學(xué)精儀學(xué)院定時(shí)順序結(jié)構(gòu)定時(shí)順序結(jié)構(gòu)類似添加內(nèi)置定時(shí)功能的順序結(jié)構(gòu)63天津大學(xué)精儀學(xué)院定時(shí)循環(huán)定時(shí)循環(huán)1、優(yōu)先級(jí):相對(duì)同一個(gè)程序框圖中的多個(gè)定時(shí)循環(huán)而言,優(yōu)先級(jí)數(shù)大的循環(huán)優(yōu)先執(zhí)行。每一個(gè)定時(shí)循環(huán)都有自己的線程,這里的優(yōu)先級(jí)即線程優(yōu)先級(jí)。2、循環(huán)名稱,對(duì)于可重入子VI中包含定時(shí)循環(huán),且該子VI的多個(gè)實(shí)例出現(xiàn)在同一個(gè)程序框圖中,可以將循環(huán)名稱作為子VI的輸入端子。3、Deadline:用于指定完成一個(gè)循環(huán)的時(shí)間限定,如未在指定的時(shí)
20、間內(nèi)完成,則左端數(shù)據(jù)節(jié)點(diǎn)Finished Late?i-1返回真。默認(rèn)值-1表示Deadline由Period決定。4、如何處理某次循環(huán)使用的時(shí)間大于設(shè)定的周期?是否丟棄丟失的了的循環(huán)?是否保持原始相位?64天津大學(xué)精儀學(xué)院定時(shí)循環(huán)定時(shí)循環(huán)65天津大學(xué)精儀學(xué)院定時(shí)循環(huán)定時(shí)循環(huán)66天津大學(xué)精儀學(xué)院演示:定時(shí)循環(huán)演示:定時(shí)循環(huán)67天津大學(xué)精儀學(xué)院演示:定時(shí)循環(huán)演示:定時(shí)循環(huán)68天津大學(xué)精儀學(xué)院可具體手動(dòng)設(shè)置定時(shí)循環(huán)運(yùn)行的核可具體手動(dòng)設(shè)置定時(shí)循環(huán)運(yùn)行的核設(shè)置定時(shí)循環(huán)運(yùn)設(shè)置定時(shí)循環(huán)運(yùn)行的指定核行的指定核NEW!69天津大學(xué)精儀學(xué)院可具體手動(dòng)設(shè)置定時(shí)循環(huán)運(yùn)行的核可具體手動(dòng)設(shè)置定時(shí)循環(huán)運(yùn)行的核NEW!70
21、天津大學(xué)精儀學(xué)院定時(shí)順序結(jié)構(gòu)定時(shí)順序結(jié)構(gòu)Timed Sequence含幀的定式循環(huán)含幀的定式循環(huán)Timed Loop with Frames71天津大學(xué)精儀學(xué)院為什么要優(yōu)化為什么要優(yōu)化LabVIEW程序內(nèi)存管理程序內(nèi)存管理 LabVIEW的自動(dòng)管理內(nèi)存特性 方便用戶開(kāi)發(fā),滿足一般應(yīng)用需求 LabVIEW應(yīng)用程序趨向大型化,復(fù)雜化 項(xiàng)目規(guī)模大,需求復(fù)雜 數(shù)據(jù)處理量大,性能要求高 好的編程風(fēng)格幫助LabVIEW優(yōu)化內(nèi)存管理 可以顯著提高程序運(yùn)行效率 需要了解LabVIEW的內(nèi)存分配機(jī)制72天津大學(xué)精儀學(xué)院監(jiān)測(cè)監(jiān)測(cè)VI內(nèi)存占用和運(yùn)行時(shí)間的工具內(nèi)存占用和運(yùn)行時(shí)間的工具 幫助定位和分析程序中的瓶頸部分工
22、具工具性能分析性能分析性能和內(nèi)存性能和內(nèi)存73天津大學(xué)精儀學(xué)院顯示顯示VI內(nèi)存分配情況的工具內(nèi)存分配情況的工具 幫助分析程序中各個(gè)數(shù)據(jù)變量的內(nèi)存拷貝情況 目標(biāo):消除黑點(diǎn)工具工具性能分析性能分析顯示緩存區(qū)分配顯示緩存區(qū)分配74天津大學(xué)精儀學(xué)院了解程序內(nèi)存的使用了解程序內(nèi)存的使用75天津大學(xué)精儀學(xué)院演示:監(jiān)測(cè)內(nèi)存使用演示:監(jiān)測(cè)內(nèi)存使用76天津大學(xué)精儀學(xué)院優(yōu)化優(yōu)化 LabVIEW程序內(nèi)存管理程序內(nèi)存管理 適時(shí)選擇動(dòng)態(tài)調(diào)用子VI 避免強(qiáng)制類型轉(zhuǎn)換 把復(fù)雜VI分解成多個(gè)子VI 采用多面板程序 沒(méi)必要時(shí)不要設(shè)置VI的重入特性 合理分配數(shù)組內(nèi)存 靈活使用LabVIEW自帶的VI 使用元素同址操作結(jié)構(gòu)In P
23、lace Element Structure77天津大學(xué)精儀學(xué)院在程序中動(dòng)態(tài)調(diào)用子在程序中動(dòng)態(tài)調(diào)用子VI321 減少程序占用內(nèi)存以及載入時(shí)間打開(kāi)VI引用通過(guò)引用節(jié)點(diǎn)調(diào)用關(guān)閉引用78天津大學(xué)精儀學(xué)院2配置配置 VI加載加載179天津大學(xué)精儀學(xué)院數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換 強(qiáng)制點(diǎn)表明連接了兩種不同的數(shù)據(jù)類型 LabVIEW中類型強(qiáng)制轉(zhuǎn)換需要數(shù)據(jù)備份 涉及大數(shù)組的類型強(qiáng)制轉(zhuǎn)換會(huì)占用大量?jī)?nèi)存80天津大學(xué)精儀學(xué)院推薦的類型轉(zhuǎn)換方式推薦的類型轉(zhuǎn)換方式 更好的解決方式是在隨機(jī)數(shù)創(chuàng)建時(shí)進(jìn)行轉(zhuǎn)換 避免轉(zhuǎn)換大塊數(shù)據(jù)緩存(14.3 KB)(22.7 KB)81天津大學(xué)精儀學(xué)院把復(fù)雜把復(fù)雜VI分解成多個(gè)子分解成多個(gè)子V
24、I 子vi會(huì)增加額外的前面板和框圖的空間,但并不增添額外的代碼和數(shù)據(jù)空間。由于程序運(yùn)行時(shí)只有代碼和數(shù)據(jù)被調(diào)入內(nèi)存,子vi不會(huì)占用額外的內(nèi)存。 好處是子vi運(yùn)行結(jié)束后,LabVIEW可以及時(shí)收回子VI的數(shù)據(jù)空間,從而改善內(nèi)存的使用效率。82天津大學(xué)精儀學(xué)院采用多面板程序采用多面板程序 通過(guò)多面板程序?qū)崿F(xiàn)只有在必要時(shí)才顯示某些窗口,因?yàn)榻缑骘@示是最費(fèi)內(nèi)存的,因此這樣可以極大降低內(nèi)存的消耗。沒(méi)必要時(shí)不要設(shè)置VI的重入特性 重入型vi每次運(yùn)行時(shí)都會(huì)對(duì)自己使用的數(shù)據(jù)生成一個(gè)副本,這增加了內(nèi)存開(kāi)銷83天津大學(xué)精儀學(xué)院合理分配數(shù)組內(nèi)存合理分配數(shù)組內(nèi)存 過(guò)多進(jìn)行內(nèi)存重新分配占用很大開(kāi)銷 慎用可能導(dǎo)致內(nèi)存重新分
25、配的相關(guān)函數(shù) 創(chuàng)建數(shù)組 連接字符串84天津大學(xué)精儀學(xué)院演示:編程方法影響程序性能演示:編程方法影響程序性能總在開(kāi)辟新內(nèi)存,必定時(shí)間長(zhǎng)總在開(kāi)辟新內(nèi)存,必定時(shí)間長(zhǎng)85天津大學(xué)精儀學(xué)院演示:編程方法影響程序性能演示:編程方法影響程序性能循環(huán)次數(shù)并非事先指定,因此每次循環(huán)也會(huì)開(kāi)循環(huán)次數(shù)并非事先指定,因此每次循環(huán)也會(huì)開(kāi)辟新的內(nèi)存,但節(jié)省了辟新的內(nèi)存,但節(jié)省了Build Array函數(shù)的時(shí)間。函數(shù)的時(shí)間。86天津大學(xué)精儀學(xué)院演示:編程方法影響程序性能演示:編程方法影響程序性能循環(huán)無(wú)需開(kāi)辟新的內(nèi)存,時(shí)間會(huì)明顯減少。循環(huán)無(wú)需開(kāi)辟新的內(nèi)存,時(shí)間會(huì)明顯減少。87天津大學(xué)精儀學(xué)院演示:編程方法影響程序性能演示:編程
26、方法影響程序性能88天津大學(xué)精儀學(xué)院靈活使用靈活使用LabVIEW自帶的自帶的VI 基本線性代數(shù)子程序VI (Basic Linear Algebra Subroutines) 合理歸并基本線性代數(shù)操作 減少不必要的內(nèi)存復(fù)制開(kāi)銷 使程序更加簡(jiǎn)潔數(shù)學(xué)數(shù)學(xué)線性代數(shù)線性代數(shù)BLASNEW!89天津大學(xué)精儀學(xué)院元素同址操作結(jié)構(gòu)元素同址操作結(jié)構(gòu) 更新數(shù)組或簇中的元素時(shí),避免元素?cái)?shù)據(jù)備份應(yīng)用控制應(yīng)用控制內(nèi)存控制內(nèi)存控制NEW!90天津大學(xué)精儀學(xué)院元素同址操作結(jié)構(gòu)的優(yōu)點(diǎn)元素同址操作結(jié)構(gòu)的優(yōu)點(diǎn) 方便實(shí)現(xiàn)多種情況的緩存重用,消除元素復(fù)制開(kāi)銷 數(shù)組索引和替換 簇的綁定和解除綁定 波形的綁定和解除綁定 變體的緩存重
27、用 任意元素的緩存重用91天津大學(xué)精儀學(xué)院舉例:數(shù)組索引和替換舉例:數(shù)組索引和替換 將數(shù)組第2個(gè)元素增大10倍方法一:方法一:方法二:方法二:元素?cái)?shù)據(jù)備份元素?cái)?shù)據(jù)備份92天津大學(xué)精儀學(xué)院舉例:簇的綁定和解除綁定舉例:簇的綁定和解除綁定 個(gè)人納稅信息的更新93天津大學(xué)精儀學(xué)院演示:嵌套的元素同址操作結(jié)構(gòu)演示:嵌套的元素同址操作結(jié)構(gòu)94天津大學(xué)精儀學(xué)院LabVIEW 與多線程與多線程程序、進(jìn)程與線程程序、進(jìn)程與線程程序是計(jì)算機(jī)指令的靜態(tài)集合、進(jìn)程就是正在運(yùn)行的程序,程序是計(jì)算機(jī)指令的靜態(tài)集合、進(jìn)程就是正在運(yùn)行的程序,是一些所有權(quán)的集合,包括內(nèi)存、是一些所有權(quán)的集合,包括內(nèi)存、CPU運(yùn)行時(shí)間等一系列
28、運(yùn)行時(shí)間等一系列資源,為線程的運(yùn)行提供一個(gè)環(huán)境。線程才是程序的最小資源,為線程的運(yùn)行提供一個(gè)環(huán)境。線程才是程序的最小執(zhí)行單位,是程序的一條執(zhí)行路徑,是操作系統(tǒng)分配執(zhí)行單位,是程序的一條執(zhí)行路徑,是操作系統(tǒng)分配CPU時(shí)間的基本實(shí)體。一個(gè)程序的進(jìn)程以一個(gè)主線程開(kāi)始,如時(shí)間的基本實(shí)體。一個(gè)程序的進(jìn)程以一個(gè)主線程開(kāi)始,如果進(jìn)程的執(zhí)行可以劃分為多個(gè)執(zhí)行路徑,則可以創(chuàng)建多個(gè)果進(jìn)程的執(zhí)行可以劃分為多個(gè)執(zhí)行路徑,則可以創(chuàng)建多個(gè)線程。線程。例:三線程程序,用戶界面線程、數(shù)據(jù)采集線程、儀器控例:三線程程序,用戶界面線程、數(shù)據(jù)采集線程、儀器控制線程。這些線程共享進(jìn)程內(nèi)的公共資源。制線程。這些線程共享進(jìn)程內(nèi)的公共資源
29、。95天津大學(xué)精儀學(xué)院LabVIEW 與多線程與多線程多處理器環(huán)境下的并行編程多處理器環(huán)境下的并行編程1、線程調(diào)度、線程調(diào)度2、線程優(yōu)先級(jí)、線程優(yōu)先級(jí)3、線程通信與同步、線程通信與同步進(jìn)程間:環(huán)境變量、命名管道、共享內(nèi)存等進(jìn)程間:環(huán)境變量、命名管道、共享內(nèi)存等線程間:全局變量、全局?jǐn)?shù)據(jù)、文件句柄或通信參數(shù)等進(jìn)程內(nèi)線程間:全局變量、全局?jǐn)?shù)據(jù)、文件句柄或通信參數(shù)等進(jìn)程內(nèi)數(shù)據(jù)結(jié)構(gòu)來(lái)完成。數(shù)據(jù)結(jié)構(gòu)來(lái)完成。同步:數(shù)據(jù)同步、設(shè)備同步、任務(wù)同步。同步:數(shù)據(jù)同步、設(shè)備同步、任務(wù)同步。96天津大學(xué)精儀學(xué)院LabVIEW對(duì)多線程程序設(shè)計(jì)的支持不支持線程的直接創(chuàng)建,從不支持線程的直接創(chuàng)建,從執(zhí)行系統(tǒng)執(zhí)行系統(tǒng)和和數(shù)據(jù)
30、流控制數(shù)據(jù)流控制兩個(gè)層兩個(gè)層次提供對(duì)多線程程序設(shè)計(jì)的支持次提供對(duì)多線程程序設(shè)計(jì)的支持發(fā)布時(shí)需要運(yùn)行引擎。發(fā)布時(shí)需要運(yùn)行引擎。97天津大學(xué)精儀學(xué)院執(zhí)行子系統(tǒng)線程數(shù)量配置執(zhí)行子系統(tǒng)線程數(shù)量配置 vi.lib utilities sysinfo.llb 中的中的threadconfig.vi一共有一共有25個(gè)具有優(yōu)先級(jí)的執(zhí)行子系統(tǒng)。個(gè)具有優(yōu)先級(jí)的執(zhí)行子系統(tǒng)。98天津大學(xué)精儀學(xué)院執(zhí)行子執(zhí)行子系統(tǒng)線系統(tǒng)線程數(shù)量程數(shù)量配置配置99天津大學(xué)精儀學(xué)院線程是一把雙刃劍!線程是一把雙刃劍!100天津大學(xué)精儀學(xué)院線程優(yōu)先級(jí)的設(shè)置線程優(yōu)先級(jí)的設(shè)置1、有時(shí)你只要一個(gè)不同時(shí)間的等待。、有時(shí)你只要一個(gè)不同時(shí)間的等待。2、避
31、免優(yōu)先級(jí)倒置或饑餓的發(fā)生。、避免優(yōu)先級(jí)倒置或饑餓的發(fā)生。101天津大學(xué)精儀學(xué)院LabVIEW多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)LabVIEW執(zhí)行系統(tǒng)會(huì)自動(dòng)管理線程,但這并不意味著不需執(zhí)行系統(tǒng)會(huì)自動(dòng)管理線程,但這并不意味著不需要用戶的參與。在要用戶的參與。在LabVIEW程序中,從數(shù)據(jù)流的起始點(diǎn)到程序中,從數(shù)據(jù)流的起始點(diǎn)到結(jié)束點(diǎn)的整個(gè)流程稱為結(jié)束點(diǎn)的整個(gè)流程稱為執(zhí)行路徑執(zhí)行路徑。并行的執(zhí)行路徑是劃分。并行的執(zhí)行路徑是劃分線程任務(wù)的依據(jù)。如要充分利用線程的優(yōu)勢(shì),應(yīng)盡量提高線程任務(wù)的依據(jù)。如要充分利用線程的優(yōu)勢(shì),應(yīng)盡量提高程序的并行度,程序的并行度,避免使用順序結(jié)構(gòu)避免使用順序結(jié)構(gòu)來(lái)實(shí)現(xiàn)程序架構(gòu)。來(lái)實(shí)現(xiàn)程
32、序架構(gòu)。102天津大學(xué)精儀學(xué)院超線程求質(zhì)數(shù)超線程求質(zhì)數(shù)demo103天津大學(xué)精儀學(xué)院可重入技術(shù)可重入技術(shù)demo104天津大學(xué)精儀學(xué)院線程通信與同步線程通信與同步 “多個(gè)循環(huán)要訪問(wèn)同一個(gè)設(shè)備,但該設(shè)備任何時(shí)候只能同時(shí)響多個(gè)循環(huán)要訪問(wèn)同一個(gè)設(shè)備,但該設(shè)備任何時(shí)候只能同時(shí)響應(yīng)一個(gè)命令應(yīng)一個(gè)命令”105天津大學(xué)精儀學(xué)院線程通信與同步線程通信與同步1、局部變量、局部變量 創(chuàng)建方法、寫競(jìng)爭(zhēng)、布爾端子注意機(jī)創(chuàng)建方法、寫競(jìng)爭(zhēng)、布爾端子注意機(jī)械動(dòng)作設(shè)置,破壞數(shù)據(jù)流編程模式械動(dòng)作設(shè)置,破壞數(shù)據(jù)流編程模式2、全局變量、全局變量 創(chuàng)建方法、減少創(chuàng)建方法、減少vi之間數(shù)據(jù)傳遞的連線之間數(shù)據(jù)傳遞的連線3、共享變量、共享
33、變量 必須有項(xiàng)目,單進(jìn)程或網(wǎng)絡(luò)發(fā)布必須有項(xiàng)目,單進(jìn)程或網(wǎng)絡(luò)發(fā)布4、功能全局變量、功能全局變量 106天津大學(xué)精儀學(xué)院共享變量共享變量1、要有項(xiàng)目、要有項(xiàng)目2、使用的文件要位于項(xiàng)目中、使用的文件要位于項(xiàng)目中3、必須部署才能使用、必須部署才能使用4、對(duì)于客戶端,需要指定綁定數(shù)據(jù)源、對(duì)于客戶端,需要指定綁定數(shù)據(jù)源5、可以拖到前面板,小箭頭變成綠色表示連接成功(紅、可以拖到前面板,小箭頭變成綠色表示連接成功(紅色失?。┥。?、右鍵面板控件,屬性、右鍵面板控件,屬性/數(shù)據(jù)綁定可以將控件于某個(gè)共享數(shù)據(jù)綁定可以將控件于某個(gè)共享變量綁定。變量綁定。7、共享變量引擎、共享變量引擎Shared Variabl
34、ed Engine(NI-PSP)SVE107天津大學(xué)精儀學(xué)院功能全局變量功能全局變量 Functional Global Variables 將一個(gè)只執(zhí)行一次的將一個(gè)只執(zhí)行一次的For循環(huán)或循環(huán)或While循環(huán)放循環(huán)放在一個(gè)子在一個(gè)子vi中,并使用中,并使用未初始化的未初始化的移位寄存移位寄存器保存可讀寫的數(shù)據(jù)。與全局變量相比,該器保存可讀寫的數(shù)據(jù)。與全局變量相比,該方法的優(yōu)勢(shì)在于可以控制對(duì)移位寄存器的訪方法的優(yōu)勢(shì)在于可以控制對(duì)移位寄存器的訪問(wèn)。問(wèn)。108天津大學(xué)精儀學(xué)院功能全局變量功能全局變量 demo109天津大學(xué)精儀學(xué)院1、Notification通知技術(shù)通知技術(shù)1一段程序框圖在收到來(lái)
35、自于一段程序框圖在收到來(lái)自于其它程序框圖或其它程序框圖或vi的通知的通知消息前消息前保持等待狀態(tài)保持等待狀態(tài)。而通知消息可以是任何類型。而通知消息可以是任何類型的數(shù)據(jù),因此可以實(shí)現(xiàn)不同框圖不同的數(shù)據(jù),因此可以實(shí)現(xiàn)不同框圖不同vi之間的數(shù)據(jù)之間的數(shù)據(jù)傳遞。傳遞。2不同于局部變量和全局變量,不需輪詢。不同于局部變量和全局變量,不需輪詢。3通知器任何時(shí)候只能存放一個(gè)消息,新消息發(fā)出時(shí),通知器任何時(shí)候只能存放一個(gè)消息,新消息發(fā)出時(shí),舊消息會(huì)被丟棄。消息接收者的數(shù)目沒(méi)有限制,新舊消息會(huì)被丟棄。消息接收者的數(shù)目沒(méi)有限制,新消息發(fā)出之前,該消息一直存在于通知器中,在任消息發(fā)出之前,該消息一直存在于通知器中,
36、在任何時(shí)候都可以被任何接收者接收,接收者接收到該何時(shí)候都可以被任何接收者接收,接收者接收到該消息后并不刪除通知器中的消息。消息后并不刪除通知器中的消息。110天津大學(xué)精儀學(xué)院Notification DEMO in LabVIEW注意觀察注意觀察User1-3的延時(shí)設(shè)置與是否忽略以前的消息的設(shè)的延時(shí)設(shè)置與是否忽略以前的消息的設(shè)置對(duì)波形的影響置對(duì)波形的影響111天津大學(xué)精儀學(xué)院Queue in LabVIEW Queue結(jié)構(gòu)是一種結(jié)構(gòu)是一種FIFO結(jié)構(gòu),采用結(jié)構(gòu),采用Obtain Queue函數(shù)創(chuàng)函數(shù)創(chuàng)建隊(duì)列時(shí)需要指定建隊(duì)列時(shí)需要指定size大小。大小。 數(shù)據(jù)進(jìn)去后如果沒(méi)有程序?qū)⑦@些數(shù)據(jù)讀出,將
37、一直保數(shù)據(jù)進(jìn)去后如果沒(méi)有程序?qū)⑦@些數(shù)據(jù)讀出,將一直保存在隊(duì)列中,直到有程序?qū)⑵渥x出并刪除。如果有兩個(gè)應(yīng)存在隊(duì)列中,直到有程序?qū)⑵渥x出并刪除。如果有兩個(gè)應(yīng)用程序都在等待同一個(gè)隊(duì)列中的同一條數(shù)據(jù),只有那個(gè)動(dòng)用程序都在等待同一個(gè)隊(duì)列中的同一條數(shù)據(jù),只有那個(gè)動(dòng)作快的程序會(huì)收到數(shù)據(jù)。作快的程序會(huì)收到數(shù)據(jù)。112天津大學(xué)精儀學(xué)院Queue DEMO in LabVIEW3個(gè)子函數(shù)的周期不同個(gè)子函數(shù)的周期不同113天津大學(xué)精儀學(xué)院Semaphore in LabVIEW信號(hào)量技術(shù)用于限制同時(shí)訪問(wèn)一個(gè)被保護(hù)的共享資源的任務(wù)數(shù)目,信號(hào)量就像一把key。比如兩個(gè)獨(dú)立運(yùn)行的vi需要控制同一個(gè)機(jī)器人,而該機(jī)器人任何時(shí)
38、候只能被一個(gè)vi控制,此時(shí)就可以使用信號(hào)量技術(shù)。當(dāng)某個(gè)vi正在控制機(jī)器人時(shí),通過(guò)鎖定該信號(hào)量,其他vi只能處于信號(hào)量等待狀態(tài),只有該vi釋放信號(hào)量后,增等待的vi才能獲得信號(hào)量,實(shí)現(xiàn)對(duì)機(jī)器人的控制。114天津大學(xué)精儀學(xué)院Semaphore demo in LabVIEW115天津大學(xué)精儀學(xué)院Rendezvous in LabVIEW集合點(diǎn)技術(shù)可以讓若干并行的任務(wù)同步執(zhí)行,只有所有的任務(wù)到達(dá)后,才開(kāi)始同步執(zhí)行。這就好比一個(gè)會(huì)議,只有等到參會(huì)人員到齊后才開(kāi)始。1、修改主函數(shù)的集合點(diǎn)數(shù)目為2、3、42、添加集合名稱,并在4的時(shí)候運(yùn)行一個(gè)同名集合用戶,解救!116天津大學(xué)精儀學(xué)院LabVIEW 狀態(tài)圖
39、模塊狀態(tài)圖模塊 LabVIEW Statechart“簡(jiǎn)單的狀態(tài)機(jī)結(jié)構(gòu)無(wú)法實(shí)現(xiàn)狀態(tài)簡(jiǎn)單的狀態(tài)機(jī)結(jié)構(gòu)無(wú)法實(shí)現(xiàn)狀態(tài)并發(fā)并發(fā)、包含包含與與保存保存功能功能”117天津大學(xué)精儀學(xué)院LabVIEW狀態(tài)圖模塊狀態(tài)圖模塊 狀態(tài)圖 用直觀的方法來(lái)表達(dá)基于事件的系統(tǒng)118天津大學(xué)精儀學(xué)院應(yīng)用領(lǐng)域應(yīng)用領(lǐng)域 數(shù)字協(xié)議 控制類應(yīng)用 時(shí)序邏輯 批處理 事件響應(yīng) 用戶界面的實(shí)現(xiàn) 系統(tǒng)建模119天津大學(xué)精儀學(xué)院設(shè)計(jì)狀態(tài)和轉(zhuǎn)移設(shè)計(jì)動(dòng)作和警戒代碼產(chǎn)生狀態(tài)圖子VI嵌入到 LabVIEW 程序框圖中LabVIEW 狀態(tài)圖開(kāi)發(fā)的步驟狀態(tài)圖開(kāi)發(fā)的步驟120天津大學(xué)精儀學(xué)院動(dòng)手演示:創(chuàng)建簡(jiǎn)單狀態(tài)圖動(dòng)手演示:創(chuàng)建簡(jiǎn)單狀態(tài)圖121天津大學(xué)精
40、儀學(xué)院DEMOLabVIEW 狀態(tài)圖122天津大學(xué)精儀學(xué)院添加自定義模板添加自定義模板123天津大學(xué)精儀學(xué)院更多資源更多資源http:/ National Instruments 公司簡(jiǎn)介 LabVIEW 高級(jí)編程技巧用戶定義的調(diào)試指示器巧用LabVIEW控件定時(shí)結(jié)構(gòu)基于事件觸發(fā)的編程優(yōu)化LabVIEW程序內(nèi)存管理1.調(diào)用動(dòng)態(tài)鏈接庫(kù)調(diào)用動(dòng)態(tài)鏈接庫(kù)125天津大學(xué)精儀學(xué)院共享庫(kù)函數(shù)共享庫(kù)函數(shù)What?Windows 中的 .dll, UNIX/Linux 中的 .so, 等等Why?降低磁盤空間和內(nèi)存占用How? 應(yīng)用程序只在需要的時(shí)候調(diào)用庫(kù)函數(shù) 程序開(kāi)始執(zhí)行以后,由運(yùn)行鏈接編輯器來(lái)處理所有調(diào)用
41、126天津大學(xué)精儀學(xué)院動(dòng)態(tài)鏈接庫(kù)動(dòng)態(tài)鏈接庫(kù) (DLL)Microsoft Windows 中的一種軟件模塊包含可執(zhí)行代碼和可被Windows應(yīng)用程序或其它 DLL 調(diào)用的數(shù)據(jù) 函數(shù)和數(shù)據(jù)只有在運(yùn)行狀態(tài)下,被Windows 應(yīng)用程序或其它DLL調(diào)用時(shí)才被加載和鏈接一個(gè) DLL 包括:- 一個(gè)特殊函數(shù) (DllMain) - 幾個(gè)編程者自定義來(lái)完成常用任務(wù)的函數(shù)127天津大學(xué)精儀學(xué)院DLL 特性特性 不能單獨(dú)運(yùn)行的可執(zhí)行文件 應(yīng)用程序要求時(shí),由操作系統(tǒng)加載 應(yīng)用程序把 DLL 代碼作為自己二進(jìn)制文件的一部分來(lái)使用 應(yīng)用程序不需要知道原始DLL是由什么語(yǔ)言編寫的,也不需要清楚這些功能是如何實(shí)現(xiàn)的。
42、DLL就像一個(gè)有輸出函數(shù)的黑盒子128天津大學(xué)精儀學(xué)院LabVIEW下調(diào)用下調(diào)用DLL的方法的方法 勿在浮沙筑高臺(tái)調(diào)用庫(kù)函數(shù)節(jié)點(diǎn) 劍走中鋒導(dǎo)入共享庫(kù)工具129天津大學(xué)精儀學(xué)院LabVIEW 中調(diào)用中調(diào)用 Shared Library/DLLConnectivity Libraries & Executables Call Library Function Node右擊 Call Library Function Node,選擇 Configure 來(lái)調(diào)用DLL中的特定函數(shù)130天津大學(xué)精儀學(xué)院Call Library Function 的配置的配置指定需調(diào)用的 DLL 函數(shù)和函數(shù)參數(shù)
43、選擇 dll 的調(diào)用規(guī)則; 對(duì)于 Win32 dll 來(lái)說(shuō),可以是缺省 (stdcall) 或 C.131天津大學(xué)精儀學(xué)院Call Library Function 和和 Win32 DLLs函數(shù)參數(shù)可以是以下類型:Void數(shù)字型 有符號(hào)/無(wú)符號(hào) 8-bit, 16-bit 和 32-bit 整數(shù) 4-byte, 單精度數(shù) 8-byte, 雙精度數(shù)數(shù)組 數(shù)組數(shù)據(jù)指針 數(shù)組句柄字符串 C Pascal G (LabVIEW)Adapt to Type132天津大學(xué)精儀學(xué)院DLL 實(shí)例實(shí)例: MessageBoxA 函數(shù)函數(shù)回傳類型回傳類型函數(shù)名函數(shù)名int MessageBoxA (hWnd, lpText, lpCaption, uType)參數(shù)參數(shù)參數(shù)參數(shù):HWNDhWnd 32-bit 無(wú)符號(hào)整數(shù). 確定 parent window. 此時(shí)為 NULL.LPCSTRlpText C-style stringLPCSTRlpCaption C-style stringUINTuType unsigned 32-bit integer value.回傳類型回傳類型:int 32-bit signed integer133天津大學(xué)精儀學(xué)院調(diào)試調(diào)試 Call Library Function如果 VI不執(zhí)行或者導(dǎo)致死機(jī),
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年香水項(xiàng)目評(píng)估報(bào)告
- 萬(wàn)噸鋁板帶箔新建項(xiàng)目可行性研究報(bào)告建議書申請(qǐng)格式范文
- 2025年中國(guó)電動(dòng)牙刷行業(yè)市場(chǎng)前瞻與投資戰(zhàn)略規(guī)劃分析報(bào)告
- 2025年中國(guó)電子病歷行業(yè)市場(chǎng)深度分析及發(fā)展前景預(yù)測(cè)報(bào)告
- 大米加工可行性研究報(bào)告范文
- 籃球行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略研究報(bào)告
- 四川省瀘州市瀘縣2024年中考二模語(yǔ)文試題含答案
- 廣東省廣州市番禺區(qū)2024年中考語(yǔ)文二模試卷含答案
- 環(huán)境檢測(cè)儀器項(xiàng)目可行性研究報(bào)告
- 鋁靶項(xiàng)目立項(xiàng)報(bào)告模板
- 全文解讀改革開(kāi)放簡(jiǎn)史專題解讀
- 熱電廠工程燃煤系統(tǒng)施工方案
- 福建省南平市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)及行政區(qū)劃代碼
- 一年級(jí)計(jì)算題連加連減
- 金融科技課件(完整版)
- 中國(guó)建筑史經(jīng)典題型
- 計(jì)算機(jī)信息系統(tǒng)分級(jí)保護(hù)方案
- 頂管施工技術(shù)全面詳解
- 公路工程質(zhì)量檢驗(yàn)評(píng)定標(biāo)準(zhǔn)(交安部分)
- 東北石油大學(xué)學(xué)業(yè)預(yù)警、留級(jí)與退學(xué)制度修訂情況說(shuō)明
- Consent-Letter-for-Children-Travelling-Abroad
評(píng)論
0/150
提交評(píng)論