Ejemplo n.º 1
0
        //Чтение значений по одному выходу из рекордсета источника
        //Возвращает количество сформированных значений
        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);
        }
Ejemplo n.º 2
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");
        }
Ejemplo n.º 3
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));
        }
Ejemplo n.º 4
0
        //Определение текущего считываемого выхода
        protected override ListSourceOut DefineOut(IRecordRead rec)
        {
            int dn  = this is KosmotronikaRetroSource ? 1 : 0;
            var ind = new OutIndex(rec.GetInt(0), rec.GetInt(1), rec.GetInt(2), IsAnalog ? 1 : rec.GetInt(5 + dn));

            if (IsAnalog && Analogs.ContainsKey(ind))
            {
                return(Analogs[ind]);
            }
            return(Outs.ContainsKey(ind) ? Outs[ind] : null);
        }
Ejemplo n.º 5
0
        public CalcParamArchive(IRecordRead rec, Project project)
        {
            FirstParam = project.CalcParamsId[rec.GetInt("CalcParamId")];
            int sid = rec.GetInt("CalcSubParamId");

            LastParam    = project.CalcSubParamsId[sid];
            DataType     = rec.GetString("DataType").ToDataType();
            ArchiveParam = new ArchiveParam(rec.GetString("FullCode"), DataType, rec.GetString("Units"), FirstParam, LastParam,
                                            rec.GetString("SuperProcessType").ToSuperProcess(), rec.GetInt("DecPlaces", -1), rec.GetDoubleNull("Min"), rec.GetDoubleNull("Max"));                         //ab 12.04.2019 в Min и Max было rec.GetDouble
            _saveAbsolute = ArchiveParam.SuperProcess.IsAbsolute();
            _savePeriodic = ArchiveParam.SuperProcess.IsPeriodic();
        }
Ejemplo n.º 6
0
 public ReportCell(IRecordRead rec) : base(rec)
 {
     Id       = rec.GetInt("CellId");
     X        = rec.GetInt("X");
     Y        = rec.GetInt("Y");
     SaveCode = rec.GetString("SaveCode");
     if (SaveCode.IsEmpty())
     {
         SaveCode = Page + "_" + Y + "_" + X;
     }
     AllowEdit = rec.GetBool("AllowEdit");
 }
Ejemplo n.º 7
0
 //Подгрузка свойств имитируемого юнита из таблиц
 public ImitSignal(IRecordRead rec, Imitator imitator) : base("", rec.GetString("FullCode"), DataType.Variant, imitator)
 {
     Imitator        = imitator;
     ImitId          = rec.GetInt("ImitId");
     ImitType        = rec.GetInt("ImitType");
     _intervalLength = rec.GetInt("IntervalLength");
     if (_intervalLength < 0)
     {
         _intervalLength = 0;
     }
     _intervalSpan = new TimeSpan(0, 0, _intervalLength);
     _signalValue  = rec.GetDouble("SignalValue");
     _signalNd     = rec.GetInt("SignalNd");
 }
Ejemplo n.º 8
0
 public TablRow(Tabl tabl, int level, IRecordRead rec)
 {
     Code = rec.GetString("Code");
     Num  = rec.GetInt("Num");
     Id   = rec.GetInt("Id");
     if (level > 0)
     {
         ParentId = rec.GetInt("ParentId");
     }
     _fieldsDic = tabl.Fields[level];
     _fields    = new Mean[_fieldsDic.Count];
     foreach (var f in _fieldsDic.Values)
     {
         _fields[f.Num] = Mean.Create(f.DataType, rec, f.Name);
     }
 }
Ejemplo n.º 9
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);
        }
Ejemplo n.º 10
0
 protected BaseObject(IRecordRead rec)
 {
     Id        = rec.GetInt("ObjectId");
     Code      = rec.GetString("CodeObject");
     Name      = rec.GetString("NameObject");
     InfObject = rec.GetString("InfObject");
 }
Ejemplo n.º 11
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;
     }
 }
Ejemplo n.º 12
0
 //Конструктор, на входе рекордсет с таблицей Functions
 internal FunCompile(IRecordRead rec)
 {
     Name    = rec.GetString("Name");
     Synonym = rec.GetString("Synonym");
     Code    = (rec.GetString("Code") ?? (Synonym ?? Name)).ToLower();
     Id      = rec.GetInt("Id");
 }
Ejemplo n.º 13
0
 //Если провайдер позволяет, чтение из таблицы архива
 public ArchiveInterval(IRecordRead rec, IntervalType type) : base(rec)
 {
     Type       = type;
     Name       = rec.GetString("IntervalName");
     Id         = rec.GetInt("IntervalId");
     TimeChange = rec.GetTime("TimeChange");
 }
Ejemplo n.º 14
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");
 }
Ejemplo n.º 15
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");
 }
Ejemplo n.º 16
0
 //Получает значение из текущей строчки рекордсета
 private double Mean(IRecordRead rec)
 {
     if (!rec.IsNull("F_VALUE"))
     {
         return(rec.GetDouble("F_VALUE"));
     }
     return(rec.GetInt("RAW_VALUE"));
 }
Ejemplo n.º 17
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();
 }
Ejemplo n.º 18
0
 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));
 }
Ejemplo n.º 19
0
        //Конструктор для чтения информации по параметру из рекордсета
        //rec - рекордсет с таблицей CalcParams, project - проект
        public CalcParam(Project project, IRecordRead rec, bool isSubParam)
        {
            Project = project;
            _logger = Project.ThreadCalc;
            try
            {
                Code          = rec.GetString("Code");
                Id            = rec.GetInt("CalcParamId");
                Name          = rec.GetString("Name");
                Units         = rec.GetString("Units");
                Comment       = rec.GetString("Comment");
                Interpolation = rec.GetString("InterpolationType").ToInterpolation();
                if (Interpolation == InterpolationType.None)
                {
                    Interpolation = project.Interpolation;
                }
                ExprString = rec.GetString("Expr");
                ResultType = rec.GetString("ResultType");
                Min        = rec.GetDoubleNull("Min");
                Max        = rec.GetDoubleNull("Max");
                DecPlaces  = rec.GetIntNull("DecPlaces");
                Tag        = rec.GetString("Tag");

                if (!isSubParam)
                {
                    CalcParamType = rec.GetString("CalcParamType").ToCalcParamType();
                    if (CalcParamType != CalcParamType.Class)
                    {
                        HandInputValue = new Moment(CalcParamType.HandDataType(), rec.GetString("DefaultValue"));
                    }
                    Task       = rec.GetString("Task");
                    CodeSignal = rec.GetString("CodeSignal");
                }

                //Архив
                SuperProcess = rec.GetString("SuperProcessType").ToSuperProcess();

                //Приемник
                var rcode = rec.GetString("ReceiverCode");
                if (Project.SignalsReceivers.ContainsKey(rcode))
                {
                    ReceiverSignal = Project.SignalsReceivers[rcode].ReceiverSignal;
                }

                if (!rec.GetString("ErrMess").IsEmpty())
                {
                    _logger.AddError("Список расчетных параметров содержит ошибки компиляции", null, "Параметр=" + Code);
                }
            }
            catch (Exception ex)
            {
                AddLog(ex);
            }
        }
Ejemplo n.º 20
0
 public ThreadController(IRecordRead rec)
 {
     using (var c = Start())
     {
         Id              = rec.GetInt("ThreadId");
         ThreadName      = Id.ToString();
         ApplicationType = ApplicationType.Controller;
         OpenHistory(General.ControllerDir + @"History\History" + Id + ".accdb", General.HistryTemplateFile, true);
         PrepareResultFile();
         using (StartAtom(Atom.OpenThread))
         {
             try
             {
                 AddEvent("Чтение списка функций");
                 ReadFunctions();
                 AddEvent("Чтение свойств потока");
                 Comment         = rec.GetString("Comment");
                 IsPeriodic      = rec.GetBool("IsPeriodic");
                 CalcType        = IsPeriodic ? "Периодический" : "Разовый";
                 PeriodLength    = rec.GetDouble("PeriodLength", 15);
                 SourcesLate     = rec.GetDouble("SourcesLate", 2);
                 RushWaitingTime = rec.GetDouble("RushWaitingTime");
                 TimeAfterError  = rec.GetDouble("TimeAfterError", 5);
                 IsImit          = rec.GetBool("IsImit");
                 ImitModeStr     = rec.GetString("ImitMode");
                 using (var sys = new SysTabl(ResultFile))
                 {
                     PeriodBegin    = sys.SubValue("PeriodInfo", "PeriodBegin").ToDateTime();
                     PeriodEnd      = sys.SubValue("PeriodInfo", "PeriodEnd").ToDateTime();
                     CalcName       = sys.SubValue("PeriodInfo", "CalcName");
                     StartMoment    = sys.SubValue("PeriodInfo", "StartMoment").ToDateTime();
                     StartTime      = sys.SubValue("PeriodInfo", "StartTime").ToDateTime();
                     StopTime       = sys.SubValue("PeriodInfo", "StopTime").ToDateTime();
                     IsStopTime     = sys.SubValue("PeriodInfo", "IsStopTime") == "True";
                     _lastErrorText = sys.SubValue("LastErrorInfo", "ErrorText");
                     _lastErrorTime = sys.SubValue("LastErrorInfo", "ErrorPeriodBegin").ToDateTime();
                     _lastErrorPos  = 0;
                     UpdateTablo();
                 }
                 _state = State.Stopped;
             }
             catch (Exception ex)
             {
                 AddError("Ошибка загрузки потока", ex);
             }
         }
         StartAtom(Atom.ReadSetup, ReadSetup);
         IsClosed = false;
         if (c.IsError)
         {
             Different.MessageError("Ошибка загрузки данных потока расчета. " + c.ErrorMessage());
         }
     }
 }
Ejemplo n.º 21
0
        //Получает недостоверность из текущей строчки рекордсета
        private int Nd(IRecordRead rec)
        {
            //Недостоверность 8 и 9 бит, 00 - good, 01 - fair(имитация), 10 - poor(зашкал), 11 - bad
            if (rec.IsNull("STS") || (rec.IsNull("F_VALUE") && rec.IsNull("RAW_VALUE")))
            {
                return(1);
            }
            int state = rec.GetInt("STS");

            return(state.GetBit(8) && state.GetBit(9) ? 1 : 0);
        }
Ejemplo n.º 22
0
        //Чтение значений по одному выходу из рекордсета источника
        //Возвращает количество сформированных значений
        protected override int ReadMoments(IRecordRead rec)
        {
            DateTime time = rec.GetTime("DateTime");
            var      err  = MakeError(rec.GetInt("QualityDetail"));

            if (ValueSignal.DataType.IsReal())
            {
                return(AddMomReal(ValueSignal, time, rec, "Value", err));
            }
            return(AddMomString(ValueSignal, time, rec, "vValue", err));
        }
Ejemplo n.º 23
0
 //Чтение из рекордсета из проекта
 public VedColumn(IRecordRead rec)
 {
     _id                = rec.GetInt("ColumnId");
     _otm               = rec.GetBool("Otm");
     _num               = rec.GetInt("ColumnNum");
     SourceType         = GetSourceType(rec.GetString("DataSourceType"));
     Code               = rec.GetString("DataSourceCode");
     _caption           = rec.GetString("Caption");
     DataType           = rec.GetString("DataType").ToDataType();
     LinVedView         = GetVedView(rec.GetString("LinVedView"));
     GroupVedView       = GetVedView(rec.GetString("GroupVedView"));
     _krestVedView      = GetVedView(rec.GetString("KrestVedView"));
     _graphicView       = rec.GetString("GraphicView");
     _format            = rec.GetString("Format");
     _decimalPlaces     = rec.GetIntNull("DecimalPlaces");
     _textAlign         = rec.GetIntNull("TextAlign");
     _columnWidth       = rec.GetIntNull("ColumnWidth");
     _reportColumnWidth = rec.GetIntNull("ReportColumnWidth");
     _columnOrder       = rec.GetIntNull("ColumnOrder");
 }
Ejemplo n.º 24
0
        //Чтение одной строчки значений
        protected override int ReadMoments(IRecordRead rec)
        {
            var time  = rec.GetTime("Time");
            var state = rec.GetInt("StateSignal");

            return(AddMomReal(ValueSignal, time, rec, "ValueSignal") +
                   AddMom(StateSignal, time, state) +
                   AddMomBool(BoolSignal, time, rec, "BoolSignal") +
                   AddMomInt(IntSignal, time, rec, "IntSignal") +
                   AddMomReal(RealSignal, time, rec, "RealSignal", MakeError(state)) +
                   AddMomString(StringSignal, time, rec, "StringSignal", MakeError(state)) +
                   AddMomTime(TimeSignal, time, rec, "TimeSignal"));
        }
Ejemplo n.º 25
0
 public GridError(IRecordRead rec)
 {
     Id           = rec.GetInt("Id");
     Description  = rec.GetString("Description");
     Params       = rec.GetString("Params");
     Time         = rec.GetTime("Time").ToString();
     _command     = rec.GetString("Command");
     _context     = rec.GetString("Context");
     Command      = _command + "\n" + _context;
     _periodBegin = rec.GetTimeNull("PeriodBegin");
     _periodEnd   = rec.GetTimeNull("PeriodEnd");
     Period       = _periodEnd == null ? null : (_periodBegin + "\n" + _periodEnd);
 }
Ejemplo n.º 26
0
        //Конструктор, на входе рекордсет с таблицей FunctionsOverloads
        public FunOverload(IRecordRead reco, FunClass funClass)
        {
            Owner      = funClass;
            Number     = reco.GetInt("RunNumber");
            IsCombined = reco.GetBool("IsCombined");
            for (int i = 1; i <= 9; ++i)
            {
                var t = reco.GetString("Operand" + i);
                if (t.IsEmpty())
                {
                    break;
                }
                Inputs.Add(new FunParam(TypeFromString(t), reco.GetString("Default" + i)));
            }
            for (int i = 1; i <= 2; ++i)
            {
                var t = reco.GetString("More" + i);
                if (t.IsEmpty())
                {
                    break;
                }
                InputsMore.Add(new FunParam(TypeFromString(t)));
            }

            var s = reco.GetString("Result");

            if (!IsCombined)
            {
                Result = TypeFromString(s);
            }
            else
            {
                var p = s.Split('+');
                foreach (string c in p)
                {
                    if (c == "M1")
                    {
                        InputsMore[0].FormResult = true;
                    }
                    else if (c == "M2")
                    {
                        InputsMore[1].FormResult = true;
                    }
                    else
                    {
                        Inputs[int.Parse(c) - 1].FormResult = true;
                    }
                }
            }
        }
Ejemplo n.º 27
0
 //Конструктор, на входе рекорсет rec, objects - список объектов, checkErrors: true - проверка сигналов, false - сигналы для компиляции
 public Signal(IRecordRead rec, DicI <ObjectSignal> objects, bool checkErrors)
 {
     ErrMess       = "";
     Code          = rec.GetString("CodeSignal");
     Name          = rec.GetString("NameSignal");
     Units         = rec.GetString("Units");
     DataType      = rec.GetString("DataType").ToDataType();
     InUseSource   = false;
     InUseReceiver = false;
     ObjectId      = rec.GetInt("ObjectId");
     ConstValue    = rec.GetString("ConstValue");
     SourceName    = rec.GetString("SourceName");
     ReceiverName  = rec.GetString("ReceiverName");
     Inf           = rec.GetString("Inf");
     Default       = rec.GetBool("Default");
     if (checkErrors)
     {
         if (Code.IsEmpty())
         {
             ErrMess += "Не заполнен код (CodeSignal); ";
         }
         if (DataType == DataType.Error)
         {
             ErrMess += "Недопустимый тип данных (DataType); ";
         }
         if (ConstValue.IsEmpty() && SourceName.IsEmpty() && ReceiverName.IsEmpty())
         {
             ErrMess += "Должно быть заполнено имя источника (SourceName), имя приемника (ReceiverName) или значение константы (ConstValue); ";
         }
     }
     if (objects.ContainsKey(ObjectId))
     {
         ObjectSignal = objects[ObjectId];
         ObjectSignal.Signals.Add(Code, this);
         FullCode = ObjectSignal.Code + "." + Code;
         if (checkErrors)
         {
             //((RecDao)rec).Put("FullCode", FullCode);
             if (Default)
             {
                 objects[ObjectId].DefalutsCount++;
             }
             if (ErrMess != "")
             {
                 objects[ObjectId].ErrorInSignals = true;
             }
         }
     }
 }
Ejemplo n.º 28
0
        //Получает время из текущей строчки рекордсета
        private DateTime Time(IRecordRead rec)
        {
            var time = rec.GetTime("TIMESTAMP");

            time = time.AddMilliseconds(rec.GetInt("TIME_NSEC") / 1000000.0);
            if (IsOriginal)
            {
                time = time.ToLocalTime();
            }
            if (time < _begin)
            {
                time = _begin;
            }
            return(time);
        }
Ejemplo n.º 29
0
 //Чтение мгновенных значений из таблицы
 public void ReadMoments(IRecordRead rec)
 {
     while (!rec.EOF && rec.GetInt("ImitId") == ImitId)
     {
         if (!IsConstant)
         {
             var    mv    = new Moment(DataType, rec.GetDouble("Value"), rec.GetTime("Time"), rec.GetInt("Nd"));
             var    last  = _moments.Count == 0 ? null : _moments[_moments.Count - 1];
             double rtime = rec.GetDouble("RelativeTime");
             if ((last == null || last.Time < mv.Time) && rtime >= 0 && rtime < _intervalLength)
             {
                 _moments.Add(mv);
             }
         }
         rec.Read();
     }
 }
Ejemplo n.º 30
0
 public Grafic(IRecordRead recg, ThreadCalc thread)
     : base(recg.GetInt("Dimension"), 0)
 {
     Code       = recg.GetString("Code");
     GraficType = recg.GetString("GraficType").ToGraficType();
     ThreadCalc = thread;
     while (!recg.EOF && recg.GetString("Code").ToLower() == Code.ToLower())
     {
         try
         {
             ReadPoint(recg);
             recg.Read();
         }
         catch (Exception ex)
         {
             thread.AddError("Ошибка загрузки графика", ex, "График=" + Code);
         }
     }
 }