public static DataGroupBlock Read(Mdf mdf, Stream stream, uint position) { stream.Position = position; var block = new DataGroupBlock(mdf); block.Read(stream); block.stream = stream; var data = new byte[block.Size - 4]; var read = stream.Read(data, 0, data.Length); if (read != data.Length) { throw new FormatException(); } block.nextBlock = null; block.Trigger = null; block.Reserved = 0; block.ptrNextDataGroup = BitConverter.ToUInt32(data, 0); block.ptrFirstChannelGroupBlock = BitConverter.ToUInt32(data, 4); block.ptrTriggerBlock = BitConverter.ToUInt32(data, 8); block.ptrDataBlock = BitConverter.ToUInt32(data, 12); block.NumChannelGroups = BitConverter.ToUInt16(data, 16); block.NumRecordIds = BitConverter.ToUInt16(data, 18); if (data.Length >= 24) { block.Reserved = BitConverter.ToUInt32(data, 20); } if (block.ptrFirstChannelGroupBlock != 0) { block.ChannelGroups.Read(ChannelGroupBlock.Read(mdf, stream, block.ptrFirstChannelGroupBlock)); } /// TODO: Call Trigger Blocks //if (m_ptrTriggerBlock != 0) //{ // Mdf.Data.Position = m_ptrTriggerBlock; // Trigger = new TriggerBlock(mdf); //} /// TODO: Call ProgramsBlock ? //if (ptrProgramBlock != 0) //{ // Mdf.Data.Position = ptrProgramBlock; // ProgramBlock = new ProgramBlock(mdf); //} return(block); }
public DataRecord(ChannelGroupBlock channelGroup, byte[] data) { ChannelGroup = channelGroup; Data = data; }