今日好物推薦 Caraya Unit Test Framework by JKI

透過VIPM來安裝

寫完成程式後,你會對你的程式測試嗎?如果你的專案有數十個VI,當你只改動了一個VI,你會對整個專案中的其他VI進行測試嗎?我猜是不會做這樣的事,因為測試要花太多時間了,直接上線驗不是比較快,但是這樣真的有比較省時間嗎?因此這個時候就是Caraya Unit Test framework就可以派上用場了。用程式測試程式,缺點就是為了測試要多寫一次程式碼。

一個加法VI的單元測試
開發者的說明,看一下,更清楚怎麼用。

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找到好用的工具,而不用重新撰寫程式嗎?

先來推幾個常用好外掛

  1. JKI state machine (JKI推出的變種版的state machine)
  2. DQMH (我覺得方便上手的程式架構模版,前提要有人教。)
  3. ZE DQMH Provider for the Project (DQMH的外掛)
  4. OpenG Toolkit (有非常多好用的VIs可以使用)
  5. MGI Toolkit (有非常多好用的VIs可以使用)
  6. GDrive for LabVIEW (如果你要操作google drive上的檔案,又不會用google API,那這個就是你的好朋友)
  7. Caraya Unit Test Framework (寫完程式要不要測試,測試的好幫手)
  8. SQLite Library (想要有資料庫的好處,但又不想太麻煩,這時就請出SQLite來幫忙囉)

Open GOOP 一個不管你用不用物件寫LabVIEW都必裝的外掛好物 PART 1 下載與安裝

Open GDS的幫助手冊(英文版)

  1. 到這裡https://opengds.github.io/選擇你對應版本的ZIP檔進行下載
  2. 解壓縮檔案
  3. 你可以選擇執行vi進行安裝,也可透過vipm進行安裝,擇一安裝即可。
  4. 安裝完成後,你就可以在Tools下,確認Open GOOP的外掛功能是否有正確安裝。