ControlDesk 測試腳本
撰寫方式與語言介紹
ControlDesk 幾乎所有 GUI 功能都能以程式驅動。其自動化介面實作為 Microsoft COM,可用多種腳本與程式語言撰寫;另可透過內部/外部直譯器、事件處理與 ASAM MCD-3 介面自動化。本頁逐一介紹。
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")
| 語言 | 連線寫法 |
|---|---|
| MATLAB | actxserver('ControlDeskNG.Application') |
| Visual Basic | CreateObject("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 Automation | ControlDeskMCD3Automation.pdf |
| ControlDesk Variable / Calibration / Measurement 相關 | ControlDeskVariableManagement.pdf 等 |
來源:ControlDesk 2025-A(Release 2025-A);路徑:C:\Users\Public\Acolada\Cobrili\HelpSetStorage\dSPACEPDF\RLS2025-A\en\