Lines Matching refs:self
33 def __init__(self, dev, filename, prefix, timeout = None):
34 self.filename = filename
35 self.dev = dev
38 self.f = open(filename, "wb+")
39 self.serial = serial.Serial(dev, 115200, timeout=timeout if timeout else 10)
41 self.f = open(filename, "rb")
43 self.byte_queue = queue.Queue()
44 self.line_queue = queue.Queue()
45 self.prefix = prefix
46 self.timeout = timeout
47 self.sentinel = object()
49 if self.dev:
50 self.read_thread = threading.Thread(
51 target=self.serial_read_thread_loop, daemon=True)
53 self.read_thread = threading.Thread(
54 target=self.serial_file_read_thread_loop, daemon=True)
55 self.read_thread.start()
57 self.lines_thread = threading.Thread(
58 target=self.serial_lines_thread_loop, daemon=True)
59 self.lines_thread.start()
63 def serial_read_thread_loop(self):
64 greet = "Serial thread reading from %s\n" % self.dev
65 self.byte_queue.put(greet.encode())
69 b = self.serial.read()
71 self.byte_queue.put(b)
72 elif self.timeout:
73 self.byte_queue.put(self.sentinel)
76 print(self.prefix + str(err))
77 self.byte_queue.put(self.sentinel)
82 def serial_file_read_thread_loop(self):
83 greet = "Serial thread reading from %s\n" % self.filename
84 self.byte_queue.put(greet.encode())
87 line = self.f.readline()
89 self.byte_queue.put(line)
96 def serial_lines_thread_loop(self):
99 bytes = self.byte_queue.get(block=True)
101 if bytes == self.sentinel:
102 self.read_thread.join()
103 self.line_queue.put(self.sentinel)
108 if self.dev:
109 self.f.write(bytes)
110 self.f.flush()
119 time=time, prefix=self.prefix, line=line, endc='\033[0m'), flush=True, end='')
121 self.line_queue.put(line)
124 def get_line(self):
125 line = self.line_queue.get()
126 if line == self.sentinel:
127 self.lines_thread.join()
130 def lines(self):
131 return iter(self.get_line, self.sentinel)