public void LoadFlyBinaryFile(String flyBinFileName, out List <NavData> navDataList, out List <AngleData> angleDataList, out List <ProgramControlData> programControlDataList, out List <ServoData> servoDataList) { navDataList = new List <NavData>(); angleDataList = new List <AngleData>(); programControlDataList = new List <ProgramControlData>(); servoDataList = new List <ServoData>(); if (!File.Exists(flyBinFileName)) { return; } FlyParser flyParser = new FlyParser(); using (FileStream fileStream = File.Open(flyBinFileName, FileMode.Open)) { BinaryReader binaryReader = new BinaryReader(fileStream); while (binaryReader.BaseStream.Position <= binaryReader.BaseStream.Length - 1) { byte[] buffer = binaryReader.ReadBytes(Marshal.SizeOf(typeof(FlyPacket))); List <byte[]> buffer1 = flyParser.ParseData1(buffer); for (int i = 0; i < buffer1.Count; ++i) { flyParser.ParseData2(buffer1[i], out List <NavData> _navDataList, out List <AngleData> _angleDataList, out List <ProgramControlData> _programControlDataList, out List <ServoData> _servoDataList); navDataList.AddRange(_navDataList); angleDataList.AddRange(_angleDataList); programControlDataList.AddRange(_programControlDataList); servoDataList.AddRange(_servoDataList); } } } }