码迷,mamicode.com
首页 > Windows程序 > 详细

C#应用视频教程3.3 Halcon+C#测试

时间:2017-09-24 12:46:40      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:tao   3.3   运行   设置   视频教程   类库   关闭   新建   采集   

接下来我们考虑把Halcon的代码移植到C#程序上,首先找到halcon的dll(.NET类库有1.0,2.0,3.5的,如果你安装了更新版本的halcon则有更新的.NET类库,我们复制最新的dll到自己新建C#程序的Debug目录下)

技术分享

?

直接把这个DLL拖放到工具箱上,然后可以出现一个HWindowControl的控件(跟上一节OPENGL很像)

技术分享

?

把你的C#程序目标平台改成对应的电脑系统版本,同时目标框架4(个人经验,如果改成.NET Framework 3.5或者4.5都会有问题),可以直接F5运行一下看又没有报错

技术分享

?

执行Halcon的代码导出,先来看最简单的代码导出,打开官方的范例clip,然后导出为C#的程序(保持所有设置如下)

技术分享

?

在前面做好的C#程序中定义一个新的类,然后直接复制粘贴所有代码(顶部添加引用HalconDotNet,然后把class XXX删掉直接复制这个HDevelopExport)

技术分享

?

在主程序中直接窗体载入的时候写下面两句话,生成类的实例,然后执行实例的RunHalcon方法(不管你的Halcon程序多么复杂,在导出为C#类的时候都只有很少的几个方法)

技术分享

?

如果不能运行则注释掉报错的代码(比如disp_continue_message,就是类似于显示一个文字,箭头这种方法可能还不支持),这些不影响使用

技术分享

?

可以发现整个程序已经可以运行了(虽然还不能像Halcon那样把所有采集到的变量放到数组中,这些我们后面再考虑)

技术分享

?

那么能不能做的简单一点呢?我们如果只是希望展示一副图片,或者打开相机采集接口,首先还是用Halcon产生三种图片的获取方法(都可以用Image Acquistion方法自动生成代码)

技术分享

?

将产生的C#程序做一下重新编排,Action里面只放第一段的代码

技术分享

?

再把第二段的代码重新创建一个方法,并且放进去(跟前面的方法很类似)

技术分享

?

测试发现都是可以正常运行的,由此我们就可以自己扩充Halcon导出的类了

技术分享

?

那么如何支持相机的图像呢?跟官方导出的代码不同,我们这里需要注意while死循环中一方面采集,一方面就要显示(DispObj方法),此外由于是死循环,所以需要放到额外的线程中执行,否则界面会卡死

技术分享

?

有相机的打开,就要有对应的关闭方法,最方便的做法还是做一个全局的布尔值,如果是false,则不执行抓取图像和显示图像的操作(读这样可以测试使用官方的CloseFramegarbber方法跟前面开启对应,实际上还是会有很多问题,窗体会卡死)

技术分享

?

已经可以正常采集到相机的图像了(注意打开浏览静态图像之前先关闭掉相机采集图像,此外这里使用的还是绝对的文件路径,所以如果你的项目不在桌面上,第二幅图片可能打不开)

技术分享

?

?

更多教学视频和资料下载,欢迎关注以下信息:

我的优酷空间:

http://i.youku.com/acetaohai123

技术分享

?

我的在线论坛:

http://csrobot.gz01.bdysite.com/

技术分享

?

问题交流:

QQ:910358960

邮箱:acetaohai123@163.com

?

?

?

C#应用视频教程3.3 Halcon+C#测试

标签:tao   3.3   运行   设置   视频教程   类库   关闭   新建   采集   

原文地址:http://www.cnblogs.com/acetaohai123/p/7586774.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!