コード例 #1
0
ファイル: Amg88xxTests.cs プロジェクト: thecaptncode/iot
        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 ConvertToTemperatureTest(Int16 value, double expected)
        {
            byte[] valueBuffer = new byte[2];

            BinaryPrimitives.WriteInt16LittleEndian(new Span <byte>(valueBuffer), value);
            Assert.Equal(expected, Amg88xxUtils.ConvertToTemperature(valueBuffer).DegreesCelsius);

            Assert.Equal(expected, Amg88xxUtils.ConvertToTemperature((byte)(value & 0xff), (byte)((value & 0xff00) >> 8)).DegreesCelsius);
        }
コード例 #3
0
ファイル: Amg88xxTests.cs プロジェクト: jstoker/dotnet-iot
        public void InterruptHysteresisLevelSetTest()
        {
            Temperature expectedTemperature = Temperature.FromDegreesCelsius(125);

            I2cTestDevice i2cDevice = new I2cTestDevice();
            Amg88xx       sensor    = new Amg88xx(i2cDevice);

            sensor.InterruptHysteresis = expectedTemperature;

            Assert.Equal(4, i2cDevice.DataWritten.Count);

            (byte refTl, byte refTh) = Amg88xxUtils.ConvertFromTemperature(expectedTemperature);
            Assert.Equal((byte)Register.INTSL, i2cDevice.DataWritten.Dequeue());
            Assert.Equal(refTl, i2cDevice.DataWritten.Dequeue());
            Assert.Equal((byte)Register.INTSH, i2cDevice.DataWritten.Dequeue());
            Assert.Equal(refTh, i2cDevice.DataWritten.Dequeue());
        }
コード例 #4
0
ファイル: Amg88xxTests.cs プロジェクト: jstoker/dotnet-iot
        public void InterruptHysteresisLevelGetTest()
        {
            // expected temeperature: 72.75°C
            // two's complement representation:
            byte expectedTl = 0x23;
            byte expectedTh = 0x01;

            I2cTestDevice i2cDevice = new I2cTestDevice();
            Amg88xx       sensor    = new Amg88xx(i2cDevice);

            i2cDevice.DataToRead.Enqueue(expectedTl);
            i2cDevice.DataToRead.Enqueue(expectedTh);

            Temperature actualTemperature = sensor.InterruptHysteresis;

            Assert.Equal(2, i2cDevice.DataWritten.Count);
            Assert.Equal((byte)Register.INTSL, i2cDevice.DataWritten.Dequeue());
            Assert.Equal((byte)Register.INTSH, i2cDevice.DataWritten.Dequeue());

            Assert.Equal(Amg88xxUtils.ConvertToTemperature(expectedTl, expectedTh).DegreesCelsius, actualTemperature.DegreesCelsius);
        }
コード例 #5
0
 public void ConvertFromTemperatureTest(double temperature, byte expectedTl, byte expectedTh)
 {
     (byte tl, byte th) = Amg88xxUtils.ConvertFromTemperature(Temperature.FromDegreesCelsius(temperature));
     Assert.Equal(expectedTl, tl);
     Assert.Equal(expectedTh, th);
 }