海康工业相机排雷笔记03-事件功能解析

1、何谓事件
事件是一种消息传递机制,在事件机制中,有三种最重要的东西:
事件生产者、事件本身、事件消费者。
在这里插入图片描述
以上就是事件机制的最基本结构,事件从事件生产者流向事件消费者,整个过程传递的是事件这一信息载体。一般用作于某种情况发生时的即时响应。

2、如何理解事件机制
对于工业相机而言,事件机制在很多方面均有体现:图像回调、异常回调、事件回调等等。其中最常见的就是图像回调,当相机发送一张图像到达底层驱动,此时在底层驱动(事件生产者)处发生了“驱动端收到一张图像”这一事件,那么对应的图像回调函数(事件消费者)就会响应这一事件,进而执行该函数并返回图像数据指针。

3、如何理解Event Control功能
对于Event Control功能,其中包括Acquisition Start/End、Frame Start/End、Exposure Start/End等多种事件,开启对某种事件的响应功能后,当相机内出现这一事件动作,我们便可以在控制端获取到这一信息,以便后续针对性处理。
实际使用效果如下图所示:

在这里插入图片描述
Event Control功能常用于监测相机状态,一般用于获取相机在产生某种动作时的相机时间戳,常用于判断相机触发/采集动作等方面。

4、Event Control功能基础使用
参考示例:
MVS\Development\Samples路径下的Events示例
流程框图:
在这里插入图片描述
使用接口(以C接口为例):
选择事件:MV_CC_SetEnumValueByString()

nRet = MV_CC_SetEnumValueByString(handle,"EventSelector","ExposureEnd");
        if (MV_OK != nRet)
        {
            printf("Set Event Selector fail! nRet [0x%x]\n", nRet);
            break; 
        }

其中:“ExposureEnd”位置需填入所需使用的事件名称,需注意大小写。待写入的事件名称可通过MVS中的Event Control节点进行查看:
在这里插入图片描述配置事件响应:MV_CC_SetEnumValueByString()

nRet = MV_CC_SetEnumValueByString(handle,"EventNotification","On");
        if (MV_OK != nRet)
        {
            printf("Set Event Notification fail! nRet [0x%x]\n", nRet);
            break; 
        }

其中:“On”位置需填入对该事件的响应配置,可选“On”/“Off”
注册事件回调:MV_CC_RegisterEventCallBackEx()

nRet = MV_CC_RegisterEventCallBackEx(handle, "ExposureEnd", EventCallBack, handle);
        if (MV_OK != nRet)
        {
            printf("Register Event CallBack fail! nRet [0x%x]\n", nRet);
            break; 
        }

注意:该函数注册的回调函数只会响应指定相机产生的指定事件,若需使回调函数响应所有事件可使用MV_CC_RegisterAllEventCallBack()接口
注意:函数名应与注册事件回调中的名称相同

void __stdcall EventCallBack(MV_EVENT_OUT_INFO * pEventInfo, void* pUser)
{
    if (pEventInfo)
    {
        __int64 nBlockId = pEventInfo->nBlockIdHigh;
        nBlockId = (nBlockId << 32) + pEventInfo->nBlockIdLow;

        __int64 nTimestamp = pEventInfo->nTimestampHigh;
        nTimestamp = (nTimestamp << 32) + pEventInfo->nTimestampLow;

        printf("EventName[%s], EventID[%u], BlockId[%I64d], Timestamp[%I64d]\n", 
            pEventInfo->EventName, pEventInfo->nEventID,nBlockId,nTimestamp);
    }
}

打印结果:
在这里插入图片描述

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值