From b6cfd862f9afbbae2bb6bac596505310617aa877 Mon Sep 17 00:00:00 2001 From: Arturo Hernandez Date: Mon, 11 Jun 2018 18:28:52 -0400 Subject: [PATCH] test status vs punch --- test_machine.py | 4 ++-- zk/attendance.py | 3 ++- zk/base.py | 22 +++++++++++----------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/test_machine.py b/test_machine.py index 5d554da..4f37979 100755 --- a/test_machine.py +++ b/test_machine.py @@ -197,7 +197,7 @@ try: i = 0 for att in attendance: i +=1 - print ("ATT {:>6}: uid:{:>3}, user_id:{:>8} t: {}, s:{}".format(i, att.uid, att.user_id, att.timestamp, att.status)) + print ("ATT {:>6}: uid:{:>3}, user_id:{:>8} t: {}, s:{} p:{}".format(i, att.uid, att.user_id, att.timestamp, att.status, att.punch)) print (' took {:.3f}[s]'.format(final - inicio)) print ('') print ('--- sizes & capacity ---') @@ -217,7 +217,7 @@ try: #counter += 1 #enable to implemet a poorman timeout print ("timeout {}".format(counter)) else: - print ("ATT {:>6}: uid:{:>3}, user_id:{:>8} t: {}, s:{}".format(counter, att.uid, att.user_id, att.timestamp, att.status)) + print ("ATT {:>6}: uid:{:>3}, user_id:{:>8} t: {}, s:{} p:{}".format(counter, att.uid, att.user_id, att.timestamp, att.status, att.punch)) if counter >= 10: conn.end_live_capture = True print('') diff --git a/zk/attendance.py b/zk/attendance.py index de11bc2..f21f4da 100644 --- a/zk/attendance.py +++ b/zk/attendance.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- class Attendance(object): - def __init__(self, uid, user_id, timestamp, status): + def __init__(self, uid, user_id, timestamp, status, punch=0): self.uid = uid self.user_id = user_id self.timestamp = timestamp self.status = status + self.punch = punch def __str__(self): return ': {} : {}'.format(self.user_id, self.timestamp) diff --git a/zk/base.py b/zk/base.py index 43676b8..4636b58 100644 --- a/zk/base.py +++ b/zk/base.py @@ -1292,8 +1292,8 @@ class ZK(object): """if len (data) == 5: continue""" - if len(data) == 12: #class 1 attendance - user_id, status, match, timehex = unpack('= 8: - uid, status, timestamp = unpack('HH4s', attendance_data.ljust(8, b'\x00')[:8]) + while len(attendance_data) >= 8:#TODO RETEST ZK6!!! + uid, status, timestamp, punch = unpack('HB4sB', attendance_data.ljust(8, b'\x00')[:8]) if self.verbose: print (codecs.encode(attendance_data[:8], 'hex')) attendance_data = attendance_data[8:] tuser = list(filter(lambda x: x.uid == uid, users)) @@ -1559,8 +1559,8 @@ class ZK(object): attendance = Attendance(uid, user_id, timestamp, status) attendances.append(attendance) elif record_size == 16: # extended - while len(attendance_data) >= 16: - user_id, timestamp, status, verified, reserved, workcode = unpack('= 16: #TODO RETEST ZK6 + user_id, timestamp, status, punch, reserved, workcode = unpack('= 40: - uid, user_id, sparator, timestamp, status, space = unpack('