static public void ReadHeader(BinaryReader reader, ref Pt4Header header) { // remember original position long oldPos = reader.BaseStream.Position; // move to start of file reader.BaseStream.Position = 0; // read file header header.headSize = reader.ReadInt32(); header.name = reader.ReadString().Trim(); header.batterySize = reader.ReadInt32(); header.captureDate = DateTime.FromBinary(reader.ReadInt64()); header.serialNumber = reader.ReadString().Trim(); header.calibrationStatus = (CalibrationStatus)reader.ReadInt32(); header.voutSetting = (VoutSetting)reader.ReadInt32(); header.voutValue = reader.ReadSingle(); header.hardwareRate = reader.ReadInt32(); header.softwareRate = (float)header.hardwareRate; reader.ReadSingle(); // ignore software rate header.powerField = (SelectField)reader.ReadInt32(); header.currentField = (SelectField)reader.ReadInt32(); header.voltageField = (SelectField)reader.ReadInt32(); header.captureSetting = reader.ReadString().Trim(); header.swVersion = reader.ReadString().Trim(); header.runMode = (RunMode)reader.ReadInt32(); header.exitCode = reader.ReadInt32(); header.totalCount = reader.ReadInt64(); header.statusOffset = reader.ReadUInt16(); header.statusSize = reader.ReadUInt16(); header.sampleOffset = reader.ReadUInt16(); header.sampleSize = reader.ReadUInt16(); header.initialMainVoltage = reader.ReadUInt16(); header.initialUsbVoltage = reader.ReadUInt16(); header.initialAuxVoltage = reader.ReadUInt16(); header.captureDataMask = (CaptureMask)reader.ReadUInt16(); header.sampleCount = reader.ReadUInt64(); header.missingCount = reader.ReadUInt64(); ulong count = Math.Max(1, header.sampleCount - header.missingCount); // convert sums to averages header.avgMainVoltage = reader.ReadSingle() / count; header.avgMainCurrent = reader.ReadSingle() / count; header.avgMainPower = reader.ReadSingle() / count; header.avgUsbVoltage = reader.ReadSingle() / count; header.avgUsbCurrent = reader.ReadSingle() / count; header.avgUsbPower = reader.ReadSingle() / count; header.avgAuxVoltage = reader.ReadSingle() / count; header.avgAuxCurrent = reader.ReadSingle() / count; header.avgAuxPower = reader.ReadSingle() / count; // restore original position reader.BaseStream.Position = oldPos; }
public static void ReadHeader(BinaryReader reader, ref Pt4Header header) { // remember original position long oldPos = reader.BaseStream.Position; // move to start of file reader.BaseStream.Position = 0; // read file header header.headSize = reader.ReadInt32(); header.name = reader.ReadString().Trim(); header.batterySize = reader.ReadInt32(); header.captureDate = DateTime.FromBinary(reader.ReadInt64()); header.serialNumber = reader.ReadString().Trim(); header.calibrationStatus = (CalibrationStatus)reader.ReadInt32(); header.voutSetting = (VoutSetting)reader.ReadInt32(); header.voutValue = reader.ReadSingle(); header.hardwareRate = reader.ReadInt32(); header.softwareRate = (float)header.hardwareRate; reader.ReadSingle(); // ignore software rate header.powerField = (SelectField)reader.ReadInt32(); header.currentField = (SelectField)reader.ReadInt32(); header.voltageField = (SelectField)reader.ReadInt32(); header.captureSetting = reader.ReadString().Trim(); header.swVersion = reader.ReadString().Trim(); header.runMode = (RunMode)reader.ReadInt32(); header.exitCode = reader.ReadInt32(); header.totalCount = reader.ReadInt64(); header.statusOffset = reader.ReadUInt16(); header.statusSize = reader.ReadUInt16(); header.sampleOffset = reader.ReadUInt16(); header.sampleSize = reader.ReadUInt16(); header.initialMainVoltage = reader.ReadUInt16(); header.initialUsbVoltage = reader.ReadUInt16(); header.initialAuxVoltage = reader.ReadUInt16(); header.captureDataMask = (CaptureMask)reader.ReadUInt16(); header.sampleCount = reader.ReadUInt64(); header.missingCount = reader.ReadUInt64(); ulong count = Math.Max(1, header.sampleCount - header.missingCount); // convert sums to averages header.avgMainVoltage = reader.ReadSingle() / count; header.avgMainCurrent = reader.ReadSingle() / count; header.avgMainPower = reader.ReadSingle() / count; header.avgUsbVoltage = reader.ReadSingle() / count; header.avgUsbCurrent = reader.ReadSingle() / count; header.avgUsbPower = reader.ReadSingle() / count; header.avgAuxVoltage = reader.ReadSingle() / count; header.avgAuxCurrent = reader.ReadSingle() / count; header.avgAuxPower = reader.ReadSingle() / count; // restore original position reader.BaseStream.Position = oldPos; }