示例#1
0
        private GetDGTrackFileCommandResult getTrackFile(int tfId)
        {
            // read entries from device
            GetDGTrackFileCommand c = new GetDGTrackFileCommand();

            c.setSerialConnection(this._dgSerialConnection);

            try
            {
                c.setTrackIndex(tfId);
                c.execute();
            }
            catch (CommandException e)
            {
                Console.WriteLine("An exception was thrown when reading the track file: " + e.Message);
            }

            GetDGTrackFileCommandResult res = (GetDGTrackFileCommandResult)c.getLastResult();

            return(res);
        }
示例#2
0
        public bool serialize()
        {
            string firstTrackHeaderTime = "";
            ISet <GetDGTrackFileCommandResult> tfResults = new HashSet <GetDGTrackFileCommandResult>();

            // open file
            XmlWriter wr = XmlWriter.Create(this._outputPath);

            // write processing instruction and required intro data
            wr.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");

            //<gpx version="1.1" creator="DG-200 ToolBox v1.1.20.237" xmlns="http://www.topografix.com/GPX/1/1"
            //xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            //xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
            wr.WriteStartElement("gpx", "http://www.topografix.com/GPX/1/1");
            wr.WriteAttributeString("version", "1.1");
            wr.WriteAttributeString("creator", "DG-200");
            wr.WriteAttributeString("xsi", "schemaLocation",
                                    "http://www.w3.org/2001/XMLSchema-instance",
                                    "http://www.topografix.com/GPX/1/1  http://www.topografix.com/GPX/1/1/gpx.xsd");

            wr.WriteStartElement("trk");
            wr.WriteElementString("name", firstTrackHeaderTime);
            wr.WriteElementString("src", "DG-200");

            wr.WriteStartElement("trkseg");

            DG200FileLogger.Log("Starting loop through track header entries.", 3);

            foreach (TrackHeaderEntry the in this._trackHeaderEntries)
            {
                DG200FileLogger.Log("Working on track header entry.", 3);
                if (firstTrackHeaderTime == "")
                {
                    firstTrackHeaderTime = the.DateTimeString;
                }

                DG200FileLogger.Log("Going to do the retrieving. This many trackids expected: " + the.getTrackIds().Count, 3);
                foreach (int tfId in the.getTrackIds())
                {
                    DG200FileLogger.Log("Starting on track id: " + tfId, 3);
                    GetDGTrackFileCommandResult res = this.getTrackFile(tfId);

                    DG200FileLogger.Log("Got a track file. Going to write the entries.", 3);

                    foreach (IDGTrackPoint tp in res.getTrackPoints())
                    {
                        if (!tp.isWayPoint())
                        {
                            this.writeTrackPoint(tp, wr, "trkpt");
                        }
                        else
                        {
                            this._waypoints.Add(tp);
                        }
                    }

                    DG200FileLogger.Log("Done writing entries. Moving to the next track file.", 3);
                }
            }



            /*
             * foreach(GetDGTrackFileCommandResult res in tfResults)
             * {
             *  foreach(IDGTrackPoint tp in res.getTrackPoints())
             *  {
             *      this.writeTrackPoint(tp, wr);
             *  }
             * }*/

            wr.WriteEndElement(); // trkseg
            wr.WriteEndElement(); // trk

            this.writeWayPoints(wr);

            wr.WriteEndElement(); // gpx



            // loop through entries
            // if a waypoint, copy that entry to the waypoints set
            // else, serialize

            // close trkseg

            // write waypoints

            // write closing tag

            // close file

            wr.Close();


            return(true);
        }