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); }
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); }