Пример #1
0
        public async static Task <bool> refreshData()
        {
            mutexObj.WaitOne();
            try
            {
                NpgsqlDataReader reader;
                NpgsqlCommand    com;
                lamps     = new List <Lamp>();
                executors = new List <Executor>();
                windows   = new List <Window>();
                sensors   = new List <Sensor>();
                if (isConnected)
                {
                    await disconnect();
                }
                await connect();

                com    = new NpgsqlCommand("SELECT \"id\", \"Name\", \"Value\", \"Conf\", \"Auto\" FROM \"Lamps\"", __conn);
                reader = await com.ExecuteReaderAsync();

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        int    _id     = Convert.ToInt32(reader.GetValue(0));
                        string _name   = Convert.ToString(reader.GetValue(1));
                        int    _val    = Convert.ToInt32(reader.GetValue(2));
                        string _conf   = Convert.ToString(reader.GetValue(3));
                        bool   _isAuto = Convert.ToBoolean(reader.GetValue(4));
                        Lamp   temp    = new Lamp(_id, _name, _isAuto);
                        temp.conf     = new Configurator(_conf);
                        temp.curValue = _val;
                        lamps.Add(temp);
                    }
                }
                com.Cancel();
                await disconnect();
                await connect();

                com    = new NpgsqlCommand("SELECT \"id\", \"Name\", \"Value\" FROM \"Sensors\"", __conn);
                reader = await com.ExecuteReaderAsync();

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        int    _id   = Convert.ToInt32(reader.GetValue(0));
                        string _name = Convert.ToString(reader.GetValue(1));
                        int    _val  = Convert.ToInt32(reader.GetValue(2));
                        Sensor temp  = new Sensor(_val, _name);
                        temp.id = _id;
                        sensors.Add(temp);
                    }
                }
                com.Cancel();
                await disconnect();
                await connect();

                com    = new NpgsqlCommand("SELECT \"id\", \"Name\", \"Value\", \"Conf\", \"Auto\" FROM \"Executors\"", __conn);
                reader = await com.ExecuteReaderAsync();

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        int      _id     = Convert.ToInt32(reader.GetValue(0));
                        string   _name   = Convert.ToString(reader.GetValue(1));
                        int      _val    = Convert.ToInt32(reader.GetValue(2));
                        string   _conf   = Convert.ToString(reader.GetValue(3));
                        bool     _isAuto = Convert.ToBoolean(reader.GetValue(4));
                        Executor temp    = new Executor(_id, _name, _isAuto);
                        temp.conf     = new Configurator(_conf);
                        temp.curValue = _val;
                        executors.Add(temp);
                    }
                }
                com.Cancel();
                await disconnect();
                await connect();

                com    = new NpgsqlCommand("SELECT \"id\", \"Name\", \"Conf\", \"Auto\", \"Value\", \"minValue\", \"maxValue\" FROM \"Windows\"", __conn);
                reader = await com.ExecuteReaderAsync();

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        int    _id        = Convert.ToInt32(reader.GetValue(0));
                        string _name      = Convert.ToString(reader.GetValue(1));
                        string _conf      = Convert.ToString(reader.GetValue(2));
                        bool   _isAuto    = Convert.ToBoolean(reader.GetValue(3));
                        int    _val1      = Convert.ToInt32(reader.GetValue(4));
                        int    _minValue1 = Convert.ToInt32(reader.GetValue(5));
                        int    _maxValue1 = Convert.ToInt32(reader.GetValue(6));

                        Window temp = new Window(_id, _name, _isAuto);
                        temp.conf            = new Configurator(_conf);
                        temp.curValueOfMotor = _val1;
                        temp.minValueOfMotor = _minValue1;
                        temp.maxValueOfMotor = _maxValue1;
                        windows.Add(temp);
                    }
                }
                await disconnect();

                setFunctions();
                mutexObj.ReleaseMutex();
                return(true);
            }
            catch
            {
                mutexObj.ReleaseMutex();
                return(false);
            }
        }