public List <TailPacketRs> LoadTailBinaryFile(String tailBinFileName) { TailParser tailParser = new TailParser(); List <TailPacketRs> packetList = new List <TailPacketRs>(); if (!File.Exists(tailBinFileName)) { return(packetList); } using (FileStream fileStream = File.Open(tailBinFileName, FileMode.Open)) { BinaryReader binaryReader = new BinaryReader(fileStream); while (binaryReader.BaseStream.Position <= binaryReader.BaseStream.Length - 1) { byte[] headerBytes = binaryReader.ReadBytes(Marshal.SizeOf(typeof(EnvPacketHeader))); EnvPacketHeader header = Tool.ByteToStruct <EnvPacketHeader>(headerBytes, 0, headerBytes.Length); if (header.syncHeader.EqualBytes(EnvProtocol.SyncHeader) && header.dataType == (byte)EnvProtocol.DataType.DataTypeTail) { byte[] buffer = binaryReader.ReadBytes(Marshal.SizeOf(typeof(TailPacketUdp))); packetList.AddRange(tailParser.Parse(buffer)); } } } return(packetList); }
public void Start() { pos = 0; while (queue.TryDequeue(out byte[] dropBuffer)) { ; } tailParser = new TailParser(dataLogger); isRuning = true; thread = new Thread(new ThreadStart(ThreadFunction)); thread.Start(); }