Ejemplo n.º 1
0
        /// <summary>
        /// 指定ファイルに含まれる測位情報を返す
        /// </summary>
        /// <returns>測位情報履歴</returns>
        public PositioningInfos GetPositioningResults(string fname)
        {
            PositioningInfos ans = new PositioningInfos();

            if (System.IO.File.Exists(fname))
            {
                using (System.IO.StreamReader sr = new System.IO.StreamReader(fname))
                {
                    while (sr.EndOfStream == false)             // 最後まで読み込む
                    {
                        string line = sr.ReadLine();            // 1行取得
                        var info = this.Parse(line);
                        if (info!= null)
                            ans.Add(info);
                    }
                }
            }
            return ans;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// GPGGAをトリガにして、タイミングごとにまとめた測位情報を返す
        /// <para>NMEAはセンテンスの出力順序を規定していないので、もしかすると時刻と測位位置がずれるかもしれない。</para>
        /// </summary>
        /// <returns>測位情報履歴</returns>
        public PositioningInfos GetPositioningResults()
        {
            PositioningInfos ans = new PositioningInfos();
            PositioningInfo pos = new PositioningInfo();

            if (this.IsOpen)
            {
                for (int i = 0; i < this.text.Length; i++)
                {
                    string line = this.text[i];             // 1行分データを取得
                    string[] field = line.Split(',');       // スプリットでカンマを使って区切る

                    if (GGA.CheckMatch(line))
                    {
                        pos = GGA.Parse(line);
                        ans.Add(pos);
                    }
                    else if (ZDA.CheckMatch(line))
                    {
                        pos.Time = ZDA.Parse(line);
                    }
                }
            }
            return ans;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// GGAから緯度・経度を配列で取得する
        /// </summary>
        /// <returns>座標を表すBlh構造体の配列</returns>
        public Blh[] GetPositions()
        {
            PositioningInfos ans = new PositioningInfos();

            if (this.IsOpen)
            {
                for (int i = 0; i < this.text.Length; i++)
                {
                    string line = this.text[i];             // 1行分データを取得
                    string[] field = line.Split(',');       // スプリットでカンマを使って区切る
                    if (field[0] == "$GPGGA")
                    {
                        PositioningInfo pos = GGA.Parse(line);
                        ans.Add(pos);
                    }
                }
            }
            return ans.GetPositions();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// ZDAから時刻データ列のみを取得する
        /// GGAのトリガはないのでGetPositioningResults()とは時刻がずれる可能性がある。
        /// 日付も考慮してみる。
        /// </summary>
        /// <returns>測位情報履歴に含まれる時刻情報を配列にしたもの</returns>
        public DateTime[] GetDateTimes()
        {
            PositioningInfos ans = new PositioningInfos();

            if (this.IsOpen)
            {
                for (int i = 0; i < this.text.Length; i++)
                {
                    string line = this.text[i];             // 1行分データを取得
                    string[] field = line.Split(',');       // スプリットでカンマを使って区切る
                    if (field[0] == "$GPZDA")
                    {
                        PositioningInfo pos = new PositioningInfo();
                        DateTime time = ZDA.Parse(line);
                        pos.Time = time;
                        ans.Add(pos);
                    }
                }
            }
            return ans.GetTimes();
        }