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); }
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; } }