2023/12/12 LabVIEW2020 with Python 3.6.8實作Protocol buffer序列化流程-Python環境確認

開發環境
LabVIEW 2020 32bit
Python 3.6.8 32bit
Python 套件 protobuf 3.7.0
protoc-3.6.1-win32.zip

環境確認
Python 環境確認,在命令提示視窗下執行
1. 輸入”python –version”,確認回傳版本是否為3.8.6
2. 輸入”pip list”,確認Package “protobuf”是否安裝,版本是否為3.7.0
3. 將提示路徑移到“protoc.exe”下,輸入“protoc –version”確認版本為libprotoc 3.6.1


參考資料
https://forums.ni.com/t5/LabVIEW/Using-python-for-protocol-buffer/td-p/3933707
https://protobuf.dev/programming-guides
https://blog.csdn.net/CaoMei_HuaCha/article/details/106326892
https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-win32.zip

2023/12/11 LabVIEW2020 with Python 3.6.8實作Protocol buffer序列化流程-環境準備篇

開發環境
LabVIEW 2020 32bit
Python 3.6.8 32bit
Python 套件 protobuf 3.7.0
protoc-3.6.1-win32.zip

前言
原於沒有辦法將開發環境全部更新到新版,在有新有舊下的狀況,又有軟體間的相依性問題,上面所列為我自己的開發需求下,相對可以用的狀況,目前還無得知會有什麼意外驚喜。
另外為了日後與作業系統的相容性需求,我的開發環境都會使用32位元的版本。

安裝流程
1. 首先到官網下載並安裝LabVIEW2020 社群版 32位元版
2. 下載並安裝Python 3.6.8
3. 安裝Python套件 protobuf 3.7.0
4. 下載protoc-3.6.1 for windows 32bit,並將其中的protoc.exe放在你的.proto檔案的相同資料中。

參考資料
Using python for protocol buffer
Protocol Buffers Documentation
python 在 windows 环境下如何安装protobuf?
protoc-3.6.1-win32.zip 下載路徑


LabVIEW 抓取WebCAM影像

付費快速的方式
Vision Acquisition Software Download – NI
Vision Acquisition Software – NI

免費的方式
透過call windows DLL
avicap32.dll
user32.dll
下面網址有先進已經提供範例程式
2 小時 完成 網路攝像頭 程式 – 第 2 頁 – NI 社區
最後一個的貼文

參考來源
攝像頭程式設計WindowsAPI – avicap32.dll 參數詳解_avicap32 無法顯示攝像頭-CSDN博客
User32.dll詳細介紹_user32.dll函數-CSDN博客
2 小時 完成 網路攝像頭 程式 – 第 2 頁 – NI 社區
NI Vision Acquisition Software、NI Vision Builder和NI Vision Development Module之間的差異 – NI

LabVIEW 主從關係的subVI,如何將值傳到mainVI上

有下面幾個解決方案
1. 全域變數:subVI透過全域變數,將值寫到全域變數中,由mainVI自己決定讀subVI值。
2. 功能性全域變數:全域變數的進化版本,另外寫一個FGV來存取所需要的變數值。
3. 物件參考(reference):mainVI將要更新值的物件參考(reference)傳入到subVI,當subVI值有更新時,也將值透過property node更新。
4. Control Values by Index:以數值更新的方式來說,效率比property node好。
以上各有各的優缺點,需要依程式架構選擇適當方式。

參考資料來源
LabVIEW Cat ~喵喵的LabVIEW人參~在Actor中使用Set control value by index 來回覆資料元素
LabVIEW Cat ~喵喵的LabVIEW人參~Functional Global Variable的使用介紹
LabVIEW Programming Reference Manual-Property Node
Basic Functional Global Variable Example



LabVIEW .net Container 使用範例

上圖左側為vi內的graph的顯示元件,右側為LabVIEW .net Container顯示的圖片檔。
下圖為轉換的步驟,我把程式放在這裡。

資料來源
Convert a .NET PictureBox to an IMAQ Image – NI
Extract IMAQ Image from Camera Memory Using .NET – NI
LabVIEW 技術交流群 at LINE by Rex

在LabVEIW的自由標籤

因為在LabVIEW底下沒有預設的可以控制的且透明背景的標籤可以使用,但是只要透過一幾個步聚設定String物件就可以得到相同效果的標籤。也可以另存成控項,方便日後使用。

步驟
1.拉出String物件到前面板
2.在控件輸入TextLabel
3.使用Palettes的調色盤進行設定
4.打完收工

完成品的控件如下,請自行取用。
https://miya.teracloud.jp/share/11d16bc9fb689d04

Malleable VIs

可malleable VI與多態VI類似,但polymorphic VI允許在一組固定的實現VI中進行類型選擇,而malleable VI是一個能夠自動適應輸入數據類型的單一VI。 使用polymorphic VI創建廣泛變化的實現更加簡單,但malleable VI支持開放式數據類型集。

創建malleable VI 的方法有兩種:

  1. File > New…,然後從列表中選擇 VI > malleable VI。 這將創建一個帶有 .vim 文件擴展名的新空白 VI。
  2. 獲取文件系統上現有的 VI,並將其文件擴展名更改為“.vim”。 這會將標準 VI 轉換為malleable的 VI。

輸出接腳自適應輸入端的資料型態