示例#1
0
        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);
        }
示例#2
0
        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="meter">Измеритель.</param>
        public RpdMeterViewModel(IRpdMeter meter, IRpdConfigurator rpdConfigurator, ConnectionPointsViewModel connectionPointsViewModel)
        {
            this.Meter                     = meter;
            this.rpdConfigurator           = rpdConfigurator;
            this.connectionPointsViewModel = connectionPointsViewModel;

            fillChannels();
        }
示例#3
0
        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;
        }
示例#4
0
        /// <summary>
        /// Вызывается по резульатут отображения диалога выбора типа счетчика.
        /// </summary>
        private void onSelectMeterTypeComplete(SelectMeterTypeResult result)
        {
            if (result.Result)
            {
                // добавляем измеритель в список.
                IRpdMeter meter = deviceConfiguration.CreateMeter();
                meter.Type = result.MeterType;

                // при добавлении измерителя в этот список, будет автоматически
                // создана модель представления этого измеритя блягодаря классу ObservaleCollectionsLinker
                deviceConfiguration.RpdMeters.Add(meter);
            }
        }
示例#5
0
        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;
 }
示例#7
0
 public RpdMeterViewModel(IRpdMeter meter, FaultViewModel fault)
 {
     Fault  = fault;
     _meter = meter;
     FillChannels();
 }