Example #1
0
        public void Process(DateTime DateStart, DateTime DateEnd, RWModeEnum mode)
        {
            DateTime de  = ModbusDataWriter.GetFileDate(DateEnd, mode, false);
            DateTime now = ModbusDataWriter.GetFileDate(DateTime.Now, mode, true);

            DateEnd = de > now ? now : de;
            foreach (string id in InitArrays.Keys)
            {
                processDate(id, DateStart, DateEnd, mode);
            }
        }
Example #2
0
        public MasterModbusReader(int sleepTime)
        {
            SleepTime     = sleepTime;
            InitArrays    = new SortedList <string, ModbusInitDataArray>();
            Readers       = new SortedList <string, ModbusDataReader>();
            WritersHH     = new SortedList <string, ModbusDataWriter>();
            WritersMin    = new SortedList <string, ModbusDataWriter>();
            FinishReading = new SortedList <string, bool>();
            foreach (string fileName in Settings.single.InitFiles)
            {
                try {
                    Logger.Info(String.Format("Чтение настроек modbus из файла '{0}'", fileName));
                    ModbusInitDataArray arr = XMLSer <ModbusInitDataArray> .fromXML(fileName);

                    arr.processData();
                    InitArrays.Add(arr.ID, arr);
                    String.Format("===Считано {0} записей", arr.FullData.Count);

                    Logger.Info(String.Format("Создание объекта чтения данных"));
                    ModbusServer     sv     = new ModbusServer(arr.IP, (ushort)arr.Port);
                    ModbusDataReader reader = new ModbusDataReader(sv, arr);
                    reader.OnFinish += new FinishEvent(reader_OnFinish);
                    readers.Add(arr.ID, reader);
                    String.Format("===Объект создан");

                    if (arr.WriteMin)
                    {
                        Logger.Info(String.Format("Создание объекта записи данных в файл (минуты)"));
                        ModbusDataWriter writer = new ModbusDataWriter(arr, RWModeEnum.min);
                        writersMin.Add(arr.ID, writer);
                        String.Format("===Объект создан");
                    }

                    if (arr.WriteHH)
                    {
                        Logger.Info(String.Format("Создание объекта записи данных в файл (получасовки)"));
                        ModbusDataWriter writer = new ModbusDataWriter(arr, RWModeEnum.hh);
                        writersHH.Add(arr.ID, writer);
                        String.Format("===Объект создан");
                    }

                    FinishReading.Add(arr.ID, false);
                } catch (Exception e) {
                    String.Format("===Ошибка при чтении настроек");
                    Logger.Error(e.ToString());
                }
            }
        }
Example #3
0
        public MasterModbusReader(int sleepTime)
        {
            SleepTime = sleepTime;
            InitArrays = new SortedList<string, ModbusInitDataArray>();
            Readers = new SortedList<string, ModbusDataReader>();
            WritersHH = new SortedList<string, ModbusDataWriter>();
            WritersMin = new SortedList<string, ModbusDataWriter>();
            FinishReading = new SortedList<string, bool>();
            foreach (string fileName in Settings.single.InitFiles) {
                try {
                    Logger.Info(String.Format("Чтение настроек modbus из файла '{0}'", fileName));
                    ModbusInitDataArray arr = XMLSer<ModbusInitDataArray>.fromXML(fileName);
                    arr.processData();
                    InitArrays.Add(arr.ID, arr);
                    String.Format("===Считано {0} записей", arr.FullData.Count);

                    Logger.Info(String.Format("Создание объекта чтения данных"));
                    ModbusServer sv=new ModbusServer(arr.IP, (ushort)arr.Port);
                    ModbusDataReader reader=new ModbusDataReader(sv, arr);
                    reader.OnFinish += new FinishEvent(reader_OnFinish);
                    readers.Add(arr.ID, reader);
                    String.Format("===Объект создан");

                    if (arr.WriteMin) {
                        Logger.Info(String.Format("Создание объекта записи данных в файл (минуты)"));
                        ModbusDataWriter writer=new ModbusDataWriter(arr, RWModeEnum.min);
                        writersMin.Add(arr.ID, writer);
                        String.Format("===Объект создан");
                    }

                    if (arr.WriteHH) {
                        Logger.Info(String.Format("Создание объекта записи данных в файл (получасовки)"));
                        ModbusDataWriter writer=new ModbusDataWriter(arr, RWModeEnum.hh);
                        writersHH.Add(arr.ID, writer);
                        String.Format("===Объект создан");
                    }

                    FinishReading.Add(arr.ID, false);

                } catch (Exception e) {
                    String.Format("===Ошибка при чтении настроек");
                    Logger.Error(e.ToString());
                }
            }
        }
Example #4
0
        public void Process(DateTime needDate, RWModeEnum mode, int depth)
        {
            DateTime DateEnd   = needDate.AddMinutes(0);
            DateTime DateStart = needDate.AddMinutes(0);

            if (mode == RWModeEnum.hh)
            {
                DateEnd   = ModbusDataWriter.GetFileDate(DateEnd, RWModeEnum.hh).AddMinutes(-30);
                DateStart = DateEnd.AddMinutes(-depth * 30);
            }
            else
            {
                DateEnd   = ModbusDataWriter.GetFileDate(DateEnd, RWModeEnum.min).AddMinutes(-1);
                DateStart = DateEnd.AddMinutes(-depth * 1);
            }

            foreach (string id in InitArrays.Keys)
            {
                processDate(id, DateStart, DateEnd, mode);
            }
        }
Example #5
0
        protected void processDate(string idInitArray, DateTime DateStart, DateTime DateEnd, RWModeEnum mode)
        {
            DateTime date = DateStart.AddHours(0);

            while (date <= DateEnd)
            {
                try {
                    DataDBWriter writer = Writers[idInitArray];
                    bool         ready  = writer.init(ModbusDataWriter.GetFileName(InitArrays[idInitArray], mode, date, false));
                    if (ready)
                    {
                        writer.ReadAll();
                        writer.writeData(mode);
                    }
                } catch (Exception e) {
                    Logger.Error("Ошибка при записи в базу");
                    Logger.Info(e.ToString());
                } finally {
                    date = date.AddMinutes(30);
                }
            }
        }