private void DeviceObjectChanged(object source, DeviceObjectChangedArgs e) { if (e == null) { return; } try { //---------------------实时数据显示--------------------// GraphicsShowManager.BatchUpdateDevice(e.DeviceID, e.Object); //---------------------服务输出-----------------------// ServiceManager.BatchUpdateDevice(e.DeviceID, e.Object); //---------------------检测虚拟设备-------------------// if (e.DeviceType != DeviceType.Virtual) { IRunDevice[] vdevList = DeviceManager.GetDevices(DeviceType.Virtual); foreach (IRunDevice dev in vdevList) { dev.RunVirtualDevice(e.DeviceID, e.Object); } } } catch (Exception ex) { Logger.Error(true, ex.Message); } }
internal ServerBase(IServerConfig config, IDeviceContainer deviceContainer = null, ILogContainer logContainer = null) { if (config == null) { throw new ArgumentNullException("配制信息", "参数为空"); } ServerConfig = config; _deviceContainer = deviceContainer; if (_deviceContainer != null) { _deviceContainer.MouseRightContextMenu += Device_MouseRightContextMenu; } if (logContainer == null) { logContainer = new ConsoleContainer(); } Logger = (new LogFactory()).GetLog(ServerName, logContainer); _monitorException = new MonitorException(); ServiceManager = new ServiceManager(Logger); GraphicsShowManager = new GraphicsShowManager(Logger); DeviceManager = new DeviceManager(Logger); ChannelManager = new ChannelManager(Logger); ControllerManager = new ControllerManager(Logger); IsDisposed = false; }
public bool AddGraphicsShow(Show.IGraphicsShow graphicsShow, IWin32Window window) { if (GraphicsShowManager.AddShow(graphicsShow.ShowKey, graphicsShow)) { graphicsShow.MouseRightContextMenu += Device_MouseRightContextMenu; graphicsShow.GraphicsShowClosed += GraphicsShow_GraphicsShowClosed; try { graphicsShow.ShowGraphics(window); } catch (Exception ex) { Logger.Error(true, "", ex); } Logger.Info(true, String.Format("<{0}>显示视图显示成功", graphicsShow.ShowName)); return(true); } else { Logger.Info(true, String.Format("<{0}>显示视图显示失败", graphicsShow.ShowName)); return(false); } }
public bool RemoveGraphicsShow(string showKey) { IGraphicsShow gShow = GraphicsShowManager.GetShow(showKey); if (gShow != null) { GraphicsShowManager.RemoveShow(showKey); Logger.Info(true, String.Format("<{0}>显示视图关闭成功", gShow.ShowName)); return(true); } else { return(false); } }
public void RemoveDevice(string devid) { IRunDevice dev = DeviceManager.GetDevice(devid); if (dev != null) { string desc = String.Empty; string devname = dev.DeviceParameter.DeviceName; if (DeviceManager.RemoveDevice(dev.DeviceParameter.DeviceID)) { if (dev.DeviceType == DeviceType.Virtual) { desc = "删除虚拟设备"; } else { #region if (dev.CommunicateType == CommunicateType.COM) { IRunDevice[] comDevices = DeviceManager.GetDevices(dev.DeviceParameter.COM.Port.ToString(), CommunicateType.COM); if (comDevices.Length == 0) { string key = ComUtils.PortToString(dev.DeviceParameter.COM.Port); IController controller = ControllerManager.GetController(key); if (controller != null) { controller.IsWorking = false; if (ControllerManager.RemoveController(controller.Key)) { controller.StopController(); controller.Dispose(); IComSession comChannel = (IComSession)((IComController)controller).ComChannel; comChannel.Close(); comChannel.COMOpen -= ComChannel_COMOpen; comChannel.COMClose -= ComChannel_COMClose; comChannel.COMError -= ComChannel_COMError; if (ChannelManager.RemoveChannel(comChannel.Key)) { comChannel.Close(); comChannel.Dispose(); } } } } desc = String.Format("{0},从串口'{1}'删除", dev.DeviceParameter.DeviceName, dev.DeviceParameter.COM.Port.ToString()); } else if (dev.CommunicateType == CommunicateType.NET) { desc = String.Format("{0}-{1},从网络中删除成功", dev.DeviceParameter.DeviceName, dev.DeviceParameter.NET.RemoteIP); } #endregion } GraphicsShowManager.BatchRemoveDevice(dev.DeviceParameter.DeviceID); ServiceManager.BatchRemoveDevice(dev.DeviceParameter.DeviceID); if (_deviceContainer != null) { _deviceContainer.RemoveDevice(dev.DeviceParameter.DeviceID); } dev.DeviceParameter.Delete(); dev.DeviceDynamic.Delete(); dev.Delete(); dev.Dispose(); BindDeviceHandler(dev, dev.DeviceType, false); desc += ",成功"; OnDeleteDeviceCompleted(dev.DeviceParameter.DeviceID, dev.DeviceParameter.DeviceName, true); } else { desc += ",失败"; OnDeleteDeviceCompleted(dev.DeviceParameter.DeviceID, dev.DeviceParameter.DeviceName, false); } Logger.Info(true, desc); } }