CONTROLDESK · AUTOMATION

ControlDesk 測試腳本
撰寫方式與語言介紹

ControlDesk 幾乎所有 GUI 功能都能以程式驅動。其自動化介面實作為 Microsoft COM,可用多種腳本與程式語言撰寫;另可透過內部/外部直譯器、事件處理與 ASAM MCD-3 介面自動化。本頁逐一介紹。

COM Automation API Python / MATLAB / VBA Event Handlers ControlDesk 2025-A

ControlDesk 的自動化介面(Automation API)實作為 Microsoft COM(Component Object Model),因此與開發語言無關,任何 COM 相容語言皆可使用。COM 為 out-of-process server(ControlDesk.exe),自動化一定是驅動真正的 ControlDesk 應用程式;連線時若未啟動會自動啟動,並可將主視窗隱藏至背景。根介面為 Application / IXaApplication。本頁內容整理自 dSPACE 原廠 ControlDesk Automation 手冊(ControlDesk 2025-A)。

1. 撰寫方式總覽

ControlDesk 的腳本可依「執行情境」分為六類,其中外部腳本(External)是最常用的自動化測試方式:

腳本類型用途執行/儲存
External 腳本外部自動化(批次測試、無人值守)外部直譯器執行
Event handler code特定 ControlDesk 事件發生時執行User / Project / Experiment 情境
Instrument / Layout 腳本擴充儀表或 layout 功能隨 layout 儲存
Project / Experiment 腳本擴充專案或實驗功能隨專案/實驗儲存
Extension 腳本每次 ControlDesk 啟動時執行安裝層級
MCD-3 自動化外部系統交換校正/量測/診斷資料ASAM MCD-3 介面

2. 支援的腳本語言與程式語言

腳本語言(Scripting)

  • Python(ControlDesk 2025-A 相容 Python 3.12)
  • MATLAB M-script
  • Microsoft Office VBA

程式語言(Programming)

  • C#、C++、Visual Basic
  • 組件位於 …\ControlDesk 2025-A\Main\bin\AutomationAssemblies

3. 內部直譯器 vs 外部直譯器(Python)

內部直譯器(Internal)

ControlDesk 內建的 Interpreter 面板;適合快速互動與事件處理。

外部直譯器(External)

PythonWin / python.exe / pythonw.exe;適合長時間腳本、除錯、無人值守。

含 sleep 或長時間執行的腳本不要放在內部直譯器(會卡住 ControlDesk);事件處理腳本同樣勿使用 sleep。改用外部直譯器。

4. 建立 COM 連線(各語言)

# Python — late binding(最常用)
from win32com.client import Dispatch
app = Dispatch("ControlDeskNG.Application")            # 作用中版本
app = Dispatch("ControlDeskNG.Application.2025-A")     # 指定版本

# Python — early binding(型別庫包裝,支援常數/IntelliSense)
from win32com.client import gencache
app = gencache.EnsureDispatch("ControlDeskNG.Application.2025-A")

# Python — 取用已執行實例(未執行會丟例外)
from win32com.client import GetActiveObject
app = GetActiveObject("ControlDeskNG.Application.2025-A")
語言連線寫法
MATLABactxserver('ControlDeskNG.Application')
Visual BasicCreateObject("ControlDeskNG.Application")
C#Activator.CreateInstance(Type.GetTypeFromProgID("ControlDeskNG.Application"))

版本引數如 .2025-A / .2024-B / … / .7.0;最新安裝版為預設「作用中版本」,可用 dSPACE Installation Manager 切換。

5. 可自動化的功能範圍

專案與平台

建立/開啟 Project/Experiment;新增設定平台/裝置(VEOS、SCALEXIO、XCP、CCP、ECU Diagnostics)。

變數與校正

變數描述、直接變數存取、計算/對應變數;參數校正、資料集(working/reference、匯入匯出)。

量測與記錄

Measurement / Recording、Data Logging。

Layout 與 Instrument

新增、放置、綁定變數、匯入匯出。

Bus Navigator / 診斷

匯流排 replay/監控/logging;ECU 診斷(ODX、診斷服務、flash、DTC)。

訊號與錯誤模擬 / UI

Signal Editor、電氣錯誤模擬(XIL API EESPort);ribbon/context menu/對話框客製與事件處理。

6. 典型外部腳本工作流程(以 VEOS 為例)

from win32com.client import Dispatch
from dspace.com import Enums          # Python 3.12
app = Dispatch("ControlDeskNG.Application.2025-A")
E = Enums(app)

# 開專案 + 啟用實驗
app.ProjectRoots.Item(r"C:\...\Demo_CD").Activate()
active = app.Projects.Item("autoTEST_CD").Open()
active.Experiments.Item(0).Activate()
platform = app.ActiveExperiment.Platforms.Item(0)

# 連線 + online calibration(VEOS 單一記憶體頁)
platform.Disconnect()
platform.GeneralSettings.StartOnlineCalibrationBehavior = E.OnlineCalibrationBehavior.Upload
platform.Connect()
app.CalibrationManagement.StartOnlineCalibration()
platform.ActiveVariableDescription.DataSets.WorkingDataSet.Activate()

# 讀(監視)/ 寫(注入)
v = platform.ActiveVariableDescription.Variables.Item(r"Platform()://Model Root/.../Value")
print(v.ValueConverted)     # 監視
v.ValueConverted = 1        # 注入

靜態讀取 vs 即時值:變數清單/型別/群組等靜態內容可不連線直接讀 ActiveVariableDescription;即時值(量測/注入執行中模型)須先 Connect() + StartOnlineCalibration(),否則只存取 host PC 的 mirror memory。

7. 事件機制(Event Handlers)

  • 綁定事件可將 Python event handler 綁到特定事件(如 ControlDesk 啟動、專案建立、實驗啟用、參數變更)。
  • 三種 Event ContextUser(跨專案、隨 Windows 使用者)、Project、Experiment(隨專案/實驗儲存)。
  • 由內部直譯器執行ControlDesk 會等待 handler 完成,故勿在事件腳本中使用 sleep。可經 Event Configuration Dialog 設定並匯入/匯出。

8. 另一條介面:ASAM MCD-3

ControlDesk 另提供 ASAM MCD-3 相容介面(見 ControlDeskMCD3Automation.pdf),供外部自動化系統交換校正/量測/診斷資料。限制:不能遙控 UI(不能建專案、改儀表綁定),與 COM 介面用途不同。

9. 腳本語言介紹

Python(主要)

最常用;ControlDesk 2025-A 相容 Python 3.12。可在內部 Interpreter 面板互動,或以外部 PythonWin/python.exe 執行長腳本。透過 win32com 以 late/early binding 連線;from dspace.com import Enums 提供 API 列舉(Python 3.12)。用於外部自動化、事件、layout/專案腳本。

MATLAB M-script

以 actxserver('ControlDeskNG.Application') 連線,適合已用 MATLAB/Simulink 的工作流程整合量測與校正。

Microsoft Office VBA

以 CreateObject("ControlDeskNG.Application") 連線,適合從 Excel/Office 驅動量測與報表。

C# / C++ / Visual Basic

以 COM 組件(AutomationAssemblies)開發編譯式自動化客戶端,適合整合進 .NET 或既有測試框架。

10. 注意事項

  • 僅支援 64-bit 自動化 client,不支援 32-bit。
  • 腳本大小寫敏感,須與 API 文件拼寫一致。
  • 無鎖定機制:不會防止多個自動化來源(AutomationDesk、MCD-3…)同時存取,須自行協調。
  • online calibration 時勿選 PromptUser(會跳對話框卡住自動化),改用 Upload 等。
  • 兩記憶體頁裝置(如 XCP ECU)需 WorkingDataSet.Activate() 才能寫值。
  • 無 license 時只能用 Application 的少數方法(Version、Quit、Execute、Log…)。

11. 原廠範例位置

C:\dSPACE\dSPACE ControlDesk 2025-A\Demos\ToolAutomation\
├── Python\AutomatingControlDesk\    StartControlDesk.py 等
├── Python\CustomUI\                 ribbon / context menu 範例
├── Python\DialogExamples\
└── C#\AutomatingControlDesk\        AutomatingControlDesk.sln

API 參考進入點:Application / IXaApplication。

延伸閱讀:AutomationDesk 測試腳本撰寫方式與語言。

原始文件出處(dSPACE)

文件檔名
ControlDesk Automation(COM API、腳本類型、事件、直譯器)ControlDeskAutomation.pdf
ControlDesk MCD-3 AutomationControlDeskMCD3Automation.pdf
ControlDesk Variable / Calibration / Measurement 相關ControlDeskVariableManagement.pdf 等

來源:ControlDesk 2025-A(Release 2025-A);路徑:C:\Users\Public\Acolada\Cobrili\HelpSetStorage\dSPACEPDF\RLS2025-A\en\