精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

LabVIEW中的動態事件

華穗科技 ? 來源:華穗科技 ? 2023-05-04 11:53 ? 次閱讀

眾所周知:LabVIEW中的事件結構可以響應用戶操作,并且它會根據發生的事件來決定執行不同事件分支。當發生某個事件時,事件結構會自動捕獲,并自動執行對應代碼。

使用事件結構克服了以前輪詢方式結構的缺點,可以讓我們的代碼更加高效,極大提升了界面處理的運行效率,同時也降低了CPU占用,提高了用戶使用體驗。但有時候事件結構中已有的事件種類并不能完全滿足我們的需求,這時候應該怎么辦呢?其實動態事件就是為此而生,開發人員可以通過自定義注冊和使用動態事件,滿足各種特殊情況下的事件響應需求。

接下來請大家跟隨小編一起學習LabVIEW事件結構以及動態事件的使用!

本文分享:

LabVIEW動態事件

一、 事件結構介紹

事件結構和條件結構比較類似,它們都是通過滿足某個條件來選擇執行其對應分支代碼的一種結構;區別在于條件結構是根據條件接線端的選擇來決定執行對應的分支,而事件結構則是根據發生的事件來決定執行對應的分支。

事件結構可以自動捕獲所發生的事件,并根據事件選擇執行不同的事件分支。事件結構正上方內側的事件標簽可以顯示當前分支所對應的事件,除此之外,事件結構還可以捕獲有關該事件的一些相關數據,比如事件發生的時間、事件源、類型等。

cfb8803e-e700-11ed-ab56-dac502259ad0.png

二、 事件分類

事件可以根據事件產生的源來區分,LabVIEW中的事件可以分為六大類,它們分別是:<應用程序>、<本VI>、<窗格>、<分隔欄>、<控件>以及<動態>。這六類事件可以在“編輯事件”對話框的“事件源”這一欄中看到,而每一個事件源中對應的具體事件可以在“事件”欄中看到,如下圖所示:

cfcaaf16-e700-11ed-ab56-dac502259ad0.png

<應用程序>

這類事件主要反映整個應用程序狀態的變化,例如程序是否關閉,書簽信息是否有改動,是否超時等。事件結構中默認的超時分支就是該類事件。

cfe73e6a-e700-11ed-ab56-dac502259ad0.png

<本VI>

這類事件主要反映當前VI狀態的改變,例如前面板大小以及狀態、鼠標、鍵盤對本VI的操作狀態、是否選擇了本VI菜單項中的某一個等。

d00a48e2-e700-11ed-ab56-dac502259ad0.png

<窗格>

這類事件包括與前面板中某一窗格有關的事件,比如鼠標進入/離開某一個窗格。一般情況下一個VI的前面板都是默認只有一個窗格,但是如果前面板上使用了“分隔欄”那就可以將一個VI的前面板分隔為多個窗格。每個窗格都可以理解為新的且互相獨立的前面板,可以用來放置不同類型的控件。

d02bc06c-e700-11ed-ab56-dac502259ad0.png

<分隔欄>

這類事件主要包括與分隔欄有關的事件,比如鼠標在分隔欄上點擊/釋放等。分隔欄可以用來劃分VI前面板的不同功能區域,讓我們的界面設計和布局更加美觀且條理分明。

d04d6b04-e700-11ed-ab56-dac502259ad0.png

<動態>

這類事件用于處理在程序中臨時注冊的事件或者用戶自定義的事件,在未注冊動態事件之前,該事件源為灰色不可選狀態,下面本文將詳細介紹動態事件。

d06964d0-e700-11ed-ab56-dac502259ad0.png

二、 動態事件

概述:

動態事件可以分為兩種,一種是由LabVIEW本身可以產生的動態事件,比如前面介紹的除了動態事件以外的其他五種分類的事件(也就是說這五種事件可以被注冊成為動態事件),還有一種是由用戶自己定義的動態事件。

動態事件相關的函數在程序框圖面板>>編程>>對話框與用戶界面>>事件中。接下來我們先了解一下事件子程序框圖中的這些節點。

d081f9c8-e700-11ed-ab56-dac502259ad0.png

所有動態事件在使用之前都需要先注冊事件,它的含義其實是將動態事件注冊到事件結構中,即聲明該動態事件將在這個事件結構中響應。兩種動態事件都可以使用“注冊事件”節點來注冊,注意在程序結束后需要使用“取消注冊事件”來關閉注冊事件引用句柄。

在使用用戶自定義的動態事件時需要先使用“創建用戶事件”創建該動態事件,然后再使用“注冊事件”將該動態事件注冊到一個事件結構中,在需要觸發事件的地方使用“產生用戶事件”來讓事件結構響應該事件,在程序不需要再次響應用戶事件時使用“銷毀用戶事件”來銷毀用戶事件引用句柄,釋放用戶事件引用。所有注冊為該用戶事件的事件結構不再接收該事件。

LabVIEW自產生動態事件:

事件分類中提到的除了“動態”事件之外的那五類靜態事件都可以被注冊為LabVIEW自產生的動態事件,區別就是靜態事件只能是本VI中對象產生的,而動態事件卻可以在一個VI中使用其他VI中的對象產生的事件。

設想一個場景:在一個大型項目中,往往會使用大量的子VI,一般情況下我們會有一個VI專門用來響應事件操作,而這個VI經常必須要處理其他VI的控件產生的事件,但是這個控件很明顯并不在這個VI中,所以在這個VI的事件結構編輯事件的對話框中是沒辦法找到這個控件的,LabVIEW中為了應對這種狀況專門設計了動態事件。

在注冊動態事件時,需要先為產生這個事件的對象(控件、窗格、分隔欄等)創建一個引用,然后將該引用連線至“注冊事件”的事件源輸入接線端,隨后將“注冊事件”生成的“注冊事件引用句柄”連線至事件結構的“動態事件接線端”完成事件的注冊,如下圖所示:

d09904f6-e700-11ed-ab56-dac502259ad0.png

d0b48852-e700-11ed-ab56-dac502259ad0.png

上圖中的程序框圖是子VI的程序框圖,一共注冊了兩個動態事件,一個是主VI窗格的鼠標移動事件,另一個是主VI中“停止”按鈕的值改變事件。 這兩個事件注冊完成后可以在這個事件結構的編輯事件對話框<動態>一欄找到并編輯使用。 上圖中前面板為主VI的前面板,功能是在“鼠標坐標”中實時跟隨并刷新鼠標在前面板中的位置坐標,按下停止按鈕后響應并停止程序運行(示例代碼會在后面給出)。

spacer.gif?t=B8DJ5M3用戶事件:

假設需要在程序中,在滿足其它某種條件時也產生一個事件,而這個條件不是LabVIEW自產生的(如用戶按了某個按鈕、改變某個控件值等),這時就可以考慮用戶自定義事件了。

用戶自定義事件靈活性較高,可以讓用戶自己設計什么時候發生并執行什么事件代碼,使用用戶事件時需要先定義一個用戶事件數據類型,就像建立消息隊列時需要定義隊列元素的數據類型一樣,用戶事件數據類型可以是LabVIEW支持的任意數據類型。

和LabVIEW自產生動態事件相同的是創建用戶事件之后同樣需要在一個事件結構中注冊該事件,不同的是事件什么時候發生、在哪個VI中發生我們都是可以自定義的,只需要拿到創建用戶事件后的輸出句柄使用“產生用戶事件”產生一次該事件。

下面這個示例是模擬一個溫度采集VI和顯示界面VI之間的交互,溫度采集VI采集到溫度信息后使用用戶事件的方式傳遞給顯示界面VI去做對應的處理,顯示當前報警信息并且當溫度太高時LED燈報警(示例代碼會在后面給出)。

d11a5934-e700-11ed-ab56-dac502259ad0.png

示例中注冊了兩個用戶事件,一個是“溫度報警”事件,一個是“停止程序”事件。 注冊用戶事件時有個小技巧就是可以將你要注冊的所有用戶事件輸出句柄捆綁到一個簇中,然后使用“注冊事件”節點直接注冊這個簇,這樣可以方便同時注冊多個事件。

spacer.gif?t=B8DJ5M3以上就是關于LabVIEW動態事件的知識分享啦。 本文的演示代碼及安裝包已存入百度網盤,有需要的小伙伴可以自行取用,演示代碼請使用LabVIEW 2020及以后版本打開。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10824

    瀏覽量

    211133
  • LabVIEW
    +關注

    關注

    1963

    文章

    3652

    瀏覽量

    322387
  • 面板
    +關注

    關注

    13

    文章

    1671

    瀏覽量

    53784
  • 代碼
    +關注

    關注

    30

    文章

    4744

    瀏覽量

    68344
  • 應用程序
    +關注

    關注

    37

    文章

    3240

    瀏覽量

    57600

原文標題:知識分享 | LabVIEW中的動態事件

文章出處:【微信號:華穗科技,微信公眾號:華穗科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    動態數據怎樣轉化成數組進行比較

    labview 動態數據 怎樣 轉化成數組進行 比較
    發表于 07-13 22:37

    LabVIEW調用動態dll

    急急急。。。求助,,,,,,,LabVIEW調用在vc++建立的動態dll動態dll的返回值在vc++上一定要return,返回才行嗎?
    發表于 10-23 14:50

    labview動態創建控件的問題

    如題,labview 有沒有動態創建的控件的辦法,比如說我在 程序設計之初不知道我運行時候具體有幾個LED燈泡,我想根據實際運行情況進行動態創建,類似于C++ 的new
    發表于 03-17 21:03

    【畢業設計求助】大神們求教!

    我的畢業設計的題目是用labview做一個系統界面實現虛擬的3D打印,現在界面做好了。我在想如何實現虛擬打印的過程,我想問有什么插件來實現在labview動態畫圖嗎?如下圖在打印顯示
    發表于 05-06 12:26

    請問labview動態調用子vi的輸入輸出怎么和主程序交互

    labview動態調用子vi,子vi的輸入輸出怎么和主程序交互
    發表于 01-16 20:17

    LabVIEWDLL文件的創建過程和編程結果

    ,他的許多新功能也是通過DLL來實現的。  LabVIEW動態鏈接庫的調用是通過CLF(Call Library Function) 節點實現的,如圖1所示。CLF可被用來調用32位的Windows
    發表于 05-15 07:24

    labview動態創建右鍵自定義快捷菜單

    attach://885619.docx放在附件里面了,大家有需要的可以下載來看。
    發表于 03-19 17:06

    LabVIEW在汽車ABS制動管道動態特性測試的應用

    介紹了LabVIEW的背景、結構和特點,并簡要地介紹了其在汽車ABS制動管道動態特性測試的應用。 關鍵詞:LabVIEW;虛擬儀器;ABS
    發表于 07-25 09:57 ?16次下載

    動態鏈接庫在LabVIEW的高級應用

    LabVIEW 的提供了調用共享庫函數的接口,但是一些現成的函數庫卻因為接口參數類型不同而不能在LabVIEW 中使用。利用重新編寫動態鏈接庫的方法可以建立舊函數庫與
    發表于 08-04 10:09 ?57次下載

    基于LabVIEW的紗線動態張力檢測系統

    摘要:紗線動態張力的檢測在紡織生產中有著很重要的意義。本文給出了一種基于LabVIEW的紗線動態張力檢測系統。它充分利用虛擬儀器技術的優勢,方便的實現了信號的采集和數據
    發表于 05-30 16:57 ?12次下載

    Labview動態窗口樣式之一

    Labview動態窗口樣式之一,很好的Labview資料,快來下載學習吧。
    發表于 04-19 10:56 ?0次下載

    Labview動態窗口樣式之二

    Labview動態窗口樣式之二,很好的Labview資料,快來下載學習吧。
    發表于 04-19 10:56 ?0次下載

    Labview動態窗口樣式之三

    Labview動態窗口樣式之三,很好的Labview資料,快來下載學習吧。
    發表于 04-19 10:56 ?0次下載

    labview的優勢與缺點_LabVIEW類的動態類型處理

    本文主要介紹了labview的優勢與缺點及LabVIEW類的動態類型處理。
    發表于 05-07 09:10 ?4.3w次閱讀
    <b class='flag-5'>labview</b>的優勢與缺點_<b class='flag-5'>LabVIEW</b>類的<b class='flag-5'>動態</b>類型處理

    LabVIEWXY圖曲線圖免費下載

    本文檔的主要內容詳細介紹的是LabVIEWXY圖曲線圖免費下載標簽動態跟隨,游標動態跟隨顯示。
    發表于 10-26 08:00 ?24次下載
    <b class='flag-5'>LabVIEW</b><b class='flag-5'>中</b>XY圖曲線圖免費下載