private Channel MakeParsedDigital(CommaSeparatedEventReport report, int channelIndex) { Channel channel = new Channel(); Series series = new Series(); Channel <bool> digitalChannel = report.AnalogSection.DigitalChannels[channelIndex]; channel.Name = digitalChannel.Name; channel.HarmonicGroup = 0; channel.MeasurementType = new MeasurementType(); channel.MeasurementType.Name = "Digital"; channel.MeasurementCharacteristic = new MeasurementCharacteristic(); channel.MeasurementCharacteristic.Name = "Instantaneous"; channel.Phase = new Phase(); channel.Phase.Name = "None"; series.Channel = channel; series.SeriesType = new SeriesType(); series.SeriesType.Name = "Values"; series.SourceIndexes = channelIndex.ToString(); channel.MeasurementType.Description = channel.MeasurementType.Name; channel.MeasurementCharacteristic.Description = channel.MeasurementCharacteristic.Name; channel.Phase.Description = "No phase"; series.SeriesType.Description = series.SeriesType.Name; return(channel); }
// Shamelessly copy pasted from the XDAWaveFormDataParser // Thanks other Stephen private ParsedChannel MakeParsedChannel(CommaSeparatedEventReport report, Channel <double> channel) { List <DateTime> timeSamples = report.AnalogSection.TimeChannel.Samples.ToList(); List <object> xValues = timeSamples .Select(time => time - timeSamples[0]) .Select(timeSpan => timeSpan.TotalSeconds) .Cast <object>() .ToList(); ParsedChannel parsedChannel = new ParsedChannel() { Name = string.Format("({0}) {1}", report.Command, channel.Name), TimeValues = timeSamples, XValues = xValues, YValues = channel.Samples.Cast <object>().ToList() }; return(parsedChannel); }
private Channel MakeParsedAnalog(CommaSeparatedEventReport report, int channelIndex) { const string ChannelWithUnitsPattern = @"(?<Name>\S+)\s*\((?<Units>\S+)\)"; Channel <double> analogChannel = report.AnalogSection.AnalogChannels[channelIndex]; Series series = new Series(); series.Channel = new Channel(); series.SeriesType = new SeriesType(); series.SeriesType.Name = "Values"; series.SourceIndexes = channelIndex.ToString(); Channel channel = series.Channel; channel.Series = new List <Series>() { series }; channel.MeasurementType = new MeasurementType(); channel.MeasurementCharacteristic = new MeasurementCharacteristic() { Name = "Instantaneous" }; channel.Phase = new Phase(); channel.Name = analogChannel.Name; channel.HarmonicGroup = 0; Match regexMatch = Regex.Match(analogChannel.Name, ChannelWithUnitsPattern); string channelName = regexMatch.Success ? regexMatch.Groups["Name"].Value : analogChannel.Name; switch (channelName) { case "VA": case "VB": case "VC": case "VS": case "VDC": case "Freq": channel.MeasurementType.Name = "Voltage"; break; case "IA": case "IB": case "IC": case "IN": case "IG": case "IR": channel.MeasurementType.Name = "Current"; break; default: channel.MeasurementType.Name = "Unknown"; break; } switch (channelName) { case "VA": case "IA": case "Freq": channel.Phase.Name = "AN"; channel.Phase.Description = "A-phase to neutral"; break; case "VB": case "IB": channel.Phase.Name = "BN"; channel.Phase.Description = "B-phase to neutral"; break; case "VC": case "IC": channel.Phase.Name = "CN"; channel.Phase.Description = "C-phase to neutral"; break; case "IN": channel.Phase.Name = "NG"; channel.Phase.Description = "Neutral to ground"; break; case "IG": channel.Phase.Name = "Ground"; channel.Phase.Description = "Ground"; break; case "IR": channel.Phase.Name = "RES"; channel.Phase.Description = "Residual"; break; default: case "VS": case "VDC": channel.Phase.Name = "Unknown"; channel.Phase.Description = "Unknown"; break; } channel.MeasurementType.Description = channel.MeasurementType.Name; channel.MeasurementCharacteristic.Description = channel.MeasurementCharacteristic.Name; series.SeriesType.Description = series.SeriesType.Name; return(channel); }
private Channel MakeParsedAnalog(CommaSeparatedEventReport report, int channelIndex) { Channel channel = new Channel(); Series series = new Series(); Channel <double> analogChannel = report.AnalogSection.AnalogChannels[channelIndex]; channel.Name = analogChannel.Name; channel.HarmonicGroup = 0; channel.MeasurementType = new MeasurementType(); channel.MeasurementCharacteristic = new MeasurementCharacteristic(); channel.MeasurementCharacteristic.Name = "Instantaneous"; channel.Phase = new Phase(); series.Channel = channel; series.SeriesType = new SeriesType(); series.SeriesType.Name = "Values"; series.SourceIndexes = channelIndex.ToString(); switch (analogChannel.Name) { case "VA": case "VB": case "VC": case "VS": case "VDC": case "Freq": channel.MeasurementType.Name = "Voltage"; break; case "IA": case "IB": case "IC": case "IN": case "IG": case "IR": channel.MeasurementType.Name = "Current"; break; default: channel.MeasurementType.Name = "Unknown"; break; } switch (analogChannel.Name) { case "VA": case "IA": case "Freq": channel.Phase.Name = "AN"; channel.Phase.Description = "A-phase to neutral"; break; case "VB": case "IB": channel.Phase.Name = "BN"; channel.Phase.Description = "B-phase to neutral"; break; case "VC": case "IC": channel.Phase.Name = "CN"; channel.Phase.Description = "C-phase to neutral"; break; case "IN": channel.Phase.Name = "NG"; channel.Phase.Description = "Neutral to ground"; break; case "IG": channel.Phase.Name = "Ground"; channel.Phase.Description = "Ground"; break; case "IR": channel.Phase.Name = "RES"; channel.Phase.Description = "Residual"; break; default: case "VS": case "VDC": channel.Phase.Name = "Unknown"; channel.Phase.Description = "Unknown"; break; } channel.MeasurementType.Description = channel.MeasurementType.Name; channel.MeasurementCharacteristic.Description = channel.MeasurementCharacteristic.Name; series.SeriesType.Description = series.SeriesType.Name; return(channel); }