Beispiel #1
0
 //Чтение данных из Historian за период
 public override void GetValues()
 {
     foreach (var sig in ProviderSignals.Values)
     {
         sig.Value.Moments.Clear();
     }
     using (Logger.Start(0, 40))
         Logger.Danger(() => GetVals(BeginRead.AddMinutes(-30), BeginRead, true), 3, 30000, "Ошибка при чтении из базы данных МИР");
     using (Logger.Start(40))
         Logger.Danger(() => GetVals(BeginRead, EndRead, false), 3, 30000, "Ошибка при чтении из базы данных МИР");
 }
Beispiel #2
0
 //Чтение значений
 public override void GetValues()
 {
     try
     {
         DateTime beg = BeginRead.AddMinutes(-BeginRead.Minute).AddSeconds(-BeginRead.Second - 1);
         DateTime en  = EndRead.AddSeconds(1);
         using (var db = new DaoDb(_db))
         {
             foreach (var tableName in _objects.Keys)
             {
                 Logger.AddEvent("Чтение значений из таблицы " + tableName + "_ARCHIVE");
                 using (var rec = new RecDao(db, "SELECT * FROM " + tableName + "_ARCHIVE " +
                                             "WHERE (TYPE = 0) AND (Время >= " + beg.ToAccessString() + ") AND (Время <= " + en.ToAccessString() + ")"))
                     while (rec.Read())
                     {
                         int id = rec.GetInt("PARENT_ID");
                         if (_objectsId.ContainsKey(id))
                         {
                             var ob = _objectsId[id];
                             foreach (var sigCode in ob.Signals.Keys)
                             {
                                 ob.Signals[sigCode].AddMoment(rec.GetTime("Время"), rec.GetDouble(sigCode));
                             }
                         }
                     }
             }
             foreach (var tableName in _totals.Keys)
             {
                 Logger.AddEvent("Чтение значений из таблицы " + tableName + "_TOTALS");
                 using (var rec = new RecDao(db, "SELECT * FROM " + tableName + "_TOTALS " +
                                             "WHERE (Время >= " + beg.ToAccessString() + ") AND (Время <= " + en.ToAccessString() + ")"))
                     while (rec.Read())
                     {
                         int id = rec.GetInt("PARENT_ID");
                         if (_totalsId.ContainsKey(id))
                         {
                             var ob = _totalsId[id];
                             foreach (var sigCode in ob.Signals.Keys)
                             {
                                 ob.Signals[sigCode].AddMoment(rec.GetTime("Время"), rec.GetDouble(sigCode));
                             }
                         }
                     }
             }
         }
     }
     catch (Exception ex)
     {
         Logger.AddError("Ошибка при чтении данных из файла программы Пролог", ex);
     }
 }
Beispiel #3
0
 //Чтение значений из источника
 public override void GetValues()
 {
     try
     {
         if (!IsConnected && !Connect())
         {
             return;
         }
         Logger.AddEvent("Чтение значений из Historian", _objectsId.Count + " объектов");
         foreach (var ps in Signals.Values)
         {
             ps.Value.Moments.Clear();
         }
         var lens = new[] { 4, 61 };
         for (int i = 0; i < lens.Length; i++)
         {
             var bparts = new List <List <ProviderObject> >();
             foreach (var ob in _objectsId.Values)
             {
                 if (!ob.HasBegin(BeginRead))
                 {
                     if (bparts.Count == 0 || bparts[bparts.Count - 1].Count == 200)
                     {
                         bparts.Add(new List <ProviderObject>());
                     }
                     bparts[bparts.Count - 1].Add(ob);
                 }
             }
             if (bparts.Count > 0)
             {
                 Logger.AddEvent("Получение среза значений по " + lens[i] + " минутам");
                 _b = BeginRead.AddMinutes(-lens[i]);
                 _e = BeginRead;
                 using (Logger.Start(i * 20 - 20, i * 20))
                     ReadValuesByParts(GetValuesRecordset, FormObjectBegin, bparts);
             }
         }
         foreach (var sig in ProviderSignals.Values)
         {
             if (sig.BeginMoment != null)
             {
                 NumWrite += sig.AddBegin(BeginRead); //ab Добавлен параметр BeginRead
             }
         }
         Logger.AddEvent("Получение изменений значений", _objectsId.Values.Count + " объектов");
         _b = BeginRead;
         _e = EndRead;
         using (Logger.Start(40, 90))
             ReadValuesByParts(GetValuesRecordset, FormObjectChanges, _parts);
         int w = 0;
         foreach (var sig in ProviderSignals.Values)
         {
             w += sig.MakeEnd(EndRead);
         }
         int r = _objectsId.Values.Count(ob => !ob.HasBegin(EndRead));
         NumWrite += w;
         Logger.AddEvent("Чтение значений из Historian завершено", "Добавлено " + w + " значений в конец. " + r + " неопределенных срезов");
     }
     catch (Exception ex)
     {
         Logger.AddError("Ошибка при получении значений из Historian", ex);
         IsConnected = false;
     }
 }