def __init__(self, ca, watcher):
     Thread.__init__(self)
     self.name = 'SerialCom'
     self.loop = Event()
     self.ca = ca
     self.watcher = watcher
     #self.serial = Serial_io('/dev/ttyACM') #inicializa por defecto 'dev/ttyUSB'
     self.serial = Serial_io('/dev/ttyACM')
     self.isPrinting = False
     self.status = None
class SerialCom(Thread):
    def __init__(self, ca, watcher):
        Thread.__init__(self)
        self.name = 'SerialCom'
        self.loop = Event()
        self.ca = ca
        self.watcher = watcher
        #self.serial = Serial_io('/dev/ttyACM') #inicializa por defecto 'dev/ttyUSB'
        self.serial = Serial_io('/dev/ttyACM')
        self.isPrinting = False
        self.status = None

    def run(self):
        '''
        espera que orderCertificate sea True para crear el cert y enviarlo
        '''
        while not self.loop.is_set():
            #revisa constantemente el puerto serial
            self.serial.receive_data()

            #recibe la orden de crear el certificado
            if self.serial.orderCertificate == True:
                #crea el certificado
                cert = self.ca.create()
                logging.debug('certificate: %s', cert)
                #lo envia a serial_id
                self.serial.open_certificate(cert)
                #cambia el flag
                self.serial.orderCertificate = False
                self.serial.send_data(20)
                self.isPrinting = True

            if self.isPrinting == True and self.serial.isPrinting == False:
                self.status = self.serial.report
                logging.debug('termino de imprimir: %s', self.status)
                #actualiza el tiempo en el sistema
                self.watcher.setTiempoActividad(self.status['print_duration'])
                self.isPrinting = False

            self.loop.wait(0.01)

    def quit(self):
        self.serial.close_com()
        self.loop.set()