Esempio n. 1
0
 public void LoadEdited(IRecordRead rec)
 {
     Units      = rec.GetString("Units");
     Min        = rec.GetDouble("Min");
     Max        = rec.GetDouble("Max");
     ObjectCode = rec.GetString("ObjectCode");
 }
Esempio n. 2
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());
         }
     }
 }
Esempio n. 3
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);
        }
Esempio n. 4
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();
     }
 }
Esempio n. 5
0
 //Получает значение из текущей строчки рекордсета
 private double Mean(IRecordRead rec)
 {
     if (!rec.IsNull("F_VALUE"))
     {
         return(rec.GetDouble("F_VALUE"));
     }
     return(rec.GetInt("RAW_VALUE"));
 }
Esempio n. 6
0
 protected int AddMomReal(SourceSignal sig, DateTime time, IRecordRead rec, string field, MomErr err = null)
 {
     if (sig == null)
     {
         return(0);
     }
     sig.BufMom.Real = rec.GetDouble(field);
     return(sig.AddMom(time, err));
 }
Esempio 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");
 }
Esempio n. 8
0
        //Рекурсивно вызываемая процедура чтения значения точек графика
        public void ReadPoint(IRecordRead recg)
        {
            double      r = recg.GetDouble("X" + Dimension);
            GraficPoint g;

            if (Points.Count == 0 || r != Points[Points.Count - 1].Mean)
            {
                g = new GraficPoint(Dimension - 1, r);
                Points.Add(g);
            }
            else
            {
                g = Points.Last();
            }
            if (Dimension > 1)
            {
                g.ReadPoint(recg);
            }
        }
Esempio n. 9
0
        public static Mean Create(DataType dtype, IRecordRead rec, string field)
        {
            switch (dtype)
            {
            case DataType.Real:
                return(new MeanReal(rec.GetDouble(field)));

            case DataType.String:
                return(new MeanString(rec.GetString(field)));

            case DataType.Integer:
                return(new MeanInteger(rec.GetInt(field)));

            case DataType.Boolean:
                return(new MeanBool(rec.GetBool(field)));

            case DataType.Time:
                return(new MeanTime(rec.GetTime(field)));
            }
            return(null);
        }
Esempio n. 10
0
        //Получение значения из рекордсета
        public static Mean GetMean(this IRecordRead rec, DataType dtype, string field)
        {
            switch (dtype)
            {
            case DataType.Real:
                return(new RealMean(rec.GetDouble(field)));

            case DataType.String:
                return(new StringMean(rec.GetString(field)));

            case DataType.Integer:
                return(new IntMean(rec.GetInt(field)));

            case DataType.Boolean:
                return(new BoolMean(rec.GetBool(field)));

            case DataType.Time:
                return(new TimeMean(rec.GetTime(field)));
            }
            return(null);
        }
Esempio n. 11
0
 public override void ValueFromRec(IRecordRead rec, string field)
 {
     rec.GetDouble(field);
 }