///// <summary> ///// 通道类型DI 数字量输入 ///// </summary> //public static string CategoryDI = "DI"; ///// <summary> ///// 通道类型DO 数字量输出 ///// </summary> //public static string CategoryDO = "DO"; //public static string CategoryAxis = "Axis"; //public static string CategoryAI = "AI";// //public static string CategoryAO = "AO"; //public static string CategoryCmpTrig = "CmpTrig"; //public static string CategoryLightChn = "LightChn"; //public static string CategoryTrigChn = "TrigChn";//触发控制器通道 /// <summary> /// 检查DIO/轴...等设备通道是否存在 /// </summary> /// <param name="category"></param> /// <param name="name"></param> /// <param name="dev"></param> /// <param name="ci"></param> /// <param name="errorInfo"></param> /// <returns></returns> public static bool CheckChannel(JFDevCellType cellType, string name, out IJFDevice dev, out JFDevCellInfo ci, out string errorInfo) { dev = null; ci = null; errorInfo = "Success"; if (string.IsNullOrEmpty(name)) { errorInfo = "参数项\"cellName\"为空"; return(false); } JFDevCellNameManeger nameMgr = JFHubCenter.Instance.MDCellNameMgr; JFInitorManager initorMgr = JFHubCenter.Instance.InitorManager; JFDevCellInfo cellInfo = null; if (cellType == JFDevCellType.DO) //获取数字量输出通道信息 { cellInfo = nameMgr.GetDoCellInfo(name); if (null == cellInfo) { errorInfo = "设备命名表中不存在DO:" + name; return(false); } dev = initorMgr.GetInitor(cellInfo.DeviceID) as IJFDevice; if (null == dev) { errorInfo = "DO:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"在设备列表中不存在"; return(false); } if (!typeof(IJFDevice_MotionDaq).IsAssignableFrom(dev.GetType())) { errorInfo = "DO:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"类型不是Device_MotionDaq "; return(false); } IJFDevice_MotionDaq md = dev as IJFDevice_MotionDaq; if (!md.IsInitOK) { errorInfo = "DO:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未完成初始化动作 "; return(false); } if (!md.IsDeviceOpen) { errorInfo = "DO:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未打开 "; return(false); } if (cellInfo.ModuleIndex >= md.DioCount) { errorInfo = "DO:\"" + name + "\" ModuleIndex = :" + cellInfo.ModuleIndex + "超出设备DIO模块数量: " + md.DioCount; return(false); } if (cellInfo.ChannelIndex >= md.GetDio(cellInfo.ModuleIndex).DOCount) { errorInfo = "DO:\"" + name + "\" Channel = :" + cellInfo.ChannelIndex + "超出模块DO通道数量: " + md.GetDio(cellInfo.ModuleIndex).DOCount; return(false); } ci = cellInfo; errorInfo = "Success"; return(true); } else if (cellType == JFDevCellType.DI) //获取数字量输入 { cellInfo = nameMgr.GetDiCellInfo(name); if (null == cellInfo) { errorInfo = "设备命名表中不存在DI:" + name; return(false); } dev = initorMgr.GetInitor(cellInfo.DeviceID) as IJFDevice; if (null == dev) { errorInfo = "DI:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"在设备列表中不存在"; return(false); } if (!typeof(IJFDevice_MotionDaq).IsAssignableFrom(dev.GetType())) { errorInfo = "DI:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"类型不是Device_MotionDaq "; return(false); } IJFDevice_MotionDaq md = dev as IJFDevice_MotionDaq; if (!md.IsInitOK) { errorInfo = "DI:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未完成初始化动作 "; return(false); } if (!md.IsDeviceOpen) { errorInfo = "DI:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未打开 "; return(false); } if (cellInfo.ModuleIndex >= md.DioCount) { errorInfo = "DI:\"" + name + "\" ModuleIndex = :" + cellInfo.ModuleIndex + "超出设备DIO模块数量: " + md.DioCount; return(false); } if (cellInfo.ChannelIndex >= md.GetDio(cellInfo.ModuleIndex).DICount) { errorInfo = "DI:\"" + name + "\" Channel = :" + cellInfo.ChannelIndex + "超出模块DI通道数量: " + md.GetDio(cellInfo.ModuleIndex).DOCount; return(false); } ci = cellInfo; errorInfo = "Success"; return(true); } else if (cellType == JFDevCellType.AI) { } else if (cellType == JFDevCellType.AO) { } else if (cellType == JFDevCellType.Axis) { cellInfo = nameMgr.GetAxisCellInfo(name); if (null == cellInfo) { errorInfo = "设备命名表中不存在Axis:" + name; return(false); } dev = initorMgr.GetInitor(cellInfo.DeviceID) as IJFDevice; if (null == dev) { errorInfo = "Axis:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"在设备列表中不存在"; return(false); } if (!typeof(IJFDevice_MotionDaq).IsAssignableFrom(dev.GetType())) { errorInfo = "Axis:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"类型不是Device_MotionDaq "; return(false); } IJFDevice_MotionDaq md = dev as IJFDevice_MotionDaq; if (!md.IsInitOK) { errorInfo = "Axis:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未完成初始化动作 "; return(false); } if (!md.IsDeviceOpen) { errorInfo = "Axis:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未打开 "; return(false); } if (cellInfo.ModuleIndex >= md.McCount) { errorInfo = "Axis:\"" + name + "\" ModuleIndex = :" + cellInfo.ModuleIndex + "超出设备轴模块数量: " + md.McCount; return(false); } if (cellInfo.ChannelIndex >= md.GetMc(cellInfo.ModuleIndex).AxisCount) { errorInfo = "Axis:\"" + name + "\" Channel = :" + cellInfo.ModuleIndex + "超出模块轴通道数量: " + md.GetMc(cellInfo.ModuleIndex).AxisCount; return(false); } ci = cellInfo; errorInfo = "Success"; return(true); } else if (cellType == JFDevCellType.CmpTrig) { cellInfo = nameMgr.GetCmpTrigCellInfo(name); if (null == cellInfo) { errorInfo = "设备命名表中不存在CmpTrig:" + name; return(false); } dev = initorMgr.GetInitor(cellInfo.DeviceID) as IJFDevice; if (null == dev) { errorInfo = "CmpTrig:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"在设备列表中不存在"; return(false); } if (!typeof(IJFDevice_MotionDaq).IsAssignableFrom(dev.GetType())) { errorInfo = "CmpTrig:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"类型不是Device_MotionDaq "; return(false); } IJFDevice_MotionDaq md = dev as IJFDevice_MotionDaq; if (!md.IsInitOK) { errorInfo = "CmpTrig:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未完成初始化动作 "; return(false); } if (!md.IsDeviceOpen) { errorInfo = "CmpTrig:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未打开 "; return(false); } if (cellInfo.ModuleIndex >= md.CompareTriggerCount) { errorInfo = "CmpTrig:\"" + name + "\" ModuleIndex = :" + cellInfo.ModuleIndex + "超出设备比较触发模块数量: " + md.CompareTriggerCount; return(false); } if (cellInfo.ChannelIndex >= md.GetCompareTrigger(cellInfo.ModuleIndex).EncoderChannels) { errorInfo = "CmpTrig:\"" + name + "\" Channel = :" + cellInfo.ModuleIndex + "超出模块比较触发通道数量: " + md.GetCompareTrigger(cellInfo.ModuleIndex).EncoderChannels; return(false); } ci = cellInfo; errorInfo = "Success"; return(true); } else if (cellType == JFDevCellType.Light) { cellInfo = nameMgr.GetLightCtrlChannelInfo(name); if (null == cellInfo) { errorInfo = "设备命名表中不存在LightCtrl:" + name; return(false); } dev = initorMgr.GetInitor(cellInfo.DeviceID) as IJFDevice; if (null == dev) { errorInfo = "LightCtrl:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"在设备列表中不存在"; return(false); } if (!typeof(IJFDevice_LightController).IsAssignableFrom(dev.GetType())) { errorInfo = "LightCtrl:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"类型不是IJFDevice_LightController "; return(false); } IJFDevice_LightController md = dev as IJFDevice_LightController; if (!md.IsInitOK) { errorInfo = "LightCtrl:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未完成初始化动作 "; return(false); } if (!md.IsDeviceOpen) { errorInfo = "LightCtrl:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未打开 "; return(false); } if (cellInfo.ChannelIndex >= md.LightChannelCount) { errorInfo = "LightCtrl:\"" + name + "\" Channel = :" + cellInfo.ChannelIndex + "超出设备光源通道数量: " + md.LightChannelCount; return(false); } ci = cellInfo; errorInfo = "Success"; return(true); } else if (cellType == JFDevCellType.Trig) { cellInfo = nameMgr.GetTrigCtrlChannelInfo(name); if (null == cellInfo) { errorInfo = "设备命名表中不存在LightTrig:" + name; return(false); } dev = initorMgr.GetInitor(cellInfo.DeviceID) as IJFDevice; if (null == dev) { errorInfo = "LightTrig:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"在设备列表中不存在"; return(false); } if (!typeof(IJFDevice_TrigController).IsAssignableFrom(dev.GetType())) { errorInfo = "LightTrig:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"类型不是IJFDevice_TrigController "; return(false); } IJFDevice_TrigController md = dev as IJFDevice_TrigController; if (!md.IsInitOK) { errorInfo = "LightTrig:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未完成初始化动作 "; return(false); } if (!md.IsDeviceOpen) { errorInfo = "LightTrig:\"" + name + "\" 所属设备:\"" + cellInfo.DeviceID + "\"未打开 "; return(false); } if (cellInfo.ChannelIndex >= md.TrigChannelCount) { errorInfo = "LightTrig:\"" + name + "\" Channel = :" + cellInfo.ChannelIndex + "超出设备触发通道数量: " + md.TrigChannelCount; return(false); } ci = cellInfo; errorInfo = "Success"; return(true); } else { errorInfo = "不支持的参数项\"CellType\" = " + cellType.ToString(); } return(false); }
public JFDevChannel(JFDevCellType cellType, string name) { CellType = cellType; Name = name; }