public LorImport(string filename) { var deserializer = new XmlSerializer(typeof(LMS.sequence)); LMS.sequence sequence; using (TextReader textReader = new StreamReader(filename)) { sequence = (LMS.sequence)deserializer.Deserialize(textReader); } this.eventPeriodInMilliseconds = 50; this.effectsPerChannel = (int)(sequence.channels.Max(x => x.centiseconds) * 10 / this.eventPeriodInMilliseconds); foreach (var channel in sequence.channels) { if (channel.deviceType != null && channel.deviceType != "LOR") { this.log.Warning("Not supporting device type {0} yet", channel.deviceType); continue; } var channelIdentity = new UnitCircuit(channel.unit, channel.circuit); AddChannelData(channelIdentity, new ChannelData(channel.name)); var channelEffectData = new byte[this.effectsPerChannel]; for (int pos = 0; pos < this.effectsPerChannel; pos++) { long centiSeconds = pos * this.eventPeriodInMilliseconds / 10; if (channel.effect != null) { foreach (var effect in channel.effect) { if (effect.startCentisecond > centiSeconds) { break; } if (centiSeconds >= effect.startCentisecond && centiSeconds < effect.endCentisecond) { channelEffectData[pos] = (byte)(short.Parse(effect.intensity) * 255 / 100); break; } } } } effectDataPerChannel[channelIdentity] = channelEffectData; } }
public void LoadFromFile(string filename) { var deserializer = new XmlSerializer(typeof(LMS.sequence)); LMS.sequence sequence; using (TextReader textReader = new StreamReader(filename)) { sequence = (LMS.sequence)deserializer.Deserialize(textReader); } foreach (var channel in sequence.channels) { if (channel.deviceType != null && channel.deviceType != "LOR") { this.log.Warning("Not supporting device type {0} yet", channel.deviceType); continue; } if (channel.unit == 0 && channel.circuit == 0) { continue; } var channelIdentity = new UnitCircuit(channel.unit, channel.circuit, channel.savedIndex); var channelData = new ChannelData(channel.name); AddChannelData(channelIdentity, channelData); var channelEffects = new List <ChannelEffect>(); if (channel.effect != null) { foreach (var effect in channel.effect) { channelData.HasEffects = true; channelEffects.AddRange(GetChannelEffects(effect)); } } channelEffectsPerChannel[channelIdentity] = channelEffects; } }
public void LoadFromFile(string filename) { var deserializer = new XmlSerializer(typeof(LMS.sequence)); LMS.sequence sequence; using (TextReader textReader = new StreamReader(filename)) { sequence = (LMS.sequence)deserializer.Deserialize(textReader); } foreach (var channel in sequence.channels) { if (channel.deviceType != null && channel.deviceType != "LOR") { log.Warn("Not supporting device type {0} yet", channel.deviceType); continue; } if (channel.unit == 0 && channel.circuit == 0) continue; var channelIdentity = new UnitCircuit(channel.unit, channel.circuit, channel.savedIndex); var channelData = new ChannelData(channel.name); AddChannelData(channelIdentity, channelData); var channelEffects = new List<ChannelEffect>(); if (channel.effect != null) { foreach (var effect in channel.effect) { channelData.HasEffects = true; channelEffects.AddRange(GetChannelEffects(effect)); } } channelEffectsPerChannel[channelIdentity] = channelEffects; } }
public LorImport(string filename) { var deserializer = new XmlSerializer(typeof(LMS.sequence)); LMS.sequence sequence; using (TextReader textReader = new StreamReader(filename)) { sequence = (LMS.sequence)deserializer.Deserialize(textReader); } this.eventPeriodInMilliseconds = 50; this.effectsPerChannel = (int)(sequence.channels.Max(x => x.centiseconds) * 10 / this.eventPeriodInMilliseconds); foreach (var channel in sequence.channels) { if (channel.deviceType != null &&channel.deviceType != "LOR") { log.Warn("Not supporting device type {0} yet", channel.deviceType); continue; } var channelIdentity = new UnitCircuit(channel.unit, channel.circuit); AddChannelData(channelIdentity, new ChannelData(channel.name)); var channelEffectData = new byte[this.effectsPerChannel]; for (int pos = 0; pos < this.effectsPerChannel; pos++) { long centiSeconds = pos * this.eventPeriodInMilliseconds / 10; if (channel.effect != null) { foreach (var effect in channel.effect) { if (effect.startCentisecond > centiSeconds) break; if (centiSeconds >= effect.startCentisecond && centiSeconds < effect.endCentisecond) { channelEffectData[pos] = (byte)(short.Parse(effect.intensity) * 255 / 100); break; } } } } effectDataPerChannel[channelIdentity] = channelEffectData; } }