透過Python取得VI和EXE上前面板的值

更新 Mar 13, 2024

產品資訊

軟體

  • LabVIEW

程式語言

  • Python

問題敘述

我想用 Python 連線到正在執行的 VI 或由 VI build成的執行檔,並取得他前面板上的值,請問有辦法做到嗎?
 

解決方案

您可在 Python 中使用 win32com 和 pywin32 Modules來達成。

以下程式碼連線到一個指定路徑下的正在執行的 VI,並回傳名為“main”的 Control的值。

labview = win32com.client.Dispatch("Labview.Application")
VI = labview.getvireference(r'c:\TEMP\ctrl\ctrl.vi')
print(f'Name: {VI.Name}')
print(VI.getcontrolvalue('main'))
如果您想連線到已經 built成執行檔的對象,您必須修改 dispatch application 的參數 (i.e., "ctrl.Application"),並且將 VI 的路徑額外加到外層做為參考路徑:
import win32com.client

labview = win32com.client.Dispatch("ctrl.Application")
VI = labview.getvireference(r'c:\TEMP\ctrl\Ctrl.exe\ctrl.vi')

print(f'Name: {VI.Name}')
print(VI.getcontrolvalue('main'))

相關資訊

要能連線到您的執行檔,您必須在 Build Specification 下的Advanced Page (Application Properties Dialog Box) 勾選 Enable ActiveX server


上面提到的解決方法使用了 ActiveX。您還可以使用適用於 LabVIEW 的 Python Integration 工具組,以獲得 LabVIEW 和 Python 之間整合度更高的解決方案。