06.VisionPro腳本詳解

一.VisionPro腳本的種類及功能

VisionPro 腳本可以定製或擴展 QuickBuild 的功能,主要表現在以下幾個方面:

  • 根據其他工具的運行結果有條件的運行視覺工具
  • 對視覺工具的執行結果進行附加計算
  • 創建或定製可重複利用的工具

當你創建Quick Build程序運行時,VisionPro在特定的點執行腳本程序,這些腳本程序可能代替正常的VisionPro代碼,亦可能附加在VisionPro代碼後執行.

在QuickBuild應用程序中,有三種類型的腳本:

  • ToolGroup 腳本: 在 ToolGroup 中添加腳本,可以控制 ToolGroup的運行行爲
  • Job 腳本: 作業腳本可以對取像過程進行控制,設置取像參數,控制取像行爲,例:設置曝光、頻閃、自動對焦等
  • ToolBlock 腳本: ToolBlöck 腳本使你可以定製或擴展視覺工具的功能,或者對工具的運行結果進行邏輯判斷

二.三種腳本的具體功能和繼承關係以及類成員

2.1 ToolGroup

功能: 能夠控制 ToolGroup 中的每一個視覺工具的單獨執行,並能控制它們的執行的先後順序,而且可以調整各個視覺工具的輸入輸出.例如:你可以利用 Patmax 工具測得的 scale 結果來調整caliper 工具的輸入參數每一個 Job 中至少含有 1 個ToolGroup (默認爲 1個) ,當含有多個 ToolGroup 時,每個 ToolGroup 都可以有自己的獨立腳本,各個 ToolGroup 腳本之間不會相互影響.

繼承關係及類成員: ToolGroup腳本( CogToolGroupBaseScript)繼承於 ICogToolGroupScript
CogToolGroupBaseScript 的含有如下成員:

  • ToolGroup :可以通過這個成員來獲得控制你腳本程序的CogToolGroup
  • Initialize: 當你關閉腳本編輯器、編譯腳本或從一個 Vpp 文件加載腳本的時候會調用此方法
  • GroupRun: 在 ToolGroup 運行時,如果還回值設爲 True ,這個方法將會運行, Visionpro 將運行此 ToolGroup 中的所有工具;如果還回設爲Fálse ,將由用戶來編寫代碼來運行 ToolGroup 中的工具,請注意,一般使用 toolGroup.RunTool 來運行 TooIGroup 中的工具而不是視覺工具中的 Run 方法
  • ModifyLastRunRecord: 當 TooIGroup 創建 Last Run Record 的時候會調用此方法,你將可以通過重寫此方法來向現有的Last Run Record 中添加新的 records 或 graphics.

CogToolGroup 的含有如下成員:

  • RunTool : 運行 CogToolGroup 中的單個工具,僅能通過 GroupRun 方法來調用 RunTool 方法,並且 GroupRun 需要爲之提供消息和結果參數
  • Tools: 此屬性還回 ToolGroup 中的工具集
  • AddGraphicToRunRecord: 在上面所介紹的 ModifyLastRunRecord 中運用 AddGraphicToRunRecord 方法,你可以將graphics 添加到 Last Run Record 中
  • DefineScriptTerminal,GetScriptTerminalData,SetScriptTerminalData: 在 ToolGroup 中,你可以用 DefineScriptTerminal 創建終端,並可以利用 GetScriptTerminalData 和 SetScriptTerminalData與終端進行數據交互.

說明: 爲了能夠在 TooIGroup 腳本中獨立運行視覺 tools ,你可以使用toolGroup 的 Tools 屬性.你可以通過兩種方法來引用視覺工具,一是通過索引,二是通過工具名稱.一般來講,通過名稱來引用視覺工具更爲方便,因爲你可以爲其定義有實際意義的名稱,以便於理解和記憶.例如:
CogBlobTool _cogBlob = (CogBlobTool) mToolBlock.Tools["CogBlobTool1"];//通過名稱
CogBlobTool _cogBlob = (CogBlobTool) mToolBlock.Tools[4];//通過索引
使用腳本的一個重要原因就是利用常規 QuickBuild 用戶接口來對工具運行的結果進行計算非常困難,例如,計算多個工具的運行結果.不過你可以在腳本中來實現此功能,在 ToolGroup 腳本中,爲了使計算結果作爲一個值輸出,您需要定義輸出終端.終端的定義方法是在 Initialize 函數中調用 toolGroup 的 DefineScriptTerminal 方法,終端定義成功後,終端的名稱將出現在 ToolGroup 輸入輸出樹中,您可以將之連接到其他的工具上.

2.2 Job

功能: 相比較 ToolGroup 腳本, Job 腳本使你能夠使用 CogJob 對象,你可以利用 Job 腳本改變取像過程,例如:設置曝光、頻閃、自動對焦、每取一次像改變一次取像參數.

繼承關係及類成員: Job 腳本( CogJobBaseScript)繼承自 ICogJobScript 類
CogJobBaseScript 有如下成員:

  • job: 通過此成員可以獲得控制您腳本的 CogJob
  • AcqFifoConstruction: 這個方法在"取像 FIFO" 與作業建立聯繫的時候調用,你可以通過它來一次性設置"取像 FIFO"
  • PreAcquisition: 這個函數在 StartAcquire 之前調用,以給你在取像之前改變"取像 FIFO" 的機會
  • PostAcquisition: 這個函數在 CompleteAcquire 之後調用,以給你在取像之後改變"取像 FIFO" 的機會
  • PostAcquisitionRef: 這個函數和 PostAcquisition 類似,但是 image 是以引用的方式傳遞,如果這個方法返回 Ture , VisionPro 將處理這個 image,如果這個方法返回 False ,這個 image 將不被處理, QuickBuild 接着取下一個 image ,這可以使你能夠在處理所取的多個 image 之前將它們聯合在一起.(如果 PostAcquisition 和 PostAcquisitionRef 都被重寫,PostAcquisition 將被忽略.)

2.3 ToolBlock

ToolBlock 腳本使你可以定製或擴展視覺工具的功能,或者對工具的運行結果進行邏輯判斷,當你使用應用程序嚮導的時候,所有的 ToolBlock 腳本都會移撞到 Visual Studio 應用程序中.
使用場合:

  1. 動態創建輸入/輸出的時候
  2. 獲取 CogToolBlock 中所有視覺工具的全部 API 接口的時候
  3. 需要向 Record 中添加 Graphic 的時候

2.4 關係總結

一個ToolGroup包含一個(或多個Job),一個Job包含一個(或多個ToolBlock).如圖 2.4 所示:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章