Exemplo n.º 1
0
        protected override bool ActionGenuine(out string errorInfo)
        {
            string chnID     = GetMethodInputValue("光源通道ID") as string;
            int    intensity = (int)GetMethodInputValue("光照强度");

            if (string.IsNullOrEmpty(chnID))
            {
                errorInfo = "输入参数项:\"光源通道ID\" 为空字串";
                return(false);
            }
            if (!JFHubCenter.Instance.MDCellNameMgr.ContainLightChannelName(chnID))
            {
                errorInfo = "输入参数项:\"光源通道ID\"  = " + chnID + " 在设备名称表中不存在";
                return(false);
            }

            if (intensity < 0)
            {
                errorInfo = "输入参数项:\"光照强度\"  = " + intensity + " 为无效值(参数值必须>=0)";
                return(false);
            }

            bool isAutoSwitchMode = (bool)GetInitParamValue("自动切换到开关模式");
            bool isAutoEnable     = (bool)GetInitParamValue("自动使能");


            IJFInitializable dev     = null;
            JFDevCellInfo    ci      = null;
            string           errInfo = null;

            if (!JFCMFunction.CheckDevCellName(JFCMFunction.LightCtrl, chnID, out dev, out ci, out errInfo))
            {
                errorInfo = errInfo;
                return(false);
            }

            int errCode = 0;
            IJFDevice_LightController devLight = dev as IJFDevice_LightController;

            if (typeof(IJFDevice_LightControllerWithTrig).IsAssignableFrom(devLight.GetType())) //如果当前设备带有触发功能
            {
                IJFDevice_LightControllerWithTrig devLT = devLight as IJFDevice_LightControllerWithTrig;
                JFLightWithTrigWorkMode           wm;
                errCode = devLT.GetWorkMode(out wm);
                if (errCode != 0)
                {
                    errorInfo = "获取光源控制器工作模式失败:" + devLT.GetErrorInfo(errCode);
                    return(false);
                }

                if (wm == JFLightWithTrigWorkMode.Trigger) //当前处于触发模式
                {
                    if (!isAutoSwitchMode)
                    {
                        errorInfo = "控制器当前为触发模式";
                        return(false);
                    }

                    errCode = devLT.SetWorkMode(JFLightWithTrigWorkMode.TurnOnOff);
                    if (errCode != 0)
                    {
                        errorInfo = "控制器切换工作模式失败:" + devLT.GetErrorInfo(errCode);
                        return(false);
                    }
                }
            }

            bool isLightChnEnabled = false;

            errCode = devLight.GetLightChannelEnable(ci.ChannelIndex, out isLightChnEnabled);
            if (0 != errCode)
            {
                errorInfo = "获取通道使能状态失败:" + devLight.GetErrorInfo(errCode);
                return(false);
            }
            if (!isLightChnEnabled)
            {
                if (!isAutoEnable)
                {
                    errorInfo = "光源通道未使能";
                    return(false);
                }
                errCode = devLight.SetLightChannelEnable(ci.ChannelIndex, true);
                if (errCode != 0)
                {
                    errorInfo = "光源通道使能失败:" + devLight.GetErrorInfo(errCode);
                    return(false);
                }
            }

            errCode = devLight.SetLightIntensity(ci.ChannelIndex, intensity);
            if (errCode != 0)
            {
                errorInfo = "设置光照强度失败:" + devLight.GetErrorInfo(errCode);
                return(false);
            }
            errorInfo = "Success";
            return(true);
        }
Exemplo n.º 2
0
        public void UpdateChannelsInfo(string devID) //必须从名称表中的触发控制器和光源控制器提取信息
        {
            _devID = devID;
            panelLight.Controls.Clear();
            panelTrig.Controls.Clear();
            if (string.IsNullOrEmpty(_devID))
            {
                ShowTips("设备名称为空!");
                return;
            }

            if (!JFHubCenter.Instance.MDCellNameMgr.ContainLightCtrlDev(devID))
            {
                ShowTips("设备名称列表中未包含光源控制器设备:" + _devID);
                return;
            }

            IJFDevice_LightController dev = JFHubCenter.Instance.InitorManager.GetInitor(_devID) as IJFDevice_LightController;

            if (dev == null)
            {
                ShowTips("设备列表中不存在设备Name = " + _devID);
                //return;
            }
            else
            {
                if (!dev.IsDeviceOpen)
                {
                    ShowTips("设备当前处于关闭状态");
                }
            }

            int top = 3;

            string[] lightChnNames = JFHubCenter.Instance.MDCellNameMgr.AllChannelNamesInLightCtrlDev(devID);
            if (lightChnNames == null || 0 == lightChnNames.Length)
            {
                ShowTips("开关通道数量为0");
                return;
            }
            else
            {
                top = 3;
                for (int i = 0; i < lightChnNames.Count(); i++)
                {
                    UcLightCtrlChn ucChn = new UcLightCtrlChn();
                    ucChn.Location = new Point(3, top);
                    panelLight.Controls.Add(ucChn);
                    ucChn.SetChannelInfo(dev, i, lightChnNames[i]);//.SetChannelInfo(dev, i, trigChnNames[i]);
                    top = ucChn.Bottom + 5;
                }
            }

            if (dev != null && !typeof(IJFDevice_LightControllerWithTrig).IsAssignableFrom(dev.GetType())) //本设备不支持触发控制器接口
            {
                panelTrig.Visible = false;
                return;
            }

            if (!JFHubCenter.Instance.MDCellNameMgr.ContainTrigCtrlDev(devID)) //不包含触发功能
            {
                ShowTips("设备命名表中不包含触发通道名称信息");
                return;
            }
            //panelTrig.Top = panelLight.Bottom + 10;
            panelTrig.Visible = true;
            string[] trigChnNames = JFHubCenter.Instance.MDCellNameMgr.AllChannelNamesInTrigCtrlDev(devID);

            if (trigChnNames == null || 0 == trigChnNames.Length)
            {
                ShowTips("命名通道数量为0");
                return;
            }

            top = 3;
            for (int i = 0; i < trigChnNames.Count(); i++)
            {
                UcTrigCtrlChn ucChn = new UcTrigCtrlChn();
                ucChn.Location = new Point(3, top);
                panelTrig.Controls.Add(ucChn);
                ucChn.SetChannelInfo(dev as IJFDevice_TrigController, i, trigChnNames[i]);
                top = ucChn.Bottom + 5;
            }
        }