Edited by Foxit PDF Editor Copyright (c) by Foxit Software Company, 2004-2007 For Evaluation Only. 中文手冊 程式指引 for Visual Basic 1
ProgrammersGuide for Visual Basic 在此章節您將學習如何快速地使用 Microsoft Visual Basic 和 HALCON/COM 的介面, 來發展 HALCON 的應用程式, 我們將會用簡單的步驟來告訴您如何完成 而這個小程式本身就是一個 GUI 的介面 此外您也可以在其它的範例程式中得到其它的程式碼 ( 如 Visual Basic 以及 HALCON 的程式碼 ), 讓您獲得一些額外的資訊 在此章節中所撰寫的程式碼早已跟其它的範例, 一起放在目錄 % HALCONROOT%\examples\vb\Manual 中 然而我們還是希望您照著底下的步驟, 在程式中實際操作過一次, 如此你才能實際了解如何以 Visual Basic 來開發程式, 並可藉由這些步驟獲取一些額外的資訊 請注意, 當您使用 HALCON/COM 和 Visual Basic 時, 您需要在 Windows NT 4.0( Service Pack 4) 或 Windows 2000 Windows Xp 的作業環境下才可使用 ; 此外這些專案的案範例皆由 Visual Basic6.0 所產生 1 First Step: The GUI Go ahead and 1. 開啟 Visual Basic, 產生一個 New Project 的對話方塊, 您可以選擇所要的專案型態 : 選擇 New 標籤頁, 在此範例中我們選擇 Standard EXE 並開啟 2. 點選功能表 Project 項目中的 Components, 產生一個 Components 對話方塊, 這時對話方塊中會列出系統中已安裝之元件 : 選擇 Controls 標籤頁, 然後載入 Halcon/COM library 項目 3. 按下 F2 鍵, 會顯示物件瀏覽器, 你能在這裡找到 HImageX 並且瀏覽某些對應的 method 選取某個 method 後, 就能在物件瀏覽器底部的狀態區域, 顯示出它的參數, 這有如一個簡短的輔助文字 最後關閉這個物件瀏覽器 4. 現在查看螢幕的表單標題為 Form1, 另外在螢幕的右邊我們可以看到一個區域的標題叫 Properties - Form1, 你可以在這個屬性視窗裡改變 active GUI 物件的屬性 現在點選 Form1 的 Caption 並且改變其字串成為 HalconX example 你應該可以在表單標題上立即看到更改的結果 2
圖 10.1: 完成 10.1 的所有步驟之後, 你應該可以完成像圖中的設定 5. 將表單調整到適當的大小 6. 看到左邊的工具箱 : 你可以在這裡找到全部的控制項, 並且可以將它放置到表單裡面 每個控制項都是由一個小小的 icon 所顯示出, 若移動您的滑鼠在不同的 icon 上, 可看到每個 icon 的名稱 你應該會找到一個叫作 HwindowXCtrl 的 icon, 你猜對了! 這就是我們 HALCON 的 ActiveX 控制項 7. 產生一個 HWindowXCtrl 的 icon 在表單中畫出一個矩形區域 ( 大約近似於正方形 ), 放開滑鼠鍵時這個方形區域就會變成黑色的 8. 在左邊的工具箱選擇 CommandButton 的 icon, 在表單中 HALCON window 控制項底下畫出一個 button, 並在屬性盒中改變 button 的 caption 為 Next >> 9. 在工具箱中選擇 Label, 並且在表單中的 button 控制項下面, 畫出一個稍為長的方形區域 如果表單空間上的不足, 請視需要自行調整大小 10. 為了配合之前產生的控制項, 可重新調整表單的大小 最後螢幕上的表單看起來應該和圖 10.1 是一樣的 3
2 Second Step: Functionality 現在你已經完成 GUI 的部份了, 再來你應該開始某些的應用了 : 1. 在表單的任意一個地方按右鍵並選擇 View Code 這時會有一個程式碼視窗覆蓋在表單之上 在這個視窗中有二個 combo box 我們在左邊的 combo box 選擇 Form, 當我們執行程式時, 會先起始表單, 則這個區域的程式碼會先被執行到 2. 在副程式中插入一行程式如下 : Private Sub Form_Load() Label1.Caption = "Click Next to start" 當程式開始時, 將在 bottom 上改變 label 的文字 3. 接下來我們將宣告某些重要的變數 : 在 source code 視窗左邊的 combo box 選擇 General, 並在程式的最前端插入底下二行程式 Dim Monkey As New HImageX Dim Window As HWindowX online selection boxes 將會幫助您, 把所想要使用的物件類型顯示出來 在此處我們只要產生二個物件 :HImageX 和 HWindowX 在第一行中關鍵字 New 的原因是我們要 HImageX 物件被 instantiate( 即配置一塊記憶體給它 ) 第二行的 HWindowX 是不一定需要的, 因為它是一個 ActiveX 控制項, 當我們在表單中產生它時, 它已經是一個 instantiate 4. 當我們知道物件 Monkey 已經是一個 instantiate( 雖然它還沒初始一個影像 ), 但變數 Window 仍不知參照何處, 所以在 Form_Load() 插入另一行程式, 如下 : Private Sub Form_Load() Set Window = HWindowXCtrl1.HalconWindow Label1.Caption = "Click Next to start" 現在, 變數 Window 參照到 ActiveX 控制項的 HWindowX 5. 切換到 Command1 到另一個副程式中插入二行程式, 如下 : Private Sub Command1_Click() Call Monkey.ReadImage ("monkey") Call Window.DispObj(Monkey) 6. 按下 F5 開始執行並且查看其結果! 當我們在輸入程式碼時,Visual Basic 有一個非常便利的特點, 即 : 當它知道這個類別的方法時, 它就允許你從選單中選取你所要的方法 ( 見圖 10.2) 當你呼叫一個方法時, 你也可以透過它的幫助, 在右邊的選單中的提示, 取得正確的參數,( 見圖 10.3) 假如沒有任何的型 4
態顯示出來, 那麼就需要一個 VARIANT Figure 10.2: Visual Basic helping you to select a method. Figure 10.3: Visual Basic helping you with the correct parameters. 3 Final Step: More Functionality 到目前為止的程式只能作一些基本的應用, 不能作其它更多的應用, 但它只需要十行程式碼! 底下我們將延伸這些功能, 將我們的應用程式轉成較小影像的處理 : 1. 在變數宣告的起點擴充一些變數宣數, 如下 : Dim Monkey As New HImageX Dim Window As HWindowX Dim Region As HRegionX Dim Eyes As HRegionX Dim State As Integer 雖然這些宣告不是必需要的 (Visual Basic 會自動的宣告變數 ), 然而事先宣告卻是一很好的作法 5
2. 選取副程式 Command1_Click() 並改變如下 : Private Sub Command1_Click() If State = 3 Then End If State = 2 Then Set Eyes = Region.SelectShape("area", "and", 500, 50000) Set Eyes = Eyes.SelectShape("anisometry", "and", 1, 1.7) Call Window.DispObj(Monkey) Call Window.DispObj(Eyes) Label1.Caption = "click Finish to terminate" Command1.Caption = "Finish" State = 3 If State = 1 Then Set Region = Monkey.Threshold(128, 256) Set Region = Region.Connection() Call Window.SetColored(12) Call Window.DispObj(Region) Label1.Caption = "Next, the ape's eyes will be selected" State = 2 If State = 0 Then Call Monkey.ReadImage("monkey") Call Window.DispObj(Monkey) Label1.Caption = "Next, the image will be segmented into several regions" State = 1 3. 透過一個共用的影像處理範例, 執行這個小程式並觀看它的結果 6
4 其它的範例 有更多的程式碼範例可以讓你學習如何使用 HALCON/COM 這些範例可以在底下的目錄中找到 : %HALCONROOT%\examples\\ 底下的例表中提供更多範例且簡短解譯它的功能 我們建議在你的工作目錄中另外建立新的練習範例, 去對這些範例進行試驗 1. %HALCONROOT%\examples\vb\Applications\FA\ 這個範例是在顯示如果使用 correlation-based pattern matching 2. %HALCONROOT%\examples\vb\Applications\Monitoring\ 這個範例是在顯示道路交通的路口監控 3. %HALCONROOT%\examples\vb\Online\Barcode\ 這個範例是在顯示條碼的閱讀 4. %HALCONROOT%\examples\vb\Online\Measure\ 如何使用測量工具的例子 5. %HALCONROOT%\examples\vb\Online\Movement\ 這個範例是使用不同的影像來找尋移動 6. %HALCONROOT%\examples\vb\Segmentation\ An example illustrating the possibilities for interactive image processing applications. 7. %HALCONROOT%\examples\vb\Tools\Calibration\ 這個範例是在顯示如何校正相機 8. %HALCONROOT%\examples\vb\Tools\Matching\ 這個範例是在顯示如何使用 shape-based matching 9. %HALCONROOT%\examples\vb\Tools\Measure\ 這個範例是在顯示如何量測 IC 的接腳 10. %HALCONROOT%\examples\vb\Manual\ 在此章節中介紹 我們也可以在 examples\vb.net examples\c# examples\delphi 和 examples\mfc 子目錄中找到其它的範例, 這些範例也說明了在 Visual Basic.NET C# Borland Delphi 或其它 Microsoft Visual C++ 的 MFC 中如何使用 HALCON/COM 7