寫完成程式後,你會對你的程式測試嗎?如果你的專案有數十個VI,當你只改動了一個VI,你會對整個專案中的其他VI進行測試嗎?我猜是不會做這樣的事,因為測試要花太多時間了,直接上線驗不是比較快,但是這樣真的有比較省時間嗎?因此這個時候就是Caraya Unit Test framework就可以派上用場了。用程式測試程式,缺點就是為了測試要多寫一次程式碼。
分類: LabVIEW學習記錄
LabVIEW的筆記
LabVIEW 功能全域變數 (FGV)
使用功能全域變數 (FGV) 在同一目標下不同 VI 中包含的兩個並行迴圈之間進行通信,並使用 FGV 通過一個“停止”按鈕停止並行 迴圈 。FGV 的“功能”性質意味著您可以創建超出基本全域變數的附加功能,例如,對存儲值進行操作的計數和計算。
使用情境
- 在同一目標(“目標範圍”)中包含的兩個或多個並行過程迴圈之間通信數據、控制和狀態,無論是在同一 VI 中還是在不同 VI 中
- 使變數的最新值可用於其他過程迴圈
- 從單個控制元件停止多個並行迴圈
- 執行附加操作(FGV 首字母縮略詞的“功能”方面),而不僅僅是存儲數據,例如計數和計算
特徵
- 功能全域變數是具有以下定義特徵的子 VI:
- 未初始化的移位寄存器——while 迴圈中未初始化的移位寄存器會導致 LabVIEW 為單個值分配存儲空間,只要調用的 VI 保留在內存中,該值就會持續存在
- 單次迭代 while 迴圈——while 迴圈條件接線端連接到一個“真”常量,因此它只迭代一次;while 迴圈只是一種保存移位寄存器的機制
- 具有枚舉控制的案例結構——案例結構選擇對存儲值執行的操作;“讀”和“寫”是最基本的操作,附加的case可以實現“遞增”、“遞減”等附加功能。
- 不可重入子VI——這種執行模式確保目標中只存在一個子VI實例;子VI的多個實例都引用同一個存儲值
- 與局部變數和全局變數相比,函數全域變數有兩個優點:
- 內存效率——存儲的值只存在於內存中的一個地方,而本地/全域變數讀取器的每個實例都會創建自己的數據副本
- 避免競爭條件——存儲的值在讀取時不能寫入,因為子 VI 一次只能由一個實體執行
特別注意
子VI的執行模式必須設置為“non-reentrant”(打開子VI,按Ctrl+I,選擇“Execution”類別,選擇“non-reentrant execution”);其他兩種可重入執行模式創建子 VI 的獨立副本(“克隆”),從而消除了 FGV的全域變數方面
JKI – VI Package Manager (VIPM) -LabVIEW的外掛管理工具
使用VI Package Manager(VIPM)下載和管理LabVIEW附加元件
寫LabVIEW的你,還在不斷的自己造輪子嗎?你知道你可以用VIPM找到好用的工具,而不用重新撰寫程式嗎?
先來推幾個常用好外掛
- JKI state machine (JKI推出的變種版的state machine)
- DQMH (我覺得方便上手的程式架構模版,前提要有人教。)
- ZE DQMH Provider for the Project (DQMH的外掛)
- OpenG Toolkit (有非常多好用的VIs可以使用)
- MGI Toolkit (有非常多好用的VIs可以使用)
- GDrive for LabVIEW (如果你要操作google drive上的檔案,又不會用google API,那這個就是你的好朋友)
- Caraya Unit Test Framework (寫完程式要不要測試,測試的好幫手)
- SQLite Library (想要有資料庫的好處,但又不想太麻煩,這時就請出SQLite來幫忙囉)
Open GOOP 一個不管你用不用物件寫LabVIEW都必裝的外掛好物 PART 5 從專案中更新物件方法到類別圖
Open GOOP 一個不管你用不用物件寫LabVIEW都必裝的外掛好物 PART 4 UML類別圖轉lvclass
Open GOOP 一個不管你用不用物件寫LabVIEW都必裝的外掛好物 PART 3 UML類別圖
待續
Open GOOP 一個不管你用不用物件寫LabVIEW都必裝的外掛好物 PART 2 快速修改VI Icon
千言萬語,不如直接看動畫。
Open GOOP 一個不管你用不用物件寫LabVIEW都必裝的外掛好物 PART 1 下載與安裝
- 到這裡https://opengds.github.io/選擇你對應版本的ZIP檔進行下載
- 解壓縮檔案
- 你可以選擇執行vi進行安裝,也可透過vipm進行安裝,擇一安裝即可。
- 安裝完成後,你就可以在Tools下,確認Open GOOP的外掛功能是否有正確安裝。