public void Subscribe(SensorsTablePage sensorsTablePage) { for (int i = 0; i < Sensors.Length; i++) { Sensors[i].DataChanged += sensorsTablePage.Method; } }
public MiniPageMikroSRZ(string name, SensorsTablePage sTP, Point location) { InitializeComponent(); sensorTablePage = sTP; lblName.Text = name; this.Location = location; }
public MainForm() { InitializeComponent(); // Парсим if (File.Exists("MikroSRZ104Config.ea")) { string name, ipAddress, factoryNum, sensorSwitchDev, sensorCircLoad; String[] sensorInfo = new String[3]; int sensorsCount; double thresholdMinResistance, thresholdMaxResistance; XmlDocument config = new XmlDocument(); config.Load("MikroSRZ104Config.ea"); XmlNode rootNode = config.DocumentElement; XmlNodeList devices = rootNode.ChildNodes; int devicesCount = rootNode.ChildNodes.Count; mikroSRZArray = new MikroSRZ[devicesCount]; miniPagesArray = new MiniPageMikroSRZ[devicesCount]; sensorTablePagesArray = new SensorsTablePage[devicesCount]; int i = 0; foreach (XmlNode device in rootNode.ChildNodes) { name = ""; ipAddress = ""; factoryNum = ""; sensorSwitchDev = ""; sensorCircLoad = ""; thresholdMinResistance = 20; thresholdMaxResistance = 200; sensorsCount = 0; foreach (XmlNode fieldOfDevice in device.ChildNodes) { switch (fieldOfDevice.Name) { case "NAME": name = fieldOfDevice.InnerText; break; case "IP": ipAddress = fieldOfDevice.InnerText; break; case "ISA": sensorsCount++; break; } } mikroSRZArray[i] = new MikroSRZ(name, ipAddress, sensorsCount); int j = 0; foreach (XmlNode fieldOfDevice in device.ChildNodes) { switch (fieldOfDevice.Name) { case "MIN_THRESHOLD_RES": thresholdMinResistance = Convert.ToDouble(fieldOfDevice.InnerText); break; case "MAX_THRESHOLD_RES": thresholdMaxResistance = Convert.ToDouble(fieldOfDevice.InnerText); break; case "ISA": foreach (XmlNode item in fieldOfDevice.ChildNodes) { switch (item.Name) { case "FACTORY_NUM": factoryNum = item.InnerText; break; case "NAME": sensorInfo = item.InnerText.Split(new char[] { ' ' }, 3, StringSplitOptions.RemoveEmptyEntries); switch (sensorInfo.Length) { case 1: sensorSwitchDev = "-"; sensorCircLoad = "-"; break; case 2: sensorSwitchDev = sensorInfo[1]; sensorCircLoad = "-"; break; case 3: sensorSwitchDev = sensorInfo[1]; sensorCircLoad = sensorInfo[2]; break; } Array.Clear(sensorInfo, 0, sensorInfo.Length); break; } } mikroSRZArray[i].CreateSensor(j, factoryNum, sensorSwitchDev, sensorCircLoad, thresholdMinResistance, thresholdMaxResistance); sensorSwitchDev = ""; sensorCircLoad = ""; j++; break; } } i++; } int locationX = 0; for (int k = 0; k < mikroSRZArray.Length; k++) { sensorTablePagesArray[k] = new SensorsTablePage(mikroSRZArray[k].Sensors); mikroSRZArray[k].Subscribe(sensorTablePagesArray[k]); miniPagesArray[k] = new MiniPageMikroSRZ(mikroSRZArray[k].Name, sensorTablePagesArray[k], new Point(locationX, 0)); Controls.Add(miniPagesArray[k]); Controls.Add(sensorTablePagesArray[k]); locationX += miniPagesArray[k].Size.Width; mikroSRZArray[k].DataChanged += miniPagesArray[k].Method; } workerThread = new Thread(ConnectCycle); workerThread.Start(); } }