色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

labview中事件回調的使用

lvxisi ? 來源:lvxisi ? 作者:lvxisi ? 2023-08-24 16:38 ? 次閱讀

最近測試了labview調用dll中的回調函數(shù)相關功能,遇到了一些問題,現(xiàn)在做一下整理和總結,相關的內容比較多,分多篇來寫。

在LabVIEW中,新手經常將所有的程序放在事件結構中來執(zhí)行,有時還不取消前面板鎖定,一個事件觸發(fā)沒有執(zhí)行完成時,又去執(zhí)行另外一個事件,導致界面鎖死,必須從任務管理器里面關閉程序才行。

wKgZomTnFqOAMqVvAAKtoIyqNeY810.jpg

進一步優(yōu)化,會采用生產者-消費者結構,在事件結構中觸發(fā),在消費者循環(huán)中,處理相關的程序。但如果要處理的程序時間較長,還是會導致隊列阻塞,不能及時處理相應的程序。此時,便可以采用事件回調的方式來來解決。

wKgZomTnFqOALZiXAALB0o0_JfI308.jpg

先簡單介紹一下回調函數(shù),是一種在編程中常見的概念,它通常用于在特定事件發(fā)生時執(zhí)行預定義的操作。回調函數(shù)可以作為參數(shù)傳遞給其他函數(shù),以便在需要時被調用,從而實現(xiàn)定制的事件處理和邏輯分離。詳細的概念網上很多,可以感興趣可以查一下。

在labview中,無法實現(xiàn)將函數(shù)的地址指針傳遞給dll的,實際測試過VI引用是不可以的。可通過包裝器的方式來實現(xiàn),網上這方面的信息很少,個人理解,就是額外做一個中間層,將labview和dll進行連接。更進一步,就用其他語言如c++,編寫好相關的函數(shù)指針,完全實現(xiàn)既定的功能,之后再打包成中間的dll,在labview中進行調用。

labview本身,是支持回調函數(shù)的,只不過,這種機制是在內部進行實現(xiàn)(也許還支持其他的交互方式,本人沒有測試出來)。可以利用此功能,編寫一些異步的程序,解決一些程序執(zhí)行時間較長的問題。

1)搜索找到“事件回調注冊”,這兩個是同樣的東西,在不同的文件路徑下面,選擇一個即可。

wKgaomTnFqOAMiF2AABhurO2fqQ366.jpg

2)拖放到程序框圖內,這個函數(shù)包含了事件、VI引用還有用戶參數(shù)。

wKgZomTnFqOAfYF8AAEGbSpmYyI094.jpg

3)這里寫一個簡單的測試函數(shù),a+b=sum。其中a傳入值,b和sum傳入引用。

void Add(int a, int& b, int& sum) {

sum = a + b;

}

這幾個參數(shù),作為函數(shù)的輸入,連接到用戶參數(shù)中上面。

wKgaomTnFqOAEJNrAACAEelHcmM625.jpg

4)選擇這個回調函數(shù)的觸發(fā)方式,這里使用A的值改變。將A的引用連接到“事件”接線端,選擇相應的事件。

wKgaomTnFqOAUrFcAAGpI-YcXmg316.jpg

5)在VI引用上,右鍵選擇“創(chuàng)建回調VI”,可以自動生成一個用于執(zhí)行的VI函數(shù)。

wKgZomTnFqSATtAMAAEgo5mnho8496.jpgwKgaomTnFqSAQXvMAAGGlQfWglo837.jpg

這個生成的VI與自己編寫的VI靜態(tài)調用有所區(qū)別,界面顯示多了個*,右鍵查看是選擇了“嚴格類型VI的引用”。

wKgaomTnFqOAQUmBAAH37j7997k875.jpg

6)編程完成相關函數(shù)功能,保存VI。

wKgZomTnFqSAMjnRAAFT_7Srmcs758.jpg

7)編寫簡單的循環(huán)和延時,保證程序一直是執(zhí)行狀態(tài)。

wKgZomTnFqSAESfKAAFAftMgRv4541.jpg

8)程序測試。輸入A=1,B=1,運行軟件。軟件運行時,程序沒有執(zhí)行。當用于觸發(fā)的A達到“值改變”的條件時,程序運行,sum得到數(shù)據(jù)為2。

wKgaomTnFqSAe_LiAAD_i-z5EHM316.jpg

9) 后續(xù)改變A的數(shù)值,發(fā)現(xiàn)整個sum沒有發(fā)生變化,A的數(shù)據(jù)是以值的類型傳入的,后面再改變數(shù)據(jù),也無法改變最初傳入的數(shù)據(jù)值。

wKgaomTnFqeAFcBpAAB4W6jkJHU658.jpg

10)修改B的數(shù)據(jù),再修改A觸發(fā)程序,可以以看到程序運行。說明只需要注冊一次,程序可以觸發(fā)多次。

wKgZomTmHWuAIWsAAAFPqHy_OUg638.png

11)在常規(guī)用事件結構處理的事件,在“事件檢測窗口”中,都是有記錄的。但是利用事件回調是沒有記錄的,說明這個事件回調和事件結構沒有直接關系。

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

    關注

    1970

    文章

    3654

    瀏覽量

    323395
  • 調試
    +關注

    關注

    7

    文章

    578

    瀏覽量

    33924
  • 程序
    +關注

    關注

    117

    文章

    3785

    瀏覽量

    81009
  • 回調函數(shù)

    關注

    0

    文章

    87

    瀏覽量

    11554
收藏 人收藏

    評論

    相關推薦

    GUI調函數(shù)

    GUI調函數(shù)在哪里編寫?
    發(fā)表于 03-21 12:37

    調函數(shù)

    C++內編寫的DLL中有很多事件都是通過調函數(shù)來反饋,LABVIEW如何可以調用呢?
    發(fā)表于 11-06 15:36

    labview怎么處理dll調函數(shù)輸出值

    ); PrintLastFlashError(false);} }請問調函數(shù)一的參數(shù)值progressInPercent, remainingTimeInS,
    發(fā)表于 02-19 10:21

    關于labview調用dll的事件并回調問題

    我用c#寫了一個dll,其中方法add中有一個事件MyEvent(圖1),我在labview調用了這個方法并使用了事件調(圖2),
    發(fā)表于 11-22 10:55

    詳解java 調機制

    代碼示例 接下來看一下調的代碼示例,代碼模擬的是這樣一種場景:老師問學生問題,學生思考完畢回答老師。 首先定義一個調接口,只有一個方法tellAnswer(int answer),
    發(fā)表于 09-28 13:14 ?0次下載

    LabWindows/CVI 程序 調函數(shù)設計

    調函數(shù)是系統(tǒng)框架設計中非常重要的一種手段,所謂調函數(shù)(callback )是指一個通過函數(shù)指針調用的函數(shù)。
    發(fā)表于 05-03 16:54 ?1.1w次閱讀
    LabWindows/CVI 程序 <b class='flag-5'>回</b><b class='flag-5'>調</b>函數(shù)設計

    調函數(shù)的詳細資料說明

    異步事件的處理,首先將異步事件發(fā)生時需要執(zhí)行的代碼編寫成一個函數(shù),并將該函數(shù)注冊成為調函數(shù),這樣當該異步事件發(fā)生時,系統(tǒng)會自動調用事先注冊好的調函數(shù)。
    發(fā)表于 02-28 08:00 ?6次下載
    <b class='flag-5'>回</b><b class='flag-5'>調</b>函數(shù)的詳細資料說明

    5個使用帶有中斷的調的技巧

    調是對更高級別軟件傳遞到函數(shù)的可執(zhí)行代碼的引用。這些調能夠極大地提高嵌入式軟件的可移植性和重用性,但是根據(jù)它們的定義,它們需要使用函數(shù)指針,如果不仔細使用,可能會非常危險。以下是在
    的頭像 發(fā)表于 08-09 09:18 ?5092次閱讀
    5個使用帶有中斷的<b class='flag-5'>回</b><b class='flag-5'>調</b>的技巧

    C語言函數(shù)的調函數(shù)

    來源:嵌入式客棧 1 什么是調函數(shù)?首先什么是調呢? 我的理解是:把一段可執(zhí)行的代碼像參數(shù)傳遞那樣傳給其他代碼,而這段代碼會在某個時刻被調用執(zhí)行,這就叫做回
    的頭像 發(fā)表于 09-11 09:57 ?4129次閱讀

    嵌入式開發(fā)軟件調函數(shù)的使用

    在嵌入式開發(fā)軟件調函數(shù)是經常接觸的一種軟件設計方法,像我們的事件處理機制基本上都會使用到調函數(shù)。
    的頭像 發(fā)表于 04-29 08:57 ?2271次閱讀

    根據(jù)調機制注冊事件并處理調VI

    通過事件調注冊函數(shù)(Register Event Callback)注冊一個調VI,在事件發(fā)生時會運行該回調VI,通常用于注冊和處理.N
    的頭像 發(fā)表于 11-24 09:15 ?2276次閱讀

    函數(shù)指針和調函數(shù)的使用方法

    了解開發(fā)語言的朋友應該都會對調函數(shù)有所了解,在很多的程序開發(fā)語言中都能看到調的身影。很多場景下,當某個條件成立以后我們希望代碼執(zhí)行某些指定的部分,這個時候可以考慮使用回
    的頭像 發(fā)表于 04-10 15:08 ?1096次閱讀

    C語言|調函數(shù)的不同用法

    調函數(shù)是個高級操作技巧,也是日常項目中常常使用到的技能。之所以說調函數(shù)是個高級操作技巧,是因為它讓異步操作更加方便,眾所周知程序執(zhí)行分為同步操作和異步操作,同步操作故名思意就是按代
    發(fā)表于 07-10 10:34 ?1301次閱讀

    ??嵌入式調函數(shù)的實現(xiàn)方法

    調函數(shù)的命名規(guī)范沒有固定的標準,但是根據(jù)通用慣例和編碼規(guī)范,調函數(shù)的命名應該能夠反映函數(shù)的作用和功能,讓其他開發(fā)者能夠快速理解并使用。
    發(fā)表于 03-04 14:49 ?713次閱讀

    調函數(shù)(callback)是什么?調函數(shù)的實現(xiàn)方法

    調函數(shù)是一種特殊的函數(shù),它作為參數(shù)傳遞給另一個函數(shù),并在被調用函數(shù)執(zhí)行完畢后被調用。調函數(shù)通常用于事件處理、異步編程和處理各種操作系統(tǒng)和框架的API。
    發(fā)表于 03-12 11:46 ?2905次閱讀
    主站蜘蛛池模板: 人人碰79免费视频| caoporn超碰视频| 国产精品亚洲精品爽爽| 秋霞三级理伦免费观看| 97国产成人精品免费视频| 久久成人亚洲| 亚洲色图在线播放| 国产一区二区在线免费观看| 失禁h啪肉尿出来高h| 东北老妇人70OLDMAN| 且试天下芒果免费观看| a级销魂美女| 男子扒开美女尿口做羞羞的事| 在线成年av动漫电影| 久久国产高清字幕中文| 亚洲色噜噜狠狠网站| 国偷自产AV一区二区三区健身房| 掀开奶罩边躁狠狠躁软学生| 纲手胸被爆羞羞免费| 色翁荡熄月月| 国产1769一七六九视频在线| 日本午夜精品一区二区三区电影| vagaa哇嘎黄短片| 人妻 中文无码 中出| 爱情岛论坛免费在线观看| 欧美亚洲视频在线二区| 超碰超碰视频在线观看| 日本日本熟妇中文在线视频| 成人伦理影院| 色久悠悠无码偷拍自怕| 鬼灭之刃花街篇免费樱花动漫| 色综合五月激情综合色一区| 国产成人精品区在线观看| 无码精品AV久久久奶水| 国产久青青青青在线观看| 亚洲an天堂an在线观看| 好男人社区| 在线观看免费av网| 啦啦啦 中国 日本 高清 在线| 在线黑人抽搐潮喷| 免费一区在线观看|