140 likes | 297 Views
客制人機 進階版. DLL 客制開發. 透過 Import action 可以做到什麼? 假如想要做的動作,新代的 action 沒有提供,可以自己撰寫(例如: R 值相加 .. 等等) 透過 Plugin 可以做到什麼? 自己決定加什麼物件在人機上(例如: timer.. 多個 OCBrowser…ListView… 等等) 自己決定事件內容(例如: KeyDown…On_Show… ) 自己定義 action. 客制人機. 初階版 可利用 EHMI 修改原本的標準人機畫面(不建議修改) 可利用 EHMI 在標準人機上新增一個頁面
E N D
DLL客制開發 • 透過Import action可以做到什麼? • 假如想要做的動作,新代的action沒有提供,可以自己撰寫(例如:R值相加..等等) • 透過Plugin可以做到什麼? • 自己決定加什麼物件在人機上(例如:timer..多個OCBrowser…ListView…等等) • 自己決定事件內容(例如:KeyDown…On_Show…) • 自己定義action
客制人機 • 初階版 • 可利用EHMI修改原本的標準人機畫面(不建議修改) • 可利用EHMI在標準人機上新增一個頁面 • 可利用新代提供的Action去做一些動作 • Import Action • 可自行定義action,例如R3=R2+R1這類標準action沒有提供的功能 • Plugin • 上述都只是客制XML而已,Plugin是完全客制,不限定一定要用XML layout畫面,可自由加入物件,加timer也是可以的。像form一樣有一些特殊事件,例如On_Load On_Show On_Hide…
Import Action • 自行定義action • 將想要執行的動作寫成一個dll檔 • 如何建立專案檔:請參考客制教學文件第三章 • 專案中的程式應該如何撰寫:請參考客制教學文件2-3-1 • 為這個action命名,例如MyAction_AddRValue • 在XML中適當的位置加入此action • 如何給我的action一個名字,如何呼叫我的action:請參考客客制教學文件2-3-2 • 完成 • 完整範例:請參考客制教學文件2-3-3,或者附件中的Dll Action資料夾
Import Action • 當action dll無效時,如何驗證是自己寫錯,還是環境有問題: • 請套用附件中的W32\OpenCNC Shared資料夾和W32\Program Files資料夾,測試 F3客制功能鍵-F1呼叫客制頁面-F2 Dll Action 是否會讓上面數下來第三個input的值等於第一個減第二個的值,是否有顯示按鈕按下時的時間。 如果有,則環境沒有問題,請檢查是否自己那個環節有寫錯。如果沒有,請參考客制教學文件第四章,檢查使用版本是否不支援此功能。
Import Action • 以下列出使用者常見錯誤,倘若發現自己的action dll無效時,可檢查是否是下列問題: • Project.beproj檔內容寫錯 • 宣告的ID和XML的action寫的不一樣 • FileName檔名寫錯 • ClassName和ProcName和程式中寫的不一樣 • DLL擺錯地方 • Dll擺放位置請參考客制教學文件1-5
Plugin • Plugin主要使用的是新代物件『Screen』,Screen的定位其實有一點像微軟的物件『Form』 • 擁有On_Load(On_Show On_Hide)事件,使用者可決定On_Load(On_Show On_Hide)這些時間點要做哪些事情 • 例如:On_Show時參考參數3201,決定browser中要顯示哪一個XML • 可以自由加入物件 • 例如timer,定時去執行某些動作 • 例如ListView,讓畫面顯示列表元件 • 可以自己定義action,不需要再透過Import dll,直接定義在Plugin的程式裡面即可
Screen Scr_Alarm Scr_Monitor ….. Scr_PosCoord Plugin screen2 標準人機有很多個畫面,還有很多個action, 我們利用Screen來做到模組化的概念, 將關係較密切的放在同一個screen中一起管理 Plugin screen1 ….. Plugin screen N
Plugin • 前面提供的客制方式都只能在OCBrowser和OCFenuabr這二種XML中打轉而已。 Plugin則擺脫這二樣物件的束縛,畫面上想要擺什麼物件完全可由自己決定,但依舊建議您使用至少一個OCBrowser,因為該物件可處理非常多人機與核心溝通的問題,不需要再費心自己去撰寫
Plugin • 自行定義Screen • 撰寫plugin程式 • 如何建立專案檔:請參考客制教學文件第三章 • 專案中的程式應該如何撰寫:請參考客制教學文件2-6-2 • 強烈建議:由於Plugin的程式架構較為複雜,建議可以直接改寫附件中的Plugin程式,會省時很多,並且減少很多錯誤發生 • 定義一個action名稱,用來叫出Plugin • 在XML中適當的位置加入此action • 如何給我的action一個名字,如何呼叫我的action:請參考客制教學文件2-6-3 • 完成 • 完整範例:請參考客制教學文件2-6-4,或者附件中的Plugin資料夾
Plugin • 當Plugin無效時,如何驗證是自己寫錯,還是環境有問題: • 請套用附件中的W32\OpenCNC Shared資料夾和W32\Program Files資料夾,測試 F3客制功能鍵-F5 呼叫Plug in 如果有切換畫面,則環境沒有問題,請檢查是否自己那個環節有寫錯,如果沒有改變,請參考客制教學文件第四章,檢查使用版本是否不支援此功能。
Plugin • 以下列出使用者常見錯誤,倘若發現自己的Plugin無效時,可檢查是否是下列問題: • Plugin.config檔內容寫錯 • 宣告的ID和XML的action寫的不一樣 • FileName檔名寫錯 • ClassName和ProcName和程式中寫的不一樣 • 程式內容有誤 • 沒有將物件add to controls • 沒有給物件大小和位置和顏色 • 附件中的Plugin code在宣告物件時,都有給予物件需要設定的屬性,如果直接拿範例code當範本,可避免不少類似的問題 • DLL擺錯地方 • Dll擺放位置請參考客制教學文件1-6 • Plugin.config擺錯位置 • 此文件擺放位置請參考客制教學文件1-6
HomeWork – Import dll • 前置:準備好A.xml,上頭有三個input對應到R5/R6/R7,並且有一個Panel • F3客制功能鍵 • F3-F1呼叫A.xml • F3-F2利用eHMI執行action去改變A.xmlPanel的顏色 • F3-F3利用Import Dll執行action讓R5=(R6)/2+R7
HomeWork – Plugin • 前置:準備好A.B.C.D.xml,左上角利用一個label分別寫A.B.C.D以便判別 • F3客制功能鍵 • F3-F5呼叫Plugin • Plugin頁面分配有限制 • 左邊一個OCBrowser,右邊一個OCbrowser • Plugin的On_Show有限制 • 當參數3201為0時,右邊的OCBrowser讀取 A.xml • 當參數3201 不為0時,右邊的OCBrowser讀取 B.xml • 左邊的OCBrowser讀 C.xml • F3-F6切換右方的畫面XML • 在Plugin裡面寫action讓將右邊的OCBrowser讀 C.xml,再按一下讀 B.xml,如此循環下去C->B->C->B->…. • 按下PageDown時,左邊的OCbrowser讀取D.xml,再按一下變成A.xml,如此循環下去D->A->B->C->D->…. • 按下PageUp時,左邊的OCbrowser讀取B.xml,再按一下變成A.xml,如此循環下去C->B->A->D->C->….