Esempio n. 1
0
class SerialDevice():
    process = None

    def __init__(self, port, prompt):
        self.port = port
        self.prompt = prompt

    def open(self):
        self.process = PopenSpawn(
            f'{sys.executable} -m pexpect_serial_terminal -p {self.port}')
        self.process.logfile_read = open("serial_log.txt", "ab+")
        self.process.sendline('')
        i = self.process.expect([r'.+ login:'******'ubuntu')
            self.process.expect('Password:'******'ubuntu')
            self.process.expect(self.prompt)
        elif i == 2:
            self.close()
            raise ValueError('cannot log in serial device!')

    def close(self):
        self.process.write('\x03')
        self.process.wait()

    def run(self, command, timeout=3):
        self.process.sendline(command)
        self.process.expect(self.prompt, timeout=timeout)
        output = self.process.before.decode('utf-8')
        print('\n<serial output>\ncommand:', output)
        return output
Esempio n. 2
0
    class ProcessIO(IO):
        def __init__(self):
            IO.__init__(self)
            self.proc = None
            self.buffer_size = 1

        def __del__(self):
            if self.proc is not None:
                self.proc.kill(signal.CTRL_BREAK_EVENT)

        def run(self, exe):
            #self.proc = Popen([exe], stdout=PIPE, stdin=PIPE, bufsize=self.buffer_size, shell=True)
            self.proc = PopenSpawn(exe)
            

        def send(self, s):
            #self.proc.stdin.write(s)
            self.proc.write(s)
            
        def recv(self, size):
            #return self.proc.stdout.read(size)
            return self.proc.read(size)

        def recvuntil(self, pred):
            self.proc.expect(pred)
            return self.proc.before