




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、8.4左輔右8.4左輔右定時器是用來管理多個計時對象的,如8107 所示,先來分析一下定時8- 1078- 107 定時器的流程不難發(fā)現(xiàn),定時器在工作時,需要每隔一段時間檢查一次每個計時對續(xù)時間。如果將定時器設(shè)計成操不難發(fā)現(xiàn),定時器在工作時,需要每隔一段時間檢查一次每個計時對續(xù)時間。如果將定時器設(shè)計成操作者,那示,在操作者框架中,操作者都有一個操作如下問題。如8108 (Actor Core)方法。但操作方法中的消息處理循環(huán)并不適合那些有定時需求的處理8- 108 的程序框這時方法需要在操作方法中引入Helper Loop,來幫助操作理那些不適合消息處理循環(huán)的任務(wù)。Helper Loop 循環(huán)
2、程序框圖針對于定時器引入一種名為Message Pump Helper Loop,它以固定的頻向指定的操作者發(fā)送消息,即每隔一段時間檢查一次每個計時對象是否達(dá)到持間,如果達(dá)到持續(xù)時間就發(fā)送自定地址消息定時器設(shè)計為一個操作者如所示8- 109MessageTimer 的為了可以設(shè)置間8- 109MessageTimer 的為了可以設(shè)置間隔多久檢查一次計時對象是否達(dá)到持續(xù)時間器操作者增加一個時間間隔屬性,來設(shè)置循環(huán)每次重復(fù)執(zhí)行的間為定8- 110MessageTimer 的為了可以傳遞計時對象到Helper Loop 中,如8- 111 者增加一個隊列數(shù)據(jù)類為定時8- 111MessageTime
3、r 的在定時器的需求中,要求“隨時都可以增加新的8- 111MessageTimer 的在定時器的需求中,要求“隨時都可以增加新的計時”,如8- 112 為定時器操作者增加一個Timer()的方法,向Helper Loop 中增加新的計時對8- 112MessageTimer 的在定時器的需求中,要求“隨時都可以取消現(xiàn)有計時”,如8- 113 為定時RemoveTimer()的方法,告訴Helper Loop 要移除哪個定時RemoveTimer()的方法,告訴Helper Loop 要移除哪個時對8- 113MessageTimer 的為了增加HelpLoop,如8- 114 須8- 114
4、MessageTimer 的同時,如88- 114MessageTimer 的同時,如8- 115 還為定時器操作者增加了一個UpdateTimer()有方法,當(dāng)增加或移除計時對象時,由它來負(fù)責(zé)更新計時對象的狀態(tài)8- 115MessageTimer 的既然定時器是操作者,那么它也有自己的消息。如8- 116 操作者的AddTimer()RemoveTimer()方法創(chuàng)為定時8- 116MessageTimer 的結(jié)合計時類8- 116MessageTimer 的結(jié)合計時類,最終的類圖如8- 117 8- 117MessageTimer 的如8- 118 所示,通MessageTimer 電腦的
5、右鍵菜單新建 操作者,在項目管理器中新8- 118 新建MessageTimer 8- 118 新建MessageTimer 在項目管理器中,右鍵單擊MessageTimer 類,從右鍵菜單中選擇屬性,彈LabVIEW 類Timer 類的圖標(biāo)框。如8119 所示,點(diǎn)擊編輯圖標(biāo)按鈕修改8- 119Message8- 119MessageTimer 類在屬性窗口中,選擇連線外觀。如8120 所示,將連線的顏色設(shè)置為(153102)8- 120MessageTimer 類修改連線外觀后,點(diǎn)擊確定按鈕8- 120MessageTimer 類修改連線外觀后,點(diǎn)擊確定按鈕關(guān)閉LabVIEW類框。打開Tim
6、er 類的私有數(shù)據(jù)控件,將8- 121 設(shè)置為它的圖標(biāo),以表示其為具體類8- 121 具體類控件如8- 122 所示,臨時創(chuàng)建一個簇常量,它由一個名為Add Flag 的布爾個名為Timer 的計時類組用它來創(chuàng)建隊8- 122 如圖 8- 123 所示,在Message 8- 122 如圖 8- 123 所示,在Message Timer 類的私有數(shù)據(jù)控件中,添加一個名為dt 型控件(U32)和一個名為Timer Queue 的隊作為該隊列的數(shù)據(jù)類型控件,并將剛剛創(chuàng)8- 123 添加MessageTimer 如8- 124 所示,通過MessageTimer 類的右鍵菜單新建用于數(shù)據(jù)成的VI,
7、加載創(chuàng)器8- 124 創(chuàng)器框在創(chuàng)框中,選中全部屬性,并設(shè)權(quán)8- 124 創(chuàng)器框在創(chuàng)框中,選中全部屬性,并設(shè)權(quán)限為讀寫。點(diǎn)擊確定,如器8125 所示,在項目管理器中為MessageTimer 類創(chuàng)8- 125 新建MessageTimer 類器如8- 125 新建MessageTimer 類器如8- 126 所示,設(shè)置MessageTimer 類器權(quán)限。將Getdt()方法GetTimerQueue()方法和SetTimerQueue()方法設(shè)置為8- 126 設(shè)置MessageTimer 類器權(quán)打開Get8- 126 設(shè)置MessageTimer 類器權(quán)打開Getdt()方法,將8- 127
8、設(shè)置為它的8- 127Getdt()方法的打開Setdt()方法,將8- 128 設(shè)置為它的8- 128Set dt()方法的打開GetTimer Queue()方法,將8- 129 設(shè)置為它的8- 129GetTimer Queue()方法的打開SetTimer Queue()方法,將8- 130 設(shè)置為它的8130SetTimer Queue()方法的如8131所示,通過MessageTimer 類的右鍵菜單新建虛擬文件夾,在項管理器中MessageTimer 類下新建一個名為Methods 的虛擬文件夾8- 131 新建虛擬8- 131 新建虛擬文件如圖 8- 132 所示,通過Meth
9、ods 虛擬文件夾的右鍵菜單新建 基于靜態(tài)分配模VI,在項目管理器中為MessageTimer 類創(chuàng)建方法AddTimer()8- 132 新建Add Timer()如8- 133 所示,將Add Timer()被它對應(yīng)的消息調(diào)范圍設(shè)置如8- 133 所示,將Add Timer()被它對應(yīng)的消息調(diào)范圍設(shè)置為庫內(nèi),因8- 133 設(shè)置Add Timer()范打開Add Timer()方法,將8- 134 設(shè)置為它的圖標(biāo)8- 134Add Timer()方法的如8- 135 所示,打開Add Timer()8- 135 編輯Add Timer()8- 135 編輯Add Timer()如8- 13
10、6 所示,在Add Timer()方法的前面板中,放置一個名為Timer 的類8- 136 編輯Add Timer()8- 136 編輯Add Timer()如8- 137 所示,打開Add Timer()方法的程序框圖8- 137 編寫Add Timer()方法的程序框如88- 137 編寫Add Timer()方法的程序框如8- 示,在AddTimer()方法的程序框圖中,放置GetTimer Queue()法,來獲取隊。8- 138 編寫Add Timer()方法的程序框如8- 1398- 138 編寫Add Timer()方法的程序框如8- 139 所示,在Add Timer()方法的
11、程序框圖常量,并將AddFlag 之前創(chuàng)8- 139 編寫Add Timer()方法的程序框如8- 140 所示,在Add Timer()方法的程序框圖量和Timer 控件端子與其相連8- 140 編寫Add Timer()方法的程序框8- 140 編寫Add Timer()方法的程序框如8- 141 所示,在Add Timer()方法的程序框圖中,放置元素入隊列節(jié)的數(shù)據(jù)入隊8- 141 編寫Add Timer()方法的程序框8- 141 編寫Add Timer()方法的程序框如8- 142 所示,在Add Timer()方法的程序框圖中,放置錯誤條件結(jié)8- 142 編寫Add Timer()
12、方法的程序框如圖 8- 143 所示,通過Methods 虛擬文件夾的右鍵菜單新建 基于靜態(tài)分配模VI,在項目管理器中為MessageTimer 類創(chuàng)建方法RemoveTimer()8- 143 RemoveTimer()如8- 144 8- 143 RemoveTimer()如8- 144 Remove Timer()望它被它對應(yīng)的消息調(diào)范圍設(shè)置為庫內(nèi),因8- 144 設(shè)RemoveTimer()RemoveTimer()方法,將8- 145 設(shè)RemoveTimer()方法,將8- 145 設(shè)置為它的圖標(biāo)8- 145RemoveTimer()方法的如8- 146 RemoveTimer()
13、8- 146 RemoveTimer()如8- 147 RemoveTimer()方法的前面板中,放置一個名為Timer 的時類8- 147 Remove8- 147 RemoveTimer()如8- 148 RemoveTimer()方法的程序框圖8- 148 編RemoveTimer()方法的程序框8- 148 編RemoveTimer()方法的程序框如8- 149 RemoveTimer()方法的程序框圖中,放置GetTimer 方法,來獲取隊。8- 149 編RemoveTimer()方法的程序框如8- 149 編RemoveTimer()方法的程序框如8- 150 RemoveTim
14、er()方法的程序框圖的簇常量,并將AddFlag 之前創(chuàng)8- 150 編RemoveTimer()方法的程序框如8- 151 RemoveTimer()方法的程序框圖簇常量和Timer 控件端子與其相連8- 151 編Remove8- 151 編RemoveTimer()方法的程序框如8- 152 RemoveTimer()方法的程序框圖中,放置元素入隊列節(jié)將的數(shù)據(jù)入隊列8- 152 編Remove8- 152 編RemoveTimer()方法的程序框如8- 153 RemoveTimer()方法的程序框圖中,放置錯誤條件結(jié)8- 153 編RemoveTimer()方法的程序框如8154所示
15、,通過MessageTimer 類的右鍵菜單新建虛擬文件夾,在項管理器中MessageTimer 類下新建一個名為PrivateMethods 的虛擬文件夾8- 154 新建虛擬文件如8- 154 新建虛擬文件如8- 155 所示,將PrivateMethods 虛擬文件夾范圍設(shè)置為8- 155 設(shè)置PrivateMethods 虛擬文件夾范如8156 所示,通過PrivateMethods 虛擬文件夾的右鍵菜單新建VI,在項管理器中為Timer 類創(chuàng)建方法UpdateTimer()8- 156 新建UpdateTimer()打開8- 156 新建UpdateTimer()打開UpdateTi
16、mer()方法,將8- 157 設(shè)置為它的8- 157UpdateTimer()方法的如8- 158 所示,打開Update Timer()8- 158 編輯UpdateTimer()8- 158 編輯UpdateTimer()如8- 159 所示,在UpdateTimer()方法的前面板中,放置一個名為Timers in 計時對象數(shù)組輸入控件、一個名為Tick 的整型輸入控件、一個名為New Timer 簇輸入控件和一個名為Timersout 的計時對象數(shù)組輸8- 159 編輯UpdateTimer()如8- 160 所示,打開UpdateTimer()方法的程序框圖8- 160 編寫Upd
17、ate8- 160 編寫UpdateTimer()方法的程序框如8- 161 所示,在UpdateTimer()方法的程序框圖中,放置按名稱解綁節(jié)8- 161 編寫Update8- 161 編寫UpdateTimer()方法的程序框如8- 162 所示,在UpdateTimer()方法的程序框圖中,放置一個條件結(jié)8- 162 編寫UpdateTimer()方法的程序框如8- 163 所示,在UpdateTimer()方法的程序框圖的條件結(jié)構(gòu)中,放置一個循環(huán)8- 163 編寫8- 163 編寫UpdateTimer()方法的程序框如8- 164 所示,在UpdateTimer()方法的程序框圖的
18、For 循環(huán)中,放置的GetName()方法,來獲取計時對8- 164 編寫8- 164 編寫UpdateTimer()方法的程序框如8- 165 所示,在UpdateTimer()方法的程序框圖中,修改For 循環(huán)模式為8- 165 編寫8- 165 編寫UpdateTimer()方法的程序框如8- 166 所示,在UpdateTimer()方法的程序框圖的For 循環(huán)節(jié)8- 166 編寫8- 166 編寫UpdateTimer()方法的程序框如8- 167 所示,在UpdateTimer()方法的程序框圖的條件結(jié)構(gòu)中,放置的GetName()方法,來獲取新增計時對象的名稱。通過名稱匹配,在
19、現(xiàn)有象數(shù)組中,刪除名稱一致的計時對象。這樣,每次新增計時對象時么原有的計時對象都會被新的計時對象替換8- 167 編寫8- 167 編寫UpdateTimer()方法的程序框如8- 168 所示,在UpdateTimer()方法的程序框圖的條件結(jié)構(gòu)中,放置的UpdateTriggeringTime()8- 168 編寫8- 168 編寫UpdateTimer()方法的程序框如8- 169 所示,在UpdateTimer()方法的程序框圖的條件結(jié)構(gòu)中,放置的UpdateDuration()8- 169 編寫8- 169 編寫UpdateTimer()方法的程序框如8- 170 所示,在Updat
20、eTimer()方法的程序框圖的條件結(jié)構(gòu)中,放置創(chuàng)組節(jié)點(diǎn),將新的計時對象添加到現(xiàn)有計時對象數(shù)組8- 170 編寫UpdateTimer()8- 170 編寫UpdateTimer()方法的程序框如8- 171 所示,在UpdateTimer()方法的程序框圖真條件為件,并刪除UpdateTriggeringTime()方法、UpdateDuration()方法和創(chuàng)建數(shù)8- 171 編寫Update8- 171 編寫UpdateTimer()方法的程序框如8172所示,通過MessageTimer 類的右鍵菜單新建虛擬文件夾,在項管理器中MessageTimer 類下新建一個名為Overridd
21、enMethods 的虛擬文件夾8- 172 新建虛擬文件如8- 172 新建虛擬文件如8173 所示,通過OverriddenMethods 虛擬文件夾的右鍵菜單新建用于寫的 VI,加載新建重8- 173 新建重寫文件在新建重框中,選中Actor Core()方法。點(diǎn)擊確定。如圖8- 174 所示,在目管理器中為MessageTimer 類創(chuàng)建重寫的ActoreCore()8- 174 打開Actor Core()8- 174 打開Actor Core()方法,將8- 175 設(shè)置為它的8175Actor Core()方法的如8- 176 所示,打開Actor Core()方法的程序框圖8-
22、 176 編寫8- 176 編寫Actor Core()方法的程序框如8- 177 所示,在Actor Core()方法的程序框圖中,放置SetTimer Queue()8- 177 編寫8- 177 編寫Actor Core()方法的程序框如8- 178 所示,在Actor Core()方法的程序框圖中,放置Getdt()8- 178 編寫8- 178 編寫Actor Core()方法的程序框如8- 179 所示,在Actor Core()方法的程序框圖While 循環(huán)8- 179 編寫8- 179 編寫Actor Core()方法的程序框如8- 180 所示,在Actor Core()方法
23、的程序框While 循環(huán)中,放置等待節(jié)并將獲取的dt 輸入給等待節(jié)8- 180 編寫8- 180 編寫Actor Core()方法的程序框如8- 181 所示,在Actor Core()方法的程序框圖8- 181 編寫Actor 8- 181 編寫Actor Core()方法的程序框如8- 182 所示,在Actor Core()方法的程序框圖中,放置獲取隊創(chuàng)建Timer Queue節(jié)8- 182 編寫8- 182 編寫Actor Core()方法的程序框如8- 183 所示,在Actor Core()方法的程序框圖While 循環(huán)中,放置元素出列節(jié)點(diǎn),并將超時設(shè)置1 8- 183 編寫8-
24、183 編寫Actor Core()方法的程序框如8- 184 所示,在Actor Core()方法的程序框圖中,放置將元素出隊列的While 循環(huán)的條件接線端相連,當(dāng)隊列報錯時While 循環(huán)8- 184 編寫8- 184 編寫Actor Core()方法的程序框如8- 185 所示,在Actor Core()方法的程序框圖中,放置一個計時類8- 185 編寫8- 185 編寫Actor Core()方法的程序框如8- 186 所示,在Actor Core()方法的程序框圖中,放置初始化數(shù)組節(jié)始化一個計時對象的數(shù)組8- 186 編寫8- 186 編寫Actor Core()方法的程序框如8-
25、 187 所示,在Actor Core()方法的程序框圖中,將計時對象數(shù)組的隧道為8- 187 編寫8- 187 編寫Actor Core()方法的程序框如8- 188 所示,在Actor Core()方法的程序框圖While 循環(huán)結(jié)8- 188 編寫8- 188 編寫Actor Core()方法的程序框如8- 189 所示,在Actor Core()方法的程序框圖的條件結(jié)構(gòu)中,放置Time()8- 189 編寫8- 189 編寫Actor Core()方法的程序框如8- 190 所示,在Actor Core()方法的程序框圖While 循環(huán)中,放置時間計器節(jié)點(diǎn),并接入UpdateTimer()8- 190 編寫8- 190 編寫Actor Core()方法的程序框如8- 191 所示,在Actor Core()方法的程序框圖W
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年黔南道路運(yùn)輸從業(yè)資格證考試內(nèi)容是什么
- 土地開發(fā)居間合同
- 高效事務(wù)處理規(guī)范手冊
- 三農(nóng)旅游規(guī)劃指南
- 農(nóng)業(yè)設(shè)施大棚購銷合同
- 合同支付條款補(bǔ)充協(xié)議書
- 2025年山東貨運(yùn)從業(yè)資格證考試模擬試題及答案
- 個人信息安全保護(hù)與管理預(yù)案
- 2025年吳忠道路運(yùn)輸從業(yè)資格證考試模擬試題
- 商鋪出租遞增合同
- 小學(xué)生雙擁活動國防教育
- 消防風(fēng)道風(fēng)管施工方案
- 和利時DCS系統(tǒng)課件
- 2.2 生態(tài)脆弱區(qū)的綜合治理 課件 【知識精研】高二地理人教版(2019)選擇性必修2
- 餐廳服務(wù)人員話術(shù)培訓(xùn)
- 遠(yuǎn)程醫(yī)療創(chuàng)業(yè)計劃書
- 初中生心理健康教育講座課件
- 廣東省廣州市白云區(qū)2023-2024學(xué)年八年級上學(xué)期期末英語試題(答案)
- 2024-2025年第一學(xué)期小學(xué)德育工作總結(jié):點(diǎn)亮德育燈塔引領(lǐng)小學(xué)生全面成長的逐夢之旅
- 2024解析:第二章聲現(xiàn)象-基礎(chǔ)練(解析版)
- 整體法蘭強(qiáng)度校核計算表(設(shè)計:zxg)
評論
0/150
提交評論