예제 #1
0
파일: RFID.py 프로젝트: Nyinc2830/SBCLogger
def AttachRFID(databasepath, serialNumber):
    def onAttachHandler(event):
        logString = "RFID Attached " + str(event.device.getSerialNum())
        #print(logString)
        DisplayAttachedDeviceInfo(event.device)

    def onDetachHandler(event):
        logString = "RFID Detached " + str(event.device.getSerialNum())
        #print(logString)
        DisplayDetachedDeviceInfo(event.device)

        event.device.closePhidget()

    def onErrorHandler(event):
        logString = "RFID Error " + str(
            event.device.getSerialNum()) + ", Error: " + event.description
        #print(logString)
        DisplayErrorDeviceInfo(event)

    def onServerConnectHandler(event):
        logString = "RFID Server Connect " + str(event.device.getSerialNum())
        #print(logString)

    def onServerDisconnectHandler(event):
        logString = "RFID Server Disconnect " + str(
            event.device.getSerialNum())
        #print(logString)

    def outputChangeHandler(event):
        logString = "RFID Changed " + str(event.device.getSerialNum())
        #print(logString)

        try:
            conn = sqlite3.connect(databasepath)
            conn.execute(
                "INSERT INTO RFID_OUTPUTCHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)",
                (event.device.getSerialNum(), event.index, event.value))
            conn.commit()
            conn.close()
        except sqlite3.Error as e:
            print "An error occurred:", e.args[0]

    def tagHandler(event):
        logString = "RFID Changed " + str(event.device.getSerialNum())
        #print(logString)

        try:
            conn = sqlite3.connect(databasepath)

            conn.execute(
                "INSERT INTO RFID_TAG VALUES(NULL, DateTime('now'), ?, ?)",
                (event.device.getSerialNum(), event.tag))

            conn.commit()
            conn.close()
        except sqlite3.Error as e:
            print "An error occurred:", e.args[0]

    def tagLostHandler(event):
        logString = "RFID Changed " + str(event.device.getSerialNum())
        #print(logString)

        try:
            conn = sqlite3.connect(databasepath)

            conn.execute(
                "INSERT INTO RFID_TAGLOST VALUES(NULL, DateTime('now'), ?, ?)",
                (event.device.getSerialNum(), event.tag))

            conn.commit()
            conn.close()
        except sqlite3.Error as e:
            print "An error occurred:", e.args[0]

    def accelerationChangeHandler(event):
        logString = "RFID Changed " + str(event.device.getSerialNum())
        #print(logString)

        try:
            conn = sqlite3.connect(databasepath)
            conn.execute(
                "INSERT INTO ACCELEROMETER_CHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)",
                (event.device.getSerialNum(), event.index, event.acceleration))
            conn.commit()
            conn.close()
        except sqlite3.Error as e:
            print "An error occurred:", e.args[0]

    try:
        p = RFID()

        p.setOnAttachHandler(onAttachHandler)
        p.setOnDetachHandler(onDetachHandler)
        p.setOnErrorhandler(onErrorHandler)
        p.setOnServerConnectHandler(onServerConnectHandler)
        p.setOnServerDisconnectHandler(onServerDisconnectHandler)

        p.setOnOutputChangeHandler(outputChangeHandler)
        p.setOnTagHandler(tagHandler)
        p.setOnTagLostHandler(tagLostHandler)

        p.openPhidget(serialNumber)

    except PhidgetException as e:
        print("Phidget Exception %i: %s" % (e.code, e.details))
        print("Exiting...")
        exit(1)
예제 #2
0
파일: RFID.py 프로젝트: njligames/SBCLogger
def AttachRFID(databasepath, serialNumber):
	def onAttachHandler(event):
		logString = "RFID Attached " + str(event.device.getSerialNum())
		#print(logString)
		DisplayAttachedDeviceInfo(event.device)

	def onDetachHandler(event):
		logString = "RFID Detached " + str(event.device.getSerialNum())
		#print(logString)
		DisplayDetachedDeviceInfo(event.device)

		event.device.closePhidget()

	def onErrorHandler(event):
		logString = "RFID Error " + str(event.device.getSerialNum()) + ", Error: " + event.description
		#print(logString)
		DisplayErrorDeviceInfo(event)
		
	def onServerConnectHandler(event):
		logString = "RFID Server Connect " + str(event.device.getSerialNum())
		#print(logString)

	def onServerDisconnectHandler(event):
		logString = "RFID Server Disconnect " + str(event.device.getSerialNum())
		#print(logString)


	def outputChangeHandler(event):
		logString = "RFID Changed " + str(event.device.getSerialNum())
		#print(logString)

		try:
			conn = sqlite3.connect(databasepath)
			conn.execute("INSERT INTO RFID_OUTPUTCHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)", 
					(event.device.getSerialNum(), event.index, event.value))
			conn.commit()
			conn.close()
		except sqlite3.Error as e:
			print "An error occurred:", e.args[0]

	def tagHandler(event):
		logString = "RFID Changed " + str(event.device.getSerialNum())
		#print(logString)

		try:
			conn = sqlite3.connect(databasepath)

			conn.execute("INSERT INTO RFID_TAG VALUES(NULL, DateTime('now'), ?, ?)", 
					(event.device.getSerialNum(), event.tag))

			conn.commit()
			conn.close()
		except sqlite3.Error as e:
			print "An error occurred:", e.args[0]

	def tagLostHandler(event):
		logString = "RFID Changed " + str(event.device.getSerialNum())
		#print(logString)

		try:
			conn = sqlite3.connect(databasepath)

			conn.execute("INSERT INTO RFID_TAGLOST VALUES(NULL, DateTime('now'), ?, ?)", 
					(event.device.getSerialNum(), event.tag))

			conn.commit()
			conn.close()
		except sqlite3.Error as e:
			print "An error occurred:", e.args[0]

	def accelerationChangeHandler(event):
		logString = "RFID Changed " + str(event.device.getSerialNum())
		#print(logString)

		try:
			conn = sqlite3.connect(databasepath)
			conn.execute("INSERT INTO ACCELEROMETER_CHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)", 
					(event.device.getSerialNum(), event.index, event.acceleration))
			conn.commit()
			conn.close()
		except sqlite3.Error as e:
			print "An error occurred:", e.args[0]
	try:
		p = RFID()

		p.setOnAttachHandler(onAttachHandler)
		p.setOnDetachHandler(onDetachHandler)
		p.setOnErrorhandler(onErrorHandler)
		p.setOnServerConnectHandler(onServerConnectHandler)
		p.setOnServerDisconnectHandler(onServerDisconnectHandler)

		p.setOnOutputChangeHandler(outputChangeHandler)
		p.setOnTagHandler         (tagHandler)
		p.setOnTagLostHandler     (tagLostHandler)

		p.openPhidget(serialNumber)

	except PhidgetException as e:
		print("Phidget Exception %i: %s" % (e.code, e.details))
		print("Exiting...")
		exit(1)
예제 #3
0
def rfidTagLost(e):
    source = e.device
    rfid.setLEDOn(0)
    print("RFID %i: Tag Lost: %s" % (source.getSerialNum(), e.tag))


#Main Program Code
try:
    #logging example, uncomment to generate a log file
    #rfid.enableLogging(PhidgetLogLevel.PHIDGET_LOG_VERBOSE, "phidgetlog.log")

    rfid.setOnAttachHandler(rfidAttached)
    rfid.setOnDetachHandler(rfidDetached)
    rfid.setOnErrorhandler(rfidError)
    rfid.setOnOutputChangeHandler(rfidOutputChanged)
    rfid.setOnTagHandler(rfidTagGained)
    rfid.setOnTagLostHandler(rfidTagLost)
except PhidgetException as e:
    print("Phidget Exception %i: %s" % (e.code, e.details))
    print("Exiting....")
    exit(1)

print("Opening phidget object....")

try:
    rfid.openPhidget()
except PhidgetException as e:
    print("Phidget Exception %i: %s" % (e.code, e.details))
    print("Exiting....")
    exit(1)
예제 #4
0
    # ser.write('5')
    # My Stuff End
    print("RFID %i: Tag Read: %s" % (source.getSerialNum(), e.tag))

def rfidTagLost(e):
    source = e.device
    rfid.setLEDOn(0)
    print("RFID %i: Tag Lost: %s" % (source.getSerialNum(), e.tag))

#Main Program Code
try:
    rfid.setOnAttachHandler(rfidAttached)
    rfid.setOnDetachHandler(rfidDetached)
    rfid.setOnErrorhandler(rfidError)
    rfid.setOnOutputChangeHandler(rfidOutputChanged)
    rfid.setOnTagHandler(rfidTagGained)
    rfid.setOnTagLostHandler(rfidTagLost)
except PhidgetException as e:
    print("Phidget Exception %i: %s" % (e.code, e.details))
    print("Exiting....")
    exit(1)

print("Opening phidget object....")

try:
    rfid.openPhidget()
except PhidgetException as e:
    print("Phidget Exception %i: %s" % (e.code, e.details))
    print("Exiting....")
    exit(1)
예제 #5
0
class Reader:
    ''' Phidgets 125khz RFID Reader/Writer '''

    def __init__(self):
        # Create an RFID object
        try:
            self.rfid = RFID()
            self.user_manager = UserManager()
        except RuntimeError as e:
            Logger.info("RFID: Phidget Runtime Exception: %s" % e.details)
            Logger.info("RFID: Phidget Exiting....")
            exit(1)

        #Main Phiget Program Code
        try:
                #logging example, uncomment to generate a log file
            #rfid.enableLogging(PhidgetLogLevel.PHIDGET_LOG_VERBOSE, "phidgetlog.log")

            self.rfid.setOnAttachHandler(self.rfidAttached)
            self.rfid.setOnDetachHandler(self.rfidDetached)
            self.rfid.setOnErrorhandler(self.rfidError)
            self.rfid.setOnOutputChangeHandler(self.rfidOutputChanged)
            self.rfid.setOnTagHandler(self.rfidTagGained)
            self.rfid.setOnTagLostHandler(self.rfidTagLost)
        except PhidgetException as e:
            Logger.exception("RFID: Phidget Exception %i: %s" % (e.code, e.details))
            Logger.exception("RFID: Exiting....")
            exit(1)

        Logger.info("RFID: Opening phidget object....")

        try:
            self.rfid.openPhidget()
        except PhidgetException as e:
            Logger.info("RFID: Phidget Exception %i: %s" % (e.code, e.details))
            Logger.info("RFID: Exiting....")
            exit(1)

        Logger.info("RFID: Waiting for attach....")

        try:
            self.rfid.waitForAttach(10000)
        except PhidgetException as e:
            Logger.exception("RFID: Phidget Exception %i: %s" % (e.code, e.details))
            try:
                self.rfid.closePhidget()
            except PhidgetException as e:
                Logger.exception("RFID: Phidget Exception %i: %s" % (e.code, e.details))
                Logger.exception("RFID: Exiting....")
                exit(1)
            Logger.exception("RFID: Exiting....")
            exit(1)
        else:
            self.displayDeviceInfo()

        Logger.info("RFID: Turning on the RFID antenna....")
        self.rfid.setAntennaOn(True)

    # Information Display Function
    def displayDeviceInfo(self):
        Logger.info("RFID: |------------|----------------------------------|--------------|------------|")
        Logger.info("RFID: |- Attached -|-              Type              -|- Serial No. -|-  Version -|")
        Logger.info("RFID: |------------|----------------------------------|--------------|------------|")
        Logger.info("RFID: |- %8s -|- %30s -|- %10d -|- %8d -|" % (self.rfid.isAttached(), self.rfid.getDeviceName(),
                                                                   self.rfid.getSerialNum(), self.rfid.getDeviceVersion()))
        Logger.info("RFID: |------------|----------------------------------|--------------|------------|")
        Logger.info("RFID: Number of outputs: %i -- Antenna Status: %s -- Onboard LED Status: %s" %
                    (self.rfid.getOutputCount(), self.rfid.getAntennaOn(), self.rfid.getLEDOn()))

    #Event Handler Callback Functions
    def rfidAttached(self, e):
        self.attached = e.device
        Logger.info("RFID: %i Attached!" % (self.attached.getSerialNum()))

    def rfidDetached(self, e):
        self.detached = e.device
        Logger.info("RFID: %i Detached!" % (self.detached.getSerialNum()))

    def rfidError(self, e):
        try:
            source = e.device
            Logger.exception("RFID: %i Phidget Error %i: %s" % (self.source.getSerialNum(), e.eCode, e.description))
        except PhidgetException as e:
            Logger.exception(("RFID: Phidget Exception %i: %s" % (e.code, e.details)))

    def rfidOutputChanged(self, e):
        self.source = e.device
        Logger.info("RFID: %i Output %i State: %s" % (self.source.getSerialNum(), e.index, e.state))

    def rfidTagGained(self, e):
        self.rfid.setLEDOn(1)
        Logger.info("RFID: Tag gained: {}".format(e.tag))
        self.user_manager.tag_gained = e.tag   # this sets up the UserManager.on_tag_gained() to be called

    def rfidTagLost(self, e):
        self.rfid.setLEDOn(0)
        Logger.info("RFID: Tag lost: {}".format(e.tag))
예제 #6
0
class RFID_Controller:

	def __init__(self):
		self.last_tag=0
		try:
			self.rfid = RFID()
			self.rfid.setOnAttachHandler(self.rfidAttached)
			self.rfid.setOnDetachHandler(self.rfidDetached)
			self.rfid.setOnErrorhandler(self.rfidError)
			self.rfid.setOnOutputChangeHandler(self.rfidOutputChanged)
			self.rfid.setOnTagHandler(self.rfidTagGained)
			self.rfid.setOnTagLostHandler(self.rfidTagLost)
			self.rfid.openPhidget()
			self.rfid.waitForAttach(10000)
		except RuntimeError as e:
			print("Runtime Exception: %s" % e.details)
			print("Exiting....")
			exit(1)
		except PhidgetException as e:
			print("Phidget Exception %i: %s" % (e.code, e.details))
			exit(1)

	def rfidAttached(self,e):
		attached = e.device
		print("RFID %i Attached!" % (attached.getSerialNum()))

	def rfidDetached(self,e):
		detached = e.device
		print("RFID %i Detached!" % (detached.getSerialNum()))

	def rfidError(self,e):
		try:
			source = e.device
			print("RFID %i: Phidget Error %i: %s" % (source.getSerialNum(), e.eCode, e.description))
		except PhidgetException as e:
			print("Phidget Exception %i: %s" % (e.code, e.details))

	def rfidOutputChanged(self,e):
		source = e.device
		print("RFID %i: Output %i State: %s" % (source.getSerialNum(), e.index, e.state))

	def rfidTagGained(self,e):
		source = e.device
		self.last_tag=e.tag
		self.rfid.setLEDOn(1)

	def rfidTagLost(self,e):
		source = e.device
		self.rfid.setLEDOn(0)

	def displayDeviceInfo(self):
	    print("|------------|----------------------------------|--------------|------------|")
	    print("|- Attached -|-              Type              -|- Serial No. -|-  Version -|")
	    print("|------------|----------------------------------|--------------|------------|")
	    print("|- %8s -|- %30s -|- %10d -|- %8d -|" % (self.rfid.isAttached(), self.rfid.getDeviceName(), self.rfid.getSerialNum(), self.rfid.getDeviceVersion()))
	    print("|------------|----------------------------------|--------------|------------|")
	    print("Number of outputs: %i -- Antenna Status: %s -- Onboard LED Status: %s" % (self.rfid.getOutputCount(), self.rfid.getAntennaOn(), self.rfid.getLEDOn()))
		
	def end_program(self):
		try:
			self.rfid.closePhidget()
		except PhidgetException as e:
			print("Phidget Exception %i: %s" % (e.code, e.details))
			print("Exiting....")
			exit(1)
		print("Done.")
		exit(0)
예제 #7
0
class csss_rfid:
	onTagCallback = None
	rfid = None
	rfid_tags = {
    	'01022EA8F2':'execA',
    	'1000033B7F':'execB',
    	'01022FA703':'member'
	}	
	def __init__(self):
		print("INIT: RFID")
		try:
		    self.rfid = RFID()
		except RuntimeError as e:
		    print("Runtime Exception: %s" % e.details)
		    print("Exiting....")
		    exit(1)

		try:
		    self.rfid.setOnAttachHandler(self.rfidAttached)
		    self.rfid.setOnDetachHandler(self.rfidDetached)
		    self.rfid.setOnErrorhandler(self.rfidError)
		    self.rfid.setOnOutputChangeHandler(self.rfidOutputChanged)
		    self.rfid.setOnTagHandler(self.rfidTagGained)
		    self.rfid.setOnTagLostHandler(self.rfidTagLost)
		except PhidgetException as e:
		    print("Phidget Exception %i: %s" % (e.code, e.details))
		    print("Exiting....")
		    exit(1)

		#print("Opening phidget object....")
		try:
		    self.rfid.openPhidget()
		except PhidgetException as e:
		    print("Phidget Exception %i: %s" % (e.code, e.details))
		    print("Exiting....")
		    exit(1)

		#print("Waiting for attach....")

		try:
		    self.rfid.waitForAttach(100000)
		except PhidgetException as e:
		    print("Phidget Exception %i: %s" % (e.code, e.details))
		    try:
		        self.rfid.closePhidget()
		    except PhidgetException as e:
		        print("Phidget Exception %i: %s" % (e.code, e.details))
		        print("Exiting....")
		        exit(1)
		    print("Exiting....")
		    exit(1)
	def setOnTagCallback(self, func):
		self.onTagCallback = func
	def displayDeviceInfo():
	    print("|------------|----------------------------------|--------------|------------|")
	    print("|- Attached -|-              Type              -|- Serial No. -|-  Version -|")
	    print("|------------|----------------------------------|--------------|------------|")
	    print("|- %8s -|- %30s -|- %10d -|- %8d -|" % (rfid.isAttached(), rfid.getDeviceName(), rfid.getSerialNum(), rfid.getDeviceVersion()))
	    print("|------------|----------------------------------|--------------|------------|")
	    print("Antenna Status: %s " % (rfid.getAntennaOn()))

	#Event Handler Callback Functions
	def rfidAttached(self, e):
	    attached = e.device
	    print("RFID %i Attached!" % (attached.getSerialNum()))

	def rfidDetached(self, e):
	    detached = e.device
	    print("RFID %i Detached!" % (detached.getSerialNum()))

	def rfidError(self, e):
	    try:
	        source = e.device
	        print("RFID %i: Phidget Error %i: %s" % (source.getSerialNum(), e.eCode, e.description))
	    except PhidgetException as e:
	        print("Phidget Exception %i: %s" % (e.code, e.details))

	def rfidOutputChanged(self, e):
	    source = e.device
	    print("RFID %i: Output %i State: %s" % (source.getSerialNum(), e.index, e.state))

	def rfidTagGained(self, e):
	    source = e.device
	    id = e.tag
	    if id in self.rfid_tags:
	        id = self.rfid_tags[id]
	    self.onTagCallback(id)

	def rfidTagLost(self, e):
	    source = e.device

	def close(self):
		try:
			self.rfid.closePhidget()
		except PhidgetException as e:
			print("Phidget Exception %i: %s" % (e.code, e.details))
			print("Exiting....")
			exit(1)