Beispiel #1
0
 public void Subscribe(SensorsTablePage sensorsTablePage)
 {
     for (int i = 0; i < Sensors.Length; i++)
     {
         Sensors[i].DataChanged += sensorsTablePage.Method;
     }
 }
Beispiel #2
0
        public MiniPageMikroSRZ(string name, SensorsTablePage sTP, Point location)
        {
            InitializeComponent();

            sensorTablePage = sTP;

            lblName.Text = name;

            this.Location = location;
        }
Beispiel #3
0
        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();
            }
        }