def read(self): #print "Loading anvil region " + self.path chunk_info = [] for i in range(0, 1024): chunk_int = struct.unpack(">I", self.file.read(4))[0] chunk_loc = chunk_int >> 8 chunk_sec = chunk_int & 255 chunk_info.append((chunk_loc, chunk_sec)) for i in range(0, 1024): chunk_time = struct.unpack(">I", self.file.read(4)) chunk_info[i] = (chunk_info[i][0], chunk_info[i][1], chunk_time) for ch in chunk_info: if ch[1] == 0: continue self.file.seek(ch[0] * 4096) raw_chunk_size = struct.unpack(">I", self.file.read(4))[0] raw_chunk_type = struct.unpack("b", self.file.read(1))[0] raw_chunk_data = self.file.read(raw_chunk_size - 1) #print "-- CHUNK -- (type:" + str(raw_chunk_type) + "," + str(ch) + ") --" if raw_chunk_type > 0: chunk_data = zlib.decompress(raw_chunk_data) else: chunk_data = raw_chunk_data data_buffer = cStringIO.StringIO(chunk_data) tagReader = TagReader(data_buffer) root = tagReader.readTag() self.chunks.append((ch, root))
class MCMap: def __init__(self, path, no_read=False): self.path = path if not no_read: self.read() def read(self): self.file = gzip.open(self.path) self.tagReader = TagReader(self.file) self.root = self.tagReader.readTag() self.file.close() if self.root['data']: for tag_id in self.root['data'].value: tag = self.root['data'][tag_id] if tag.name == 'scale': self.scale = tag.value elif tag.name == 'dimension': self.dimension = tag.value elif tag.name == 'height': self.height = tag.value elif tag.name == 'width': self.width = tag.value elif tag.name == 'xCenter': self.xCenter = tag.value elif tag.name == 'zCenter': self.zCenter = tag.value elif tag.name == 'colors': self.colors = tag.value
class DATFile: def __init__(self, path, no_read=False): self.path = path if not no_read: self.read() def read(self): self.file = gzip.open(self.path) self.tagReader = TagReader(self.file) self.root = self.tagReader.readTag() self.file.close()
class UmbrellaStand(object): def __init__(self): self.rooms = [] self.reader = TagReader() def add_room(self, room): self.rooms.append(room) return def remove_room(self, room): self.rooms.remove(room) return def num_rooms(self): return len(self.rooms) def init_GPIO(self): GPIO.setmode(GPIO.BCM) for room in self.rooms: GPIO.setup(room.switch_PIN, GPIO.IN) GPIO.setup(room.locked_PIN, GPIO.OUT) GPIO.setup(room.unlocked_PIN, GPIO.OUT) def is_registered(self, tag_id): for room in self.rooms: if room.tag_id == tag_id: return room else: return None def wait_switch(self,time): for i in range(time): def read_tag(self): tag_id = self.reader.read() room = self.is_registered(tag_id) if room: room.fetch() else: room.fetch()
def read(self): self.file = gzip.open(self.path) self.tagReader = TagReader(self.file) self.root = self.tagReader.readTag() self.file.close()
def __init__(self): self.rooms = [] self.reader = TagReader()
#!/usr/bin/python3 import sys import os import ctypes import time from Constants import * from ErrCodes import * from TagReader import TagReader rfid = TagReader() print("Reader s/n: {}".format(rfid.reader_serial())) print("Reader type: {}".format(rfid.reader_type())) # print("poll_tag(): " + str(rfid.poll_tag())) while (1): print("poll_tag(): {}".format(rfid.poll_tag())) time.sleep(0.25)