public override Task TakeMeasurementAsync() { if (CurrentState == SensorStateEnum.Disabled) { throw new InvalidOperationException("Can't take measurement on disabled sensor!"); } try { _pms5003.WakeUp(); _pms5003Data = _pms5003.ReadData(); Logger?.LogDebug("{Message}", _pms5003Data.ToString()); CurrentState = SensorStateEnum.Initialized; } catch (ReadFailedException e) { Logger?.LogError("{Message}", e.Message); CurrentState = SensorStateEnum.Error; _pms5003.Reset(); } finally { _pms5003.Sleep(); } return(Task.CompletedTask); }
public void Test_FromBytes_Ok() { var tests = new byte[][] { new byte[] { 66, 77, 0, 28, 0, 8, 0, 13, 0, 15, 0, 8, 0, 13, 0, 15, 7, 17, 1, 249, 0, 82, 0, 6, 0, 2, 0, 2, 151, 0, 2, 248 }, new byte[] { 66, 77, 0, 28, 0, 9, 0, 15, 0, 16, 0, 9, 0, 15, 0, 16, 6, 246, 2, 11, 0, 104, 0, 4, 0, 2, 0, 2, 151, 0, 3, 11 }, new byte[] { 66, 77, 0, 28, 0, 7, 0, 12, 0, 13, 0, 7, 0, 12, 0, 13, 5, 226, 1, 152, 0, 66, 0, 12, 0, 2, 0, 2, 151, 0, 3, 84 } }; // Assert that no exception is thrown foreach (var subTest in tests) { Pms5003Data.FromBytes(subTest); } }
public void Test_FromBytes_ChecksumMismatchException() { var tests = new byte[][] { new byte[] { 66, 77, 0, 28, 0, 8, 0, 13, 0, 16, 0, 8, 0, 13, 0, 16, 6, 45, 1, 167, 0, 101, 0, 10, 0, 8, 0, 151, 0, 144, 255, 0 }, new byte[] { 66, 77, 0, 28, 0, 7, 0, 11, 0, 13, 0, 7, 0, 11, 0, 13, 5, 193, 1, 155, 8, 1, 6, 0, 2, 0, 2, 151, 0, 3, 44, 0 }, new byte[] { 66, 77, 0, 28, 0, 8, 0, 14, 0, 18, 0, 8, 0, 14, 0, 18, 6, 186, 1, 208, 0, 100, 0, 8, 0, 6, 0, 6, 151, 3, 155, 0 }, new byte[] { 66, 77, 0, 28, 0, 7, 0, 10, 0, 10, 232, 0, 10, 0, 33, 208, 10, 165, 0, 70, 0, 4, 0, 0, 0, 0, 151, 0, 2, 161, 0, 0, } }; foreach (var subTest in tests) { Assert.Throws <ChecksumMismatchException>(() => Pms5003Data.FromBytes(subTest)); } }
public void Test_ToString() { var pmsData = Pms5003Data.FromBytes(new byte[] { 66, 77, 0, 28, 0, 7, 0, 12, 0, 13, 0, 7, 0, 12, 0, 13, 5, 226, 1, 152, 0, 66, 0, 12, 0, 2, 0, 2, 151, 0, 3, 84 }); _testOutputHelper.WriteLine(pmsData.ToString()); Assert.Equal(@"Pms5003Data[ Pm1Standard=7, Pm2Dot5Standard=12, Pm10Standard=13, Pm1Atmospheric=7, Pm2Dot5Atmospheric=12, Pm10Atmospheric=13, ParticlesDiameterBeyond0Dot3=1506, ParticlesDiameterBeyond0Dot5=408, ParticlesDiameterBeyond1Dot0=66, ParticlesDiameterBeyond2Dot5=12, ParticlesDiameterBeyond5Dot0=2, ParticlesDiameterBeyond10Dot0=2, Reserved=38656, Checksum=852 ] ", pmsData.ToString()); }
public void Test_FromBytes_InvalidStartByteException() { var tests = new byte[][] { new byte[] { 66, 00, 0, 28, 0, 8, 0, 13, 0, 16, 0, 8, 0, 13, 0, 16, 6, 45, 1, 167, 0, 101, 0, 10, 0, 8, 0, 151, 0, 144, 255, 0 }, new byte[] { 00, 77, 0, 28, 0, 7, 0, 11, 0, 13, 0, 7, 0, 11, 0, 13, 5, 193, 1, 155, 8, 1, 6, 0, 2, 0, 2, 151, 0, 3, 44, 0 }, }; foreach (var subTest in tests) { Assert.Throws <InvalidStartByteException>(() => Pms5003Data.FromBytes(subTest)); } }