class EnviarPacote(): def __init__(self, dispositivo): self.__controller = Controller() self.__dispositivo = dispositivo def enviar(self, pacote): try: self.__dispositivo.escreverPorta(pacote) self.__controller.visualizar().enviado() except Exception: self.__controller.visualizar().erro()
class Dispositivo(): def __init__(self): self.controller = Controller() self.porta = self.escolhaPorta() def escolhaPorta(self): MAX_PORTAS = 10 # numero maximo de portas k = 1 #configuracao da porta baudrate = 9600 bytesize = 8 parity = 'N' stopbits = 1 timeout = 0 #controle de fluxo xonxoff = False rtscts = False dict = {} for p in ['COM%s' % (i + 1) for i in range(MAX_PORTAS)]: try: s = Serial(p) dict[k] = s.portstr k += 1 s.close() except (OSError, SerialException): pass for i in dict: print i, " - ", dict[i] p = 15 if len(dict) == 0: self.controller.visualizar().semPorta() sys.exit(0) else: while (p not in dict): p = int(input("\nEscolha a porta serial: ")) if p <= len(dict) and p != 0: try: self.porta = Serial(dict[p], baudrate, bytesize, parity, stopbits, timeout, xonxoff, rtscts) self.controller.visualizar().portaEscolhida( self.porta.portstr) return self.porta except SerialException: self.controller.visualizar().erro() sys.exit(0) else: self.controller.visualizar().portaSemExistencia() def ouvirPorta(self): return self.porta.read(256) def escreverPorta(self, pacote): return self.porta.write(pacote)
class Dispositivo(): def __init__(self): self.controller = Controller() self.porta = self.escolhaPorta() def escolhaPorta(self): MAX_PORTAS = 10 # numero maximo de portas k = 1 #configuracao da porta baudrate = 9600 bytesize = 8 parity = 'N' stopbits = 1 timeout = 0 #controle de fluxo xonxoff = False rtscts = False dict = {} for p in ['COM%s' % (i + 1) for i in range(MAX_PORTAS)]: try: s = Serial(p) dict[k] = s.portstr k+=1 s.close() except (OSError, SerialException): pass for i in dict: print i, " - ", dict[i] p = 15 if len(dict) == 0: self.controller.visualizar().semPorta() sys.exit(0) else: while(p not in dict): p = int(input("\nEscolha a porta serial: ")) if p <= len(dict) and p!=0: try: self.porta = Serial(dict[p], baudrate, bytesize, parity, stopbits, timeout, xonxoff, rtscts) self.controller.visualizar().portaEscolhida(self.porta.portstr) return self.porta except SerialException: self.controller.visualizar().erro() sys.exit(0) else: self.controller.visualizar().portaSemExistencia() def ouvirPorta(self): return self.porta.read(256) def escreverPorta(self, pacote): return self.porta.write(pacote)
class RecebedorPacote(): def __init__(self, dispositivo): self.__dispositivo = dispositivo self.__controller = Controller() self.__lista = [] self.__ok = True def iniciarThread(self): self.__controller.visualizar().aguardandoPacote() try: t1 = Thread(target=self.receberPacote) t1.start() except Exception as e: print e def terminarThread(self): self.__controller.visualizar().pararGerador() self.__ok = False def getLista(self): temp = self.__lista self.__lista = [] return temp def receberPacote(self): while self.__ok: try: data = self.__dispositivo.ouvirPorta() if len(data) > 0: self.__lista.append(data) except Exception: self.__controller.visualizar().erro()
class ExperimentoElisa(object): def __init__(self, dispositivo): self.__dispositivo = dispositivo self.__enviarPacote = EnviarPacote(self.__dispositivo) self.__pacotesGerados = PacotesGerados() self.__geradorPacote = GeradorPacote(self.__pacotesGerados) self.__controller = Controller() def transformador(self, pacote): f = '' for i in pacote: f += i respostaOBC = [ord(b) for b in f] if len(respostaOBC) > 1: print respostaOBC self.pacotesRecebidos(respostaOBC) def pacotesRecebidos(self, respostaOBC): if respostaOBC[2] == 11: self.__controller.visualizar().turnOn() self.__enviarPacote.enviar(self.__geradorPacote.acknowledge()) self.__geradorPacote.iniciarThread() self.__controller.visualizar().geradorIniciando() elif respostaOBC[2] == 1: self.__controller.visualizar().dataRequest() a = self.__pacotesGerados.getListaPacotes() self.__enviarPacote.enviar(a) print a elif respostaOBC[2] == 2: self.__controller.visualizar().dataSend() self.__enviarPacote.enviar(self.__geradorPacote.acknowledge()) if respostaOBC[4] == 0: self.__controller.visualizar().tempoZero() self.__geradorPacote.mudarTempo(0x0) else: self.__controller.visualizar().tempoUm() self.__geradorPacote.mudarTempo(0x1) elif respostaOBC[2] == 7: self.__controller.visualizar().reset() self.__enviarPacote.enviar(self.__geradorPacote.acknowledge()) self.__geradorPacote.varredura = 0x0 self.__geradorPacote.mudarTempo(0x0) self.__pacotesGerados.listaPacotes = [] elif respostaOBC[2] == 9: self.__controller.visualizar().turnOff() self.__enviarPacote.enviar(self.__geradorPacote.acknowledge()) self.__geradorPacote.terminarThread() RecebedorPacote(self.__dispositivo).terminarThread() else: self.__controller.visualizar().erro()