halcon和c语言混合编程,Halcon 17与 c# 混合编程

//

//  File generated by HDevelop for HALCON/DOTNET (C#) Version 10.0

//

//  This file is intended to be used with the HDevelopTemplate or

//  HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c#

using System;

using HalconDotNet;

public partial class HDevelopExport

{

public HTuple hv_ExpDefaultWinHandle;

// Main procedure

private void action()

{

// Local iconic variables

HObject ho_Image, ho_ImageGray;

// Local control variables

HTuple hv_Width, hv_Height;

// Initialize local and output iconic variables

HOperatorSet.GenEmptyObj(out ho_Image);

HOperatorSet.GenEmptyObj(out ho_ImageGray);

//dev_open_window(...);

ho_Image.Dispose();

HOperatorSet.ReadImage(out ho_Image, "C:/Users/Administrator/Desktop/猫¨.jpg");

HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle);

HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);

ho_ImageGray.Dispose();

HOperatorSet.Rgb3ToGray(ho_Image, ho_Image, ho_Image, out ho_ImageGray);

HOperatorSet.DispObj(ho_ImageGray, hv_ExpDefaultWinHandle);

ho_Image.Dispose();

ho_ImageGray.Dispose();

}

public void InitHalcon()

{

// Default settings used in HDevelop

HOperatorSet.SetSystem("do_low_error", "false");

}

public void RunHalcon(HTuple Window)

{

hv_ExpDefaultWinHandle = Window;

action();

}

}

2.建立c#工程

在VS中新建一个c#工程,记住框架要选 .NET Framework 4,不要手贱看到还有高版本的4.5就跑去选4.5

在“设计”中完成以下设计:

28bac144b9e6de73b1dd1090fc2e3a12.png 

如何添加按钮,在这里就不多说了。

上面的那个控件是HWindowsControl。

0c6f887e045a2ca81f91b26b80994f11.png

3.工具箱中添加Halcon窗口工具(首次使用需要)

如果是首次使用Halcon和c#混合编程,则需要向VS的工具箱中添加Halcon窗口工具HWindowControl。添加的方法是在“视图”->“工具箱”-> “所有Windows窗体”中右击,选择“选择项”

763a74699d8f3090d913a3f475d41215.png 

在弹出窗口中选择“浏览”

1d34bb7daaedf33eba8a09ef0d7cfae5.png 

在MVTech安装目录下查找:halcon12.0\bin\dotnet20或dotnet35文件夹,我这里是选的dotnet35文件夹,应该是和VS的版本相匹配。

找到文件夹下halcondotnet.dll添加即可。

6bb7380e4c5fcfb506a86f7f3392caf9.png

4.程序改写

接下来就是非常重要的程序改写阶段啦。

首先在程序头添加

using HalconDotNet;

接下来是一个坑,向namespace中添加导出的Halcon c#代码时一定得注意:必须把导出的代码放在控件的代码段后面。否则就会弹个错!!!

喏就是它了,public partial class HDevelopExport:

2852547acca15567a8c0d167d096c188.png

最后一步就是改写按钮控件的事件响应:

private void Open_Click(object sender, EventArgs e)

{

HDevelopExport HD = new HDevelopExport();

HD.RunHalcon(hWindowControl1.HalconWindow);

}

最后要注意,项目编译的时候,属性选X64 CPU

bd74e73693d6a23d06803b0767b21621.png

bb6a14f7e8823230fe1d22372b47ffce.png

写在后面的话 ,这里很重要,此乃精要所在

编译程序时,目标平台使用AnyCPU  程序会自动崩溃无提示。单步跟踪会在这里出错:

this.hWindowControl1 = new HalconDotNet.HWindowControl();

fc288f536f53220946b0b7102dc7b070.png

原因是调用   halcondotnet.dll与 halcon.dll两Dll出现的错误,因为我没有装Halcon,只用到这两个Dll,  我用的Dll是64位的,所以编译的时候,目标平台使用X64 即可,

d33f8dba34000cf9ae36df775f7d964d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值