コード例 #1
0
 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));
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
                }
            }
        }