def handleMessages(self): if self.conn.poll(): received = comm.recv_msg(self.conn) received_split = received.split(" ") if received_split[0] == "controller": controller_values = received_split[1].split("-") print(received_split) print(controller_values) # Grab positions self.left_joy_xpos = int(controller_values[0].split(":")[1]) self.right_joy_xpos = int(controller_values[1].split(":")[1]) comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Received") if received == "Stop": self.is_stopped = True comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Stopped") elif received == "Unload": self.unload() comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Unloaded") sys.exit() while self.is_stopped: received = comm.recv_msg(self.conn) if received == "Start": self.is_stopped = False comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Started") elif received == "Unload": self.unload() comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Unloaded") sys.exit()
def start(self): if self.assignment is None: comm.send_msg(self.interface_conn, comm.MsgTypes.REPLY, "Please load an assignment first.") elif self.started: comm.send_msg(self.interface_conn, comm.MsgTypes.REPLY, "The assignment has already started.") return elif self.assignment_conn is not None: comm.send_msg(self.assignment_conn, comm.MsgTypes.COMMAND, "Start") while comm.recv_msg(self.assignment_conn, comm.MsgTypes.REPLY) != "Started": continue self.started = True comm.send_msg(self.interface_conn, comm.MsgTypes.REPLY, self.assignment.name() + " started.") else: parent_conn, child_conn = Pipe() self.assignment_conn = parent_conn self.assignment_proc = Process(target=self.assignment.start, args=(child_conn, )) self.assignment_proc.start() while comm.recv_msg(self.assignment_conn, comm.MsgTypes.REPLY) != "Started": continue self.started = True comm.send_msg(self.interface_conn, comm.MsgTypes.REPLY, self.assignment.name() + " started.")
def run(self): while True: if self.interface_conn.poll(): received = comm.recv_msg(self.interface_conn).split(" ") if received[0] == "exit": self.exit() if received[0] == "load": self.load(received[1]) elif received[0] == "unload": self.unload(True) elif received[0] == "start": self.start() elif received[0] == "stop": self.stop() elif received[0] == "send": self.send(" ".join(received[1:])) elif received[0] == "monitoring": self.monitoring(received[1]) if self.started and self.assignment_conn.poll(): received = comm.recv_msg(self.assignment_conn) comm.send_msg(self.interface_conn, comm.MsgTypes.STATUS, received) if self.monitoring_started and self.monitoring_conn.poll(): received = comm.recv_msg(self.monitoring_conn) comm.send_msg(self.interface_conn, comm.MsgTypes.STATUS, received)
def handleMessages(self): if self.conn.poll(): received = comm.recv_msg(self.conn) received_split = received.split(" ") if received_split[0] == "controller": controller_values = ",".join(received_split[1:]) + ";" print(received_split) self.serial.write(bytes(controller_values, "utf-8")) comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Received") if received == "Stop": self.is_stopped = True comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Stopped") elif received == "Unload": self.unload() comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Unloaded") sys.exit() elif received == "turn": comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Received") self.moving = True while self.is_stopped: received = comm.recv_msg(self.conn) if received == "Start": self.is_stopped = False comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Started") elif received == "Unload": self.unload() comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Unloaded") sys.exit()
def handleMessages(self): if self.conn.poll(): received = comm.recv_msg(self.conn) received_split = received.split(" ") if received_split[0] == "controller": controller_values = received_split[1].split("-") print(received_split) print(controller_values) # Grab positions self.right_joy_ypos = int( controller_values[0].split(":")[1].split(",")[0]) self.left_joy_ypos = int( controller_values[1].split(":")[1].split(",")[0]) self.right_joy_xpos = int( controller_values[0].split(":")[1].split(",")[1]) self.left_joy_xpos = int( controller_values[1].split(":")[1].split(",")[1]) # Update motor left_speed, left_polarity, right_speed, right_polarity = self.motor_driver.update( self.left_joy_ypos, self.right_joy_ypos) motor_values = str(int( round(left_speed))) + "," + str(left_polarity) + "," + str( int(round(right_speed))) + "," + str(right_polarity) comm.send_msg(self.conn, comm.MsgTypes.STATUS, motor_values) # Write to serial self.serial.write(bytes(motor_values + ";", "utf-8")) comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Received") if received == "Stop": self.is_stopped = True comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Stopped") elif received == "Unload": self.unload() comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Unloaded") sys.exit() while self.is_stopped: received = comm.recv_msg(self.conn) if received == "Start": self.is_stopped = False comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Started") elif received == "Unload": self.unload() comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Unloaded") sys.exit()
def send(self, msg): if self.started: comm.send_msg(self.assignment_conn, comm.MsgTypes.COMMAND, msg) while comm.recv_msg(self.assignment_conn, comm.MsgTypes.REPLY) != "Received": continue comm.send_msg(self.interface_conn, comm.MsgTypes.REPLY, "Message sent.") else: comm.send_msg(self.interface_conn, comm.MsgTypes.REPLY, "No assignment is currently running.")
def handleMessages(self): if self.conn.poll(): received = comm.recv_msg(self.conn) if received == "Stop": self.is_stopped = True comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Stopped") elif received == "Unload": self.unload() comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Unloaded") sys.exit() while self.is_stopped: received = comm.recv_msg(self.conn) if received == "Start": self.is_stopped = False comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Started") elif received == "Unload": self.unload() comm.send_msg(self.conn, comm.MsgTypes.REPLY, "Unloaded") sys.exit()
def stop(self): if self.started: comm.send_msg(self.assignment_conn, comm.MsgTypes.COMMAND, "Stop") self.started = False while comm.recv_msg(self.assignment_conn, comm.MsgTypes.REPLY) != "Stopped": continue comm.send_msg(self.interface_conn, comm.MsgTypes.REPLY, self.assignment.name() + " stopped.") return else: comm.send_msg(self.interface_conn, comm.MsgTypes.REPLY, "No assignment is currently running.")
def monitoring(self, msg): if self.monitoring_conn is None: comm.send_msg( self.interface_conn, comm.MsgTypes.REPLY, "Monitoring has been unloaded, please restart the application." ) else: if msg == "start": if not self.monitoring_started: comm.send_msg(self.monitoring_conn, comm.MsgTypes.COMMAND, "Start") comm.send_msg( self.interface_conn, comm.MsgTypes.REPLY, comm.recv_msg(self.monitoring_conn, comm.MsgTypes.REPLY)) self.monitoring_started = True else: comm.send_msg(self.interface_conn, comm.MsgTypes.REPLY, "Monitoring is already running.") elif msg == "stop": if self.monitoring_started: comm.send_msg(self.monitoring_conn, comm.MsgTypes.COMMAND, "Stop") comm.send_msg( self.interface_conn, comm.MsgTypes.REPLY, comm.recv_msg(self.monitoring_conn, comm.MsgTypes.REPLY)) self.monitoring_started = False else: comm.send_msg(self.interface_conn, comm.MsgTypes.REPLY, "Monitoring has already been stopped.") elif msg == "unload": comm.send_msg(self.monitoring_conn, comm.MsgTypes.COMMAND, "Unload") comm.send_msg( self.interface_conn, comm.MsgTypes.REPLY, comm.recv_msg(self.monitoring_conn, comm.MsgTypes.REPLY)) self.monitoring_started = False
def run(self): print("Welcome!") utils.print_dict_keys(self.assignment_mods, "Available assignments:") print() while True: command = input("=> ") command_split = command.split(" ") command_params = command_split[0] + "/" + str(len(command_split)) if command_params in self.commands: if len(command_split) > 1 and command_split[0] == "load": if command_split[1] in self.assignment_mods.keys(): self.send(command) else: print("Received invalid assignment.\n") elif len(command_split ) > 1 and command_split[0] == "monitoring": if command_split[1] in monitoring.commands: self.send(command) else: print("Received invalid monitoring command.\n") elif command == "quit" or command == "exit": self.send("exit") sys.exit() elif command == "read": while self.conn.poll(): print(comm.recv_msg(self.conn, strip_header=False)) elif command == "help": utils.print_dict_keys(self.assignment_mods, "Available assignments:") print() utils.print_list(self.commands, "Available commands:") else: self.send(command) elif len(command_split) > 1 and command_split[0] == "send": self.send(command) else: print("Received invalid command.\n")
def unload(self, wait): if self.assignment is None: comm.send_msg(self.interface_conn, comm.MsgTypes.REPLY, "No assignment has been loaded.") return else: if self.assignment_conn is None: self.assignment.unload() else: comm.send_msg(self.assignment_conn, comm.MsgTypes.COMMAND, "Unload") while wait and comm.recv_msg( self.assignment_conn, comm.MsgTypes.REPLY) != "Unloaded": continue assignment = self.assignment self.assignment = None self.started = False self.assignment_conn = None self.assignment_proc = None comm.send_msg(self.interface_conn, comm.MsgTypes.REPLY, "Unloaded " + assignment.name() + ".") return
def send(self, command): comm.send_msg(self.conn, comm.MsgTypes.COMMAND, command) print(comm.recv_msg(self.conn, comm.MsgTypes.REPLY) + "\n")
def run(self): mac_addr = constants.bl_mac_address print("Connecting...") try: self.socket = utils.get_socket(mac_addr) except bluetooth.btcommon.BluetoothError: print("Unable to connect, exiting.") self.send("exit") sys.exit() print("Connection established.\n") #self.bl_send("Hello Everyone!") print('Listening..') while True: try: commands = self.bl_recv() for command in commands: print(command) command_split = command.split(" ") command_params = command_split[0] + "/" + str( len(command_split)) if command_params in self.commands: if len(command_split ) > 1 and command_split[0] == "load": if command_split[1] in self.assignment_mods.keys(): self.send(command) else: print("Received invalid assignment.\n") if len(command_split ) > 1 and command_split[0] == "monitoring": if command_split[1] in monitoring.commands: self.send(command) else: print("Received invalid monitoring command.\n") elif command == "quit" or command == "exit": self.send("exit") sys.exit() elif command == "read": while self.conn.poll(): self.bl_send( comm.recv_msg(self.conn, strip_header=False)) else: self.send(command) elif len(command_split) > 1 and command_split[0] == "send": self.send(command) else: print("Received invalid command.\n") self.bl_send("2|Received") except bluetooth.BluetoothError: print("Exiting...") self.send("exit") sys.exit() except IOError: pass