public void LoadEdited(IRecordRead rec) { Units = rec.GetString("Units"); Min = rec.GetDouble("Min"); Max = rec.GetDouble("Max"); ObjectCode = rec.GetString("ObjectCode"); }
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()); } } }
//Чтение значений по одному выходу из рекордсета источника //Возвращает количество сформированных значений 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); }
//Чтение мгновенных значений из таблицы 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(); } }
//Получает значение из текущей строчки рекордсета private double Mean(IRecordRead rec) { if (!rec.IsNull("F_VALUE")) { return(rec.GetDouble("F_VALUE")); } return(rec.GetInt("RAW_VALUE")); }
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)); }
//Подгрузка свойств имитируемого юнита из таблиц 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"); }
//Рекурсивно вызываемая процедура чтения значения точек графика 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); } }
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); }
//Получение значения из рекордсета 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); }
public override void ValueFromRec(IRecordRead rec, string field) { rec.GetDouble(field); }