里講一個很高大上的概念,但是也是一個很簡單,使用非常頻繁的功能:接口冪等,然后講兩個實現(xiàn)方式。
一、接口冪等性簡介
1.1接口冪等定義:
冪等性原來是數(shù)學上的概念,在編程領(lǐng)域可以理解為:多次請求某一個資源或執(zhí)行某一個操作時應(yīng)該具有唯一性同樣等結(jié)果,也就是說,其任意多次執(zhí)行對資源本身所產(chǎn)生等影響的結(jié)果或函數(shù)執(zhí)行的結(jié)果,都與第一次執(zhí)行的結(jié)果相同。
1.2在LabVIEW里的主要解決的問題:
1.2.1、在結(jié)果沒有完成時的重復點擊。
1.2.2、無意間的雙擊導致重復發(fā)送命令。
1.2.3、按鍵防抖。
1.2.4、在生成消費者中,生產(chǎn)數(shù)量大于消費數(shù)量,且可以忽略多與生成者的情況下。
1.2.5、在操作者架構(gòu)Actor Framework使用其功能可以避免消息隊列堆積。
1.3、接口冪等的使用條件
要實現(xiàn)接口冪等最好是對命令和操作進行解耦,例如以下軟件架構(gòu):生產(chǎn)消費者,JKI,AMC,DQMH等。
1.4、這里提供兩種解決方法
1、控件禁用方式實現(xiàn)。
2、使用唯一ID實現(xiàn)。
二、接口冪等的解決辦法1-控件禁用
我們直接用狀態(tài)機章節(jié)中的異步狀態(tài)機的例子改造下,利用控件禁用實現(xiàn)接口冪等操作。
1、我們要實現(xiàn)的功能就是點擊運行后禁用運行按鈕,當運行結(jié)束或點擊復位時使能運行按鈕,如下圖所示。
2、在Run事件中添加禁用運行按鈕代碼,在洗滌結(jié)束流程中添加使能Run代碼。
3、在停止和復位事件中天健Run使能代碼
4、下邊時運行效果
可以看到在設(shè)備運行時禁用了運行控件,當運行結(jié)束后可以再次點擊運行。
三、接口冪等的解決辦法2-唯一ID
3.1、接口冪等的執(zhí)行流程
3.1.1先要創(chuàng)建一個全局的ID
3.1.2、發(fā)送命令時讀取全局ID并和命定打包
3.1.3、執(zhí)行單元接收到打包的命令后與將打包的ID和全局ID進行比較
3.1.4、ID相等執(zhí)行命令后將ID++
3.1.5、ID不同時忽略該命令
3.2、先設(shè)計個FGV來保存和ID便于操作
Set
Get
Unlokc
3.3、修改JKI傳遞的數(shù)據(jù)類型將原來的字符串改成簇,其中包含ID和命令字符串。
3.4、在處理事件時增加冪等處理,如果ID不等則忽略命令,將退出命令提升到最高優(yōu)先級
3.5、下邊是最后運行效果
四、需要安裝的軟件或工具包
1.LabVIEW2015中文版
審核編輯:黃飛
-
LabVIEW
+關(guān)注
關(guān)注
1970文章
3654瀏覽量
323313 -
狀態(tài)機
+關(guān)注
關(guān)注
2文章
492瀏覽量
27529
原文標題:LabVIEW的編程之道-接口冪等
文章出處:【微信號:LabVIEW的編程之道,微信公眾號:LabVIEW的編程之道】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論