public void InitDevice(IO_SERVER server, IO_COMMUNICATION communication, IO_DEVICE device) { Device = device; Server = server; Communication = communication; SeriesIndex = -1; InitSeires(); InitListView(); if (Device != null) { //获取读取实时值 IOCenterManager.QueryFormManager.ReadRealDevice(this.Server, this.Communication, this.Device); TreeNode[] finders = this.hsComboBox.TreeView.Nodes.Find(Device.IO_DEVICE_ID, true); if (finders.Length > 0) { IoDeviceTreeNode node = finders[0] as IoDeviceTreeNode; this.hsComboBox.ShowItem(node); } realtimer.Interval = Device.IO_DEVICE_UPDATECYCLE * 1000; } if (Device != null) { realtimer.Interval = this.Device.IO_DEVICE_UPDATECYCLE * 1000; realtimer.Tick += Realtimer_Tick; realtimer.Start(); } }
//主动下置命令 private void btSend_Click(object sender, EventArgs e) { if (this.IOTreeView.SelectedNode == null) { FrmDialog.ShowDialog(this, "请在IO树中选择设备节点"); return; } if (this.IOTreeView.SelectedNode is IoDeviceTreeNode) { IoDeviceTreeNode deviceNode = this.IOTreeView.SelectedNode as IoDeviceTreeNode; IoCommunicationTreeNode communicationTreeNode = this.IOTreeView.SelectedNode.Parent as IoCommunicationTreeNode; IoServerTreeNode serverNode = this.IOTreeView.SelectedNode.Parent.Parent as IoServerTreeNode; if (serverNode.ClientEndPoint == null) { FrmDialog.ShowDialog(this, "采集站终端未上线"); return; } SendCommandForm sendCommandForm = new SendCommandForm(); sendCommandForm.InitCommand(serverNode.Server, communicationTreeNode.Communication, deviceNode.Device); if (sendCommandForm.ShowDialog(this) == DialogResult.OK) { } } else { FrmDialog.ShowDialog(this, "请在IO树中选择设备节点"); return; } }
private void 实时数据ToolStripMenuItem_Click(object sender, EventArgs e) { if (ioTree.SelectedNode != null && ioTree.SelectedNode is IoDeviceTreeNode) { IoDeviceTreeNode Node = ioTree.SelectedNode as IoDeviceTreeNode; this.mediator.RealQueryWorkForm.InitDevice(Node.Server, Node.Communication, Node.Device); } }
public async void LoadTreeProject() { if (this.hsComboBox.TreeView.Nodes.Count <= 0) { await Task.Run(() => { this.BeginInvoke(new EventHandler(delegate { try { this.hsComboBox.TreeView.Nodes.Clear(); int num = IOCenterManager.IOProject.Servers.Count + IOCenterManager.IOProject.Communications.Count + IOCenterManager.IOProject.Devices.Count; TreeNode mainNode = new TreeNode(); mainNode.ImageIndex = 0; mainNode.SelectedImageIndex = 0; mainNode.Text = PubConstant.Product; ///加载采集站 for (int i = 0; i < IOCenterManager.IOProject.Servers.Count; i++) { IoServerTreeNode serverNode = new IoServerTreeNode(); serverNode.Server = IOCenterManager.IOProject.Servers[i]; serverNode.InitNode(); List <Scada.Model.IO_COMMUNICATION> serverComms = IOCenterManager.IOProject.Communications.FindAll(x => x.IO_SERVER_ID == IOCenterManager.IOProject.Servers[i].SERVER_ID); for (int c = 0; c < serverComms.Count; c++)//通道 { IoCommunicationTreeNode commNode = new IoCommunicationTreeNode(); commNode.Communication = serverComms[c]; commNode.Server = IOCenterManager.IOProject.Servers[i]; commNode.InitNode(); List <Scada.Model.IO_DEVICE> commDevices = IOCenterManager.IOProject.Devices.FindAll(x => x.IO_SERVER_ID == IOCenterManager.IOProject.Servers[i].SERVER_ID && x.IO_COMM_ID == serverComms[c].IO_COMM_ID); for (int d = 0; d < commDevices.Count; d++)//设备 { IoDeviceTreeNode deviceNode = new IoDeviceTreeNode(); deviceNode.Device = commDevices[d]; deviceNode.Server = IOCenterManager.IOProject.Servers[i]; deviceNode.Communication = serverComms[c]; //挂载右键菜单 deviceNode.InitNode(); commNode.Nodes.Add(deviceNode); } serverNode.Nodes.Add(commNode); } mainNode.Nodes.Add(serverNode); } mainNode.Expand(); this.hsComboBox.TreeView.Nodes.Add(mainNode); } catch { } })); }); } }
/// <summary> /// 刷新树状态 /// </summary> public static void RefreshIOStatus(Scada.Model.IO_DEVICE device) { if (device == null) { return; } if (mediator.IOStatusForm.IsHandleCreated) { mediator.IOStatusForm.IoTreeStatus.BeginInvoke(new EventHandler(delegate { if (mediator.IOStatusForm.IoTreeStatus.Nodes.Find(device.IO_DEVICE_ID, true).Length > 0) { IoDeviceTreeNode treeNode = (IoDeviceTreeNode)mediator.IOStatusForm.IoTreeStatus.Nodes.Find(device.IO_DEVICE_ID, true).First(); treeNode.ChangedStatus(device.IO_DEVICE_STATUS); } })); } }
private void IoTreeStatus_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { if (e.Node is IoDeviceTreeNode) { try { IoDeviceTreeNode devNode = e.Node as IoDeviceTreeNode; this.mediator.IOMonitorForm.Device = devNode.Device; this.mediator.IOMonitorForm.Communication = devNode.Communication; this.mediator.IOMonitorForm.ChangedBinds(devNode.Server, devNode.Communication, devNode.Device); this.mediator.IOMonitorForm.SetIOValue(devNode.Server, devNode.Communication, devNode.Device); } catch (Exception ex) { MonitorFormManager.DisplyException(ex); } } }
private void hsComboBox_SelectedIndexChanged(object sender, EventArgs e) { if (hsComboBox.SelectedItem != null) { IoDeviceTreeNode node = hsComboBox.SelectedItem as IoDeviceTreeNode; //如果选择的还是同一个设备,就不做处理 if (this.Device != node.Device) { this.realtimer.Stop(); this.Server = node.Server; this.Communication = node.Communication; this.Device = node.Device; this.realtimer.Interval = this.Device.IO_DEVICE_UPDATECYCLE * 1000; InitListView(); InitSeires(); this.realtimer.Start(); } } }
public void LoadIOProject(TreeView tree) { if (tree.FindForm() != null) { if (tree.Parent.IsHandleCreated) { tree.BeginInvoke(new EventHandler(delegate { try { tree.Nodes.Clear(); int num = IOCenterManager.IOProject.Servers.Count + IOCenterManager.IOProject.Communications.Count + IOCenterManager.IOProject.Devices.Count; TreeNode mainNode = new TreeNode(); mainNode.ImageIndex = 0; mainNode.SelectedImageIndex = 0; mainNode.Text = PubConstant.Product; InitProgress(num); ///加载采集站 for (int i = 0; i < IOCenterManager.IOProject.Servers.Count; i++) { IoServerTreeNode serverNode = new IoServerTreeNode(); serverNode.Server = IOCenterManager.IOProject.Servers[i]; serverNode.InitNode(); List <Scada.Model.IO_COMMUNICATION> serverComms = IOCenterManager.IOProject.Communications.FindAll(x => x.IO_SERVER_ID == IOCenterManager.IOProject.Servers[i].SERVER_ID); for (int c = 0; c < serverComms.Count; c++)//通道 { IoCommunicationTreeNode commNode = new IoCommunicationTreeNode(); commNode.Communication = serverComms[c]; commNode.Server = IOCenterManager.IOProject.Servers[i]; commNode.InitNode(); List <Scada.Model.IO_DEVICE> commDevices = IOCenterManager.IOProject.Devices.FindAll(x => x.IO_SERVER_ID == IOCenterManager.IOProject.Servers[i].SERVER_ID && x.IO_COMM_ID == serverComms[c].IO_COMM_ID); for (int d = 0; d < commDevices.Count; d++)//设备 { IoDeviceTreeNode deviceNode = new IoDeviceTreeNode(); deviceNode.Device = commDevices[d]; deviceNode.Server = IOCenterManager.IOProject.Servers[i]; deviceNode.Communication = serverComms[c]; //挂载右键菜单 deviceNode.ContextMenuStrip = Mediator.IOTreeForm.contextMenuStrip; deviceNode.InitNode(); commNode.Nodes.Add(deviceNode); SetProgress(); } SetProgress(); serverNode.Nodes.Add(commNode); } mainNode.Nodes.Add(serverNode); SetProgress(); } mainNode.ExpandAll(); tree.Nodes.Add(mainNode); EndProgress(); } catch (Exception exm) { DisplyException(exm); FrmDialog.ShowDialog(MainForm, exm.Message); EndProgress(); } })); } } else { try { tree.Nodes.Clear(); int num = IOCenterManager.IOProject.Servers.Count + IOCenterManager.IOProject.Communications.Count + IOCenterManager.IOProject.Devices.Count; TreeNode mainNode = new TreeNode(); mainNode.ImageIndex = 0; mainNode.SelectedImageIndex = 0; mainNode.Text = PubConstant.Product; InitProgress(num); ///加载采集站 for (int i = 0; i < IOCenterManager.IOProject.Servers.Count; i++) { IoServerTreeNode serverNode = new IoServerTreeNode(); serverNode.Server = IOCenterManager.IOProject.Servers[i]; serverNode.InitNode(); List <Scada.Model.IO_COMMUNICATION> serverComms = IOCenterManager.IOProject.Communications.FindAll(x => x.IO_SERVER_ID == IOCenterManager.IOProject.Servers[i].SERVER_ID); for (int c = 0; c < serverComms.Count; c++)//通道 { IoCommunicationTreeNode commNode = new IoCommunicationTreeNode(); commNode.Communication = serverComms[c]; commNode.Server = IOCenterManager.IOProject.Servers[i]; commNode.InitNode(); List <Scada.Model.IO_DEVICE> commDevices = IOCenterManager.IOProject.Devices.FindAll(x => x.IO_SERVER_ID == IOCenterManager.IOProject.Servers[i].SERVER_ID && x.IO_COMM_ID == serverComms[c].IO_COMM_ID); for (int d = 0; d < commDevices.Count; d++)//设备 { IoDeviceTreeNode deviceNode = new IoDeviceTreeNode(); deviceNode.Device = commDevices[d]; deviceNode.Server = IOCenterManager.IOProject.Servers[i]; deviceNode.Communication = serverComms[c]; //挂载右键菜单 deviceNode.ContextMenuStrip = Mediator.IOTreeForm.contextMenuStrip; deviceNode.InitNode(); commNode.Nodes.Add(deviceNode); SetProgress(); } SetProgress(); serverNode.Nodes.Add(commNode); } mainNode.Nodes.Add(serverNode); SetProgress(); } mainNode.ExpandAll(); tree.Nodes.Add(mainNode); EndProgress(); } catch (Exception exm) { DisplyException(exm); FrmDialog.ShowDialog(MainForm, exm.Message); EndProgress(); } } }
public static void LoadProject(TreeView tree) { AppendLogItem("正在加载采集站工程......"); MonitorDataBaseModel.InitBaseModel(); AppendLogItem("正在加载驱动信息......"); IOMonitorManager.InitMonitor(); AppendLogItem("正在加载IO树......"); Task.Run(() => { try { if (tree.Parent.IsHandleCreated) { tree.BeginInvoke(new EventHandler(delegate { tree.Nodes.Clear(); int num = MonitorDataBaseModel.IOCommunications.Count * MonitorDataBaseModel.IODevices.Count; InitProgress(num); IoServerTreeNode serverNode = new IoServerTreeNode(); serverNode.Server = MonitorDataBaseModel.IOServer; serverNode.InitNode(); List <Scada.Model.IO_COMMUNICATION> serverComms = MonitorDataBaseModel.IOCommunications.FindAll(x => x.IO_SERVER_ID == MonitorDataBaseModel.IOServer.SERVER_ID); for (int c = 0; c < serverComms.Count; c++) //通道 { IoCommunicationTreeNode commNode = new IoCommunicationTreeNode(); commNode.Communication = serverComms[c]; commNode.Server = MonitorDataBaseModel.IOServer; commNode.InitNode(); List <Scada.Model.IO_DEVICE> commDevices = MonitorDataBaseModel.IODevices.FindAll(x => x.IO_SERVER_ID == MonitorDataBaseModel.IOServer.SERVER_ID && x.IO_COMM_ID == serverComms[c].IO_COMM_ID); for (int d = 0; d < commDevices.Count; d++) //设备 { IoDeviceTreeNode deviceNode = new IoDeviceTreeNode(); deviceNode.Device = commDevices[d]; deviceNode.Server = MonitorDataBaseModel.IOServer; deviceNode.Communication = serverComms[c]; deviceNode.InitNode(); commNode.Nodes.Add(deviceNode); SetProgress(); } SetProgress(); serverNode.Nodes.Add(commNode); } serverNode.Expand(); EndProgress(); tree.Nodes.Add(serverNode); })); } } catch (Exception exm) { DisplyException(exm); FrmDialog.ShowDialog(MainForm, exm.Message); EndProgress(); } }); }