//private byte[] nextPacket = null; /// <summary> /// Create reader object /// </summary> /// <param name="type">Type of the sensor</param> /// <param name="returnMode">Define return type for VLP-16, this variable is neglected for HDL-32E</param> /// <param name="indexFile">Index file path</param> /// <param name="pointFile">Point file path</param> private VelodyneReader(VelodyneSensorType type, ReturnMode returnMode, String indexFile, String pointFile) { this.IndexFile = indexFile; this.PointFile = pointFile; this.Sensor = type; Indeces = new List <IndexData>(); if (!File.Exists(indexFile)) { throw new FileNotFoundException("Index file does not exist!"); } if (!File.Exists(pointFile)) { throw new FileNotFoundException("Point file does not exist!"); } if (type == VelodyneSensorType.HDL32E) { PacketInterpreter = new PacketInterpreterHDL32E(); } else if (type == VelodyneSensorType.VLP16) { PacketInterpreter = new PacketInterpreterVLP16(returnMode); } else { throw new NotImplementedException(); } }
/// <summary> /// Open Velodyne reader object /// </summary> /// <param name="type">Type of the sensor</param> /// <param name="returnMode">Define return type for VLP-16, this variable is neglected for HDL-32E</param> /// <param name="indexFile">Index file path</param> /// <param name="pointFile">Point file path</param> /// <returns></returns> public static VelodyneReader Open(VelodyneSensorType type, ReturnMode returnMode, String indexFile, String pointFile) { VelodyneReader obj = new VelodyneReader(type, returnMode, indexFile, pointFile); FileInfo fi = new FileInfo(indexFile); long fileSize = fi.Length; obj.Indeces.Clear(); byte[] idxData = File.ReadAllBytes(obj.IndexFile); MemoryStream mem = new MemoryStream(idxData); long idx = 0; using (BinaryReader reader = new BinaryReader(mem)) { while (reader.BaseStream.Position != reader.BaseStream.Length) { long internalTimeTicks = reader.ReadInt64(); DateTime internalTime = new DateTime(internalTimeTicks); long packetTimeStampTicks = reader.ReadInt64(); DateTime packetTimeStamp = new DateTime(packetTimeStampTicks); long position = reader.ReadInt64(); byte[] nmeBytes = reader.ReadBytes(IndexData.NMEA_LENGTH); String nmea = Encoding.ASCII.GetString(nmeBytes); obj.Indeces.Add(new IndexData(packetTimeStamp, internalTime, position, nmea)); idx++; if (idx % 500 == 0) { ProgressReportEventArgs args = new ProgressReportEventArgs((((double)reader.BaseStream.Position / (double)fileSize) * 100.0), reader.BaseStream.Position, packetTimeStamp.ToUniversalTime()); OnReportProgress(args); } } } obj.pointReader = new BinaryReader(File.Open(obj.PointFile, FileMode.Open)); return(obj); }
/// <summary> /// Create reader object /// </summary> /// <param name="type">Type of the sensor</param> /// <param name="indexFile">Index file path</param> /// <param name="pointFile">Point file path</param> private VelodyneReader(VelodyneSensorType type, String indexFile, String pointFile) : this(type, ReturnMode.AllReturns, indexFile, pointFile) { }
/// <summary> /// Open Velodyne reader object /// </summary> /// <param name="type">Type of the sensor</param> /// <param name="returnMode">Define return type for VLP-16, this variable is neglected for HDL-32E</param> /// <param name="indexFile">Index file path</param> /// <param name="pointFile">Point file path</param> /// <returns></returns> public static VelodyneReader Open(VelodyneSensorType type, String indexFile, String pointFile) { return(Open(type, ReturnMode.AllReturns, indexFile, pointFile)); }
public VelodyneDataStream(Project project, string name, string shortName, string subFolder, VelodyneSensorType sensorType) : base(project, name, shortName, subFolder) { this.SensorType = sensorType; }