寫完成程式後,你會對你的程式測試嗎?如果你的專案有數十個VI,當你只改動了一個VI,你會對整個專案中的其他VI進行測試嗎?我猜是不會做這樣的事,因為測試要花太多時間了,直接上線驗不是比較快,但是這樣真的有比較省時間嗎?因此這個時候就是Caraya Unit Test framework就可以派上用場了。用程式測試程式,缺點就是為了測試要多寫一次程式碼。
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來幫忙囉)
Null Modem (com0com)
如果你想在同一台電腦下,有兩支應用程式需要進行資料交握,那麼這個可以提供你另一條道路。直接建立虛擬的兩組comport,進行資料交換。
AccessPort 1.37 測試以及監控RS232的必備好物
由於RS232是點對點的通訊,如果想要了解兩個端點的通訊內容,那這個軟體就可以幫上忙了。
但有兩件事情請特別注意,
1.如果你是用USB轉RS232的硬體,請先停止紀錄後,再移除USB轉RS232的硬體,不然你的電腦就會擺工給你看。
2.紀錄通訊之前,comport是不能先開啟的,需要按照下列步驟後,再進行原來的作業。
sscom 測試RS232 / RS485 / RS422 以及 Modbus 的必備好物
Locale-Emulator
讓你的簡體中文軟體在正體中文的作業系統中可以正常顯示
原始碼:https://github.com/xupefei/Locale-Emulator.git
https://www.azofreeware.com/2014/05/locale-emulator-1201-applocale.html
顯示結果如下:
Open GOOP 一個不管你用不用物件寫LabVIEW都必裝的外掛好物 PART 5 從專案中更新物件方法到類別圖
Open GOOP 一個不管你用不用物件寫LabVIEW都必裝的外掛好物 PART 4 UML類別圖轉lvclass
Open GOOP 一個不管你用不用物件寫LabVIEW都必裝的外掛好物 PART 3 UML類別圖
待續