def dar_masa_via_dbus(): from msa.core.ipc.client.rfid_controller import DbusLectorController controller = DbusLectorController() while True: tag = get_tag() controller.guardar_tag("TAG_RECUENTO", b64encode(tag), False) sleep(0.3)
class Sesion(object): """Informacion de sesion de voto.""" def __init__(self, iniciar_hw=True): self._mesa = None self.apertura = None self._tmp_apertura = None self.recuento = None self.interna = None self.impresora = None self.lector = None # para poder iluminar de rojo en el recuento self.logger = get_logger(MODULO_SUFRAGIO) self.salt = "" if iniciar_hw: from dbus.exceptions import DBusException from dbus.mainloop.glib import DBusGMainLoop DBusGMainLoop(set_as_default=True) retries = 3 while retries: try: self.impresora = DbusPrintController() retries = 0 except DBusException as error: msg = "Hubo un problema para inicializar la impresora" self.logger.error(msg) self.logger.error(error) retries -= 1 sleep(5) self.lector = DbusLectorController() self.powermanager = DbusPowerManagerController() self.backlight = DbusBacklightController() self.agent = DbusAgentController() self.fancoolers = DbusFanCoolersController() self.pir = DbusPIRController() self.locutor = None def getmesa(self): return self._mesa def setmesa(self, value): self._mesa = value if self._mesa: self._mesa.usar_cod_datos() else: current_data_code(None) mesa = property(getmesa, setmesa) def restart(self): """ Reinicia los Servicios de DBus y resetea el ARM si existe """ self.lector.quit() def inicializar_locutor(self): self.locutor = Locutor()
def __init__(self, callback, comprobar_tag=True): """Constructor""" self.callback = callback self.loop_lector = True DBusGMainLoop(set_as_default=True) self.lector = DbusLectorController() self.ultimo_tag = None # Inicializo y limpio los callbacks adicionales self.clear_callbacks() #settings.COMPROBAR_TAG = check_tag self.signal = None
def __init__(self, iniciar_hw=True): self._mesa = None self.apertura = None self._tmp_apertura = None self.recuento = None self.interna = None self.impresora = None self.lector = None # para poder iluminar de rojo en el recuento self.logger = get_logger(MODULO_SUFRAGIO) self.salt = "" if iniciar_hw: from dbus.exceptions import DBusException from dbus.mainloop.glib import DBusGMainLoop DBusGMainLoop(set_as_default=True) retries = 3 while retries: try: self.impresora = DbusPrintController() retries = 0 except DBusException as error: msg = "Hubo un problema para inicializar la impresora" self.logger.error(msg) self.logger.error(error) retries -= 1 sleep(5) self.lector = DbusLectorController() self.powermanager = DbusPowerManagerController() self.backlight = DbusBacklightController() self.agent = DbusAgentController() self.fancoolers = DbusFanCoolersController() self.pir = DbusPIRController() self.locutor = None
class ModuloLector(object): """ Modulo con soporte para lector RFID. Lo único que pide su constructor es una función a ser llamada cuando se hace el polling (función callback). Para iniciar la consulta al lector, utilizar el método run(), para cerrarla, close(). """ def __init__(self, callback, comprobar_tag=True): """Constructor""" self.callback = callback self.loop_lector = True DBusGMainLoop(set_as_default=True) self.lector = DbusLectorController() self.ultimo_tag = None # Inicializo y limpio los callbacks adicionales self.clear_callbacks() #settings.COMPROBAR_TAG = check_tag self.signal = None def add_to_loop(self, funcion): self._callbacks.append(funcion) def clear_callbacks(self): self._callbacks = [] def conectar_lector(self): def _callback_wrapper(mensaje, tag=None): if hasattr(self, 'callback') and tag is not None: tag = loads(tag) if tag is not None: tag['datos'] = b64decode(tag['datos']) self.callback(mensaje, tag) else: self.callback(mensaje, {}) if self.lector is not None: self.signal = self.lector.consultar_lector(_callback_wrapper) def desconectar_lector(self): self.loop_lector = False if self.signal is not None: self.signal.remove()