class VehicleServer(UdpServer): vehicle = None def __init__(self, bindTo = "", port = SERVER_PORT): UdpServer.__init__(self, bindTo, port) io = DigitalIO() mch1 = MCtlChannel(io.getOutput(7), io.getOutput(8)) mch2 = MCtlChannel(io.getOutput(9), io.getOutput(10)) mctl = DualChannelMCtl(mch1, mch2) self.vehicle = Vehicle(mctl) def dispatch(self, seq, data, clientIp, clientPort): print "[%s %s]: %i %s" % (clientIp,clientPort, seq, data) try: c = data["msgId"] res = { "msgId" : "ok" } if c == "fw": print " -> set vehicle to: FORWARD" self.vehicle.fw() elif c == "bw": print " -> set vehicle to: BACKWARD" self.vehicle.bw() elif c == "le": print " -> set vehicle to: LEFT" self.vehicle.le() elif c == "ri": print " -> set vehicle to: RIGHT" self.vehicle.ri() elif c == "br": print " -> set vehicle to BREAK" self.vehicle.br() else: res = { "msgId" : "err", "msg" : "Unknown command" } self.respond(clientIp,clientPort, seq, res) except Exception as e: print e res = { "msgId" : "err", "msg" : "Data format mismatch" } self.respond(clientIp,clientPort, seq, res)
max_y, max_x = cs.getScreen().getmaxyx() if cur_y >= max_y: cs.getScreen().clear() cs.getScreen().addstr("** screenwrap **\n", RED) cur_y = 2 c = cs.getScreen().getch() cs.getScreen().addstr("-> ", BLUE) if c == curses.KEY_UP: cs.getScreen().addstr("FORWARD\n", GREEN) cur_y = cur_y + 1 veh.fw() elif c == curses.KEY_DOWN: cs.getScreen().addstr("BACKWARD\n", GREEN) cur_y = cur_y + 1 veh.bw() elif c == curses.KEY_LEFT: cs.getScreen().addstr("LEFT\n", GREEN) cur_y = cur_y + 1 veh.le() elif c == curses.KEY_RIGHT: cs.getScreen().addstr("RIGHT\n", GREEN) cur_y = cur_y + 1 veh.ri() elif c == ord(' '): cs.getScreen().addstr("BREAK\n", GREEN) cur_y = cur_y + 1