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); }
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); }
//---------------------------------------------------------------------------------------------------------------- /// <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); }