Esempio n. 1
0
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)
Esempio n. 2
0
 		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