C#学习笔记-调用HALCON代码

来源:互联网 发布:linux 服务编程 编辑:程序博客网 时间:2024/05/15 23:52

测试环境:
软件 - HALCON12.0汉化版
软件 - Visual Studio 2015
相机 - 笔记本自带摄像头

1,启动HALCON,选择助手,选择Image Acquisition,点击自动检测接口,点击代码生成,生成Halcon代码。
************************************************
这里写图片描述

2,将Halcon代码导出成C#文件(例子:HalconTest.cs)
************************************************
这里写图片描述
************************************************
这里写图片描述
************************************************
这里写图片描述

3,创建C# Winform工程,添加现有项,将HalconTest.cs添加进入工程
************************************************
这里写图片描述

4,添加引用,将halcondotnet.dll添加进入工程

5,打开工具箱,右击选择, 选择项
************************************************
这里写图片描述

6,点击浏览,选择库文件halcondotnet.dll,添加halcondotnet.dll的HWindowControl添加进入工具箱
************************************************
这里写图片描述
************************************************
这里写图片描述
************************************************
这里写图片描述

7,制作界面
************************************************
这里写图片描述

8,引用命名空间,添加按钮点击事件

using HalconDotNet;//...........HDevelopExport HA;public Form1(){   InitializeComponent();   HA = new HDevelopExport();   HA.InitHalcon();}//连续取像按钮点击事件private void btnCapture_Click(object sender, EventArgs e){    HA.RunHalcon(this.hWindowControl1.HalconWindow);//HWindow}

9,修改HalconTest.cs中的action方法,增加语句 HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle),将图片显示出来

private void action(){//.................................while ((int)(1) != 0){  ho_Image.Dispose();  HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);  HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle);//增加显示语句  //Image Acquisition 01: Do something} }

10,主界面会卡住,修改HalconTest.cs中的RunHalcon方法,将action的调用添加在后台线程中

 public void RunHalcon(HTuple Window) {   hv_ExpDefaultWinHandle = Window;   //****将action调用放入后台线程中   System.Threading.Thread th = new System.Threading.Thread(() =>   {       action();   });   th.IsBackground = true;   th.Start(); }

备注:使用PictureBox显示,很多异常没有排除…….

private void btnCapture_Click(object sender, EventArgs e){    //HA.RunHalcon(this.hWindowControl1.HalconWindow);    HWindow hw = new HWindow();    hw.OpenWindow(0, 0, this.pictureBox1.Width, this.pictureBox1.Height, this.pictureBox1.Handle, "visible", "");    HA.RunHalcon(hw);}
原创粉丝点击