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));
        }
Exemple #3
0
        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);
            }
        }