/// <summary> ///设置取指定名称的初始化参数的当前值 /// </summary> /// <param name="name">参数名称,如果参数名称不在InitParamNames中,将会抛出一个ArgumentException异常</param> /// <param name="value">参数值</param> /// <returns>操作成功返回True,失败返回false,可通过GetInitErrorInfo()获取错误信息</returns> public bool SetInitParamValue(string name, object value) { if (name == InitParamNames[0]) { string devID = value as string; if (string.IsNullOrEmpty(devID)) { _initErrorInfo = "参数\"" + name + "\"的值为空字串"; return(false); } JFInitorManager devMgr = JFHubCenter.Instance.InitorManager; if (!devMgr.ContainID(devID)) { _initErrorInfo = "DevID = " + devID + " 在设备列表中不存在"; return(false); } _devID = devID; return(true); } else if (name == InitParamNames[1]) { _isOpen = (bool)value; return(true); } throw new ArgumentException("非法的输入参数项,名称:" + name); }
/// <summary> /// 获取指定名称的初始化参数的信息 /// </summary> /// <param name="name"></param> /// <returns></returns> public JFParamDescribe GetInitParamDescribe(string name) { if (name == InitParamNames[0]) { JFInitorManager devMgr = JFHubCenter.Instance.InitorManager; string[] allDevIDs = devMgr.GetIDs(typeof(IJFDevice)); return(JFParamDescribe.Create(name, typeof(string), JFValueLimit.Options, allDevIDs)); } else if (name == InitParamNames[1]) { return(JFParamDescribe.Create(name, typeof(bool), JFValueLimit.NonLimit, null)); } throw new ArgumentException("非法的输入参数项,名称:" + name); }
/// <summary> /// 对象初始化 /// </summary> /// <returns>操作成功返回True,失败返回false,可通过GetInitErrorInfo()获取错误信息</returns> public bool Initialize() { if (string.IsNullOrEmpty(_devID)) { _initErrorInfo = "参数项:\"" + InitParamNames[0] + "\"未设置/空值"; IsInitOK = false; return(false); } JFInitorManager devMgr = JFHubCenter.Instance.InitorManager; if (!devMgr.ContainID(_devID)) { IsInitOK = false; _initErrorInfo = "DevID = " + _devID + " 在设备列表中不存在"; return(false); } IsInitOK = true; _initErrorInfo = "Success"; return(true); }
/// <summary> /// 检查设备通道是否存在并且可用 /// </summary> /// <param name="category"></param> /// <param name="cellName"></param> /// <param name="initor"></param> /// <param name="cellInfo"></param> /// <param name="errorInfo"></param> /// <returns></returns> public static bool CheckDevCellName(string category, string cellName, out IJFInitializable initor, out JFDevCellInfo ci, out string errorInfo) { initor = null; ci = null; errorInfo = null; if (string.IsNullOrEmpty(cellName)) { errorInfo = "参数项\"cellName\"为空"; return(false); } JFDevCellNameManeger nameMgr = JFHubCenter.Instance.MDCellNameMgr; JFInitorManager initorMgr = JFHubCenter.Instance.InitorManager; JFDevCellInfo cellInfo = null; if (category == DO) //获取数字量输出通道信息 { cellInfo = nameMgr.GetDoCellInfo(cellName); if (null == cellInfo) { errorInfo = "设备命名表中不存在DO:" + cellName; return(false); } IJFInitializable dev = initorMgr.GetInitor(cellInfo.DeviceID); if (null == dev) { errorInfo = "DO:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"在设备列表中不存在"; return(false); } if (!typeof(IJFDevice_MotionDaq).IsAssignableFrom(dev.GetType())) { errorInfo = "DO:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"类型不是Device_MotionDaq "; return(false); } IJFDevice_MotionDaq md = dev as IJFDevice_MotionDaq; if (!md.IsInitOK) { errorInfo = "DO:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未完成初始化动作 "; return(false); } if (!md.IsDeviceOpen) { errorInfo = "DO:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未打开 "; return(false); } if (cellInfo.ModuleIndex >= md.DioCount) { errorInfo = "DO:\"" + cellName + "\" ModuleIndex = :" + cellInfo.ModuleIndex + "超出设备DIO模块数量: " + md.DioCount; return(false); } if (cellInfo.ChannelIndex >= md.GetDio(cellInfo.ModuleIndex).DOCount) { errorInfo = "DO:\"" + cellName + "\" Channel = :" + cellInfo.ChannelIndex + "超出模块DO通道数量: " + md.GetDio(cellInfo.ModuleIndex).DOCount; return(false); } initor = dev; ci = cellInfo; errorInfo = "Success"; return(true); } else if (category == DI) //获取数字量输入 { cellInfo = nameMgr.GetDiCellInfo(cellName); if (null == cellInfo) { errorInfo = "设备命名表中不存在DI:" + cellName; return(false); } IJFInitializable dev = initorMgr.GetInitor(cellInfo.DeviceID); if (null == dev) { errorInfo = "DI:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"在设备列表中不存在"; return(false); } if (!typeof(IJFDevice_MotionDaq).IsAssignableFrom(dev.GetType())) { errorInfo = "DI:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"类型不是Device_MotionDaq "; return(false); } IJFDevice_MotionDaq md = dev as IJFDevice_MotionDaq; if (!md.IsInitOK) { errorInfo = "DI:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未完成初始化动作 "; return(false); } if (!md.IsDeviceOpen) { errorInfo = "DI:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未打开 "; return(false); } if (cellInfo.ModuleIndex >= md.DioCount) { errorInfo = "DI:\"" + cellName + "\" ModuleIndex = :" + cellInfo.ModuleIndex + "超出设备DIO模块数量: " + md.DioCount; return(false); } if (cellInfo.ChannelIndex >= md.GetDio(cellInfo.ModuleIndex).DICount) { errorInfo = "DI:\"" + cellName + "\" Channel = :" + cellInfo.ChannelIndex + "超出模块DI通道数量: " + md.GetDio(cellInfo.ModuleIndex).DOCount; return(false); } initor = dev; ci = cellInfo; errorInfo = "Success"; return(true); } else if (category == AI) { } else if (category == AO) { } else if (category == Axis) { cellInfo = nameMgr.GetAxisCellInfo(cellName); if (null == cellInfo) { errorInfo = "设备命名表中不存在Axis:" + cellName; return(false); } IJFInitializable dev = initorMgr.GetInitor(cellInfo.DeviceID); if (null == dev) { errorInfo = "Axis:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"在设备列表中不存在"; return(false); } if (!typeof(IJFDevice_MotionDaq).IsAssignableFrom(dev.GetType())) { errorInfo = "Axis:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"类型不是Device_MotionDaq "; return(false); } IJFDevice_MotionDaq md = dev as IJFDevice_MotionDaq; if (!md.IsInitOK) { errorInfo = "Axis:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未完成初始化动作 "; return(false); } if (!md.IsDeviceOpen) { errorInfo = "Axis:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未打开 "; return(false); } if (cellInfo.ModuleIndex >= md.McCount) { errorInfo = "Axis:\"" + cellName + "\" ModuleIndex = :" + cellInfo.ModuleIndex + "超出设备轴模块数量: " + md.McCount; return(false); } if (cellInfo.ChannelIndex >= md.GetMc(cellInfo.ModuleIndex).AxisCount) { errorInfo = "Axis:\"" + cellName + "\" Channel = :" + cellInfo.ModuleIndex + "超出模块轴通道数量: " + md.GetMc(cellInfo.ModuleIndex).AxisCount; return(false); } initor = dev; ci = cellInfo; errorInfo = "Success"; return(true); } else if (category == CmpTrig) { cellInfo = nameMgr.GetCmpTrigCellInfo(cellName); if (null == cellInfo) { errorInfo = "设备命名表中不存在CmpTrig:" + cellName; return(false); } IJFInitializable dev = initorMgr.GetInitor(cellInfo.DeviceID); if (null == dev) { errorInfo = "CmpTrig:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"在设备列表中不存在"; return(false); } if (!typeof(IJFDevice_MotionDaq).IsAssignableFrom(dev.GetType())) { errorInfo = "CmpTrig:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"类型不是Device_MotionDaq "; return(false); } IJFDevice_MotionDaq md = dev as IJFDevice_MotionDaq; if (!md.IsInitOK) { errorInfo = "CmpTrig:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未完成初始化动作 "; return(false); } if (!md.IsDeviceOpen) { errorInfo = "CmpTrig:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未打开 "; return(false); } if (cellInfo.ModuleIndex >= md.CompareTriggerCount) { errorInfo = "CmpTrig:\"" + cellName + "\" ModuleIndex = :" + cellInfo.ModuleIndex + "超出设备比较触发模块数量: " + md.CompareTriggerCount; return(false); } if (cellInfo.ChannelIndex >= md.GetCompareTrigger(cellInfo.ModuleIndex).EncoderChannels) { errorInfo = "CmpTrig:\"" + cellName + "\" Channel = :" + cellInfo.ModuleIndex + "超出模块比较触发通道数量: " + md.GetCompareTrigger(cellInfo.ModuleIndex).EncoderChannels; return(false); } initor = dev; ci = cellInfo; errorInfo = "Success"; return(true); } else if (category == LightCtrl) { cellInfo = nameMgr.GetLightCtrlChannelInfo(cellName); if (null == cellInfo) { errorInfo = "设备命名表中不存在LightCtrl:" + cellName; return(false); } IJFInitializable dev = initorMgr.GetInitor(cellInfo.DeviceID); if (null == dev) { errorInfo = "LightCtrl:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"在设备列表中不存在"; return(false); } if (!typeof(IJFDevice_LightController).IsAssignableFrom(dev.GetType())) { errorInfo = "LightCtrl:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"类型不是IJFDevice_LightController "; return(false); } IJFDevice_LightController md = dev as IJFDevice_LightController; if (!md.IsInitOK) { errorInfo = "LightCtrl:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未完成初始化动作 "; return(false); } if (!md.IsDeviceOpen) { errorInfo = "LightCtrl:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未打开 "; return(false); } if (cellInfo.ChannelIndex >= md.LightChannelCount) { errorInfo = "LightCtrl:\"" + cellName + "\" Channel = :" + cellInfo.ChannelIndex + "超出设备光源通道数量: " + md.LightChannelCount; return(false); } initor = dev; ci = cellInfo; errorInfo = "Success"; return(true); } else if (category == LightTrig) { cellInfo = nameMgr.GetTrigCtrlChannelInfo(cellName); if (null == cellInfo) { errorInfo = "设备命名表中不存在LightTrig:" + cellName; return(false); } IJFInitializable dev = initorMgr.GetInitor(cellInfo.DeviceID); if (null == dev) { errorInfo = "LightTrig:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"在设备列表中不存在"; return(false); } if (!typeof(IJFDevice_TrigController).IsAssignableFrom(dev.GetType())) { errorInfo = "LightTrig:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"类型不是IJFDevice_TrigController "; return(false); } IJFDevice_TrigController md = dev as IJFDevice_TrigController; if (!md.IsInitOK) { errorInfo = "LightTrig:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未完成初始化动作 "; return(false); } if (!md.IsDeviceOpen) { errorInfo = "LightTrig:\"" + cellName + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未打开 "; return(false); } if (cellInfo.ChannelIndex >= md.TrigChannelCount) { errorInfo = "LightTrig:\"" + cellName + "\" Channel = :" + cellInfo.ChannelIndex + "超出设备触发通道数量: " + md.TrigChannelCount; return(false); } initor = dev; ci = cellInfo; errorInfo = "Success"; return(true); } else if (category == Cmr) { IJFInitializable dev = initorMgr.GetInitor(cellName); if (null == dev) { errorInfo = "Camera:\"" + cellName + "\" 在设备列表中不存在"; return(false); } if (!typeof(IJFDevice_Camera).IsAssignableFrom(dev.GetType())) { errorInfo = "Camera:\"" + cellName + "\" 设备类型不是IJFDevice_Camera "; return(false); } initor = dev; errorInfo = "Success"; return(true); } else { errorInfo = "不支持的参数项\"category\" = " + category; } return(false); }