Add TryAcquireImage command

This commit is contained in:
2020-12-07 18:23:02 +01:00
parent 70e96a5055
commit 97f3ac4513

View File

@@ -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;