G CLI 如果使用VIPM安裝失敗,那就換個方法安裝吧

有可以正常從VIPM案裝的解方了,請到這如何安裝VI package -> G CLI套件

安裝步驟
1.從vipm.io下載G CLI的package.
2.使用7zip解壓縮檔案。
3.將檔案複製到LabVIEW資料夾下。
4.執行核心檔案安裝
5.打完收工(後話)

1.從vipm.io下載G CLI的package.
1.1 到這個路徑https://www.vipm.io/package/wiresmith_technology_lib_g_cli/
1.2 畫面右側有一個”Download Package“的按鍵,按下後開始下載。
1.3 下載完成後,應該可以看到”wiresmith_technology_lib_g_cli-3.0.1.98.vip”這個檔案

2. 使用7zip解壓縮檔案
2.1 將”wiresmith_technology_lib_g_cli-3.0.1.98.vip”解壓縮至一個新的資料夾下
2.2 解壓縮完成後,你應該可以看到資夾裡有資料夾“File Group 0”及”File Group 1″和後面五個檔案spec, icon.bmp, PostInstall.vi, PreUninstall.vi license

3.將檔案複製到LabVIEW資料夾下
3.1 進到解壓縮資料夾內,將”File Group 0″內的三個資料夾複製到你的LabVIEW所在的資料夾下,例如我的LabVIEW2020 32bit資料是在”C:\Program Files (x86)\National Instruments\LabVIEW 2020″
3.2 進到解壓縮資料夾內,將”File Group 1″內的“functions_Wiresmith_Technology_lib_G_CLI.mnu”複製到你的LabVIEW所在的選單資料夾下,例如我的LabVIEW2020 32bit資料是在”C:\Program Files (x86)\National Instruments\LabVIEW 2020\menus\Categories\Computer”

4.執行核心檔案安裝
4.1 進到解壓縮資料夾 -> File Group 0 -> vi.lib -> Wiresmith Technology -> G CLI -> Installation Support -> G_CLI.msi 下
4.2 執行 “g-cli-3.0.1-x86_64.msi”進行核心檔案安裝。
4.3 完成手動安裝 G CLI套件

5.打完收工(後話)
因為沒有使用VI package manager安裝,之後有使用到G CLI的套件都會要你再裝一次G CLI,這時候請記得取消勾選。不然他會安裝失敗,將你手動複製的檔案都一起移除。

Ubuntu 22.04 server 安裝 Docker步驟

紀錄一下安裝手順,免得每次找的資料都不同。

1.更新庫
sudo apt update

2.安裝docker
sudo apt install docker.io

3.安裝docker-compose
sudo apt install docker-compose

4.啟動docker服務
sudo systemctl start docker

5.使docker服務在每次重開系時,自動運作。
sudo systemctl enable docker

6.安裝版本確認
docker –version

版本顯示畫面

7.將現在登的ubuntu的使用者加入docker權限
sudo usermod -aG docker $USER

8.使新加入的使用者生效
newgrp docker

9.測試container是否可以正常運作
docker container run hello-world

運作container的畫面

使用樹梅派做為TCP資料收集器

源起
有人問我說我只是想要抓TCP server上廣播出來的資料,一定要買NB or PC來進行嗎?有比較實惠的方案嗎?所以就有了這一篇文章了。稍為整理了一下所需要的資訊及步聚。

材料
樹梅派 3B+32G SD卡,以上(我是用樹梅派4B)
一台Windows電腦
SD讀卡機
樹梅派及Windows電腦需要相同網域下

步聚
1. 下載樹梅派 OS
2. 安裝及設定 樹梅派 OS
3. 使用SSH在樹梅派上寫python讀取TCP server資料的程式。
4. 進行功能測試

步聚 1. 下載樹梅派 OS
https://www.raspberrypi.com/software/ 下載映像檔安裝程式。

步聚 2. 安裝及設定 樹梅派 OS
1. 開啟程式已下載的安裝程式
2. 安裝Raspberry Pi Imager
3. 啟動Raspberry Pi Imager
4. 在設定畫面上設定你的裝置型號及讀卡機位置
5. 作業系統請選擇Paspberry Pi OS(Legacy, 64-bit)
6. 設定你的環境參數,需將SSH開啟
7. 完成SD卡燒錄後,將卡片移回樹梅派
8. 樹梅派開機測試

OS版本要注意,不要選錯了
我的測試環境
先進行環境編輯,再做SD燒錄
主機及帳號要記得設定,免得無法登入
需要開啟SSH服務

步聚 3. 使用SSH在樹梅派上寫python,讀取TCP server資料
1. 因為安裝的OS已經有Python及相關套件,所以不需要另外安裝其它軟體
2. 使用windows console, 透過ssh連線到樹梅派
3. 在ssh下,執行”nano my_program.py”開啟nano編輯器
4. 撰寫Python程式,抓取TCP Server資料
5. 寫完存檔

步聚 4. 進行功能測試
1. 在Windows電腦上,用SSCOM開啟TCP server模式,定時送出資料
2. 在樹梅派上啟動步取3的程式,TCP Server的資料結果呈現在SSH視窗上

2023/12/13 LabVIEW2020 with Python 3.6.8實作Protocol buffer-LabVIEW取回protobuf資料的替代方案

因為谷哥爸爸沒有為LabVIEW提供.proto產生器,所以只能借由第三方語言將protobuf資料取回,用時間及空間換取相對可以執行的方案,下面為實作方式。
利用protobuf的函式庫內的json_format.MessageToJson將protobuf資料轉換json string,LabVIEW再轉回對應的格式使用。

#ProtoBuf_Json.py
from helloworld_pb2 import helloworld
from google.protobuf import json_format
import json

    
def pb_to_json():
    hw = helloworld()
    hw.id = 168
    hw.str = "Jobs"
    strjson = json_format.MessageToJson(hw)
    return strjson

2023/12/12 LabVIEW2020 with Python 3.6.8實作Protocol buffer序列化流程-LabVIEW取回序列化資料驗証

接著”2023-12-12-labview2020-with-python-3-6-8實作protocol-buffer序列化流程-pyhon下的函數驗証“這一篇的後續。
這一篇是要記錄在LabVIEW可以取回python序列化後的結果。

步驟
1. 建立getRawData.py,將收到LabVIEW的iId及sName,寫到hw.id及hw.str。
2. 將序列化後的資料轉為16進制文字返回給LabVIEW.
3. LabVIEW寫入iId及sName後,預期就可以接回序列化的資料。

#getRawData.py
from helloworld_pb2 import helloworld

def SerializeData(iId,sName):
    # 創建一個 helloworld 實例
    hw = helloworld()
    hw.id = iId
    hw.str = sName

    # 返回解析後的數據的十六進制表示形式
    return hw.SerializeToString().hex()

2023/12/12 LabVIEW2020 with Python 3.6.8實作Protocol buffer序列化流程-Pyhon下的函數驗証

接著2023/12/12 LabVIEW2020 with Python 3.6.8實作Protocol buffer序列化流程-建置proto檔並產生Python library (.py)這一篇的後續。
這一篇是要記錄要在Python下確認protobuf library有正常運作。

步驟
1. 建立writer.py,將資料序列化後,寫到helloworld.buffer檔案中。
2. 建立reader.py,將序列化後的helloworld.buffer檔案資料讀出,並反序列化後讀出,顯示原始資料在視窗中。

#riter.py
from helloworld_pb2 import helloworld
 
def main():
    hw = helloworld()
    hw.id = 123
    hw.name = "Jobs"
    print(hw)
 
    with open("helloworld.buffer", "wb") as f:
        f.write(hw.SerializeToString())
 
if __name__ == "__main__":
    main()
#reader.py
from helloworld_pb2 import helloworld
 
def main():
    hw = helloworld()
    with open("helloworld.buffer", "rb") as f:
        hw.ParseFromString(f.read())
        print(hw.id)
        print(hw.name)
  
if __name__ == "__main__":
    main()
序列化及反序列化後的結果
序列化後的二進制檔

2023/12/12 LabVIEW2020 with Python 3.6.8實作Protocol buffer序列化流程-建置proto檔並產生Python library (.py)

步驟
1. 撰寫proto檔,將檔案存到D:\Python_Protobuf
2. 將protoc.exe複製到D:\Python_Protobuf目錄下
3. 執行命令提示視窗打開,將路徑指向到D:\Python_Protobuf下
4. 在命令提示視窗輸入”protoc -I=./ –python_out=./ ./helloworld.proto“
5. 如果沒有問題,在D:\Python_Protobuf會有”helloworld_pb2.py“檔案產生
6. 現在就可以在Python IDE下 import “helloworld” 來使用了

syntax = "proto3";

package helloworld_package;
message helloworld
{
    int32 id = 1;
    string name = 2;
    int32 wow = 3;
}

protoc -I=./ –python_out=./ ./helloworld.proto
-I: 是設定來源路徑
–python_out: 用於設定編譯後的輸出結果,如果使用其它語言請使用對應語言的option
最後一個參數是你要編譯的proto文件

2023/12/12 LabVIEW2020 with Python 3.6.8實作Protocol buffer序列化流程-實作流程說明

LabVIEW呼叫Python進行Protocol buffer序列化流程如下
1. 定義.proto
2. 使用protoc轉出 Python library
3. 撰寫Python函式
4. LabVIEW使用Python node呼叫撰寫好的Python node進行序列化,並取得序列化後byte array結果。
如果是已經有了.proto檔案,則從步驟2開始進行。
如果同事很好心的連.py都幫你準備好了,那就從步驟3開始,寫Python的函式囉。

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

參考資料
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://www.cnblogs.com/jsdkboot/p/15726701.html
https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-win32.zip

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

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

確認LabVIEW2020開發環境流程
1. 開啟並使用Find example
2. 尋找到Python的範例程式
3. 開啟並執行
4. 如果沒有出現問題,代表LabVIEW與Python間連接正常

LabVIEW範例程式
LabVIEW呼叫Python node的程式畫面
LabVIEW呼叫Python的程式碼
可能出現的問題

參考資料
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/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