public RpdMeter Build()
        {
            var meter = new RpdMeter(null, _rpdMeterSystemInformation.Address, _rpdMeterName);

            switch (_rpdMeterSystemInformation.Type)            //при изменении типа, класс RpdMeter автоматически генерирует новый список каналов с определенными DumpConditions (ConnectionPointIndex = 0)
            {
            case 0:
                meter.Type = RpdMeterType.Uran;
                break;

            case 1:
                meter.Type = RpdMeterType.Irvi;
                break;

            case 2:
                meter.Type = RpdMeterType.Radar;
                break;
            }
            for (int i = 0; i < meter.Channels.Count; ++i)
            {
                meter.Channels[i].IsEnabled = ((_rpdMeterSystemInformation.ChannelsMask & (0x01 << i)) != 0x00);                 // По маске каналов определяется разрешён ли канал
                if (_rpdMeterSystemInformation.ChannelsDumpRulesCodes[i] != 0)
                {
                    meter.Channels[i].DumpCondition.IsUsed = true;
                    meter.Channels[i].DumpCondition.ConnectionPointIndex = _rpdMeterSystemInformation.ChannelsDumpRulesCodes[i];
                }
            }
            return(meter);
        }
Esempio n. 2
0
        public RpdMeter GenerateRpdMeter(string name)
        {
            //Log.Global.Info("GenerateRpdMeter > " + name);
            var meter = new RpdMeter(null, Address, name);

            switch (Type)             //при изменении типа, класс RpdMeter автоматически генерирует новый список каналов с определенными DumpConditions (ConnectionPointIndex = 0)
            {
            case 0:
                meter.Type = RpdMeterType.Uran;
                break;

            case 1:
                meter.Type = RpdMeterType.Irvi;
                break;

            case 2:
                meter.Type = RpdMeterType.Radar;
                break;
            }
            for (int i = 0; i < meter.Channels.Count; ++i)
            {
                meter.Channels[i].IsEnabled = ((ChannelsMask & (0x01 << i)) != 0x00);                 // По маске каналов определяется разрешён ли канал
                //Log.Global.Info("Channel[" + i + "].IsEnabled=" + meter.Channels[i].IsEnabled);
                //meter.Channels[i].IsEnabled = (( ChannelsMask & (0x01 << i)) == (0x01 << i));
                if (/*meter.Channels[i].IsEnabled && */ ChannelsDumpRulesCodes[i] != 0)
                {
                    meter.Channels[i].DumpCondition.IsUsed = true;
                    meter.Channels[i].DumpCondition.ConnectionPointIndex = ChannelsDumpRulesCodes[i];
                }
            }
            return(meter);
        }
Esempio n. 3
0
        //----------------------------------------------------------------------------------------------------------------
        /// <summary>
        /// Получить измеритель по его адресу
        /// </summary>
        /// <param name="meterAddress">Aдрес измерителя</param>
        /// <returns>Найденный измеритель или null, если измеритель с таким номером не найден</returns>
        public RpdMeter GetMeterByAddress(int meterAddress)
        {
            RpdMeter result = null;

            foreach (IRpdMeter im in RpdMeters)
            {
                var m = (RpdMeter)im;
                if (m.Address == meterAddress)
                {
                    result = m;
                }
            }
            return(result);
        }