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