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); }
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)); }