Basler相机外部触发设置

一、相机硬件接线图

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

 二、pylon软件设置

三、halcon软触发相机拍照

Halcon采集助手设置软触发:

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

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

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

四、C#联合Halcon实现外部触发回调函数采集图像

 HalconDotNet.HalconAPI.HFramegrabberCallback delegateCallback;  //定义回调函数委托
 
 
//开启相机
HOperatorSet.OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive",
-1, "default", -1, "false", "default", "Devin",
0, -1, out hv_AcqHandle);
//下面开启硬触发
HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "TriggerMode", "On");
HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "TriggerSource", "Line1");
//下面设置连续采集,上升沿触发,曝光模式等
HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "AcquisitionMode", "Continuous");
HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "TriggerSelector", "FrameStart");
HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "TriggerActivation", "RisingEdge");
HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "ExposureMode", "Timed");
//设置曝光时间
HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "ExposureTime", 80000.0);
//下面为设置用不超时
HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "grab_timeout", -1);
//给委托绑定
delegateCallback = MyCallbackFunction;
 
 
private int test = 1;//随便定义的一个变量,后面会取其地址带入回调函数的user_context
 
 
//回调函数
public int MyCallbackFunction(IntPtr handle, IntPtr context, IntPtr user_context)
{
    try
    {
        HOperatorSet.GrabImage(out img, hv_AcqHandle);
        if (this.hWindowControl1.InvokeRequired)//线程亲和性判定
        {
            this.Invoke(new MethodInvoker(() => { HOperatorSet.DispObj(img, this.hWindowControl1.HalconWindow); img.Dispose(); }));//把图像显示出来(这里是委托方式显示)
        }
        else
        {
            HOperatorSet.DispObj(img, this.hWindowControl1.HalconWindow);//把图像显示出来
            img.Dispose();
        }
        return 0;
    }
    catch (Exception ex)
    {
        //  MessageBox.Show(ex.Message);//显示错误
        return -1;
    }
}
 
 
IntPtr ptr = Marshal.GetFunctionPointerForDelegate(delegateCallback);//取回调函数的地址
IntPtr ptr1 = GCHandle.Alloc(test, GCHandleType.Pinned).AddrOfPinnedObject();//取test变量的地址
HOperatorSet.SetFramegrabberCallback(hv_AcqHandle, "LineStatus", ptr, ptr1);//注册回调函数

 

附完整的代码下载链接:

https://download.csdn.net/download/integralforlove/11286024


转载自:

https://blog.csdn.net/IntegralforLove/article/details/94722689


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864