From 97f3ac45138846c7acdfc5edcd70b67d496a6e54 Mon Sep 17 00:00:00 2001 From: Eveldee Date: Mon, 7 Dec 2020 18:23:02 +0100 Subject: [PATCH] Add TryAcquireImage command --- .../FingerprintSensor.cs | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/WaveshareUARTFingerprintSensor/FingerprintSensor.cs b/WaveshareUARTFingerprintSensor/FingerprintSensor.cs index 08c5b8b..eb07103 100644 --- a/WaveshareUARTFingerprintSensor/FingerprintSensor.cs +++ b/WaveshareUARTFingerprintSensor/FingerprintSensor.cs @@ -165,7 +165,7 @@ namespace WaveshareUARTFingerprintSensor return true; } - private byte[] ReadData(int length) + private byte[] ReadData(int length, bool skipChecksum = false) { byte first = (byte)_serialPort.ReadByte(); @@ -186,7 +186,7 @@ namespace WaveshareUARTFingerprintSensor byte checksum = (byte)_serialPort.ReadByte(); byte separator = (byte)_serialPort.ReadByte(); - if (separator != PacketSeparator || checksum != ComputeChecksumData(data, length)) + if (separator != PacketSeparator || (!skipChecksum && checksum != ComputeChecksumData(data, length))) { throw new InvalidDataException("Invalid checksum"); } @@ -428,6 +428,25 @@ namespace WaveshareUARTFingerprintSensor return false; } + public bool TryAcquireImage(out byte[] image) + { + if (TrySendAndReceive(CommandType.AcquireImage, 0, 0, 0, out var response)) + { + if (response.responseType == ResponseType.Success) + { + var length = Utils.Merge(response.first, response.second); + + image = ReadData(length, skipChecksum: true); + + return true; + } + } + + image = default; + + return false; + } + public void Sleep() { _sleeping = true;