示例#1
0
        public void TemperatureImageTest()
        {
            I2cTestDevice i2cDevice = new I2cTestDevice();
            Amg88xx       sensor    = new Amg88xx(i2cDevice);

            Temperature[,] referenceImage = new Temperature[Amg88xx.Width, Amg88xx.Height];
            Random rnd = new Random();

            for (int y = 0; y < Amg88xx.Height; y++)
            {
                for (int x = 0; x < Amg88xx.Width; x++)
                {
                    referenceImage[x, y] = Temperature.FromDegreesCelsius(rnd.Next(-80, 321) * PixelTemperatureResolution);
                    (byte tl, byte th)   = Amg88xxUtils.ConvertFromTemperature(referenceImage[x, y]);
                    i2cDevice.DataToRead.Enqueue(tl);
                    i2cDevice.DataToRead.Enqueue(th);
                }
            }

            // read image from sensor
            sensor.ReadImage();

            // expectation: one write access to register T01L (lower byte of first pixel) to trigger readout
            Assert.Single(i2cDevice.DataWritten);
            Assert.Equal((byte)Register.T01L, i2cDevice.DataWritten.Dequeue());

            // expectation: all pixels have been read, so nothing is remaining
            Assert.Empty(i2cDevice.DataToRead);

            Assert.Equal(referenceImage, sensor.TemperatureImage);
        }
示例#2
0
        public void RawPixelIndexerTest()
        {
            I2cTestDevice i2cDevice = new I2cTestDevice();
            Amg88xx       sensor    = new Amg88xx(i2cDevice);

            // using a simple linear sequence of numbers as reference image:
            //   0 to 0x1f8 (504d)
            Int16[] referenceImage = new Int16[Amg88xx.PixelCount];
            for (int n = 0; n < Amg88xx.PixelCount; n++)
            {
                referenceImage[n] = (short)(n * 8);
                // enqueue lower byte (TLxx)
                i2cDevice.DataToRead.Enqueue((byte)(referenceImage[n] & 0xff));
                // enqueue higher byte (THxx)
                i2cDevice.DataToRead.Enqueue((byte)(referenceImage[n] >> 8));
            }

            // read image from sensor
            sensor.ReadImage();

            // expectation: one write access to register T01L (lower byte of first pixel) to trigger readout
            Assert.Single(i2cDevice.DataWritten);
            Assert.Equal((byte)Register.T01L, i2cDevice.DataWritten.Dequeue());

            // expectation: all pixels have been read, so nothing is remaining
            Assert.Empty(i2cDevice.DataToRead);

            for (int n = 0; n < Amg88xx.PixelCount; n++)
            {
                Int16 rawPixel = sensor[n];
                Assert.Equal(referenceImage[n], rawPixel);
            }
        }
        private double[] ReadHeatMap()
        {
            _amg88xx.ReadImage();
            var temperatureImage = _amg88xx.TemperatureImage;

            return(ConvertTemperatureImage(temperatureImage));
        }