Basler相机外部触发设置(Halcon)

摘要:
不要为软触发器设置grab _ Timeout Collection超时,使用C#中的set _ framegrabber_Callback设置回调方法。4.C#与Halcon合作,实现外部触发回调函数,以收集图像1HalconDotNet。HalconAPI。HFramegrabberCallbackelegateCallback;“开”);“grab_timeout”,
一、相机硬件接线图

2号引脚接传感器的触发信号引脚,5号与传感器共地连接。

Basler相机外部触发设置(Halcon)第1张

Basler相机外部触发设置(Halcon)第2张

二、pylon软件设置

Basler相机外部触发设置(Halcon)第3张

三、halcon软触发相机拍照
Halcon采集助手设置软触发:

1.set_framegrabber_param (AcqHandle, 'TriggerMode', 'On')
2.set_framegrabber_param (AcqHandle, 'TriggerSource', 'Software')

还有注意就是,软触发不要设置grab_timeout采集超时,否则会一直卡住Halcon的,硬触发可以开启!
那么怎么触发呢?点击下面红色方框里面的TriggerSoftWare就可以触发采集了!

Basler相机外部触发设置(Halcon)第4张

不能在Halcon里面用代码实现触发采集,因为采集图像是同步进行的。
可以使用C#联合Halcon开发,在C#里面利用set_framegrabber_callback设置回调方式进行,Halcon里面是不支持的!

四、C#联合Halcon实现外部触发回调函数采集图像
 1 HalconDotNet.HalconAPI.HFramegrabberCallback delegateCallback;  //定义回调函数委托
 2  
 3  
 4 //开启相机
 5 HOperatorSet.OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive",
 6 -1, "default", -1, "false", "default", "Devin",
 7 0, -1, out hv_AcqHandle);
 8 //下面开启硬触发
 9 HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "TriggerMode", "On");
10 HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "TriggerSource", "Line1");
11 //下面设置连续采集,上升沿触发,曝光模式等
12 HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "AcquisitionMode", "Continuous");
13 HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "TriggerSelector", "FrameStart");
14 HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "TriggerActivation", "RisingEdge");
15 HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "ExposureMode", "Timed");
16 //设置曝光时间
17 HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "ExposureTime", 80000.0);
18 //下面为设置用不超时
19 HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "grab_timeout", -1);
20 //给委托绑定
21 delegateCallback = MyCallbackFunction;
22  
23  
24 private int test = 1;//随便定义的一个变量,后面会取其地址带入回调函数的user_context
25  
26  
27 //回调函数
28 public int MyCallbackFunction(IntPtr handle, IntPtr context, IntPtr user_context)
29 {
30     try
31     {
32         HOperatorSet.GrabImage(out img, hv_AcqHandle);
33         if (this.hWindowControl1.InvokeRequired)//线程亲和性判定
34         {
35             this.Invoke(new MethodInvoker(() => { HOperatorSet.DispObj(img, this.hWindowControl1.HalconWindow); img.Dispose(); }));//把图像显示出来(这里是委托方式显示)
36         }
37         else
38         {
39             HOperatorSet.DispObj(img, this.hWindowControl1.HalconWindow);//把图像显示出来
40             img.Dispose();
41         }
42         return 0;
43     }
44     catch (Exception ex)
45     {
46         //  MessageBox.Show(ex.Message);//显示错误
47         return -1;
48     }
49 }
50  
51  
52 IntPtr ptr = Marshal.GetFunctionPointerForDelegate(delegateCallback);//取回调函数的地址
53 IntPtr ptr1 = GCHandle.Alloc(test, GCHandleType.Pinned).AddrOfPinnedObject();//取test变量的地址
54 HOperatorSet.SetFramegrabberCallback(hv_AcqHandle, "LineStatus", ptr, ptr1);//注册回调函数
55 IntegralforLove/java/article/details/94722689



免责声明:文章转载自《Basler相机外部触发设置(Halcon)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux中使用gdb dump内存【渗透测试】如何使用burpsuite对特殊密码进行爆破下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C/C++头文件一览

C/C++头文件一览 //////////////////////////////////////////////////////////////////////////C头文件(C89,C95)(C++98,C++03也包含) include <assert.h>    //诊断库include <ctype.h>     //...

mysql8中窗口函数

引用自: https://blog.csdn.net/yeshang_lady/article/details/102728513 在以前的MySQL版本中是没有窗口函数的,直到MySQL8.0才引入了窗口函数。窗口函数是对查询中的每一条记录执行一个计算,并且这个计算结果是用与该条记录相关的多条记录得到的。 1.窗口函数与聚合函数 窗口函数与聚合函数很像...

拓端数据tecdat|R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归

原文链接:http://tecdat.cn/?p=20882  1导言 这篇文章探讨了为什么使用广义相加模型 是一个不错的选择。为此,我们首先需要看一下线性回归,看看为什么在某些情况下它可能不是最佳选择。   2回归模型 假设我们有一些带有两个属性Y和X的数据。如果它们是线性相关的,则它们可能看起来像这样:       a<-ggplot(m...

Oracle 分析函数(转载)

  实际应用我们在做项目中常遇到类似这样的统计需求 , 列出一些数据列表,最后来一个合计的功能,类似如下:              姓名 工资 SMITH 800 ALLEN 1600 WARD 1250 JONES 2975 MARTIN 1250 BLAKE 2850 CLARK 2450 SCOTT 3000...

.net表达式计算器(中缀表达式转后缀表达式,支持20多个数学函数,支持函数嵌套)

最近在网上查了一下表达工计算器的类库,发现Java版本的有一个比较成熟的叫W3EVal,好像是一个IBM工程师写的,.net就很少了(可能是我了解不够多),但投机取巧的实现思路有很多,比如:  (1)将Javasript中代码编译成.net类库,利用Javascript中的eval函数来实现;  (2)利用ScriptControl执行JavaScript...

VC中Spin控件的使用

微调按钮设置成set buddy inter选上 然后可以(1)通过 setbuddy+setrange函数    或(2)auto buddy自动选上,只要编辑框的tab order 比微调按钮小1就可以自动了 (另转)VC中Spin控件的使用 http://leichaofu.blog.163.com/blog/static/459481820098...