コード例 #1
0
        //Попытка запроса
        private bool TryRunCommand()
        {
            try
            {
                var    begs = _b.ToOvationString();
                var    ens  = _e.ToOvationString();
                string s    = "";
                foreach (var ob in _objs)
                {
                    if (s != "")
                    {
                        s += " or ";
                    }
                    s += "(ID=" + ob.Id + ")";
                }
                s = "(" + s + ") and ";

                _histReader = new ReaderAdo(_connection, "select ID, TIMESTAMP, TIME_NSEC, F_VALUE, RAW_VALUE, STS from PT_HF_HIST " +
                                            "where " + s + " (TIMESTAMP >= " + begs + ") and (TIMESTAMP <= " + ens + ") order by TIMESTAMP, TIME_NSEC");
            }
            catch (Exception ex)
            {
                AddError("Ошибка выполнения запроса к Historian", ex);
                return(false);
            }
            return(true);
        }
コード例 #2
0
ファイル: FunCompile.cs プロジェクト: martugin/InfoTask2
 //Конструктор, на входе рекордсет с таблицей Functions
 internal FunCompile(IRecordRead rec)
 {
     Name    = rec.GetString("Name");
     Synonym = rec.GetString("Synonym");
     Code    = (rec.GetString("Code") ?? (Synonym ?? Name)).ToLower();
     Id      = rec.GetInt("Id");
 }
コード例 #3
0
ファイル: DerivedParam.cs プロジェクト: martugin/InfoTask2
 public void LoadEdited(IRecordRead rec)
 {
     Units      = rec.GetString("Units");
     Min        = rec.GetDouble("Min");
     Max        = rec.GetDouble("Max");
     ObjectCode = rec.GetString("ObjectCode");
 }
コード例 #4
0
 //Загрузка из рекордсета ReporterData
 public ReportProjectForData(ReportBook book, IRecordRead rec) : base(book, rec)
 {
     ProjectChangeTime = Different.MinDate;
     ArchiveChangeTime = Different.MinDate;
     DataChangeTime    = Different.MinDate;
     LoadArchive(rec, book);
 }
コード例 #5
0
        //Изменяет элемент в GroupReports из рекордсета, id - ключ элемента, если элемента нет, то элемент добавляется
        public ListViewItem EditItem(IRecordRead rec, int id = 0)
        {
            int          key  = id == 0 ? rec.GetInt("GroupId") : id;
            var          code = rec.GetString("GroupCode");
            var          sid  = key.ToString();
            ListViewItem item = null;

            if (id == 0)
            {
                item = GroupReports.Items.Add(sid, code, null);
            }
            else
            {
                foreach (ListViewItem it in GroupReports.Items)
                {
                    if ((int)it.Tag == key)
                    {
                        item = it;
                    }
                }
            }
            item.SubItems.Clear();
            item.Tag  = key;
            item.Text = code;
            item.SubItems.Add(rec.GetString("GroupName"));
            return(item);
        }
コード例 #6
0
        //Чтение одной строчки значений
        protected override int ReadMoments(IRecordRead rec)
        {
            var time = rec.GetTime("Time");

            return(AddMomReal(ValueSignal, time, rec, "ValueSignal") +
                   AddMomReal(ValueSignal2, time, rec, "ValueSignal2"));
        }
コード例 #7
0
 //Если провайдер позволяет, чтение из таблицы архива
 public ArchiveInterval(IRecordRead rec, IntervalType type) : base(rec)
 {
     Type       = type;
     Name       = rec.GetString("IntervalName");
     Id         = rec.GetInt("IntervalId");
     TimeChange = rec.GetTime("TimeChange");
 }
コード例 #8
0
ファイル: MirOut.cs プロジェクト: martugin/InfoTask2
        //Чтение значений по одному выходу из рекордсета источника и добавление их в список или клон
        //Возвращает количество сформированных значений
        protected override int ReadMoments(IRecordRead rec)
        {
            var time = rec.GetTime("TIME");

            return(AddMomReal(IndicationSignal, time, rec, "VALUE_INDICATION") +
                   AddMomReal(UnitSignal, time, rec, "VALUE_UNIT"));
        }
コード例 #9
0
        public TablikCalcParam(TablikModule module, IRecordRead rec, bool isSubParam, bool isGenerated)
            : base(rec, isSubParam)
        {
            Module      = module;
            Keeper      = new TablikKeeper(this);
            IsGenerated = isGenerated;
            if (!Code.IsCorrectCode())
            {
                ErrMess     += "Указан недопустимый код расчетного параметра; ";
                IsFatalError = true;
            }

            CalcOn    = rec.GetBool("CalcOn");
            UserExpr1 = rec.GetString("UserExpr1", "");
            if (UserExpr1 == "")
            {
                ErrMess     += "Не заполнено расчетное выражение; ";
                IsFatalError = true;
            }
            UserExpr2 = rec.GetString("UserExpr2", "");
            if (UserExpr2 == "")
            {
                ErrMess     += "Не заполнено управляющее выражение; ";
                IsFatalError = true;
            }
            InputsStr = rec.GetString("Inputs");

            JoinToParamTree();
        }
コード例 #10
0
        //Чтение одной строчки значений
        protected override int ReadMoments(IRecordRead rec)
        {
            var time = rec.GetTime("Time");

            return(AddMomString(TextSignal, time, rec, "CommandText") +
                   AddMomInt(NumberSignal, time, rec, "CommandNumber"));
        }
コード例 #11
0
 public CalcParam(CalcModule module, IRecordRead rec, bool isSubParam)
     : base(rec, isSubParam)
 {
     Module       = module;
     CompiledExpr = rec.GetString("CompiledExpr");
     Keeper       = new CalcKeeper(this);
 }
コード例 #12
0
 //Конструктор, на входе рекордсет с таблицей Functions
 public FunClass(IRecordRead rec)
 {
     Name    = rec.GetString("Name");
     Synonym = rec.GetString("Synonym");
     Code    = rec.GetString("Code") ?? (Synonym ?? Name).ToLower();
     Type    = rec.GetString("CodeType");
 }
コード例 #13
0
ファイル: BaseObject.cs プロジェクト: martugin/InfoTask2
 protected BaseObject(IRecordRead rec)
 {
     Id        = rec.GetInt("ObjectId");
     Code      = rec.GetString("CodeObject");
     Name      = rec.GetString("NameObject");
     InfObject = rec.GetString("InfObject");
 }
コード例 #14
0
 public TimeInterval(IRecordRead rec)
 {
     try { Begin = rec.GetTime("TimeBegin"); }
     catch { Begin = rec.GetTime("Begin"); }
     try { End = rec.GetTime("TimeEnd"); }
     catch { End = rec.GetTime("End"); }
 }
コード例 #15
0
 //Создание провайдера архива
 protected void LoadArchive(IRecordRead rec, Logger logger)
 {
     try
     {
         if (!rec.GetString("CodeArchive").IsEmpty() && !rec.GetString("InfArchive").IsEmpty())
         {
             Archive = (IArchive)General.RunProvider(rec.GetString("CodeArchive"), CodeFinal + "_Archive", rec.GetString("InfArchive"), logger, ProviderSetupType.ReporterArchive);
         }
         if (Archive == null || !Archive.Check())
         {
             if (this is ReportProject)
             {
                 Book.AddError("Не удалось соединиться с архивом. Следует проверить настройки", null, CodeFinal + "_Archive");
             }
             Archive.Dispose();
             Archive = null;
         }
     }
     catch (Exception ex)
     {
         if (this is ReportProject)
         {
             Book.AddError("Не удалось соединиться с архивом. Следует проверить настройки", ex, CodeFinal + "_Archive");
         }
         Archive = null;
     }
 }
コード例 #16
0
 //rec - рекордсет таблицы Objects, checkErrors: true - проверка сигналов, false - сигналы для компиляции
 public ObjectSignal(IRecordRead rec, bool checkErrors)
 {
     Id   = rec.GetInt("ObjectId");
     Code = rec.GetString("CodeObject");
     Name = rec.GetString("NameObject");
     Tag  = rec.GetString("TagObject");
     if (checkErrors)
     {
         ErrMess = "";
         if (Id <= 0)
         {
             ErrMess += "Не заполнен идентификатор (ObjectId); ";
         }
         if (Code.IsEmpty())
         {
             ErrMess += "Не заполнен код (CodeObject); ";
         }
         if (rec.GetString("CommName").IsEmpty())
         {
             ErrMess += "Не заполнено имя коммуникатора (CommName); ";
         }
         DefalutsCount  = 0;
         ErrorInSignals = false;
     }
 }
コード例 #17
0
        public Prev(IRecordRead rec, Project project)
        {
            _project          = project;
            Code              = rec.GetString("FullCode");
            _calcParamArchive = _project.ArchiveParams[Code];
            var ap       = _calcParamArchive.ArchiveParam;
            var listLast = new List <IntervalType>();

            IsPrevAbs     = rec.GetBool("PrevAbs");
            IsLastBase    = rec.GetBool("LastBase");
            IsLastHour    = rec.GetBool("LastHour");
            IsLastDay     = rec.GetBool("LastDay");
            IsManyBase    = rec.GetBool("ManyBase");
            IsManyHour    = rec.GetBool("ManyHour");
            IsManyDay     = rec.GetBool("ManyDay");
            IsManyMoments = rec.GetBool("ManyMoments");

            if (IsLastBase)
            {
                listLast.Add(IntervalType.Base);
            }
            if (IsLastHour)
            {
                listLast.Add(IntervalType.Hour);
            }
            if (IsLastDay)
            {
                listLast.Add(IntervalType.Day);
            }
            if (listLast.Count > 0)
            {
                LastReportParam = new ArchiveReportParam(ap.FullCode, project.Code, ap.DataType, ap.SuperProcess, ap.FirstParam.CalcParamType, listLast);
            }
            var listMany = new List <IntervalType>();

            if (IsManyBase)
            {
                listMany.Add(IntervalType.Base);
                ManyBase = new List <Moment>();
            }
            if (IsManyHour)
            {
                listMany.Add(IntervalType.Hour);
                ManyHour = new List <Moment>();
            }
            if (IsManyDay)
            {
                listMany.Add(IntervalType.Day);
                ManyDay = new List <Moment>();
            }
            if (IsManyMoments)
            {
                listMany.Add(IntervalType.Moments);
                ManyMoments = new List <Moment>();
            }
            if (listMany.Count > 0)
            {
                ManyReportParam = new ArchiveReportParam(ap.FullCode, project.Code, ap.DataType, ap.SuperProcess, ap.FirstParam.CalcParamType, listMany);
            }
        }
コード例 #18
0
ファイル: KosmOut.cs プロジェクト: martugin/InfoTask2
        //Чтение значений по одному выходу из рекордсета источника
        //Возвращает количество сформированных значений
        protected override int ReadMoments(IRecordRead rec)
        {
            int      dn       = Source is KosmotronikaRetroSource ? 1 : 0;
            int      nwrite   = 0;
            DateTime time     = rec.GetTime(2 + dn);
            var      isAnalog = ((KosmotronikaBaseSource)Source).IsAnalog;
            int      ndint    = rec.GetInt(isAnalog ? 5 + dn : 7 + dn);
            var      err      = MakeError(ndint);

            nwrite += AddMom(PokSignal, time, rec.GetInt(4 + dn), err);
            nwrite += AddMom(StateSignal, time, ndint);
            if (isAnalog)
            {
                nwrite += AddMom(ValueSignal, time, rec.GetDouble(7 + dn), err);
            }
            else
            {
                var strValue = rec.GetString(8 + dn);
                if (strValue.IndexOf("0x", StringComparison.Ordinal) >= 0)
                {
                    nwrite += AddMom(ValueSignal, time, Convert.ToUInt32(strValue, 16), err);
                }
                else
                {
                    nwrite += AddMom(ValueSignal, time, Convert.ToDouble(strValue), err);
                }
            }
            return(nwrite);
        }
コード例 #19
0
        //Формирование параметра из рекордсета
        protected BaseCalcParam(IRecordRead rec,
                                bool isSubParam)               //Является подпараметром
        {
            IsSubParam = isSubParam;
            if (!IsSubParam)
            {
                ParamId = rec.GetInt("ParamId");
                Code    = rec.GetString("ParamCode");
                Name    = rec.GetString("ParamName");
                Task    = rec.GetString("Task");
            }
            else
            {
                OwnerId = rec.GetInt("ParamId");
                ParamId = rec.GetInt("SubParamId");
                Code    = rec.GetString("SubParamCode");
                Name    = rec.GetString("SubParamName");
            }
            Comment = rec.GetString("Comment");
            Units   = rec.GetString("Units");
            Min     = rec.GetString("Min");
            Max     = rec.GetString("Max");

            ArchiveParamType = rec.GetString("ArchiveParamType").ToArchiveParamType();
            SuperProcess     = rec.GetString("SuperProcess").ToSuperProcess();
            ObjectCode       = rec.GetString("ObjectCode");
        }
コード例 #20
0
        //Чтение значений из рекордсета по одному блоку
        private ValuesCount ReadPartValues(IRecordRead rec)
        {
            var vc = new ValuesCount();

            while (rec.Read())
            {
                vc.ReadCount++;
                ListSourceOut ob = null;
                try
                {
                    ob = _defineObjectFun(rec);
                    if (ob != null)
                    {
                        vc.WriteCount += ob.ReadMoments(rec);
                    }
                    vc.AddStatus(VcStatus.Success);
                }
                catch (Exception ex)
                {
                    AddErrorOut(ob == null ? "" : ob.Context, "Ошибка при чтении значений из рекордсета", ex);
                    vc.AddStatus(VcStatus.NoSuccess);
                }
            }
            return(vc);
        }
コード例 #21
0
 //Загрузка из файла данных
 public ReportParam(IRecordRead rec)
 {
     ArchiveParam = new ArchiveParam(rec);
     Project      = rec.GetString("Project");
     Id           = rec.GetInt("ParamId");
     FromArchive  = rec.GetBool("FromArchive");
     FromProject  = rec.GetBool("FromProject");
 }
コード例 #22
0
 public BaseTablikSignal(TablikConnect connect, IRecordRead rec)
 {
     Code     = rec.GetString("CodeSignal");
     Name     = rec.GetString("NameSignal");
     DataType = rec.GetString("DataType").ToDataType();
     Connect  = connect;
     Simple   = new SimpleType(DataType);
 }
コード例 #23
0
 public ArchiveReport(IRecordRead rec)
 {
     Code         = rec.GetString("Report");
     Name         = rec.GetString("ReportName");
     Type         = rec.GetString("ReportType").ToReportType();
     SourceChange = rec.GetTime("SourceChahge");
     Id           = rec.GetInt("ReportId");
 }
コード例 #24
0
 //Получает значение из текущей строчки рекордсета
 private double Mean(IRecordRead rec)
 {
     if (!rec.IsNull("F_VALUE"))
     {
         return(rec.GetDouble("F_VALUE"));
     }
     return(rec.GetInt("RAW_VALUE"));
 }
コード例 #25
0
ファイル: FunOverload.cs プロジェクト: martugin/InfoTask2
        //Конструктор
        internal FunOverload(FunCompile fun,  //Функция-владелец
                             IRecordRead rec) //Рекордсет с таблицей FunctionsOverloads
        {
            _arrayType = rec.GetString("ResultArray").ToArrayType();
            Code       = fun.Code + "_";

            for (int i = 1; i <= 9; ++i)
            {
                var dtype = rec.GetString("Operand" + i);
                if (dtype.IsEmpty())
                {
                    break;
                }
                string atype = i == 1 ? rec.GetString("Operand1Array") : "";
                var    fp    = new FunParam(dtype, atype, rec.GetString("Default" + i));
                _inputs.Add(fp);
                Code += fp.DataType.ToLetter();
            }
            for (int i = 1; i <= 2; ++i)
            {
                var dtype = rec.GetString("More" + i);
                if (dtype.IsEmpty())
                {
                    break;
                }
                var fp = new FunParam(dtype);
                _inputsMore.Add(fp);
                Code += fp.DataType.ToLetter();
            }

            var s  = rec.GetString("Result");
            var dt = s.ToDataType();

            _isCombined = dt == DataType.Error;
            if (!_isCombined)
            {
                _resultType = dt;
            }
            else
            {
                var p = s.Split('+');
                foreach (string c in p)
                {
                    if (c == "M1")
                    {
                        _inputsMore[0].UsedInResult = true;
                    }
                    else if (c == "M2")
                    {
                        _inputsMore[1].UsedInResult = true;
                    }
                    else
                    {
                        _inputs[int.Parse(c) - 1].UsedInResult = true;
                    }
                }
            }
        }
コード例 #26
0
 protected ReportObject(IRecordRead rec)
 {
     ParamId      = rec.GetInt("ParamId");
     Page         = rec.GetString("Page");
     LinkField    = rec.GetString("LinkField").ToLinkField();
     LinkType     = rec.GetString("LinkType").ToLinkType();
     IntervalType = rec.GetString("IntervalType").ToIntervalType();
     Properties   = rec.GetString("Properties").ToPropertyDicS();
 }
コード例 #27
0
ファイル: SourceOut.cs プロジェクト: martugin/InfoTask2
 protected int AddMomInt(SourceSignal sig, DateTime time, IRecordRead rec, string field, MomErr err = null)
 {
     if (sig == null)
     {
         return(0);
     }
     sig.BufMom.Integer = rec.GetInt(field);
     return(sig.AddMom(time, err));
 }
コード例 #28
0
        //Чтение значений по одному выходу из рекордсета источника и добавление их в список или клон
        //Возвращает количество сформированных значений
        protected override int ReadMoments(IRecordRead rec)
        {
            DateTime time    = rec.GetTime("TimeStamp").ToLocalTime();
            var      quality = rec.GetInt("Quality");
            var      err     = MakeError(quality);

            return(AddMom(FlagsSignal, time, rec.GetInt("Flags"), err) +
                   AddMom(QualitySignal, time, quality, err) +
                   AddMom(ValueSignal, time, ((AdoReader)rec).Reader["RealValue"], err));
        }
コード例 #29
0
ファイル: DerivedParam.cs プロジェクト: martugin/InfoTask2
 public DerivedParam(IRecordRead rec)
 {
     Code         = rec.GetString("FullCode");
     ParamCode    = rec.GetString("ParamCode");
     Name         = rec.GetString("FullName");
     ParamName    = rec.GetString("ParamName");
     Task         = rec.GetString("Task");
     SuperProcess = rec.GetString("SuperProcess").ToSuperProcess();
     LoadEdited(rec);
 }
コード例 #30
0
        //Загрузка потока контроллера
        public void AddThread(IRecordRead rec)
        {
            var t = new ThreadController(rec)
            {
                App = this, Synchro = Synchro
            };

            ThreadsDic.Add(t.Id, t);
            Threads.Add(t);
            MonitorHistory.AddHistoryTables(t.Id);
        }