Exemple #1
0
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()
Exemple #2
0
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)
Exemple #3
0
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 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()
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()