You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							156 lines
						
					
					
						
							4.0 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							156 lines
						
					
					
						
							4.0 KiB
						
					
					
				
								from socket import *
							 | 
						|
								from .zkconnect import *
							 | 
						|
								from .zkversion import *
							 | 
						|
								from .zkos import *
							 | 
						|
								from .zkextendfmt import *
							 | 
						|
								from .zkextendoplog import *
							 | 
						|
								from .zkplatform import *
							 | 
						|
								from .zkworkcode import *
							 | 
						|
								from .zkssr import *
							 | 
						|
								from .zkpin import *
							 | 
						|
								from .zkface import *
							 | 
						|
								from .zkserialnumber import *
							 | 
						|
								from .zkdevice import *
							 | 
						|
								from .zkuser import *
							 | 
						|
								from .zkattendance import *
							 | 
						|
								from .zktime import *
							 | 
						|
								
							 | 
						|
								class ZKLib:
							 | 
						|
								    
							 | 
						|
								    def __init__(self, ip, port):
							 | 
						|
								        self.address = (ip, port)
							 | 
						|
								        self.zkclient = socket(AF_INET, SOCK_DGRAM)
							 | 
						|
								        self.zkclient.settimeout(3)
							 | 
						|
								        self.session_id = 0
							 | 
						|
								        self.userdata = []
							 | 
						|
								        self.attendancedata = []
							 | 
						|
								    
							 | 
						|
								    
							 | 
						|
								    def createChkSum(self, p):
							 | 
						|
								        """This function calculates the chksum of the packet to be sent to the 
							 | 
						|
								        time clock
							 | 
						|
								
							 | 
						|
								        Copied from zkemsdk.c"""
							 | 
						|
								        l = len(p)
							 | 
						|
								        chksum = 0
							 | 
						|
								        while l > 1:
							 | 
						|
								            chksum += unpack('H', pack('BB', p[0], p[1]))[0]
							 | 
						|
								            
							 | 
						|
								            p = p[2:]
							 | 
						|
								            if chksum > USHRT_MAX:
							 | 
						|
								                chksum -= USHRT_MAX
							 | 
						|
								            l -= 2
							 | 
						|
								        
							 | 
						|
								        
							 | 
						|
								        if l:
							 | 
						|
								            chksum = chksum + p[-1]
							 | 
						|
								            
							 | 
						|
								        while chksum > USHRT_MAX:
							 | 
						|
								            chksum -= USHRT_MAX
							 | 
						|
								        
							 | 
						|
								        chksum = ~chksum
							 | 
						|
								        
							 | 
						|
								        while chksum < 0:
							 | 
						|
								            chksum += USHRT_MAX
							 | 
						|
								        
							 | 
						|
								        return pack('H', chksum)
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    def createHeader(self, command, chksum, session_id, reply_id, 
							 | 
						|
								                                command_string):
							 | 
						|
								        """This function puts a the parts that make up a packet together and 
							 | 
						|
								        packs them into a byte string"""
							 | 
						|
								        buf = pack('HHHH', command, chksum, session_id, reply_id) + command_string.encode(encoding='utf_8', errors='strict')
							 | 
						|
								        
							 | 
						|
								        buf = unpack('8B'+'%sB' % len(command_string), buf)
							 | 
						|
								        
							 | 
						|
								        chksum = unpack('H', self.createChkSum(buf))[0]
							 | 
						|
								        #print unpack('H', self.createChkSum(buf))
							 | 
						|
								        reply_id += 1
							 | 
						|
								        if reply_id >= USHRT_MAX:
							 | 
						|
								            reply_id -= USHRT_MAX
							 | 
						|
								
							 | 
						|
								        buf = pack('HHHH', command, chksum, session_id, reply_id)
							 | 
						|
								        return buf + command_string.encode(encoding='utf_8', errors='strict')
							 | 
						|
								    
							 | 
						|
								    
							 | 
						|
								    def checkValid(self, reply):
							 | 
						|
								        """Checks a returned packet to see if it returned CMD_ACK_OK,
							 | 
						|
								        indicating success"""
							 | 
						|
								        command = unpack('HHHH', reply[:8])[0]
							 | 
						|
								        if command == CMD_ACK_OK:
							 | 
						|
								            return True
							 | 
						|
								        else:
							 | 
						|
								            return False
							 | 
						|
								            
							 | 
						|
								    def connect(self):
							 | 
						|
								        return zkconnect(self)
							 | 
						|
								            
							 | 
						|
								    def disconnect(self):
							 | 
						|
								        return zkdisconnect(self)
							 | 
						|
								        
							 | 
						|
								    def version(self):
							 | 
						|
								        return zkversion(self)
							 | 
						|
								        
							 | 
						|
								    def osversion(self):
							 | 
						|
								        return zkos(self)
							 | 
						|
								        
							 | 
						|
								    def extendFormat(self):
							 | 
						|
								        return zkextendfmt(self)
							 | 
						|
								    
							 | 
						|
								    def extendOPLog(self, index=0):
							 | 
						|
								        return zkextendoplog(self, index)
							 | 
						|
								    
							 | 
						|
								    def platform(self):
							 | 
						|
								        return zkplatform(self)
							 | 
						|
								    
							 | 
						|
								    def fmVersion(self):
							 | 
						|
								        return zkplatformVersion(self)
							 | 
						|
								        
							 | 
						|
								    def workCode(self):
							 | 
						|
								        return zkworkcode(self)
							 | 
						|
								        
							 | 
						|
								    def ssr(self):
							 | 
						|
								        return zkssr(self)
							 | 
						|
								    
							 | 
						|
								    def pinWidth(self):
							 | 
						|
								        return zkpinwidth(self)
							 | 
						|
								    
							 | 
						|
								    def faceFunctionOn(self):
							 | 
						|
								        return zkfaceon(self)
							 | 
						|
								    
							 | 
						|
								    def serialNumber(self):
							 | 
						|
								        return zkserialnumber(self)
							 | 
						|
								    
							 | 
						|
								    def deviceName(self):
							 | 
						|
								        return zkdevicename(self)
							 | 
						|
								        
							 | 
						|
								    def disableDevice(self):
							 | 
						|
								        return zkdisabledevice(self)
							 | 
						|
								    
							 | 
						|
								    def enableDevice(self):
							 | 
						|
								        return zkenabledevice(self)
							 | 
						|
								        
							 | 
						|
								    def getUser(self):
							 | 
						|
								        return zkgetuser(self)
							 | 
						|
								        
							 | 
						|
								    def setUser(self, uid, userid, name, password, role):
							 | 
						|
								        return zksetuser(self, uid, userid, name, password, role)
							 | 
						|
								        
							 | 
						|
								    def clearUser(self):
							 | 
						|
								        return zkclearuser(self)
							 | 
						|
								    
							 | 
						|
								    def clearAdmin(self):
							 | 
						|
								        return zkclearadmin(self)
							 | 
						|
								        
							 | 
						|
								    def getAttendance(self):
							 | 
						|
								        return zkgetattendance(self)
							 | 
						|
								    
							 | 
						|
								    def clearAttendance(self):
							 | 
						|
								        return zkclearattendance(self)
							 | 
						|
								        
							 | 
						|
								    def setTime(self, t):
							 | 
						|
								        return zksettime(self, t)
							 | 
						|
								    
							 | 
						|
								    def getTime(self):
							 | 
						|
								        return zkgettime(self)
							 | 
						|
								
							 |