此文章之範例適用於下列條件:
TMflow 軟體版本: 2.14 或以上。
TM 手臂硬體版本:僅支援 HW3.2 或以上。
其他特殊軟硬體需求: 無
請注意,新舊版本之差異可能導致操作介面、步驟上會有所差異。
TMcraft Node 是客製的節點使用者介面程式,是由第三方開基於 C# + WPF 開發的執行檔(exe)。該程式可通過 TMcraft API 與 TMflow 進行交流,如創建或修改專案變數、創建或修改點位、設定 I/O、驅動機器人等。在關閉 Node UI 之前,程式可將設定轉換為 TMscript,並將其寫入 Flow 專案。
出於安全考慮,開發者不能只將執行檔放到 TMflow 上;而是必須先開發 UserControl 函式庫(DLL 檔)。接著透過使用 TMstudio Pro 的 TMcraft-Build 功能,將 UserControl 函式庫建置成執行檔,並與其他資源(例如函式庫、媒體等)一起打包壓縮。最後,匯入此壓縮檔至 TMflow,啟用後即可在 Flow 專案中使用。
什麼是TMcraft API #
TMcraft (Node) API 是連接 TMcraft Node 和 TMflow 的介面層,用於獲取機器人或專案的資訊並請求 TMflow 採取各種的操作或生成腳本並寫入 Flow 專案運行的腳本。此外,該 API 實際上是動態連結函式庫(DLL檔),開發者可引用為程式參考,使用其中的功能與 TMflow 進行交流。
TMcraft.dll 有四個部分:ITMcraftNodeEntry、Providers、Info 和 ENUM。
- ITMcraftNodeEntry 是 API 的重要組成部分,用於在 Node 和 TMflow 之間建立連接(即 InitializeNode() )。沒有此連接,其餘 API 函式將不可用。
- Providers 是能與 TMflow 互動的類別,每個類別都具備各種操作的函式;屬 TMcraft Node 最常使用的項目。
- Info 是 TMflow 項目物件的類別,例如 BaseInfo、PointInfo 和 VariableInfo,由不同類型的 Provider 函式所使用。
- ENUM 是一些 TMcraft API 所需的實值型別,包括: IO_TYPE 、 VariableType 、 FreeBotModes 、 RobotEventType 和 TMflowType 。
此外,TMcraft API 還包括一些函式: Close() 、 GetErrMsg() 和 Version 。詳細內容請參考 《TMcraft Node API 函式說明書》。
這是 TMcraft 節點最簡單的範例程式碼。
範例程式碼請在這邊下載
該範本可以定義為以下部分:
- 引用dll 作為參考(using TMcraft)。
- 引用 ITMcraftNodeEntry 介面至 UserControl 類別裡。該介面有兩個必需定義的函式: InitializeNode() 和 InscribeScript() 。
- InitializeNode() 在 Node UI 開啟時被觸發,並將 Node 與 TMflow 連接起來;從技術上講,這使得 TMcraftNodeAPI 物件 (TMNodeEditor) 可使用所有 TMcraft 函式,例如 DataStorageProvider.SaveData()。
- 當 Node UI 關閉時, InscribeScript() 會被觸發,開發人員應該在此函式透過 ScriptWriteProvider 函式來定義 TMscript 並寫入至 Flow 專案裡。
- 程式的其餘部分可通過各種 TMcraft 函式操作 TMflow。
更多開發細節請參考 TMcraft 開發套件裡的教學文案和範例程式。