版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
LabVIEW設(shè)計(jì)模式
LabVIEW定時(shí)結(jié)構(gòu)優(yōu)化LabVIEW程序內(nèi)存管理調(diào)用動(dòng)態(tài)鏈接庫(kù)LabVIEW與多線程現(xiàn)在是1頁(yè)\一共有137頁(yè)\編輯于星期日什么是設(shè)計(jì)模式?一種LabVIEW程序模板與架構(gòu)
軟件實(shí)踐中通用的程序架構(gòu),其本質(zhì)是對(duì)很多十分類似的問(wèn)題進(jìn)行總結(jié)歸納的基礎(chǔ)上提煉出的一些具有代表性的軟件開發(fā)規(guī)范具有靈活的配置功能被廣泛使用現(xiàn)在是2頁(yè)\一共有137頁(yè)\編輯于星期日使用設(shè)計(jì)模式的益處簡(jiǎn)化整個(gè)開發(fā)過(guò)程更容易理解程序代碼代碼可重用可靠性被使用多年,被證明其“可用并可靠”大量技術(shù)資源與例程現(xiàn)在是3頁(yè)\一共有137頁(yè)\編輯于星期日使用設(shè)計(jì)模式注意事項(xiàng)1、不是一成不變的定律,既要知道有哪些設(shè)計(jì)模式,還要知道每種模式解決實(shí)際應(yīng)用中的哪些問(wèn)題,是如何解決的,效果如何?2、文本式編程語(yǔ)言中廣泛使用的設(shè)計(jì)模式在圖形化數(shù)據(jù)流編程中的應(yīng)用問(wèn)題?,F(xiàn)在是4頁(yè)\一共有137頁(yè)\編輯于星期日注意!有些時(shí)候你沒(méi)有必要選用最復(fù)雜的設(shè)計(jì)模式不要忘記最常見的設(shè)計(jì)模式——數(shù)據(jù)流!現(xiàn)在是5頁(yè)\一共有137頁(yè)\編輯于星期日通用型:狀態(tài)機(jī)模式、
消息隊(duì)列模式、
用戶界面事件模式專用型:主從線程模式、
生產(chǎn)/消費(fèi)模式、
后臺(tái)服務(wù)模式、 應(yīng)用程序啟動(dòng)模式、
代理模式LabVIEW設(shè)計(jì)模式現(xiàn)在是6頁(yè)\一共有137頁(yè)\編輯于星期日基本工具循環(huán)結(jié)構(gòu)移位寄存器分支結(jié)構(gòu)枚舉型常量事件結(jié)構(gòu)現(xiàn)在是7頁(yè)\一共有137頁(yè)\編輯于星期日狀態(tài)機(jī)模式“我需要執(zhí)行一系列的事件步驟,但是步驟順序可通過(guò)編程決定的?!爆F(xiàn)在是8頁(yè)\一共有137頁(yè)\編輯于星期日自動(dòng)販賣機(jī)模型InitializeWaitChangeQuarterDimeNickelExitVendNoinputQuarterDepositedTotal<50Total>=50ChangeRequestedDimeDepositedNickelDepositedTotal<50Total<50Total>=50Total>=50Total>50Total=50現(xiàn)在是9頁(yè)\一共有137頁(yè)\編輯于星期日基本三要素:狀態(tài)、事件、動(dòng)作現(xiàn)在是10頁(yè)\一共有137頁(yè)\編輯于星期日背景動(dòng)態(tài)結(jié)構(gòu):允許不同的狀態(tài),按通過(guò)編程決定的順序進(jìn)行執(zhí)行靜態(tài)順序結(jié)構(gòu)現(xiàn)在是11頁(yè)\一共有137頁(yè)\編輯于星期日狀態(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è)試流程的組織者和管理者。現(xiàn)在是12頁(yè)\一共有137頁(yè)\編輯于星期日在LabVIEW下實(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)現(xiàn)在是13頁(yè)\一共有137頁(yè)\編輯于星期日切換代碼工作流程初始狀態(tài)FIRSTSTATE下一狀態(tài)
執(zhí)行步驟移位寄存器用于傳遞狀態(tài)Case結(jié)構(gòu)對(duì)每一狀態(tài)都配備一個(gè)分支切換代碼根據(jù)執(zhí)行步驟中的結(jié)果來(lái)決定下一狀態(tài)枚舉常量現(xiàn)在是14頁(yè)\一共有137頁(yè)\編輯于星期日一個(gè)自定義的枚舉類型對(duì)應(yīng)一個(gè)狀態(tài)機(jī)中的狀態(tài)集合枚舉常量枚舉類型是一種允許程序員自定義元素的數(shù)據(jù)類型,它可以顯示數(shù)值對(duì)應(yīng)的具體含義,幫助程序員理解程序中使用的變量值?,F(xiàn)在是15頁(yè)\一共有137頁(yè)\編輯于星期日枚舉常量舉例控件選板“Modern”
1、枚舉控件、指示、常量
2、默認(rèn)U16
3、修改EditItems
4、隱式與顯式類型轉(zhuǎn)換現(xiàn)在是16頁(yè)\一共有137頁(yè)\編輯于星期日DEMO1順序型狀態(tài)機(jī)模式數(shù)據(jù)傳遞方式現(xiàn)在是17頁(yè)\一共有137頁(yè)\編輯于星期日DEMO2改進(jìn)的順序型狀態(tài)機(jī)模式1、去掉i2、添加一個(gè)移位寄存器現(xiàn)在是18頁(yè)\一共有137頁(yè)\編輯于星期日DEMO3測(cè)試流程型狀態(tài)機(jī)1、解決順序型狀態(tài)機(jī)不便閱讀和修改的問(wèn)題,采用枚舉型常量。
2、采用自定義型控件,方便修改。over現(xiàn)在是19頁(yè)\一共有137頁(yè)\編輯于星期日消息隊(duì)列模式“我需要執(zhí)行一系列的事件步驟,但是步驟順序可通過(guò)編程決定的?!辈襟E是由用戶界面事件決定的,如某個(gè)應(yīng)用程序共要處理4個(gè)狀態(tài),分別是A,B,C和D,前面板有3個(gè)按鈕分別控制3種運(yùn)行時(shí)的狀態(tài)序列ABCD、DCAB和BDCA。引入消息隊(duì)列模式,通過(guò)建立隊(duì)列緩沖區(qū)來(lái)解決這個(gè)問(wèn)題,這種模式也稱為“隊(duì)列型狀態(tài)機(jī)模式”。現(xiàn)在是20頁(yè)\一共有137頁(yè)\編輯于星期日消息處理過(guò)程建立消息隊(duì)列加入消息探測(cè)消息EXIT?刪除消息接收消息執(zhí)行代碼銷毀消息隊(duì)列消息源YesNo現(xiàn)在是21頁(yè)\一共有137頁(yè)\編輯于星期日隊(duì)列建立方式隊(duì)列函數(shù)和數(shù)組現(xiàn)在是22頁(yè)\一共有137頁(yè)\編輯于星期日隊(duì)列函數(shù)最常用的4個(gè)函數(shù)現(xiàn)在是23頁(yè)\一共有137頁(yè)\編輯于星期日數(shù)組1、數(shù)組函數(shù)
2、配合移位寄存器
3、無(wú)需手動(dòng)銷毀隊(duì)列空間現(xiàn)在是24頁(yè)\一共有137頁(yè)\編輯于星期日數(shù)組方式DEMO現(xiàn)在是25頁(yè)\一共有137頁(yè)\編輯于星期日隊(duì)列函數(shù)方式DEMO現(xiàn)在是26頁(yè)\一共有137頁(yè)\編輯于星期日隊(duì)列函數(shù)與數(shù)組的不同
1、消息傳遞方式不同
移位寄存器&FIFO
2、釋放消息隊(duì)列的方式不同現(xiàn)在是27頁(yè)\一共有137頁(yè)\編輯于星期日用戶界面事件模式“我需要輪詢用戶的操作,但是這樣會(huì)降低我程序的運(yùn)行速度,并且有時(shí)我還檢測(cè)不到……”現(xiàn)在是28頁(yè)\一共有137頁(yè)\編輯于星期日LabVIEW中基于事件驅(qū)動(dòng)的編程LabVIEW事件示例
按下鼠標(biāo)
鍵盤按鍵前面板的用戶交互現(xiàn)在是29頁(yè)\一共有137頁(yè)\編輯于星期日LabVIEW事件結(jié)構(gòu)什么是事件結(jié)構(gòu)?帶有多個(gè)子框圖的結(jié)構(gòu)節(jié)點(diǎn),就像條件結(jié)構(gòu)事件結(jié)構(gòu)是如何工作的?當(dāng)面板上事件發(fā)生時(shí)才被喚醒自動(dòng)執(zhí)行相應(yīng)事件框圖內(nèi)的事件代碼當(dāng)處理完成相應(yīng)事件后便結(jié)束,并不一直循環(huán)等待現(xiàn)在是30頁(yè)\一共有137頁(yè)\編輯于星期日為什么要使用事件結(jié)構(gòu)?用更簡(jiǎn)單的事件處理替代原來(lái)的查詢循環(huán)最小化CPU的使用不會(huì)遺漏用戶界面交互事件可檢測(cè)更多的交互事件編程生成您自己的事件現(xiàn)在是31頁(yè)\一共有137頁(yè)\編輯于星期日用戶界面事件的兩種類型通知事件和過(guò)濾事件現(xiàn)在是32頁(yè)\一共有137頁(yè)\編輯于星期日事件源:用戶界面事件
用戶自定義事件5個(gè)函數(shù)現(xiàn)在是33頁(yè)\一共有137頁(yè)\編輯于星期日用戶自定義事件DEMO現(xiàn)在是34頁(yè)\一共有137頁(yè)\編輯于星期日事件注冊(cè)靜態(tài)事件注冊(cè):只有用戶界面事件
選擇事件源(程序、VI或控件)、特定事件、編輯
分支處理事件數(shù)據(jù)。Vi運(yùn)行時(shí)自動(dòng)注冊(cè)。
動(dòng)態(tài)事件注冊(cè):何時(shí)產(chǎn)生何種事件現(xiàn)在是35頁(yè)\一共有137頁(yè)\編輯于星期日靜態(tài)事件注冊(cè)demo現(xiàn)在是36頁(yè)\一共有137頁(yè)\編輯于星期日動(dòng)態(tài)事件注冊(cè)4個(gè)步驟1、獲取要處理事件對(duì)象的VI服務(wù)器引用;
2、將VI服務(wù)器引用連接至“注冊(cè)事件”函數(shù);
3、將事件結(jié)構(gòu)放在While循環(huán)中,等待處理對(duì)象事件直到終止條件出現(xiàn);
4、通過(guò)取消注冊(cè)時(shí)間函數(shù)停止事件發(fā)生?,F(xiàn)在是37頁(yè)\一共有137頁(yè)\編輯于星期日動(dòng)態(tài)事件注冊(cè)demo最值器現(xiàn)在是38頁(yè)\一共有137頁(yè)\編輯于星期日用戶界面事件demo
一個(gè)動(dòng)態(tài)+5個(gè)靜態(tài)現(xiàn)在是39頁(yè)\一共有137頁(yè)\編輯于星期日狀態(tài)機(jī)——用戶界面事件混合demo初始化時(shí)不再需要用戶自定義事件現(xiàn)在是40頁(yè)\一共有137頁(yè)\編輯于星期日其他模式“我希望同一時(shí)刻能夠處理多個(gè)消息事件,而不是下一個(gè)消息代碼必須等待上一次響應(yīng)完成后才能執(zhí)行”“我不希望消息排隊(duì),等待很煩的,有時(shí)采集數(shù)據(jù)和記錄數(shù)據(jù)應(yīng)該同時(shí)進(jìn)行的”?,F(xiàn)在是41頁(yè)\一共有137頁(yè)\編輯于星期日主從線程模式通常應(yīng)用于具有多個(gè)同時(shí)發(fā)生的并且擁有不同運(yùn)行速率的線程的程序中。比如采集電壓同時(shí)寫入磁盤,采集速率1KHz,記錄則每5秒一次。1、數(shù)據(jù)通信采用全局變量、局域變量或共享變量;2、Stop為Switch模式3、有時(shí)會(huì)用到事件發(fā)生模塊Occurrence現(xiàn)在是42頁(yè)\一共有137頁(yè)\編輯于星期日生產(chǎn)者/消費(fèi)者“我需要可以同時(shí)間執(zhí)行的兩個(gè)過(guò)程,并且需保證它們不會(huì)互相影響執(zhí)行速度?!爆F(xiàn)在是43頁(yè)\一共有137頁(yè)\編輯于星期日生產(chǎn)者/消費(fèi)者全局變量、局域變量或共享變量的每次復(fù)制都是原始數(shù)據(jù)的一個(gè)副本,占據(jù)了大量的空間。實(shí)際上只需要使用一部分緩沖區(qū)作為數(shù)據(jù)存儲(chǔ)的中間部分,這需要借助隊(duì)列技術(shù)。存儲(chǔ)單元數(shù)據(jù)流入數(shù)據(jù)流出現(xiàn)在是44頁(yè)\一共有137頁(yè)\編輯于星期日生產(chǎn)者/消費(fèi)者具體做法最簡(jiǎn)單模式現(xiàn)在是45頁(yè)\一共有137頁(yè)\編輯于星期日在LabVIEW下實(shí)現(xiàn)生產(chǎn)者/消費(fèi)者無(wú)數(shù)據(jù)相關(guān)的多個(gè)循環(huán)主/從關(guān)系在循環(huán)間實(shí)現(xiàn)通訊與同步現(xiàn)在是46頁(yè)\一共有137頁(yè)\編輯于星期日工作流程主循環(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)現(xiàn)在是47頁(yè)\一共有137頁(yè)\編輯于星期日實(shí)現(xiàn)循環(huán)間的數(shù)據(jù)通訊變量通知器隊(duì)列信號(hào)量集合現(xiàn)在是48頁(yè)\一共有137頁(yè)\編輯于星期日隊(duì)列在隊(duì)列中添加元素從隊(duì)列中釋放元素Referencetoexistingqueueinmemory選擇隊(duì)列中元素的數(shù)據(jù)類型出列操作需要等待數(shù)據(jù)進(jìn)入或者超時(shí)情況現(xiàn)在是49頁(yè)\一共有137頁(yè)\編輯于星期日生產(chǎn)者/消費(fèi)者循環(huán)現(xiàn)在是50頁(yè)\一共有137頁(yè)\編輯于星期日后臺(tái)服務(wù)模式問(wèn):“我需要程序在后臺(tái)運(yùn)行,不要前面板,不要交互”答:“采用VI屬性和方法接口,足以使你控制后臺(tái)運(yùn)行的VI”
例子:一個(gè)網(wǎng)絡(luò)服務(wù)監(jiān)聽程序,程序只需要接收與客戶端Sockets的連接,實(shí)現(xiàn)三次握手,連接完成后將引用交給前端應(yīng)用程序處理,同時(shí)繼續(xù)監(jiān)聽?,F(xiàn)在是51頁(yè)\一共有137頁(yè)\編輯于星期日后臺(tái)服務(wù)模式現(xiàn)在是52頁(yè)\一共有137頁(yè)\編輯于星期日后臺(tái)服務(wù)模式現(xiàn)在是53頁(yè)\一共有137頁(yè)\編輯于星期日應(yīng)用程序啟動(dòng)模式“我想設(shè)計(jì)一個(gè)啟動(dòng)畫面,同時(shí)顯示應(yīng)用程序加載的進(jìn)度,加載完畢后退出啟動(dòng)畫面,運(yùn)行主程序”現(xiàn)在是54頁(yè)\一共有137頁(yè)\編輯于星期日應(yīng)用程序啟動(dòng)模式1、SubVI目錄
2、啟動(dòng)應(yīng)用程序.vi
3、主程序“網(wǎng)絡(luò)實(shí)驗(yàn)系統(tǒng).vi”現(xiàn)在是55頁(yè)\一共有137頁(yè)\編輯于星期日代理模式“我希望頂層VI(主VI)需要某個(gè)子VI時(shí),才將其載入內(nèi)存”“可以在應(yīng)用程序中引入遲載入技術(shù)”現(xiàn)在是56頁(yè)\一共有137頁(yè)\編輯于星期日代理模式現(xiàn)在是57頁(yè)\一共有137頁(yè)\編輯于星期日總結(jié)設(shè)計(jì)模式簡(jiǎn)化LabVIEW開發(fā)過(guò)程被廣泛使用及證明其可用常用的LabVIEW設(shè)計(jì)模式數(shù)據(jù)流事件驅(qū)動(dòng)狀態(tài)機(jī)結(jié)構(gòu)生產(chǎn)者/消費(fèi)者現(xiàn)在是58頁(yè)\一共有137頁(yè)\編輯于星期日而功能型全局變量(functionalglobalvariable)是為了避免競(jìng)爭(zhēng)機(jī)制而實(shí)現(xiàn)的一種非重入型子vi現(xiàn)在是59頁(yè)\一共有137頁(yè)\編輯于星期日定時(shí)結(jié)構(gòu)精確的定時(shí)while循環(huán)精確的定時(shí)順序結(jié)構(gòu)多個(gè)時(shí)鐘頻率的定時(shí)反饋,動(dòng)態(tài)定時(shí)特性多優(yōu)先級(jí)設(shè)置examples\general\timedloop.llb現(xiàn)在是60頁(yè)\一共有137頁(yè)\編輯于星期日定時(shí)順序結(jié)構(gòu)類似添加內(nèi)置定時(shí)功能的順序結(jié)構(gòu)現(xiàn)在是61頁(yè)\一共有137頁(yè)\編輯于星期日定時(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í)間內(nèi)完成,則左端數(shù)據(jù)節(jié)點(diǎn)FinishedLate?[i-1]返回真。默認(rèn)值-1表示Deadline由Period決定。4、如何處理某次循環(huán)使用的時(shí)間大于設(shè)定的周期?是否丟棄丟失的了的循環(huán)?是否保持原始相位?現(xiàn)在是62頁(yè)\一共有137頁(yè)\編輯于星期日定時(shí)循環(huán)現(xiàn)在是63頁(yè)\一共有137頁(yè)\編輯于星期日定時(shí)循環(huán)現(xiàn)在是64頁(yè)\一共有137頁(yè)\編輯于星期日演示:定時(shí)循環(huán)現(xiàn)在是65頁(yè)\一共有137頁(yè)\編輯于星期日演示:定時(shí)循環(huán)現(xiàn)在是66頁(yè)\一共有137頁(yè)\編輯于星期日可具體手動(dòng)設(shè)置定時(shí)循環(huán)運(yùn)行的核設(shè)置定時(shí)循環(huán)運(yùn)行的指定核NEW!現(xiàn)在是67頁(yè)\一共有137頁(yè)\編輯于星期日可具體手動(dòng)設(shè)置定時(shí)循環(huán)運(yùn)行的核NEW!現(xiàn)在是68頁(yè)\一共有137頁(yè)\編輯于星期日定時(shí)順序結(jié)構(gòu)TimedSequence含幀的定式循環(huán)TimedLoopwithFrames現(xiàn)在是69頁(yè)\一共有137頁(yè)\編輯于星期日為什么要優(yōu)化LabVIEW程序內(nèi)存管理LabVIEW的自動(dòng)管理內(nè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ī)制現(xiàn)在是70頁(yè)\一共有137頁(yè)\編輯于星期日監(jiān)測(cè)VI內(nèi)存占用和運(yùn)行時(shí)間的工具幫助定位和分析程序中的瓶頸部分工具性能分析性能和內(nèi)存現(xiàn)在是71頁(yè)\一共有137頁(yè)\編輯于星期日顯示VI內(nèi)存分配情況的工具幫助分析程序中各個(gè)數(shù)據(jù)變量的內(nèi)存拷貝情況目標(biāo):消除黑點(diǎn)工具性能分析顯示緩存區(qū)分配現(xiàn)在是72頁(yè)\一共有137頁(yè)\編輯于星期日了解程序內(nèi)存的使用現(xiàn)在是73頁(yè)\一共有137頁(yè)\編輯于星期日演示:監(jiān)測(cè)內(nèi)存使用現(xiàn)在是74頁(yè)\一共有137頁(yè)\編輯于星期日優(yōu)化LabVIEW程序內(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)InPlaceElementStructure現(xiàn)在是75頁(yè)\一共有137頁(yè)\編輯于星期日在程序中動(dòng)態(tài)調(diào)用子VI321——減少程序占用內(nèi)存以及載入時(shí)間打開VI引用通過(guò)引用節(jié)點(diǎn)調(diào)用關(guān)閉引用現(xiàn)在是76頁(yè)\一共有137頁(yè)\編輯于星期日2配置VI加載1現(xiàn)在是77頁(yè)\一共有137頁(yè)\編輯于星期日數(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)存現(xiàn)在是78頁(yè)\一共有137頁(yè)\編輯于星期日推薦的類型轉(zhuǎn)換方式更好的解決方式是在隨機(jī)數(shù)創(chuàng)建時(shí)進(jìn)行轉(zhuǎn)換避免轉(zhuǎn)換大塊數(shù)據(jù)緩存(14.3KB)(22.7KB)現(xiàn)在是79頁(yè)\一共有137頁(yè)\編輯于星期日把復(fù)雜VI分解成多個(gè)子VI子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)存的使用效率?,F(xiàn)在是80頁(yè)\一共有137頁(yè)\編輯于星期日采用多面板程序通過(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)存開銷現(xiàn)在是81頁(yè)\一共有137頁(yè)\編輯于星期日合理分配數(shù)組內(nèi)存過(guò)多進(jìn)行內(nèi)存重新分配占用很大開銷慎用可能導(dǎo)致內(nèi)存重新分配的相關(guān)函數(shù)創(chuàng)建數(shù)組連接字符串現(xiàn)在是82頁(yè)\一共有137頁(yè)\編輯于星期日演示:編程方法影響程序性能總在開辟新內(nèi)存,必定時(shí)間長(zhǎng)現(xiàn)在是83頁(yè)\一共有137頁(yè)\編輯于星期日演示:編程方法影響程序性能循環(huán)次數(shù)并非事先指定,因此每次循環(huán)也會(huì)開辟新的內(nèi)存,但節(jié)省了BuildArray函數(shù)的時(shí)間?,F(xiàn)在是84頁(yè)\一共有137頁(yè)\編輯于星期日演示:編程方法影響程序性能循環(huán)無(wú)需開辟新的內(nèi)存,時(shí)間會(huì)明顯減少?,F(xiàn)在是85頁(yè)\一共有137頁(yè)\編輯于星期日演示:編程方法影響程序性能現(xiàn)在是86頁(yè)\一共有137頁(yè)\編輯于星期日靈活使用LabVIEW自帶的VI基本線性代數(shù)子程序VI(BasicLinearAlgebraSubroutines)合理歸并基本線性代數(shù)操作減少不必要的內(nèi)存復(fù)制開銷使程序更加簡(jiǎn)潔數(shù)學(xué)線性代數(shù)BLASNEW!現(xiàn)在是87頁(yè)\一共有137頁(yè)\編輯于星期日元素同址操作結(jié)構(gòu)更新數(shù)組或簇中的元素時(shí),避免元素?cái)?shù)據(jù)備份應(yīng)用控制內(nèi)存控制NEW!現(xiàn)在是88頁(yè)\一共有137頁(yè)\編輯于星期日元素同址操作結(jié)構(gòu)的優(yōu)點(diǎn)方便實(shí)現(xiàn)多種情況的緩存重用,消除元素復(fù)制開銷數(shù)組索引和替換簇的綁定和解除綁定波形的綁定和解除綁定變體的緩存重用任意元素的緩存重用現(xiàn)在是89頁(yè)\一共有137頁(yè)\編輯于星期日舉例:數(shù)組索引和替換將數(shù)組第2個(gè)元素增大10倍方法一:方法二:元素?cái)?shù)據(jù)備份現(xiàn)在是90頁(yè)\一共有137頁(yè)\編輯于星期日舉例:簇的綁定和解除綁定個(gè)人納稅信息的更新現(xiàn)在是91頁(yè)\一共有137頁(yè)\編輯于星期日演示:嵌套的元素同址操作結(jié)構(gòu)現(xiàn)在是92頁(yè)\一共有137頁(yè)\編輯于星期日LabVIEW與多線程程序、進(jìn)程與線程程序是計(jì)算機(jī)指令的靜態(tài)集合、進(jìn)程就是正在運(yùn)行的程序,是一些所有權(quán)的集合,包括內(nèi)存、CPU運(yùn)行時(shí)間等一系列資源,為線程的運(yùn)行提供一個(gè)環(huán)境。線程才是程序的最小執(zhí)行單位,是程序的一條執(zhí)行路徑,是操作系統(tǒng)分配CPU時(shí)間的基本實(shí)體。一個(gè)程序的進(jìn)程以一個(gè)主線程開始,如果進(jìn)程的執(zhí)行可以劃分為多個(gè)執(zhí)行路徑,則可以創(chuàng)建多個(gè)線程。例:三線程程序,用戶界面線程、數(shù)據(jù)采集線程、儀器控制線程。這些線程共享進(jìn)程內(nèi)的公共資源。現(xiàn)在是93頁(yè)\一共有137頁(yè)\編輯于星期日LabVIEW與多線程多處理器環(huán)境下的并行編程1、線程調(diào)度2、線程優(yōu)先級(jí)3、線程通信與同步進(jìn)程間:環(huán)境變量、命名管道、共享內(nèi)存等線程間:全局變量、全局?jǐn)?shù)據(jù)、文件句柄或通信參數(shù)等進(jìn)程內(nèi)數(shù)據(jù)結(jié)構(gòu)來(lái)完成。同步:數(shù)據(jù)同步、設(shè)備同步、任務(wù)同步。現(xiàn)在是94頁(yè)\一共有137頁(yè)\編輯于星期日LabVIEW對(duì)多線程程序設(shè)計(jì)的支持不支持線程的直接創(chuàng)建,從執(zhí)行系統(tǒng)和數(shù)據(jù)流控制兩個(gè)層次提供對(duì)多線程程序設(shè)計(jì)的支持發(fā)布時(shí)需要運(yùn)行引擎。現(xiàn)在是95頁(yè)\一共有137頁(yè)\編輯于星期日?qǐng)?zhí)行子系統(tǒng)線程數(shù)量配置\vi.lib\utilities\sysinfo.llb中的threadconfig.vi
一共有25個(gè)具有優(yōu)先級(jí)的執(zhí)行子系統(tǒng)。
現(xiàn)在是96頁(yè)\一共有137頁(yè)\編輯于星期日?qǐng)?zhí)行子系統(tǒng)線程數(shù)量配置現(xiàn)在是97頁(yè)\一共有137頁(yè)\編輯于星期日線程是一把雙刃劍!現(xiàn)在是98頁(yè)\一共有137頁(yè)\編輯于星期日線程優(yōu)先級(jí)的設(shè)置
1、有時(shí)你只要一個(gè)不同時(shí)間的等待。
2、避免優(yōu)先級(jí)倒置或饑餓的發(fā)生?,F(xiàn)在是99頁(yè)\一共有137頁(yè)\編輯于星期日LabVIEW多線程程序設(shè)計(jì)LabVIEW執(zhí)行系統(tǒng)會(huì)自動(dòng)管理線程,但這并不意味著不需要用戶的參與。在LabVIEW程序中,從數(shù)據(jù)流的起始點(diǎn)到結(jié)束點(diǎn)的整個(gè)流程稱為執(zhí)行路徑。并行的執(zhí)行路徑是劃分線程任務(wù)的依據(jù)。如要充分利用線程的優(yōu)勢(shì),應(yīng)盡量提高程序的并行度,避免使用順序結(jié)構(gòu)來(lái)實(shí)現(xiàn)程序架構(gòu)。現(xiàn)在是100頁(yè)\一共有137頁(yè)\編輯于星期日超線程求質(zhì)數(shù)demo現(xiàn)在是101頁(yè)\一共有137頁(yè)\編輯于星期日可重入技術(shù)demo現(xiàn)在是102頁(yè)\一共有137頁(yè)\編輯于星期日線程通信與同步“多個(gè)循環(huán)要訪問(wèn)同一個(gè)設(shè)備,但該設(shè)備任何時(shí)候只能同時(shí)響應(yīng)一個(gè)命令”現(xiàn)在是103頁(yè)\一共有137頁(yè)\編輯于星期日線程通信與同步1、局部變量創(chuàng)建方法、寫競(jìng)爭(zhēng)、布爾端子注意機(jī)械動(dòng)作設(shè)置,破壞數(shù)據(jù)流編程模式2、全局變量創(chuàng)建方法、減少vi之間數(shù)據(jù)傳遞的連線3、共享變量必須有項(xiàng)目,單進(jìn)程或網(wǎng)絡(luò)發(fā)布4、功能全局變量
現(xiàn)在是104頁(yè)\一共有137頁(yè)\編輯于星期日共享變量1、要有項(xiàng)目
2、使用的文件要位于項(xiàng)目中
3、必須部署才能使用
4、對(duì)于客戶端,需要指定綁定數(shù)據(jù)源
5、可以拖到前面板,小箭頭變成綠色表示連接成功(紅色失?。?/p>
6、右鍵面板控件,屬性/數(shù)據(jù)綁定可以將控件于某個(gè)共享變量綁定。
7、共享變量引擎SharedVariabledEngine(NI-PSP)
SVE現(xiàn)在是105頁(yè)\一共有137頁(yè)\編輯于星期日功能全局變量
FunctionalGlobalVariables將一個(gè)只執(zhí)行一次的For循環(huán)或While循環(huán)放在一個(gè)子vi中,并使用未初始化的移位寄存器保存可讀寫的數(shù)據(jù)。與全局變量相比,該方法的優(yōu)勢(shì)在于可以控制對(duì)移位寄存器的訪問(wèn)?,F(xiàn)在是106頁(yè)\一共有137頁(yè)\編輯于星期日功能全局變量demo現(xiàn)在是107頁(yè)\一共有137頁(yè)\編輯于星期日1、Notification通知技術(shù)1〉一段程序框圖在收到來(lái)自于其它程序框圖或vi的通知消息前保持等待狀態(tài)。而通知消息可以是任何類型的數(shù)據(jù),因此可以實(shí)現(xiàn)不同框圖不同vi之間的數(shù)據(jù)傳遞。2〉不同于局部變量和全局變量,不需輪詢。3〉通知器任何時(shí)候只能存放一個(gè)消息,新消息發(fā)出時(shí),舊消息會(huì)被丟棄。消息接收者的數(shù)目沒(méi)有限制,新消息發(fā)出之前,該消息一直存在于通知器中,在任何時(shí)候都可以被任何接收者接收,接收者接收到該消息后并不刪除通知器中的消息。現(xiàn)在是108頁(yè)\一共有137頁(yè)\編輯于星期日NotificationDEMOinLabVIEW注意觀察User1-3的延時(shí)設(shè)置與是否忽略以前的消息的設(shè)置對(duì)波形的影響現(xiàn)在是109頁(yè)\一共有137頁(yè)\編輯于星期日QueueinLabVIEWQueue結(jié)構(gòu)是一種FIFO結(jié)構(gòu),采用ObtainQueue函數(shù)創(chuàng)建隊(duì)列時(shí)需要指定size大小。
數(shù)據(jù)進(jìn)去后如果沒(méi)有程序?qū)⑦@些數(shù)據(jù)讀出,將一直保存在隊(duì)列中,直到有程序?qū)⑵渥x出并刪除。如果有兩個(gè)應(yīng)用程序都在等待同一個(gè)隊(duì)列中的同一條數(shù)據(jù),只有那個(gè)動(dòng)作快的程序會(huì)收到數(shù)據(jù)?,F(xiàn)在是110頁(yè)\一共有137頁(yè)\編輯于星期日QueueDEMOinLabVIEW3個(gè)子函數(shù)的周期不同現(xiàn)在是111頁(yè)\一共有137頁(yè)\編輯于星期日SemaphoreinLabVIEW信號(hào)量技術(shù)用于限制同時(shí)訪問(wèn)一個(gè)被保護(hù)的共享資源的任務(wù)數(shù)目,信號(hào)量就像一把key。比如兩個(gè)獨(dú)立運(yùn)行的vi需要控制同一個(gè)機(jī)器人,而該機(jī)器人任何時(shí)候只能被一個(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ī)器人的控制。現(xiàn)在是112頁(yè)\一共有137頁(yè)\編輯于星期日SemaphoredemoinLabVIEW現(xiàn)在是113頁(yè)\一共有137頁(yè)\編輯于星期日RendezvousinLabVIEW集合點(diǎn)技術(shù)可以讓若干并行的任務(wù)同步執(zhí)行,只有所有的任務(wù)到達(dá)后,才開始同步執(zhí)行。這就好比一個(gè)會(huì)議,只有等到參會(huì)人員到齊后才開始。1、修改主函數(shù)的集合點(diǎn)數(shù)目為2、3、4
2、添加集合名稱,并在4的時(shí)候運(yùn)行一個(gè)同名集合用戶,解救!現(xiàn)在是114頁(yè)\一共有137頁(yè)\編輯于星期日LabVIEW狀態(tài)圖模塊LabVIEWStatechart“簡(jiǎn)單的狀態(tài)機(jī)結(jié)構(gòu)無(wú)法實(shí)現(xiàn)狀態(tài)并發(fā)、包含與保存功能……”現(xiàn)在是115頁(yè)\一共有137頁(yè)\編輯于星期日LabVIEW狀態(tài)圖模塊狀態(tài)圖——用直觀的方法來(lái)表達(dá)基于事件的系統(tǒng)現(xiàn)在是116頁(yè)\一共有137頁(yè)\編輯于星期日應(yīng)用領(lǐng)域數(shù)字協(xié)議控制類應(yīng)用時(shí)序邏輯批處理事件響應(yīng)用戶界面的實(shí)現(xiàn)系統(tǒng)建模現(xiàn)在是117頁(yè)\一共有137頁(yè)\編輯于星期日設(shè)計(jì)狀態(tài)和轉(zhuǎn)移設(shè)計(jì)動(dòng)作和警戒代碼產(chǎn)生狀態(tài)圖子VI嵌入到LabVIEW程序框圖中LabVIEW狀態(tài)圖開發(fā)的步驟現(xiàn)在是118頁(yè)\一共有137頁(yè)\編輯于星期日動(dòng)手演示:創(chuàng)建簡(jiǎn)單狀態(tài)圖現(xiàn)在是119頁(yè)\一共有137頁(yè)\編輯于星期日DEMOLabVIEW狀態(tài)圖現(xiàn)在是120頁(yè)\一共有137頁(yè)\編輯于星期日添加自定義模板現(xiàn)在是121頁(yè)\一共有137頁(yè)\編輯于星期日更多資源/china/labviewtips現(xiàn)在是122頁(yè)\一共有137頁(yè)\編輯于星期日議程N(yùn)ationalInstruments公司簡(jiǎn)介L(zhǎng)abVIEW高級(jí)編程技巧用戶定義的調(diào)試指示器巧用LabVIEW控件定時(shí)結(jié)構(gòu)基于事件觸發(fā)的編程優(yōu)化LabVIEW程序內(nèi)存管理調(diào)用動(dòng)態(tài)鏈接庫(kù)現(xiàn)在是123頁(yè)\一共有137頁(yè)\編輯于星期日共享庫(kù)函數(shù)What?
Windows中的.dll,UNIX/Linux中的.so,等等Why?
降低磁盤空間和內(nèi)存占用How?應(yīng)用程序只在需要的時(shí)候調(diào)用庫(kù)函數(shù)程序開始執(zhí)行以后,由運(yùn)行鏈接編輯器來(lái)處理所有調(diào)用
現(xiàn)在是124頁(yè)\一共有137頁(yè)\編輯于星期日動(dòng)態(tài)鏈接庫(kù)(DLL)MicrosoftWindows中的一種軟件模塊包含可執(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ù)現(xiàn)在是125頁(yè)\一共有137頁(yè)\編輯于星期日DLL特性不能單獨(dú)運(yùn)行的可執(zhí)行文件應(yīng)用程序要求時(shí),由操作系統(tǒng)加載應(yīng)用程序把DLL代碼作為自己二進(jìn)制文件的一部分來(lái)使用應(yīng)用程序不需要知道原始DLL是由什么語(yǔ)言編寫的,也不需要清楚這些功能是如何實(shí)現(xiàn)的。DLL就像一個(gè)有輸出函數(shù)的黑盒子現(xiàn)在是126頁(yè)\一共有137頁(yè)\編輯于星期日LabVIEW下調(diào)用DLL的方法勿在浮沙筑高臺(tái)——調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)劍走中鋒——導(dǎo)入共享庫(kù)工具現(xiàn)在是127頁(yè)\一共有137頁(yè)\編輯于星期日LabVIEW中調(diào)用SharedLibrary/DLL
Connectivity?Libraries&Executables
?CallLibraryFunctionNode右擊CallLibraryFunctionNode,選擇Configure來(lái)調(diào)用DLL中的特定函數(shù)現(xiàn)在是128頁(yè)\一共有137頁(yè)\編輯于星期日Cal
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東科學(xué)技術(shù)職業(yè)學(xué)院《過(guò)程控制專題》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東工業(yè)大學(xué)《大數(shù)據(jù)和人工智能導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東創(chuàng)新科技職業(yè)學(xué)院《CPA稅法》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)生口才表演課件圖片
- 培訓(xùn)學(xué)校課件
- 廣東碧桂園職業(yè)學(xué)院《音樂(lè)律動(dòng)(一)》2023-2024學(xué)年第一學(xué)期期末試卷
- 《如何品鑒葡萄酒》課件
- 贛南醫(yī)學(xué)院《國(guó)際商法與公司治理》2023-2024學(xué)年第一學(xué)期期末試卷
- 《外周血管介入護(hù)理》課件
- 贛東學(xué)院《實(shí)驗(yàn)室安全與法規(guī)》2023-2024學(xué)年第一學(xué)期期末試卷
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之4:4組織環(huán)境-4.2理解相關(guān)方的需求和期望(雷澤佳編制-2025B0)
- 2024年一級(jí)支行行長(zhǎng)競(jìng)聘演講稿例文(4篇)
- 健身房銷售人員培訓(xùn)
- 建筑工程施工合同:游泳館建設(shè)
- 2024-2025學(xué)年 數(shù)學(xué)二年級(jí)上冊(cè)冀教版期末測(cè)試卷(含答案)
- 2024年1月遼寧省普通高中學(xué)業(yè)水平合格性考試物理試題(含答案解析)
- 期末測(cè)試卷(試題)-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)滬教版
- 建工會(huì)職工之家的申請(qǐng).doc
- CSFB信令流程(常用)
- 激光技術(shù)課程設(shè)計(jì)-MATLAB編程-聚光腔設(shè)計(jì)
- 中國(guó)航海-論文排版格式
評(píng)論
0/150
提交評(píng)論