def read_loop(self): log.debug("READER: start new reading loop...") if not self._clf: try: self._clf = nfc.ContactlessFrontend(probe=nfc.dev.__all__) log.debug("READER: CLF found: " + str(self._clf)) except LookupError: log.warning("READER: Reader device not found. Exiting") self.Exit() return try: log.debug("READER: Now start reading") while not self._exit_reading: if not self._pause_reading: tag = self._clf.poll(general_bytes=None) else: tag = None if not tag: time.sleep(0.5) continue if isinstance(tag, nfc.Type3Tag): log.debug("READER: New tag found: " + str(tag)) last_tag = {'idm': tag.idm, 'pmm': tag.pmm} if tag.ndef is not None: log.debug("READER: NDEF is present") self._last_idm = tag.idm last_tag['version'] = tag.ndef.version last_tag['writeable'] = tag.ndef.writeable last_tag['capacity'] = tag.ndef.capacity last_tag['size'] = len(tag.ndef.message) self._message = Message(tag.ndef.message) log.debug("READER: NDEF Message detected: ") log.debug("READER: type=%s" % self._message.type) if last_tag['size']: log.debug("READER: size: %d" % last_tag['size']) self.NDEFMessage(tag.ndef.message) # emit self.TagInfo(pickle.dumps(last_tag)) while tag.is_present: time.sleep(1) log.debug("READER: Tag removed") except IOError: log.warning("READER: IO Error occured. restarting...") read_thread = Thread(target=self.read_loop, name="ReadThread") read_thread.start()
def WriteNDEF(self, message_string): log.info("WRITER: Writting...") self._pause_reading = True self._message = Message(str(message_string)) log.info("WRITER: Write message with type " + self._message.type) if not self._clf: try: self._clf = nfc.ContactlessFrontend(probe=nfc.dev.__all__) except LookupError: log.warning("WRITER: Reader/Writer not found. Exiting") self.Exit() tag = None while not tag: tag = self._clf.poll(general_bytes=None) if tag: log.debug("WRITER: found tag with IDm " + tag.idm) tag.ndef.message = self._message.tostring() log.debug("WRITER: Writing successfully finished.") else: log.info("WRITER: No tag found...") self._pause_reading = False return