public static bool IsEqualTo(this IRpdMeter meter1, IRpdMeter meter2) { if (meter1.Address != meter2.Address) { return(false); } if (meter1.Channels.Count != meter2.Channels.Count) { return(false); } for (int i = 0; i < meter1.Channels.Count; ++i) { if (!meter1.Channels[i].IsEqualTo(meter2.Channels[i])) { return(false); } } if (meter1.Name != meter2.Name) { return(false); } if (meter1.Type != meter2.Type) { return(false); } return(true); }
/// <summary> /// Конструктор. /// </summary> /// <param name="meter">Измеритель.</param> public RpdMeterViewModel(IRpdMeter meter, IRpdConfigurator rpdConfigurator, ConnectionPointsViewModel connectionPointsViewModel) { this.Meter = meter; this.rpdConfigurator = rpdConfigurator; this.connectionPointsViewModel = connectionPointsViewModel; fillChannels(); }
public RpdMeterTableRecord(IRpdMeter meter) { Address = (byte)meter.Address; switch (meter.Type) { case RpdMeterType.Uran: Type = 0; break; case RpdMeterType.Irvi: Type = 1; break; case RpdMeterType.Radar: Type = 2; break; } Status = 0; LinkErrorCounter = 0; ChannelsCount = 0; ChannelsMask = 0; ChannelsMaskFromMeter = 0; ChannelsDumpRulesCodes = new byte[MaxChannels]; for (int i = 0; i < meter.Channels.Count; i++) //в этом цикле считаем маску разрешенных каналов и номера правил из таблицы правил регистрации и контроля { if (meter.Channels[i].IsEnabled) { ChannelsCount++; //как быть со служебными каналами? ChannelsMask += (ushort)(0x01 << i); // Math.Pow(2, i); //если канал разрешен - выжигаем единицу в маске :) } //выставляем номер условия канала, если оно используются для разрешенного канала: if (meter.Channels[i].IsEnabled) { if (meter.Channels[i].DumpCondition.IsUsed /* && */) { ChannelsDumpRulesCodes[i] = (byte)(meter.Channels[i].DumpCondition.ConnectionPointIndex); } else { ChannelsDumpRulesCodes[i] = 0; //а если не используется - пишем 0 } } else { ChannelsDumpRulesCodes[i] = 0; } } ChannelsDumpedCount = ChannelsCount; HigherReadedFaultNumber = 0; ReadedFaultsCount = 0; NumberOfFaultDumpsForMeter = 0; PageLine = 0; PageLinesCountPerFault = 0; Crc = 0; }
/// <summary> /// Вызывается по резульатут отображения диалога выбора типа счетчика. /// </summary> private void onSelectMeterTypeComplete(SelectMeterTypeResult result) { if (result.Result) { // добавляем измеритель в список. IRpdMeter meter = deviceConfiguration.CreateMeter(); meter.Type = result.MeterType; // при добавлении измерителя в этот список, будет автоматически // создана модель представления этого измеритя блягодаря классу ObservaleCollectionsLinker deviceConfiguration.RpdMeters.Add(meter); } }
public RpdChannel(IRpdMeter owner, int number, string name, bool isEnabled, bool isService, TrendType type) { InitWorker(); OwnerMeter = owner; Name = name; Number = number; IsEnabled = isEnabled; IsService = isService; CurrentValue = null; Type = type; //----------------------------- Trend = new List <IDataPoint>(); IsTrendExists = false; IsTrendLoaded = false; DumpCondition = new RpdChannellDumpCondition(); //this.Start = new DateTime(); //this.Start = new DateTime(); }
public RpdMeterSystemInformationBuilderFromRpdMeterSystem(IRpdMeter meter) { _meter = meter; }
public RpdMeterViewModel(IRpdMeter meter, FaultViewModel fault) { Fault = fault; _meter = meter; FillChannels(); }