diff --git a/src/files/pyfingerprint/pyfingerprint.py b/src/files/pyfingerprint/pyfingerprint.py index 23f2032..57b1ed0 100644 --- a/src/files/pyfingerprint/pyfingerprint.py +++ b/src/files/pyfingerprint/pyfingerprint.py @@ -12,6 +12,7 @@ import serial from PIL import Image import struct +import math ## Baotou start byte @@ -1387,6 +1388,10 @@ def uploadCharacteristics(self, charBufferNumber = FINGERPRINT_CHARBUFFER1, char raise ValueError('The characteristics data is required!') maxPacketSize = self.getMaxPacketSize() + maxDataPacketSize = 32 + + ## not sure about this if maxPacketSize == maxDataPacketSize + # maxDataPacketSize = maxPacketSize - 2 (checksum length is 2 and it is also calculated in packet size? ) ## Upload command @@ -1420,20 +1425,20 @@ def uploadCharacteristics(self, charBufferNumber = FINGERPRINT_CHARBUFFER1, char raise Exception('Unknown error '+ hex(receivedPacketPayload[0])) ## Upload data packets - packetNbr = len(characteristicsData) / maxPacketSize + packetNbr = math.ceil(len(characteristicsData) / float(maxDataPacketSize)) if ( packetNbr <= 1 ): self.__writePacket(FINGERPRINT_ENDDATAPACKET, characteristicsData) else: i = 1 while ( i < packetNbr ): - lfrom = (i-1) * maxPacketSize - lto = lfrom + maxPacketSize + lfrom = (i-1) * maxDataPacketSize + lto = lfrom + maxDataPacketSize self.__writePacket(FINGERPRINT_DATAPACKET, characteristicsData[lfrom:lto]) i += 1 - lfrom = (i-1) * maxPacketSize - lto = lfrom + maxPacketSize + lfrom = (i-1) * maxDataPacketSize + lto = len(characteristicsData) self.__writePacket(FINGERPRINT_ENDDATAPACKET, characteristicsData[lfrom:lto]) ## Verify uploaded characteristics