コード例 #1
0
        public 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));
        }
コード例 #2
0
        public DataFileSample(byte[] bytes, DataFileType dataFileType, int analogCount, int digitalCount)
        {
            this.AnalogValues  = new double[analogCount];
            this.DigitalValues = 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.AnalogValues[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 add test
                        this.AnalogValues[i] = System.BitConverter.ToInt32(bytes, 8 + i * 4);
                    }
                }
                else if (dataFileType == DataFileType.Float32)
                {
                    for (int i = 0; i < analogCount; i++)
                    {//TODO add test
                        this.AnalogValues[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.DigitalValues[i] = Convert.ToBoolean((bytes[digitalByteStart + digitalByteIterator] >> (i - digitalByteIterator * 8)) & 1);
            }
        }