前言
海康工业相机功能模块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);
文章来源:https://www.toymoban.com/news/detail-769397.html
本文参考了其他的博主的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文章来源地址https://www.toymoban.com/news/detail-769397.html
到了这里,关于海康工业相机SDK基于C#关于IO输入输出的控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!