//Чтение значений по одному выходу из рекордсета источника //Возвращает количество сформированных значений 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); }
//Формирование параметра из рекордсета 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"); }
//Чтение значений по одному выходу из рекордсета источника и добавление их в список или клон //Возвращает количество сформированных значений 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)); }
//Определение текущего считываемого выхода 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); }
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(); }
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"); }
//Подгрузка свойств имитируемого юнита из таблиц 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 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); } }
//Изменяет элемент в 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); }
protected BaseObject(IRecordRead rec) { Id = rec.GetInt("ObjectId"); Code = rec.GetString("CodeObject"); Name = rec.GetString("NameObject"); InfObject = rec.GetString("InfObject"); }
//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; } }
//Конструктор, на входе рекордсет с таблицей Functions internal FunCompile(IRecordRead rec) { Name = rec.GetString("Name"); Synonym = rec.GetString("Synonym"); Code = (rec.GetString("Code") ?? (Synonym ?? Name)).ToLower(); Id = rec.GetInt("Id"); }
//Если провайдер позволяет, чтение из таблицы архива public ArchiveInterval(IRecordRead rec, IntervalType type) : base(rec) { Type = type; Name = rec.GetString("IntervalName"); Id = rec.GetInt("IntervalId"); TimeChange = rec.GetTime("TimeChange"); }
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"); }
//Загрузка из файла данных public ReportParam(IRecordRead rec) { ArchiveParam = new ArchiveParam(rec); Project = rec.GetString("Project"); Id = rec.GetInt("ParamId"); FromArchive = rec.GetBool("FromArchive"); FromProject = rec.GetBool("FromProject"); }
//Получает значение из текущей строчки рекордсета private double Mean(IRecordRead rec) { if (!rec.IsNull("F_VALUE")) { return(rec.GetDouble("F_VALUE")); } return(rec.GetInt("RAW_VALUE")); }
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(); }
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)); }
//Конструктор для чтения информации по параметру из рекордсета //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); } }
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()); } } }
//Получает недостоверность из текущей строчки рекордсета 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); }
//Чтение значений по одному выходу из рекордсета источника //Возвращает количество сформированных значений 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)); }
//Чтение из рекордсета из проекта 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"); }
//Чтение одной строчки значений 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")); }
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); }
//Конструктор, на входе рекордсет с таблицей 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; } } } }
//Конструктор, на входе рекорсет 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; } } } }
//Получает время из текущей строчки рекордсета 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); }
//Чтение мгновенных значений из таблицы 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(); } }
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); } } }