public void TestByteCount() { Assert.That(DataFileHandler.GetByteCount(1, 1, DataFileType.Binary), Is.EqualTo(12)); Assert.That(DataFileHandler.GetByteCount(5, 17, DataFileType.Binary), Is.EqualTo(22)); Assert.That(DataFileHandler.GetByteCount(5, 17, DataFileType.Float32), Is.EqualTo(32)); Assert.That(DataFileHandler.GetByteCount(5, 17, DataFileType.Binary32), Is.EqualTo(32)); }
public byte[] ToByteDAT(DataFileType dataFileType, IReadOnlyList <AnalogChannelInformation> analogInformations) { var result = new byte[DataFileHandler.GetByteCount(this.analogs.Length, this.digitals.Length, dataFileType)]; int analogOneChannelLength = dataFileType == DataFileType.Binary ? 2 : 4; int digitalByteStart = 8 + analogOneChannelLength * this.analogs.Length; System.BitConverter.GetBytes(this.number).CopyTo(result, 0); System.BitConverter.GetBytes(this.timestamp).CopyTo(result, 4); switch (dataFileType) { case DataFileType.Binary: this.AnalogsToBinaryDAT(result, analogInformations); break; case DataFileType.Binary32: this.AnalogsToBinary32DAT(result, analogInformations); break; case DataFileType.Float32: this.AnalogsToFloat32DAT(result); break; default: throw new InvalidOperationException("Not supported file type DAT"); } this.DigitalsToDAT(result, digitalByteStart); return(result); }
internal DataFileHandler(string fullPathToFileDAT, ConfigurationHandler configuration) { int samplesCount = configuration.sampleRates[configuration.sampleRates.Count - 1].lastSampleNumber; this.samples = new DataFileSample[samplesCount]; if (configuration.dataFileType == DataFileType.Binary || configuration.dataFileType == DataFileType.Binary32 || configuration.dataFileType == DataFileType.Float32) { var fileContent = System.IO.File.ReadAllBytes(fullPathToFileDAT); int oneSampleLength = DataFileHandler.GetByteCount(configuration.analogChannelsCount, configuration.digitalChannelsCount, configuration.dataFileType); for (int i = 0; i < samplesCount; i++) { var bytes = new byte[oneSampleLength]; for (int j = 0; j < oneSampleLength; j++) { bytes[j] = fileContent[i * oneSampleLength + j]; } this.samples[i] = new DataFileSample(bytes, configuration.dataFileType, configuration.analogChannelsCount, configuration.digitalChannelsCount); } } else if (configuration.dataFileType == DataFileType.ASCII) { var strings = System.IO.File.ReadAllLines(fullPathToFileDAT); strings = strings.Where(x => x != string.Empty).ToArray(); //removing empty strings (when *.dat file not following Standart) for (int i = 0; i < samplesCount; i++) { this.samples[i] = new DataFileSample(strings[i], configuration.analogChannelsCount, configuration.digitalChannelsCount); } } }