public static string DecodeAsterixData(string FileName)
{
long Position = 0;
// get total byte length of the file
long TotalBytes = new System.IO.FileInfo(FileName).Length;
try
{
// Open file for reading
System.IO.FileStream FileStream = new System.IO.FileStream(FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
// attach filestream to binary reader
System.IO.BinaryReader BinaryReader = new System.IO.BinaryReader(FileStream);
while (Position < TotalBytes)
{
// First determine the size of the message
// octet data
// 0 ASTERIX CATEGORY
// 1 .. 2 LENGTH OF MESSAGE BLOCK
byte[] Data_Block_Buffer = BinaryReader.ReadBytes((Int32)3);
int LengthOfMessageBlock = ASTERIX.ExtractLengthOfDataBlockInBytes_Int(Data_Block_Buffer);
BinaryReader.BaseStream.Position = BinaryReader.BaseStream.Position - 3;
// Now read the message and pass it to the parser
// for decoding
Data_Block_Buffer = BinaryReader.ReadBytes((Int32)LengthOfMessageBlock);
ExtractAndDecodeASTERIX_CAT_DataBlock(Data_Block_Buffer, false);
Position = BinaryReader.BaseStream.Position;
}
// close file reader
FileStream.Close();
FileStream.Dispose();
BinaryReader.Close();
}
catch (Exception Exception)
{
// Error
MessageBox.Show("Exception caught in process: {0}", Exception.ToString());
}
return("Read " + Position.ToString() + " of total " + TotalBytes.ToString() + " bytes");
}