Ejemplo n.º 1
0
        public BreakerRestrikeResource(INFDataSet infDataSet)
        {
            if (infDataSet == null)
            {
                return;
            }

            string value =
                infDataSet.GetValue(APPSectionName, APPKey) ??
                infDataSet.GetValue(USISectionName, USIKey);

            BreakerRestrikeData = value;
        }
Ejemplo n.º 2
0
        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));
            }
        }