Beispiel #1
0
 //Открытие соединения
 private bool Connect()
 {
     try
     {
         try { if (_histReader != null)
               {
                   _histReader.Dispose();
               }
         } catch { }
         IsConnected = false;
         _connection.Close();
         _connection.Dispose();
     }
     catch { }
     try
     {
         Logger.AddEvent("Соединение с Historian");
         if (IsOriginal)
         {
             _connection = new OleDbConnection("Provider=OvHOleDbProv.OvHOleDbProv.1;Persist Security Info=True;User ID='';Data Source=" +
                                               DataSource + ";Location='';Mode=ReadWrite;Extended Properties=''");
         }
         else
         {
             _connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + DatabaseFile);
         }
         _connection.Open();
         return(IsConnected = _connection.State == ConnectionState.Open);
     }
     catch (Exception ex)
     {
         AddError(IsOriginal ? "Ошибка соединения с Historian" : "Не найден файл клона архива", ex);
         return(IsConnected = false);
     }
 }
Beispiel #2
0
        //Чтение значений по одному блоку списка объектов
        protected override ValuesCount ReadPart(IList <ListSourceOut> part,
                                                DateTime beg, DateTime en,        //Период считывания
                                                bool isCut)                       //Считывается срез
        {
            IRecordRead rec = null;

            using (Start(0, 50))
            {
                try
                {
                    AddEvent("Чтение значений блока объектов", part.Count + " объектов");
                    rec = _queryValuesFun(part, beg, en, isCut);
                    if (rec == null)
                    {
                        return(new ValuesCount(VcStatus.NoSuccess));
                    }
                }
                catch (Exception ex)
                {
                    AddError("Ошибка при запросе данных из источника", ex);
                    if (rec != null)
                    {
                        rec.Dispose();
                    }
                    return(new ValuesCount(VcStatus.NoSuccess));
                }
            }
            using (Start(50, 100))
            {
                try
                {
                    using (rec)
                    {
                        AddEvent("Распределение данных по сигналам", part.Count + " объектов");
                        var vc = ReadPartValues(rec);
                        AddEvent("Значения блока объектов прочитаны", vc.ToString());
                        return(vc);
                    }
                }
                catch (Exception ex)
                {
                    AddError("Ошибка при формировании значений", ex);
                    return(new ValuesCount(VcStatus.NoSuccess));
                }
            }
        }