Optimize using Span
This commit is contained in:
@@ -55,8 +55,21 @@
|
||||
<HintPath>..\packages\Unosquare.Swan.Lite.3.0.0\lib\net461\Swan.Lite.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceProcess" />
|
||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
|
||||
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
|
||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net472" />
|
||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
|
||||
<package id="Unosquare.Raspberry.Abstractions" version="0.4.1" targetFramework="net472" />
|
||||
<package id="Unosquare.Raspberry.IO" version="0.27.1" targetFramework="net472" />
|
||||
|
||||
@@ -254,11 +254,12 @@ namespace WaveshareUARTFingerprintSensor
|
||||
/// <param name="userID"></param>
|
||||
/// <param name="userPermission"></param>
|
||||
/// <returns></returns>
|
||||
public (ResponseType responseType, byte[] eigenvalues) AddFingerprintAndAcquireEigenvalues(ushort userID, UserPermission userPermission)
|
||||
public ResponseType AddFingerprintAndAcquireEigenvalues(ushort userID, UserPermission userPermission, out Span<byte> eigenvalues)
|
||||
{
|
||||
if (userID > MaxUserID)
|
||||
{
|
||||
return (ResponseType.Full, null);
|
||||
eigenvalues = Span<byte>.Empty;
|
||||
return ResponseType.Full;
|
||||
}
|
||||
|
||||
CommandType[] commands = { CommandType.AddFingerprint1, CommandType.AddFingerprint2 };
|
||||
@@ -270,12 +271,14 @@ namespace WaveshareUARTFingerprintSensor
|
||||
{
|
||||
if (loopResponse.responseType != ResponseType.Success)
|
||||
{
|
||||
return (loopResponse.responseType, null);
|
||||
eigenvalues = Span<byte>.Empty;
|
||||
return loopResponse.responseType;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return (ResponseType.Timeout, null);
|
||||
eigenvalues = Span<byte>.Empty;
|
||||
return ResponseType.Timeout;
|
||||
}
|
||||
|
||||
Thread.Sleep(50);
|
||||
@@ -285,19 +288,21 @@ namespace WaveshareUARTFingerprintSensor
|
||||
{
|
||||
if (response.responseType != ResponseType.Success)
|
||||
{
|
||||
return (response.responseType, null);
|
||||
eigenvalues = Span<byte>.Empty;
|
||||
return response.responseType;
|
||||
}
|
||||
|
||||
ushort length = Utils.Merge(response.first, response.second);
|
||||
|
||||
var data = ReadData(length);
|
||||
var eigenvalues = data.Skip(3).ToArray();
|
||||
eigenvalues = data.AsSpan(3);
|
||||
|
||||
return (ResponseType.Success, eigenvalues);
|
||||
return ResponseType.Success;
|
||||
}
|
||||
else
|
||||
{
|
||||
return (ResponseType.Timeout, null);
|
||||
eigenvalues = Span<byte>.Empty;
|
||||
return ResponseType.Timeout;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -447,7 +452,7 @@ namespace WaveshareUARTFingerprintSensor
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool TryAcquireEigenvalues(out byte[] eigenvalues)
|
||||
public bool TryAcquireEigenvalues(out Span<byte> eigenvalues)
|
||||
{
|
||||
if (TrySendAndReceive(CommandType.AcquireEigenvalues, 0, 0, 0, out var response))
|
||||
{
|
||||
@@ -455,13 +460,13 @@ namespace WaveshareUARTFingerprintSensor
|
||||
{
|
||||
var length = Utils.Merge(response.first, response.second);
|
||||
|
||||
eigenvalues = ReadData(length, skipChecksum: true).Skip(3).ToArray();
|
||||
eigenvalues = ReadData(length, skipChecksum: true).AsSpan(3);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
eigenvalues = default;
|
||||
eigenvalues = Span<byte>.Empty;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -38,8 +38,21 @@
|
||||
<HintPath>..\packages\Unosquare.Swan.Lite.3.0.0\lib\net461\Swan.Lite.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceProcess" />
|
||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
|
||||
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
|
||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net472" />
|
||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
|
||||
<package id="Unosquare.Raspberry.Abstractions" version="0.4.1" targetFramework="net472" />
|
||||
<package id="Unosquare.Raspberry.IO" version="0.27.1" targetFramework="net472" />
|
||||
|
||||
Reference in New Issue
Block a user