public byte[] ToByteDAT(DataFileType dataFileType, IReadOnlyList <AnalogChannelInformation> analogInformations)
        {
            var result = new byte[DataFileHandler.GetByteCount(this.AnalogValues.Length, this.DigitalValues.Length, dataFileType)];
            int analogOneChannelLength = dataFileType == DataFileType.Binary ? 2 : 4;
            int digitalByteStart       = 8 + analogOneChannelLength * this.AnalogValues.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);
                //removing empty strings (when *.dat file not following Standard)
                strings = strings.Where(x => x != string.Empty).ToArray();
                for (int i = 0; i < samplesCount; i++)
                {
                    this.Samples[i] = new DataFileSample(strings[i],
                                                         configuration.AnalogChannelsCount, configuration.DigitalChannelsCount);
                }
            }
        }