主要有兩種方式,
- 直接在halcon做完,匯入 program.cs ,直接呼叫class即可。
- 將匯出的Halcon Action 放入你要修改的地方或是元件內。
兩種有甚麼差異呢?
主要是元件上的 Modifiers 問題,而第二種方式可以直接在呼叫的元件動作內使用並修改,會來的簡單許多,但如果以 Halcon 為主,C# 只做人機介面,那就可以把整個 Halcon 輸出的內容貼在 program 內,時間會來的更快。
所以兩種方式皆可使用。
主要是元件上的 Modifiers 問題,而第二種方式可以直接在呼叫的元件動作內使用並修改,會來的簡單許多,但如果以 Halcon 為主,C# 只做人機介面,那就可以把整個 Halcon 輸出的內容貼在 program 內,時間會來的更快。
所以兩種方式皆可使用。
這篇主要先講第一項 直接帶入 program.cs
1. Halcon 導出程式
2. 將 Halcon DLL 加入參考 路徑(MVTec\HALCON\bin\dotnetXX) 或
可將 DLL 放入 C# 專案資料夾中的 debug 資料夾內,再加入參考
可將 DLL 放入 C# 專案資料夾中的 debug 資料夾內,再加入參考
3. 工具箱中新增 HwindowControl
工具箱標籤右鍵(Ex. 通用控制項) -> 選擇項目 -> .NET Farmework元件 -> 瀏覽
工具箱標籤右鍵(Ex. 通用控制項) -> 選擇項目 -> .NET Farmework元件 -> 瀏覽
找到剛剛的dotnetXX,就可看到工具箱新增 HwindowControl 元件
4. 將匯出的程式打開,將 public partial class HDevelopExport ... 全部複製於
VS C# 中 program.cs,並 using HalconDotNet;
這邊可能會發生錯誤,並沒有辦法 using 或是 最後不能 開始程式,說找不到DLL,
別急! 第五點會說原因
5. 將特別注意,如果你的Halcon版本是使用x86,那妳目標平台需改為x86
專案右鍵 -> 屬性 -> 建置 -> 平台 x86 ->平台目標 x86
5. 將特別注意,如果你的Halcon版本是使用x86,那妳目標平台需改為x86
專案右鍵 -> 屬性 -> 建置 -> 平台 x86 ->平台目標 x86
如此做法應該就沒有問題,接下來就可以試試看可不可以運作,
Test Funtion
- 新增元件 Button & HWindowControl
- Button_Click 中 HDevelopExport HD = new HDevelopExport();HD.RunHalcon(HWindowControl.HalconWindow);
- 將匯出的程式打開,將 public partial class HDevelopExport ... 全部複製於VS C# 中 program.cs,並 using HalconDotNet;
- OK Run Funtion
--------------------------------------------------------------------------------------------------------------
2017/11/22更新,很久沒有用網誌,都沒有發現有問題,少加東西,
感謝Holmes Chang網友幫我偵錯 :D
Farmer在program.cs內的public partial class HDevelopExport 有改一些地方,
Farmer只加入private void action(){},並且加入一段在
public partial class HDevelopExport,
2017/11/22更新,很久沒有用網誌,都沒有發現有問題,少加東西,
感謝Holmes Chang網友幫我偵錯 :D
Farmer在program.cs內的public partial class HDevelopExport 有改一些地方,
Farmer只加入private void action(){},並且加入一段在
public partial class HDevelopExport,
public void RunHalcon(HTuple Window)
{
hv_ExpDefaultWinHandle = Window;
action();
}
不行呀??? RunHalcon不是函試!
回覆刪除非常感謝,沒有你提醒我都忘記了
刪除我在program.cs 內 還有寫
public void RunHalcon(HTuple Window)
{
hv_ExpDefaultWinHandle = Window;
action();
}
最重要的是你要顯示在何處,通常在Halcon的Dispplay是指定內部的視窗名稱
刪除在action,你要找出你輸出的Dispplay的指令位置,
我把Dispplay的視窗名稱統一改為hv_ExpDefaultWinHandle
在一次給他視窗名稱就可