public void TestDigitalByteCount() { Assert.That(DataFileHandler.GetDigitalByteCount(7), Is.EqualTo(2)); Assert.That(DataFileHandler.GetDigitalByteCount(16), Is.EqualTo(2)); Assert.That(DataFileHandler.GetDigitalByteCount(17), Is.EqualTo(4)); Assert.That(DataFileHandler.GetDigitalByteCount(32), Is.EqualTo(4)); }
internal 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.analogs = new double[analogCount]; this.digitals = 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.analogs[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 добавить тест { this.analogs[i] = System.BitConverter.ToInt32(bytes, 8 + i * 4); } } else if (dataFileType == DataFileType.Float32) { for (int i = 0; i < analogCount; i++) //TODO добавить тест { this.analogs[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.digitals[i] = Convert.ToBoolean((bytes[digitalByteStart + digitalByteIterator] >> (i - digitalByteIterator * 8)) & 1); } }