Fix library: Start search from start frame
This commit is contained in:
parent
ae62eff060
commit
e46fda594d
7 changed files with 28 additions and 29 deletions
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ContentModelUserStore">
|
<component name="UserContentModel">
|
||||||
<attachedFolders />
|
<attachedFolders />
|
||||||
<explicitIncludes />
|
<explicitIncludes />
|
||||||
<explicitExcludes />
|
<explicitExcludes />
|
||||||
|
|
|
@ -4,6 +4,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PMS5003", "PMS5003\PMS5003.
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PMS5003Tests", "PMS5003Tests\PMS5003Tests.csproj", "{AF7541BD-C0B1-42FE-AEFB-1A1D9CEAC6B9}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PMS5003Tests", "PMS5003Tests\PMS5003Tests.csproj", "{AF7541BD-C0B1-42FE-AEFB-1A1D9CEAC6B9}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApp1", "ConsoleApp1\ConsoleApp1.csproj", "{92DEDAA4-6A42-4EC5-A534-B1985608BB98}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
@ -18,5 +20,9 @@ Global
|
||||||
{AF7541BD-C0B1-42FE-AEFB-1A1D9CEAC6B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{AF7541BD-C0B1-42FE-AEFB-1A1D9CEAC6B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{AF7541BD-C0B1-42FE-AEFB-1A1D9CEAC6B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{AF7541BD-C0B1-42FE-AEFB-1A1D9CEAC6B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{AF7541BD-C0B1-42FE-AEFB-1A1D9CEAC6B9}.Release|Any CPU.Build.0 = Release|Any CPU
|
{AF7541BD-C0B1-42FE-AEFB-1A1D9CEAC6B9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{92DEDAA4-6A42-4EC5-A534-B1985608BB98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{92DEDAA4-6A42-4EC5-A534-B1985608BB98}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{92DEDAA4-6A42-4EC5-A534-B1985608BB98}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{92DEDAA4-6A42-4EC5-A534-B1985608BB98}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace PMS5003.Exceptions
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// BufferUnderflowExceptions is thrown when the PMS5003 data buffer is incomplete.
|
|
||||||
/// </summary>
|
|
||||||
[Serializable]
|
|
||||||
public class BufferUnderflowException : Exception
|
|
||||||
{
|
|
||||||
public BufferUnderflowException() : base("The PMS5003 data buffer is underrun, not enough bytes read!")
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -79,14 +79,28 @@ namespace PMS5003
|
||||||
public Pms5003Data ReadData()
|
public Pms5003Data ReadData()
|
||||||
{
|
{
|
||||||
var currentTry = 0;
|
var currentTry = 0;
|
||||||
const int maxRetries = 5;
|
const int maxRetries = 50;
|
||||||
|
|
||||||
|
var buffer = new byte[32];
|
||||||
while (currentTry < maxRetries)
|
while (currentTry < maxRetries)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var buffer = new byte[32];
|
// Try to find start frame
|
||||||
_serialPort.Read(buffer, 0, 32);
|
_serialPort.Read(buffer, 0, 1);
|
||||||
|
if (buffer[0] != Pms5003Constants.StartByte1)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
_serialPort.Read(buffer, 1, 1);
|
||||||
|
if (buffer[1] != Pms5003Constants.StartByte2)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read rest of data
|
||||||
|
_serialPort.Read(buffer, 2, 30);
|
||||||
return Pms5003Data.FromBytes(buffer);
|
return Pms5003Data.FromBytes(buffer);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||||
<PackageId>PMS5003</PackageId>
|
<PackageId>PMS5003</PackageId>
|
||||||
<Version>1.0.4</Version>
|
<Version>1.1.0</Version>
|
||||||
<Authors>Denis Nutiu</Authors>
|
<Authors>Denis Nutiu</Authors>
|
||||||
<Company>NucuLabs.dev</Company>
|
<Company>NucuLabs.dev</Company>
|
||||||
<Description>C# Library for interfacing with the PMS5003 Particulate Matter Sensor.</Description>
|
<Description>C# Library for interfacing with the PMS5003 Particulate Matter Sensor.</Description>
|
||||||
|
|
|
@ -37,12 +37,7 @@ namespace PMS5003
|
||||||
public static Pms5003Data FromBytes(byte[] buffer)
|
public static Pms5003Data FromBytes(byte[] buffer)
|
||||||
{
|
{
|
||||||
var pms5003Measurement = new Pms5003Data();
|
var pms5003Measurement = new Pms5003Data();
|
||||||
|
|
||||||
if (buffer.Length < 4)
|
|
||||||
{
|
|
||||||
throw new BufferUnderflowException();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (buffer[0] != Pms5003Constants.StartByte1 || buffer[1] != Pms5003Constants.StartByte2)
|
if (buffer[0] != Pms5003Constants.StartByte1 || buffer[1] != Pms5003Constants.StartByte2)
|
||||||
{
|
{
|
||||||
throw new InvalidStartByteException(buffer[0], buffer[1]);
|
throw new InvalidStartByteException(buffer[0], buffer[1]);
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace Application
|
||||||
{
|
{
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
var pms = new Pms5003();
|
var pms = new Pms5003("COM3", -1, -1);
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
Loading…
Reference in a new issue