public static int GetByteCount(int analogsChannelsCount, int digitalChannelsCount, DataFileType dataFileType) { int analogOneChannelLength = dataFileType == DataFileType.Binary ? 2 : 4; return(DataFileHandler.SampleNumberLength + DataFileHandler.TimeStampLength + analogsChannelsCount * analogOneChannelLength + DataFileHandler.GetDigitalByteCount(digitalChannelsCount)); }
public DataFileSample(byte[] bytes, DataFileType dataFileType, int analogCount, int digitalCount) { this.AnalogValues = new double[analogCount]; this.DigitalValues = new bool[digitalCount]; this.Number = System.BitConverter.ToInt32(bytes, 0); this.Timestamp = System.BitConverter.ToInt32(bytes, 4); int digitalByteStart; if (dataFileType == DataFileType.Binary) { for (int i = 0; i < analogCount; i++) { this.AnalogValues[i] = System.BitConverter.ToInt16(bytes, 8 + i * 2); } digitalByteStart = 8 + 2 * analogCount; } else { if (dataFileType == DataFileType.Binary32) { for (int i = 0; i < analogCount; i++) {//TODO add test this.AnalogValues[i] = System.BitConverter.ToInt32(bytes, 8 + i * 4); } } else if (dataFileType == DataFileType.Float32) { for (int i = 0; i < analogCount; i++) {//TODO add test this.AnalogValues[i] = System.BitConverter.ToSingle(bytes, 8 + i * 4); } } digitalByteStart = 8 + 4 * analogCount; } int digitalByteCount = DataFileHandler.GetDigitalByteCount(digitalCount); for (int i = 0; i < digitalCount; i++) { int digitalByteIterator = i / 8; this.DigitalValues[i] = Convert.ToBoolean((bytes[digitalByteStart + digitalByteIterator] >> (i - digitalByteIterator * 8)) & 1); } }