public IList <Gh615Packet.TrackFileHeader> ReadTrackHeaders(IJobMonitor monitor) { monitor.PercentComplete = 0; monitor.StatusText = CommonResources.Text.Devices.ImportJob_Status_OpeningDevice; Int16[] tracks = new Int16[2]; GlobalsatPacket getHeadersPacket = PacketFactory.GetTrackFileHeaders(); Gh615Packet response = (Gh615Packet)SendPacket(getHeadersPacket); return(response.UnpackTrackHeaders()); }
public IList <Gh615Packet.TrackFileSection> ReadTracks(IList <Gh615Packet.TrackFileHeader> tracks, IJobMonitor monitor) { if (tracks.Count == 0) { return(new Gh615Packet.TrackFileSection[0]); } float totalPoints = 0; IList <Int16> trackIndexes = new List <Int16>(); foreach (Gh615Packet.TrackFileHeader header in tracks) { totalPoints += header.TrackPointCount; trackIndexes.Add(header.TrackPointIndex); } float pointsRead = 0; IList <Gh615Packet.TrackFileSection> trackSections = new List <Gh615Packet.TrackFileSection>(); GlobalsatPacket getFilesPacket = PacketFactory.GetTrackFileSections(trackIndexes); GlobalsatPacket getNextPacket = PacketFactory.GetNextTrackSection(); Gh615Packet data = (Gh615Packet)SendPacket(getFilesPacket); monitor.PercentComplete = 0; Gh615Packet.TrackFileSection trackSection; do { trackSection = data.UnpackTrackSection(); if (trackSection != null) { pointsRead += trackSection.EndPointIndex - trackSection.StartPointIndex + 1; DateTime time = trackSection.StartTime.ToLocalTime(); string statusProgress = time.ToShortDateString() + " " + time.ToShortTimeString(); monitor.StatusText = String.Format(CommonResources.Text.Devices.ImportJob_Status_Reading, statusProgress); monitor.PercentComplete = pointsRead / totalPoints; trackSections.Add(trackSection); data = (Gh615Packet)SendPacket(getNextPacket); } } while (trackSection != null); monitor.PercentComplete = 1; return(trackSections); }