Exemple #1
0
        public List <Core.Models.Signal> Read(string filename)
        {
            PDATReader reader = null;

            try
            {
                reader = new PDATReader(filename);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            var signalList = new List <Core.Models.Signal>();
            var signals    = reader.GetAllSignalsFromPDATFile();

            if (signals.Count() > 0)
            {
                decimal diff;
                var     firstSig = signals.FirstOrDefault();
                _numberOfDataPointInFile = firstSig.PointsList.Count();
                if (_numberOfDataPointInFile >= 2)
                {
                    //for (int i = 0; i < _numberOfDataPointInFile - 1; i++)
                    //{
                    var time1 = firstSig.PointsList[0].T;
                    var time2 = firstSig.PointsList[1].T;
                    diff = time2 - time1;
                    if (diff != 0)
                    {
                        _samplingRate = (int)Math.Round((1 / diff) / 10) * 10;
                        //break;
                    }
                    else
                    {
                        //Console.WriteLine("sampling rate is 0 at: " + filename + "\nThe numbers are: " + time1.ToString() + " and " + time2.ToString());
                    }
                    //}
                }
                var groupbyPMU = signals.GroupBy(x => x.ShortName).ToDictionary(y => y.Key, y => y.ToList());
                foreach (var gr in groupbyPMU)
                {
                    var stat = gr.Value.FirstOrDefault().stat.ToList();
                    foreach (var sig in gr.Value)
                    {
                        var newSignal = new Core.Models.Signal(sig.ShortName, sig.Header);
                        //var name = sig.Name;
                        _getDataTimeStamp(newSignal, sig.EventDate, sig.PointsList);
                        var time = sig.EventDate;
                        var data = sig.PointsList;
                        newSignal.TypeAbbreviation = _getSignalType(sig.Type);
                        newSignal.Unit             = sig.Unit;
                        newSignal.SamplingRate     = _samplingRate;
                        newSignal.Stat             = stat;
                        signalList.Add(newSignal);
                    }
                }
            }
            return(signalList);
        }
Exemple #2
0
 private void _getDataTimeStamp(Core.Models.Signal newSignal, DateTimeOffset eventDate, List <Point> pointsList)
 {
     for (int i = 0; i < pointsList.Count; i++)
     {
         var d         = pointsList[i];
         var timeStamp = eventDate.DateTime.AddSeconds((double)d.T);
         newSignal.Data.Add(d.Value);
         newSignal.TimeStampNumber.Add(timeStamp.ToOADate());
         newSignal.TimeStamps.Add(timeStamp);
     }
 }