Пример #1
0
 private void tbIntensity_KeyDown(object sender, KeyEventArgs e)
 {
     if (!IsChnValid)
     {
         return;
     }
     if (e.KeyCode == Keys.Escape)
     {
         isIntensityEditting = false;
         UpdateChannelStatus();
         return;
     }
     else if (e.KeyCode == Keys.Enter) //
     {
         int curr = 0;
         if (!int.TryParse(tbIntensity.Text, out curr))
         {
             MessageBox.Show("操作失败:参数格式错误!");
             return;
         }
         int err = _module.SetTrigChannelIntensity(_chn, curr);
         if (0 != err)
         {
             MessageBox.Show("操作失败,错误信息:" + _module.GetErrorInfo(err));
             return;
         }
         isIntensityEditting   = false;
         tbIntensity.BackColor = Color.White;
     }
 }
Пример #2
0
        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);
        }