Anton Shestakov <engored@ya.ru>, Sun, 13 Oct 2013 13:18:14 +0900
Wiring svg.
chukmote.py
Permissions: -rw-r--r--
self.stdscr = curses.initscr() self.nubwin = self.stdscr.subwin(9, 17, 2, 4) self.inwin = self.stdscr.subwin(10, 20, 2, 23) self.lthwin = self.stdscr.subwin(9, 4, 2, 45) self.rthwin = self.stdscr.subwin(9, 4, 2, 50) self.outwin = self.stdscr.subwin(10, 20, 2, 56) self.inwin.addstr(0, 1, ' Input ') self.inwin.addstr(2, 4, 'Nub X:') self.inwin.addstr(3, 4, 'Nub Y:') self.inwin.addstr(4, 4, 'Pitch:') self.inwin.addstr(5, 4, 'Roll:') self.inwin.addstr(6, 4, 'C:') self.inwin.addstr(7, 4, 'Z:') self.outwin.addstr(0, 1, ' Output ') self.outwin.addstr(2, 4, 'Left:') self.outwin.addstr(3, 4, 'Right:') def update(self, rawinput, lspd, rspd): self.inwin.addstr(2, 10, '{0:5}'.format(rawinput.x)) self.inwin.addstr(3, 10, '{0:5}'.format(rawinput.y)) self.inwin.addstr(4, 10, '{0:5}'.format(rawinput.pitch)) self.inwin.addstr(5, 10, '{0:5}'.format(rawinput.roll)) self.inwin.addstr(6, 8, 'on ' if rawinput.c else 'off') self.inwin.addstr(7, 8, 'on ' if rawinput.z else 'off') self.nubwin.addch(4 - round(rawinput.y / 42), 8 + round(rawinput.x / 21), 'o') llim = 4 - round(lspd / 42) for i in range(min(llim, 4), max(llim, 4) + 1): self.lthwin.addstr(i, 1, ' ', curses.A_REVERSE) rlim = 4 - round(rspd / 42) for i in range(min(rlim, 4), max(rlim, 4) + 1): self.rthwin.addstr(i, 1, ' ', curses.A_REVERSE) self.outwin.addstr(2, 10, '{0:5}'.format(lspd)) self.outwin.addstr(3, 10, '{0:5}'.format(rspd)) self.stdscr.addstr(22, 2, error) def update(self, rawinput): if abs(rawinput.y) > self.deadzone: if abs(rawinput.x) > self.deadzone: if self.lspd < -128: self.lspd = -128 if self.lspd > 127: self.lspd = 127 if self.rspd < -128: self.rspd = -128 if self.rspd > 127: self.rspd = 127 def __init__(self, x=0, y=0, pitch=0, roll=0, c=False, z=False): parts = line.strip().split(',') return RawInput(x, y, pitch, roll, c, z) def encode_output(lspd, rspd): return '{0},{1}\n'.format(lspd, rspd) tty_in = open(sys.argv[1], 'rb', 0) tty_out = open(sys.argv[2], 'wb', 0) atexit.register(ui.finish) line = tty_in.readline().decode() rawinput = decode_input(line) except (IndexError, ValueError): ui.error('bad line "{0}"'.format(line.strip('\n'))) ui.update(rawinput, driver.lspd, driver.rspd) tty_out.write(encode_output(driver.lspd, driver.rspd).encode()) if __name__ == '__main__':