海康工业相机SDK基于C#关于IO输入输出的控制

前言

海康工业相机功能模块sdk提供了很多相机的接口,本文主要介绍下相机的io相关的控制。例如在通过io输入触发相机拍照。通过io输出传递拍照成功,或者存图成功的信号等。

IO输入

IO输入的主要作用就是,相机通过IO管脚,收到1个IO信号,来触发相机拍照;

  • 触发模式:TriggerMode设置为1,开启触发模式
  • 触发源选择:TriggerSource设置为0,选择line0,也可以选择line2,或者选择anyway;line0、line2取决于硬件电路接线,anyway支持软触发、硬触发同时使用,需要看相机是否支持
  • 沿信号TriggerActivation:默认上升沿触发(可以不设置)
  • 触发缓存TriggerCacheEnable:默认不开启。当相机同时收到两个触发信号时,不开启此功能,相机只会响应1个信号,出一张图;开启后,相机会自动缓存第二个信号,上个信号处理完毕后,立即处理缓存信号
  • 触发延时TriggerDelay:收到信号后,固定延迟一段时间再曝光
  • 滤波设置 LineDebouncerTime:去除信号毛刺抖动,根据实际情况进行调节
    //C#代码段:硬触发模式初始化配置
    int nRet;
    nRet = m_MyCamera. MV_CC_SetEnumValue_NET( "AcquisitionMode", 2);
    //0:SingleFrame 1:MultiFrame 2:Continuous 
    nRet = m_MyCamera.MV_CC_SetEnumValue_NET( "TriggerMode", 1);//0:off 1:on
    nRet = m_MyCamera.MV_CC_SetEnumValue_NET("TriggerSource", 0);//line2也可做输入源,非光耦
                                                          //0:Line0 1:Line1 2:Line2  7:Software 8:FrequencyConverter 13:anyway
    nRet = m_MyCamera.MV_CC_SetEnumValue_NET( "TriggerActivation", 0);//0:Rising Edge  1:Falling Edge 2:LevelHigh 3:LevelLow
    nRet = m_MyCamera.MV_CC_SetFloatValue_NET("TriggerDelay", 0);//根据实际情况设置,默认0 us
    nRet = m_MyCamera.MV_CC_SetBoolValue_NET("TriggerCacheEnable",true);//开启后会默认缓存1个信号
                                                                  //滤波设置
    nRet = m_MyCamera.MV_CC_SetEnumValue_NET("LineSelector", 0);//0:Line0  2:Line2 
    nRet = m_MyCamera.MV_CC_SetIntValue_NET("LineDebouncerTime", 10);//硬件滤波时间,可加大此参数防抖us

    与MVS对应:

IO输出

输出可以输出事件也可以控制光源:

  • strobe输出,配合频闪光源拍摄,IO输出跟随曝光,输出周期与曝光周期同步
  • software输出,用户自定义时刻输出,用户自主控制,必要时刻输出OK或NG信号(事件)

strobe输出配合频闪光源:IO输出与曝光同步

//Strobe输出
nRet = m_MyCamera.MV_CC_SetEnumValue_NET( "LineSelecto_NETr", 1);
//0:Line0 1:Line1 2:Line2 
nRet = m_MyCamera.MV_CC_SetEnumValue_NET("LineMode", 8);//仅LineSelector为line2时需要特意设置,其他输出不需要
                                                 //0:Input 1:Output 8:Strobe 
int DurationValue = 0, DelayValue = 0, PreDelayValue = 0;//us
nRet = m_MyCamera.MV_CC_SetIntValue_NET("StrobeLineDuration", (uint)DurationValue);
//strobe持续时间,设置为0,持续时间就是曝光时间,设置其他值,就是其他值时间
nRet = m_MyCamera.MV_CC_SetIntValue_NET("StrobeLineDelay", (uint)DelayValue);//strobe延时,从曝光开始,延时多久输出
nRet = m_MyCamera.MV_CC_SetIntValue_NET("StrobeLinePreDelay", (uint)PreDelayValue);//strobe提前输出,曝光延后开始
                                                                      //--------------------------------------------------------------------------------------------------
nRet = m_MyCamera.MV_CC_SetBoolValue_NET("StrobeEnable", true);//Strobe输出使能,使能之后,上面配置参数生效,IO输出与曝光同步
//Strobe输出,多用作点亮频闪光源,sensor快门类型为Global相机都支持,rolling需注意相机是否支持

Software输出,IO输出与LineSource同步

//IO输出做NG信号用
//参数初始化
nRet = m_MyCamera.MV_CC_SetEnumValue_NET( "LineSelector", 2);
//0:Line0 1:Line1 2:Line2 
nRet = m_MyCamera.MV_CC_SetEnumValue_NET( "LineMode", 8);//仅line2需要设置
                                                 //0:Input 1:Output 8:Strobe 
nRet = m_MyCamera.MV_CC_SetEnumValue_NET( "LineSource", 5);
//0:ExposureStartActive 5:SoftTriggerActive  6:HardTriggerActive
int DurationValue1 = 1000, DelayValue1 = 0, PreDelayValue1 = 0;//us
nRet = m_MyCamera.MV_CC_SetIntValue_NET("StrobeLineDuration", (uint)DurationValue1);
nRet = m_MyCamera.MV_CC_SetIntValue_NET( "StrobeLineDelay", (uint)DelayValue1);//strobe延时,从曝光开始,延时多久输出
nRet = m_MyCamera.MV_CC_SetIntValue_NET( "StrobeLinePreDelay", (uint)PreDelayValue1);//strobe提前输出,曝光延后开始
nRet = m_MyCamera.MV_CC_SetBoolValue_NET( "StrobeEnable", true);
//Strobe输出使能,使能之后,上面配置参数生效,IO输出与LineSource同步
//-------------------------------------------------------------------------------------
//输出IO信号命令
nRet =m_MyCamera. MV_CC_SetCommandValue_NET("LineTriggerSoftware");

电平反转,通过快速反转电平状态,来模拟一个信号输出
当然这种控制电平变化时间做不到精确控制,只能适用于那种不太严格要求信号质量的场景

//电平反转
//IO输出做NG信号用
//参数初始化
nRet = m_MyCamera.MV_CC_SetEnumValue_NET( "LineSelector", 2);
//0:Line0 1:Line1 2:Line2 
nRet = m_MyCamera.MV_CC_SetEnumValue_NET("LineMode", 8);//仅line2需要设置
                                                 //0:Input 1:Output 8:Strobe 
                                                 //信号输出----------------------------------------------------
nRet = m_MyCamera.MV_CC_SetBoolValue_NET("LineInverter", true);//电平反转,也可用作IO输出,连续两次翻转可以输出一个IO信号
Thread.Sleep(10);//延时就相当于电平持续时间,也可以不设置
nRet = m_MyCamera.MV_CC_SetBoolValue_NET("LineInverter", false);

本文参考了其他的博主的C语言版本,侵权删https://blog.csdn.net/qq_23107577/article/details/114106514?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%B5%B7%E5%BA%B7sdk%20io&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-114106514.142^v94^insert_down28v1&spm=1018.2226.3001.4187

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
海康工业相机SDK是用于开发基于海康相机的应用程序的软件开发工具包。它提供了一系列的API和函数,用于控制相机的各种功能,如图像采集、图像处理、参数调整等。使用海康工业相机SDK可以方便地与相机进行通信,并进行自定义的开发和集成。 要进行海康工业相机SDK开发,首先需要下载并安装相应的SDK软件包。然后,在开发环境中配置SDK,并使用提供的API进行开发。具体步骤如下: 1. 下载SDK软件包:访问海康官网或联系销售代表获取相应的SDK软件包。根据自己的操作系统选择正确的版本进行下载。 2. 安装SDK软件包:将下载的SDK软件包解压到指定的目录,并按照安装说明进行安装。 3. 配置开发环境:根据使用的开发语言和开发环境,配置相应的编译器和开发工具。例如,如果使用C++进行开发,需要配置编译器和IDE。 4. 导入SDK库文件:在开发环境中创建一个新项目,并将SDK提供的库文件导入到项目中。这样可以在代码中使用SDK提供的函数和类。 5. 使用API进行开发:根据自己的需求,使用SDK提供的API进行开发。可以通过调用相应的函数来实现图像采集、图像处理和参数调整等功能。 在进行海康工业相机SDK开发时,可以参考SDK提供的文档和示例代码,了解API的使用方法和功能。同时,可以通过海康官方技术支持或开发者社区获取帮助和交流经验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值