public BreakerRestrikeResource(INFDataSet infDataSet) { if (infDataSet == null) { return; } string value = infDataSet.GetValue(APPSectionName, APPKey) ?? infDataSet.GetValue(USISectionName, USIKey); BreakerRestrikeData = value; }
public void Parse(string filePath) { Schema schema = Parser.Schema; Meter meter = new Meter(); meter.MeterLocation = new MeterLocation(); meter.Channels = new List <Channel>(); meter.AssetKey = schema.DeviceID; meter.Name = schema.DeviceID; meter.ShortName = schema.DeviceID.Substring(0, Math.Min(schema.DeviceID.Length, 50)); MeterLocation meterLocation = meter.MeterLocation; meterLocation.Meters = new List <Meter>() { meter }; meterLocation.AssetKey = schema.StationName; meterLocation.Name = schema.StationName; meterLocation.ShortName = schema.StationName.Substring(0, Math.Min(schema.StationName.Length, 50)); meterLocation.Description = schema.StationName; foreach (AnalogChannel analogChannel in schema.AnalogChannels) { Channel channel = ParseSeries(analogChannel); channel.Meter = meter; DataSeries dataSeries = new DataSeries(); dataSeries.SeriesInfo = channel.Series[0]; meter.Channels.Add(channel); while (MeterDataSet.DataSeries.Count <= analogChannel.Index) { MeterDataSet.DataSeries.Add(new DataSeries()); } MeterDataSet.DataSeries[analogChannel.Index] = dataSeries; } foreach (DigitalChannel digitalChannel in schema.DigitalChannels) { Channel channel = ParseSeries(digitalChannel); channel.Meter = meter; DataSeries dataSeries = new DataSeries(); dataSeries.SeriesInfo = channel.Series[0]; meter.Channels.Add(channel); while (MeterDataSet.Digitals.Count <= digitalChannel.Index) { MeterDataSet.Digitals.Add(new DataSeries()); } MeterDataSet.Digitals[digitalChannel.Index] = dataSeries; } try { while (Parser.ReadNext()) { for (int i = 0; i < schema.AnalogChannels.Length; i++) { int seriesIndex = schema.AnalogChannels[i].Index; string units = schema.AnalogChannels[i].Units.ToUpper(); double multiplier = (units.Contains("KA") || units.Contains("KV")) ? 1000.0D : 1.0D; MeterDataSet.DataSeries[seriesIndex].DataPoints.Add(new DataPoint() { Time = Parser.Timestamp, Value = multiplier * Parser.PrimaryValues[i] }); } for (int i = 0; i < schema.DigitalChannels.Length; i++) { int valuesIndex = schema.TotalAnalogChannels + i; int seriesIndex = schema.DigitalChannels[i].Index; MeterDataSet.Digitals[seriesIndex].DataPoints.Add(new DataPoint() { Time = Parser.Timestamp, Value = Parser.Values[valuesIndex] }); } } } catch (InvalidOperationException ex) { Log.Warn(ex.Message, ex); } MeterDataSet.Meter = meter; string infFilePath = Path.ChangeExtension(filePath, "inf"); if (File.Exists(infFilePath)) { IniFile infFile = new IniFile(infFilePath); INFDataSet infDataSet = new INFDataSet(infFile); MeterDataSet.GetResource(() => new BreakerRestrikeResource(infDataSet)); } }