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>
|
<HintPath>..\packages\Unosquare.Swan.Lite.3.0.0\lib\net461\Swan.Lite.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<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.Core" />
|
||||||
<Reference Include="System.Drawing" />
|
<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.ServiceProcess" />
|
||||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<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>
|
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<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="System.ValueTuple" version="4.5.0" targetFramework="net472" />
|
||||||
<package id="Unosquare.Raspberry.Abstractions" version="0.4.1" targetFramework="net472" />
|
<package id="Unosquare.Raspberry.Abstractions" version="0.4.1" targetFramework="net472" />
|
||||||
<package id="Unosquare.Raspberry.IO" version="0.27.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="userID"></param>
|
||||||
/// <param name="userPermission"></param>
|
/// <param name="userPermission"></param>
|
||||||
/// <returns></returns>
|
/// <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)
|
if (userID > MaxUserID)
|
||||||
{
|
{
|
||||||
return (ResponseType.Full, null);
|
eigenvalues = Span<byte>.Empty;
|
||||||
|
return ResponseType.Full;
|
||||||
}
|
}
|
||||||
|
|
||||||
CommandType[] commands = { CommandType.AddFingerprint1, CommandType.AddFingerprint2 };
|
CommandType[] commands = { CommandType.AddFingerprint1, CommandType.AddFingerprint2 };
|
||||||
@@ -270,12 +271,14 @@ namespace WaveshareUARTFingerprintSensor
|
|||||||
{
|
{
|
||||||
if (loopResponse.responseType != ResponseType.Success)
|
if (loopResponse.responseType != ResponseType.Success)
|
||||||
{
|
{
|
||||||
return (loopResponse.responseType, null);
|
eigenvalues = Span<byte>.Empty;
|
||||||
|
return loopResponse.responseType;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return (ResponseType.Timeout, null);
|
eigenvalues = Span<byte>.Empty;
|
||||||
|
return ResponseType.Timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
Thread.Sleep(50);
|
Thread.Sleep(50);
|
||||||
@@ -285,19 +288,21 @@ namespace WaveshareUARTFingerprintSensor
|
|||||||
{
|
{
|
||||||
if (response.responseType != ResponseType.Success)
|
if (response.responseType != ResponseType.Success)
|
||||||
{
|
{
|
||||||
return (response.responseType, null);
|
eigenvalues = Span<byte>.Empty;
|
||||||
|
return response.responseType;
|
||||||
}
|
}
|
||||||
|
|
||||||
ushort length = Utils.Merge(response.first, response.second);
|
ushort length = Utils.Merge(response.first, response.second);
|
||||||
|
|
||||||
var data = ReadData(length);
|
var data = ReadData(length);
|
||||||
var eigenvalues = data.Skip(3).ToArray();
|
eigenvalues = data.AsSpan(3);
|
||||||
|
|
||||||
return (ResponseType.Success, eigenvalues);
|
return ResponseType.Success;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return (ResponseType.Timeout, null);
|
eigenvalues = Span<byte>.Empty;
|
||||||
|
return ResponseType.Timeout;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -447,7 +452,7 @@ namespace WaveshareUARTFingerprintSensor
|
|||||||
return false;
|
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))
|
if (TrySendAndReceive(CommandType.AcquireEigenvalues, 0, 0, 0, out var response))
|
||||||
{
|
{
|
||||||
@@ -455,13 +460,13 @@ namespace WaveshareUARTFingerprintSensor
|
|||||||
{
|
{
|
||||||
var length = Utils.Merge(response.first, response.second);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
eigenvalues = default;
|
eigenvalues = Span<byte>.Empty;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,8 +38,21 @@
|
|||||||
<HintPath>..\packages\Unosquare.Swan.Lite.3.0.0\lib\net461\Swan.Lite.dll</HintPath>
|
<HintPath>..\packages\Unosquare.Swan.Lite.3.0.0\lib\net461\Swan.Lite.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<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.Core" />
|
||||||
<Reference Include="System.Drawing" />
|
<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.ServiceProcess" />
|
||||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<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>
|
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<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="System.ValueTuple" version="4.5.0" targetFramework="net472" />
|
||||||
<package id="Unosquare.Raspberry.Abstractions" version="0.4.1" targetFramework="net472" />
|
<package id="Unosquare.Raspberry.Abstractions" version="0.4.1" targetFramework="net472" />
|
||||||
<package id="Unosquare.Raspberry.IO" version="0.27.1" targetFramework="net472" />
|
<package id="Unosquare.Raspberry.IO" version="0.27.1" targetFramework="net472" />
|
||||||
|
|||||||
Reference in New Issue
Block a user