diff --git a/WaveshareUARTFingerprintSensor.Sample/WaveshareUARTFingerprintSensor.Sample.csproj b/WaveshareUARTFingerprintSensor.Sample/WaveshareUARTFingerprintSensor.Sample.csproj
index 24ae430..14d92e7 100644
--- a/WaveshareUARTFingerprintSensor.Sample/WaveshareUARTFingerprintSensor.Sample.csproj
+++ b/WaveshareUARTFingerprintSensor.Sample/WaveshareUARTFingerprintSensor.Sample.csproj
@@ -55,8 +55,21 @@
..\packages\Unosquare.Swan.Lite.3.0.0\lib\net461\Swan.Lite.dll
+
+ ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll
+
+
+ ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll
+
+
+
+ ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
+
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll
+
..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll
diff --git a/WaveshareUARTFingerprintSensor.Sample/packages.config b/WaveshareUARTFingerprintSensor.Sample/packages.config
index e93a0bf..e075a78 100644
--- a/WaveshareUARTFingerprintSensor.Sample/packages.config
+++ b/WaveshareUARTFingerprintSensor.Sample/packages.config
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/WaveshareUARTFingerprintSensor/FingerprintSensor.cs b/WaveshareUARTFingerprintSensor/FingerprintSensor.cs
index c6102b1..73000cc 100644
--- a/WaveshareUARTFingerprintSensor/FingerprintSensor.cs
+++ b/WaveshareUARTFingerprintSensor/FingerprintSensor.cs
@@ -254,11 +254,12 @@ namespace WaveshareUARTFingerprintSensor
///
///
///
- public (ResponseType responseType, byte[] eigenvalues) AddFingerprintAndAcquireEigenvalues(ushort userID, UserPermission userPermission)
+ public ResponseType AddFingerprintAndAcquireEigenvalues(ushort userID, UserPermission userPermission, out Span eigenvalues)
{
if (userID > MaxUserID)
{
- return (ResponseType.Full, null);
+ eigenvalues = Span.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.Empty;
+ return loopResponse.responseType;
}
}
else
{
- return (ResponseType.Timeout, null);
+ eigenvalues = Span.Empty;
+ return ResponseType.Timeout;
}
Thread.Sleep(50);
@@ -285,19 +288,21 @@ namespace WaveshareUARTFingerprintSensor
{
if (response.responseType != ResponseType.Success)
{
- return (response.responseType, null);
+ eigenvalues = Span.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.Empty;
+ return ResponseType.Timeout;
}
}
@@ -447,7 +452,7 @@ namespace WaveshareUARTFingerprintSensor
return false;
}
- public bool TryAcquireEigenvalues(out byte[] eigenvalues)
+ public bool TryAcquireEigenvalues(out Span 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.Empty;
return false;
}
diff --git a/WaveshareUARTFingerprintSensor/WaveshareUARTFingerprintSensor.csproj b/WaveshareUARTFingerprintSensor/WaveshareUARTFingerprintSensor.csproj
index c51b466..5bbf423 100644
--- a/WaveshareUARTFingerprintSensor/WaveshareUARTFingerprintSensor.csproj
+++ b/WaveshareUARTFingerprintSensor/WaveshareUARTFingerprintSensor.csproj
@@ -38,8 +38,21 @@
..\packages\Unosquare.Swan.Lite.3.0.0\lib\net461\Swan.Lite.dll
+
+ ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll
+
+
+ ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll
+
+
+
+ ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
+
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll
+
..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll
diff --git a/WaveshareUARTFingerprintSensor/packages.config b/WaveshareUARTFingerprintSensor/packages.config
index e93a0bf..e075a78 100644
--- a/WaveshareUARTFingerprintSensor/packages.config
+++ b/WaveshareUARTFingerprintSensor/packages.config
@@ -1,5 +1,9 @@
+
+
+
+