/// <summary> /// 触发源通道选择 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void chkTrigSrc_CheckedChanged(object sender, EventArgs e) { if (isSrcChkSetting) { return; } int srcMask = 0; for (int i = 0; i < _module.TrigSrcChannelCount; i++) { srcMask += lstSrcChannelEnables[i].Checked ? 1 << i : 0; } int err = _module.SetTrigChannelSrc(_chn, srcMask); if (err != 0) { if (!isAdjusting) { MessageBox.Show("设置触发源通道失败,Erro" + _module.GetErrorInfo(err)); } } UpdateChannelStatus(); }
protected override bool ActionGenuine(out string errorInfo) { string chnID = GetInitParamValue("触发通道ID") as string; bool isAutoSwitchWorkMode = (bool)GetInitParamValue("自动切换到触发模式"); bool isAutoEnable = (bool)GetInitParamValue("自动使能"); int intensity = (int)GetInitParamValue("触发强度"); bool ignoreIntensity = (bool)GetInitParamValue("忽略不支持强度设置"); int duration = (int)GetInitParamValue("触发时长"); bool ignoreDuration = (bool)GetInitParamValue("忽略不支持时长设置"); int[] srcChannels = GetInitParamValue("输入源通道") as int[]; bool ignoreSrcChannels = (bool)GetInitParamValue("忽略不支持源通道设置"); IJFInitializable initor = null; JFDevCellInfo ci = null; if (!JFCMFunction.CheckDevCellName(JFCMFunction.LightTrig, chnID, out initor, out ci, out errorInfo)) { return(false); } int errCode = 0; IJFDevice_TrigController dev = initor as IJFDevice_TrigController; if (typeof(IJFDevice_LightControllerWithTrig).IsAssignableFrom(dev.GetType())) //当前设备同时也是开关式光源控制器 { IJFDevice_LightControllerWithTrig lightCtrlWithT = dev as IJFDevice_LightControllerWithTrig; JFLightWithTrigWorkMode wm; errCode = lightCtrlWithT.GetWorkMode(out wm); if (errCode != 0) { errorInfo = "获取工作模式失败:" + lightCtrlWithT.GetErrorInfo(errCode); return(false); } if (wm == JFLightWithTrigWorkMode.TurnOnOff) //当前处于开关模式 { if (!isAutoSwitchWorkMode) { errorInfo = "当前工作模式为开关光源模式"; return(false); } errCode = lightCtrlWithT.SetWorkMode(JFLightWithTrigWorkMode.Trigger); if (errCode != 0) { errorInfo = "未能将光源控制器切换为触发模式:" + lightCtrlWithT.GetErrorInfo(errCode); return(false); } } } bool isChnEnabled = false; errCode = dev.GetTrigChannelEnable(ci.ChannelIndex, out isChnEnabled); if (0 != errCode) { errorInfo = "获取通道使能状态失败:" + dev.GetErrorInfo(errCode); return(false); } if (!isChnEnabled) { if (!isAutoEnable) { errorInfo = "触发通道当前未使能"; return(false); } errCode = dev.SetTrigChannelEnable(ci.ChannelIndex, true); if (errCode != 0) { errorInfo = "使能触发通道失败:" + dev.GetErrorInfo(errCode); return(false); } } if (null != srcChannels && srcChannels.Length != 0) //需要绑定输入源通道 { int mask = 0; //输入通道掩码 foreach (int srcChn in srcChannels) { mask += 1 << mask; } errCode = dev.SetTrigChannelSrc(ci.ChannelIndex, mask); if (errCode != 0 && !ignoreSrcChannels) { errorInfo = "绑定触发源通道失败:" + dev.GetErrorInfo(errCode); return(false); } } errCode = dev.SetTrigChannelIntensity(ci.ChannelIndex, intensity); if (errCode != 0 && !ignoreIntensity) { errorInfo = "设置触发强度:" + intensity + " 失败:" + dev.GetErrorInfo(errCode); return(false); } errCode = dev.SetTrigChannelDuration(ci.ChannelIndex, duration); if (errCode != 0 && !ignoreDuration) { errorInfo = "设置触发时长:" + duration + " 失败:" + dev.GetErrorInfo(errCode); return(false); } errorInfo = "Success"; return(true); }