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.
50 lines
1.4 KiB
50 lines
1.4 KiB
from struct import pack, unpack
|
|
from .zkconst import *
|
|
|
|
|
|
def reverseHex(hexstr):
|
|
tmp = ''
|
|
for i in reversed(range(len(hexstr)/2)):
|
|
tmp += hexstr[i*2:(i*2)+2]
|
|
|
|
return tmp
|
|
|
|
|
|
def zksettime(self, t):
|
|
"""Start a connection with the time clock"""
|
|
command = CMD_SET_TIME
|
|
command_string = pack('I',encode_time(t))
|
|
chksum = 0
|
|
session_id = self.session_id
|
|
reply_id = unpack('HHHH', self.data_recv[:8])[3]
|
|
|
|
buf = self.createHeader(command, chksum, session_id,
|
|
reply_id, command_string)
|
|
self.zkclient.sendto(buf, self.address)
|
|
#print buf.encode("hex")
|
|
try:
|
|
self.data_recv, addr = self.zkclient.recvfrom(1024)
|
|
self.session_id = unpack('HHHH', self.data_recv[:8])[2]
|
|
return self.data_recv[8:]
|
|
except:
|
|
return False
|
|
|
|
|
|
def zkgettime(self):
|
|
"""Start a connection with the time clock"""
|
|
command = CMD_GET_TIME
|
|
command_string = ''
|
|
chksum = 0
|
|
session_id = self.session_id
|
|
reply_id = unpack('HHHH', self.data_recv[:8])[3]
|
|
|
|
buf = self.createHeader(command, chksum, session_id,
|
|
reply_id, command_string)
|
|
self.zkclient.sendto(buf, self.address)
|
|
#print buf.encode("hex")
|
|
try:
|
|
self.data_recv, addr = self.zkclient.recvfrom(1024)
|
|
self.session_id = unpack('HHHH', self.data_recv[:8])[2]
|
|
return decode_time( int( reverseHex( self.data_recv[8:].encode("hex") ), 16 ) )
|
|
except:
|
|
return False
|
|
|