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); } }
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()); } } }
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()); } } }
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); } }
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); } } }