Пример #1
0
        public override void ReadStream(StreamReader sr, SNetSignalCollector collector)
        {
            SNetSignalPerSec tfbps = null;

            for (var line = sr.ReadLine(); line != null; line = sr.ReadLine())
            {
                //切割資料
                var vals = line.Split(',');
                if (vals.Length < 2)
                {
                    continue;
                }

                //第一筆為 timestamp
                var timestamp = 0.0;
                if (!double.TryParse(vals[0], out timestamp))
                {
                    continue;
                }

                //來源時間為Universal (檔案儲存時間)
                var dt = CtkTimeUtil.ToLocalDateTimeFromTimestamp(timestamp);

                if (tfbps == null)
                {
                    tfbps    = new SNetSignalPerSec();
                    tfbps.dt = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second);
                }
                else if ((dt - tfbps.dt).TotalSeconds >= 1.0)
                {//若時間變更超過一秒, 就加一個物件來儲存
                    collector.AddLast(tfbps);
                    tfbps    = new SNetSignalPerSec();
                    tfbps.dt = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second);
                }

                for (int idx = 1; idx < vals.Length; idx++)
                {
                    var data = 0.0;
                    if (!double.TryParse(vals[idx], out data))
                    {
                        continue;
                    }
                    tfbps.signals.Add(data);
                }
            }
            if (tfbps.signals.Count > 0 && collector.LastOrDefault() != tfbps)
            {
                collector.AddLast(tfbps);
            }
        }
Пример #2
0
        public override void WriteValues(StreamWriter sw, DateTime utc, IEnumerable <double> values)
        {
            //if utc.Kind is Unspecified then as UTC
            if (utc.Kind == DateTimeKind.Unspecified)
            {
                utc = DateTime.SpecifyKind(utc, DateTimeKind.Utc);
            }

            //Loca / Utc ToUtcTimestamp 皆會轉成 UTC
            var utcTimestamp = CtkTimeUtil.ToUtcTimestamp(utc);
            var localDt      = utc.ToLocalTime();

            sw.Write("{0}", utcTimestamp);
            foreach (var val in values)
            {
                sw.Write(",{0}", val);
            }
            sw.WriteLine();
        }