def main(): parser = ArgumentParser(description=__doc__) parser.add_argument('port', metavar='PORT', nargs='?', default = None, help='Mavlink port name: serial: DEVICE[,BAUD], udp: IP:PORT, tcp: tcp:IP:PORT. Eg: \ /dev/ttyUSB0 or 0.0.0.0:14550. Auto-detect serial if not given.') parser.add_argument("--baudrate", "-b", dest="baudrate", type=int, help="Mavlink port baud rate (default=115200)", default=115200) args = parser.parse_args() if args.port == None: serial_list = mavutil.auto_detect_serial(preferred_list=['*FTDI*', "*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", '*PX4*', '*FMU*']) if len(serial_list) == 0: print("Error: no serial connection found") return if len(serial_list) > 1: print('Auto-detected serial ports are:') for port in serial_list: print(" {:}".format(port)) print('Using port {:}'.format(serial_list[0])) args.port = serial_list[0].device print("Connecting to MAVLINK...") mav_serialport = MavlinkSerialPort(args.port, args.baudrate, devnum=10) mav_serialport.write('\n') # make sure the shell is started try: while True: i, o, e = select.select([sys.stdin], [], [], 0.001) if (i): data = sys.stdin.readline() # Erase stdin output (otherwise we have it twice) # FIXME: this assumes a prompt of 5 chars, and does not work in all cases CURSOR_UP_ONE = '\x1b[1A' CURSOR_RIGHT = '\x1b[5C' ERASE_LINE = '\x1b[2K' ERASE_END_LINE = '\x1b[K' sys.stdout.write(CURSOR_UP_ONE + CURSOR_RIGHT + ERASE_END_LINE) # TODO: add a command history? #sys.stdout.write(data) mav_serialport.write(data) data = mav_serialport.read(4096) if data and len(data) > 0: sys.stdout.write(data) sys.stdout.flush() except serial.serialutil.SerialException as e: print(e) except KeyboardInterrupt: mav_serialport.close()
def cmd_link_ports(self): """show available ports""" ports = mavutil.auto_detect_serial( preferred_list=["*FTDI*", "*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", "*PX4*", "*FMU*"] ) for p in ports: print("%s : %s : %s" % (p.device, p.description, p.hwid))
def main(): parser = ArgumentParser(description=__doc__) parser.add_argument( "port", metavar="PORT", nargs="?", default=None, help="Mavlink port name: serial: DEVICE[,BAUD], udp: IP:PORT, tcp: tcp:IP:PORT. Eg: \ /dev/ttyUSB0 or 0.0.0.0:14550. Auto-detect serial if not given.", ) parser.add_argument( "--baudrate", "-b", dest="baudrate", type=int, help="Mavlink port baud rate (default=115200)", default=115200 ) parser.add_argument("--output", "-o", dest="output", default=".", help="output file or directory (default=CWD)") args = parser.parse_args() if os.path.isdir(args.output): filename = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S.ulg") filename = os.path.join(args.output, filename) else: filename = args.output print("Output file name: {:}".format(filename)) if args.port == None: serial_list = mavutil.auto_detect_serial( preferred_list=["*FTDI*", "*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", "*PX4*", "*FMU*"] ) if len(serial_list) == 0: print("Error: no serial connection found") return if len(serial_list) > 1: print("Auto-detected serial ports are:") for port in serial_list: print(" {:}".format(port)) print("Using port {:}".format(serial_list[0])) args.port = serial_list[0].device print("Connecting to MAVLINK...") mav_log_streaming = MavlinkLogStreaming(args.port, args.baudrate, filename) try: print("Starting log...") mav_log_streaming.start_log() mav_log_streaming.read_messages() print("Stopping log") mav_log_streaming.stop_log() except KeyboardInterrupt: print("Stopping log") mav_log_streaming.stop_log()
def get_serial(): ret = None serial_list = mavutil.auto_detect_serial( preferred_list=[ '*FTDI*', '*Arduino_Mega_2560*', '*3D_Robotics*', '*USB_to_UART*', '*USB to UART*', '*PX4*', '*FMU*', '*串行设备*', ] ) # print(dir(serial_list[0])) # print(serial_list[0].description) if len(serial_list) > 0: ret = serial_list[0].device return ret
def detect_pixhawk(): ''' Detect the serial port where pixhawk is connected automatically. Adapted from Mavproxy code. ''' serial_list = mavutil.auto_detect_serial(preferred_list=['*FTDI*',"*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*"]) if len(serial_list) == 1: return serial_list[0].device else: print(''' Please choose a MAVLink master with --master For example: --master=com14 --master=/dev/ttyUSB0 --master=127.0.0.1:14550 Auto-detected serial ports are: ''') for port in serial_list: print("%s" % port) sys.exit(1)
def cmd_link_ports(self): '''show available ports''' ports = mavutil.auto_detect_serial(preferred_list=preferred_ports) for p in ports: print("%s : %s : %s" % (p.device, p.description, p.hwid))
def complete_serial_ports(self, text): '''return list of serial ports''' ports = mavutil.auto_detect_serial(preferred_list=preferred_ports) return [ p.device for p in ports ]
def main(): parser = ArgumentParser(description=__doc__) parser.add_argument('port', metavar='PORT', nargs='?', default = None, help='Mavlink port name: serial: DEVICE[,BAUD], udp: IP:PORT, tcp: tcp:IP:PORT. Eg: \ /dev/ttyUSB0 or 0.0.0.0:14550. Auto-detect serial if not given.') parser.add_argument("--baudrate", "-b", dest="baudrate", type=int, help="Mavlink port baud rate (default=57600)", default=57600) args = parser.parse_args() if args.port == None: if sys.platform == "darwin": args.port = "/dev/tty.usbmodem1" else: serial_list = mavutil.auto_detect_serial(preferred_list=['*FTDI*', "*STMicroelectronics Virtual COM Port*", "*3D_Robotics*", "*USB_to_UART*", '*PX4*', '*FMU*', "*Gumstix*"]) if len(serial_list) == 0: print("Error: no serial connection found") return if len(serial_list) > 1: print('Auto-detected serial ports are:') for port in serial_list: print(" {:}".format(port)) print('Using port {:}'.format(serial_list[0])) args.port = serial_list[0].device print("Connecting to MAVLINK...") mav_serialport = MavlinkSerialPort(args.port, args.baudrate, devnum=10) mav_serialport.write('\n') # make sure the shell is started _run_loop = True # set_input_nonblocking() def loop_recv(): while _run_loop: data = mav_serialport.read(4096) if data and len(data) > 0: sys.stdout.write(data) sys.stdout.flush() thread1 = Thread(target=loop_recv) thread1.start() # setup the console, so we can read one char at a time fd_in = sys.stdin.fileno() # old_attr = termios.tcgetattr(fd_in) # new_attr = termios.tcgetattr(fd_in) # new_attr[3] = new_attr[3] & ~termios.ECHO # lflags # new_attr[3] = new_attr[3] & ~termios.ICANON try: # termios.tcsetattr(fd_in, termios.TCSANOW, new_attr) cur_line = '' command_history = [] cur_history_index = 0 def erase_last_n_chars(N): if N == 0: return CURSOR_BACK_N = '\x1b['+str(N)+'D' ERASE_END_LINE = '\x1b[K' sys.stdout.write(CURSOR_BACK_N + ERASE_END_LINE) next_heartbeat_time = timer() while True: while True: # i, o, e = select.select([sys.stdin], [], [], 0) # rr, rw, er = select.select([sock, sys.stdin], [], [], 0.1) # if not i: break # if sys.stdin.isatty(): # break # ch = sys.stdin.read(1) ch = msvcrt.getch() # provide a simple shell with command history # if ch == '\n': # if ch == '\r\n': # if ch == '\r' or ch == '\n': if ch == '\r': if len(cur_line) > 0: # erase current text (mavlink shell will echo it as well) erase_last_n_chars(len(cur_line)) # add to history if len(command_history) == 0 or command_history[-1] != cur_line: command_history.append(cur_line) if len(command_history) > 50: del command_history[0] cur_history_index = len(command_history) mav_serialport.write(cur_line+'\n') cur_line = '' elif ord(ch) == 127: # backslash if len(cur_line) > 0: erase_last_n_chars(1) cur_line = cur_line[:-1] sys.stdout.write(ch) # elif ord(ch) == 27: elif ch == '\x00': # ch = sys.stdin.read(1) # skip one ch = msvcrt.getch() if ch == 'H': # arrow up if cur_history_index > 0: cur_history_index -= 1 elif ch == 'P': # arrow down if cur_history_index < len(command_history): cur_history_index += 1 elif ch == 'O': _run_loop = False sys.exit(0) # TODO: else: support line editing erase_last_n_chars(len(cur_line)) if cur_history_index == len(command_history): cur_line = '' else: cur_line = command_history[cur_history_index] sys.stdout.write(cur_line) elif ord(ch) > 3: if ch != '\r' and ch != '\n': cur_line += ch sys.stdout.write(ch) sys.stdout.flush() # handle heartbeat sending heartbeat_time = timer() if heartbeat_time > next_heartbeat_time: mav_serialport.mav.mav.heartbeat_send(mavutil.mavlink.MAV_TYPE_GCS, mavutil.mavlink.MAV_AUTOPILOT_GENERIC, 0, 0, 0) next_heartbeat_time = heartbeat_time + 1 except serial.serialutil.SerialException as e: print(e) sys.exit() except KeyboardInterrupt: mav_serialport.close() finally: # termios.tcsetattr(fd_in, termios.TCSADRAIN, old_attr) pass
def complete_serial_ports(self, text): '''return list of serial ports''' ports = mavutil.auto_detect_serial(preferred_list=['*FTDI*',"*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", '*PX4*', '*FMU*']) return [ p.device for p in ports ]
from pymavlink import mavutil, mavparm mavutil.set_dialect(opts.dialect) # global mavproxy state mpstate = MPState() mpstate.status.exit = False mpstate.command_map = command_map mpstate.continue_mode = opts.continue_mode if opts.speech: # start the speech-dispatcher early, so it doesn't inherit any ports from # modules/mavutil load_module('speech') if not opts.master: serial_list = mavutil.auto_detect_serial(preferred_list=['*FTDI*',"*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*"]) if len(serial_list) == 1: opts.master = [serial_list[0].device] else: print(''' Please choose a MAVLink master with --master For example: --master=com14 --master=/dev/ttyUSB0 --master=127.0.0.1:14550 Auto-detected serial ports are: ''') for port in serial_list: print("%s" % port) sys.exit(1)
# global mavproxy state mpstate = MPState() mpstate.status.exit = False mpstate.command_map = command_map mpstate.continue_mode = opts.continue_mode # queues for logging mpstate.logqueue = Queue.Queue() mpstate.logqueue_raw = Queue.Queue() if opts.speech: # start the speech-dispatcher early, so it doesn't inherit any ports from # modules/mavutil load_module('speech') serial_list = mavutil.auto_detect_serial(preferred_list=preferred_ports) if not opts.master: print('Auto-detected serial ports are:') for port in serial_list: print("%s" % port) # container for status information mpstate.settings.target_system = opts.TARGET_SYSTEM mpstate.settings.target_component = opts.TARGET_COMPONENT mpstate.mav_master = [] mpstate.rl = rline.rline("MAV> ", mpstate) def quit_handler(signum = None, frame = None): #print('Signal handler called with signal', signum)
def initMAVProxy(): from optparse import OptionParser parser = OptionParser("mavproxy.py [options]") parser.add_option("--master", dest="master", action='append', metavar="DEVICE[,BAUD]", help="MAVLink master port and optional baud rate", default=[]) parser.add_option("--out", dest="output", action='append', metavar="DEVICE[,BAUD]", help="MAVLink output port and optional baud rate", default=[]) parser.add_option("--baudrate", dest="baudrate", type='int', help="default serial baud rate", default=115200) parser.add_option("--sitl", dest="sitl", default=None, help="SITL output port") parser.add_option("--streamrate",dest="streamrate", default=4, type='int', help="MAVLink stream rate") parser.add_option("--source-system", dest='SOURCE_SYSTEM', type='int', default=255, help='MAVLink source system for this GCS') parser.add_option("--target-system", dest='TARGET_SYSTEM', type='int', default=1, help='MAVLink target master system') parser.add_option("--target-component", dest='TARGET_COMPONENT', type='int', default=1, help='MAVLink target master component') parser.add_option("--logfile", dest="logfile", help="MAVLink master logfile", default='mav.tlog') parser.add_option("-a", "--append-log", dest="append_log", help="Append to log files", action='store_true', default=False) parser.add_option("--quadcopter", dest="quadcopter", help="use quadcopter controls", action='store_true', default=False) parser.add_option("--setup", dest="setup", help="start in setup mode", action='store_true', default=False) parser.add_option("--nodtr", dest="nodtr", help="disable DTR drop on close", action='store_true', default=False) parser.add_option("--show-errors", dest="show_errors", help="show MAVLink error packets", action='store_true', default=False) parser.add_option("--speech", dest="speech", help="use text to speach", action='store_true', default=False) parser.add_option("--num-cells", dest="num_cells", help="number of LiPo battery cells", type='int', default=0) parser.add_option("--aircraft", dest="aircraft", help="aircraft name", default=None) parser.add_option("--cmd", dest="cmd", help="initial commands", default=None) parser.add_option("--console", action='store_true', help="use GUI console") parser.add_option("--map", action='store_true', help="load map module") parser.add_option( '--load-module', action='append', default=[], help='Load the specified module. Can be used multiple times, or with a comma separated list') parser.add_option("--mav09", action='store_true', default=False, help="Use MAVLink protocol 0.9") parser.add_option("--auto-protocol", action='store_true', default=False, help="Auto detect MAVLink protocol version") parser.add_option("--nowait", action='store_true', default=False, help="don't wait for HEARTBEAT on startup") parser.add_option("--continue", dest='continue_mode', action='store_true', default=False, help="continue logs") parser.add_option("--dialect", default="ardupilotmega", help="MAVLink dialect") parser.add_option("--rtscts", action='store_true', help="enable hardware RTS/CTS flow control") (opts, args) = parser.parse_args() mavproxy.opts=opts if opts.mav09: os.environ['MAVLINK09'] = '1' from pymavlink import mavutil, mavparm mavutil.set_dialect(opts.dialect) # global mavproxy state mpstate = MPState() mavproxy.mpstate=mpstate mpstate.status.exit = False mpstate.command_map = command_map mpstate.continue_mode = opts.continue_mode if opts.speech: # start the speech-dispatcher early, so it doesn't inherit any ports from # modules/mavutil load_module('speech') if not opts.master: serial_list = mavutil.auto_detect_serial(preferred_list=['*FTDI*',"*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*"]) if len(serial_list) == 1: opts.master = [serial_list[0].device] else: print(''' Please choose a MAVLink master with --master For example: --master=com14 --master=/dev/ttyUSB0 --master=127.0.0.1:14550 Auto-detected serial ports are: ''') for port in serial_list: print("%s" % port) sys.exit(1) # container for status information mpstate.status.target_system = opts.TARGET_SYSTEM mpstate.status.target_component = opts.TARGET_COMPONENT mpstate.mav_master = [] # open master link for mdev in opts.master: if ',' in mdev and not os.path.exists(mdev): port, baud = mdev.split(',') else: port, baud = mdev, opts.baudrate m = mavutil.mavlink_connection(port, autoreconnect=True, baud=int(baud)) m.mav.set_callback(master_callback, m) if hasattr(m.mav, 'set_send_callback'): m.mav.set_send_callback(master_send_callback, m) if opts.rtscts: m.set_rtscts(True) m.linknum = len(mpstate.mav_master) m.linkerror = False m.link_delayed = False m.last_heartbeat = 0 m.last_message = 0 m.highest_msec = 0 mpstate.mav_master.append(m) mpstate.status.counters['MasterIn'].append(0) # log all packets from the master, for later replay open_logs() # open any mavlink UDP ports for p in opts.output: if ',' in p and not os.path.exists(p): port, baud = p.split(',') else: port, baud = p, opts.baudrate mpstate.mav_outputs.append(mavutil.mavlink_connection(port, baud=int(baud), input=False)) if opts.sitl: mpstate.sitl_output = mavutil.mavudp(opts.sitl, input=False) mpstate.settings.numcells = opts.num_cells mpstate.settings.streamrate = opts.streamrate mpstate.settings.streamrate2 = opts.streamrate mavproxy.msg_period = mavutil.periodic_event(1.0/15) mavproxy.heartbeat_period = mavutil.periodic_event(1) mavproxy.battery_period = mavutil.periodic_event(0.1) mavproxy.heartbeat_check_period = mavutil.periodic_event(0.33) mpstate.rl = rline.rline("MAV> ", mpstate) if opts.setup: mpstate.rl.set_prompt("") if 'HOME' in os.environ and not opts.setup: start_script = os.path.join(os.environ['HOME'], ".mavinit.scr") if os.path.exists(start_script): run_script(start_script) if opts.aircraft is not None: start_script = os.path.join(opts.aircraft, "mavinit.scr") if os.path.exists(start_script): run_script(start_script) else: print("no script %s" % start_script) if not opts.setup: # some core functionality is in modules standard_modules = ['log','rally','fence','param','relay', 'tuneopt','arm','mode','calibration','rc','wp','auxopt','quadcontrols','test'] for m in standard_modules: load_module(m, quiet=True) if opts.console: process_stdin('module load console') if opts.map: process_stdin('module load map') for module in opts.load_module: modlist = module.split(',') for mod in modlist: process_stdin('module load %s' % mod) if opts.cmd is not None: cmds = opts.cmd.split(';') for c in cmds: process_stdin(c) # run main loop as a thread mpstate.status.thread = threading.Thread(target=main_loop) mpstate.status.thread.daemon = True mpstate.status.thread.start()
def main(): parser = ArgumentParser(description=__doc__) parser.add_argument('port', metavar='PORT', nargs='?', default = None, help='Mavlink port name: serial: DEVICE[,BAUD], udp: IP:PORT, tcp: tcp:IP:PORT. Eg: \ /dev/ttyUSB0 or 0.0.0.0:14550. Auto-detect serial if not given.') parser.add_argument("--baudrate", "-b", dest="baudrate", type=int, help="Mavlink port baud rate (default=115200)", default=115200) args = parser.parse_args() if args.port == None: serial_list = mavutil.auto_detect_serial(preferred_list=['*FTDI*', "*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", '*PX4*', '*FMU*']) if len(serial_list) == 0: print("Error: no serial connection found") return if len(serial_list) > 1: print('Auto-detected serial ports are:') for port in serial_list: print(" {:}".format(port)) print('Using port {:}'.format(serial_list[0])) args.port = serial_list[0].device print("Connecting to MAVLINK...") mav_serialport = MavlinkSerialPort(args.port, args.baudrate, devnum=10) mav_serialport.write('\n') # make sure the shell is started # setup the console, so we can read one char at a time fd_in = sys.stdin.fileno() old_attr = termios.tcgetattr(fd_in) new_attr = termios.tcgetattr(fd_in) new_attr[3] = new_attr[3] & ~termios.ECHO # lflags new_attr[3] = new_attr[3] & ~termios.ICANON try: termios.tcsetattr(fd_in, termios.TCSANOW, new_attr) cur_line = '' command_history = [] cur_history_index = 0 def erase_last_n_chars(N): if N == 0: return CURSOR_BACK_N = '\x1b['+str(N)+'D' ERASE_END_LINE = '\x1b[K' sys.stdout.write(CURSOR_BACK_N + ERASE_END_LINE) while True: while True: i, o, e = select.select([sys.stdin], [], [], 0) if not i: break ch = sys.stdin.read(1) # provide a simple shell with command history if ch == '\n': if len(cur_line) > 0: # erase current text (mavlink shell will echo it as well) erase_last_n_chars(len(cur_line)) # add to history if len(command_history) == 0 or command_history[-1] != cur_line: command_history.append(cur_line) if len(command_history) > 50: del command_history[0] cur_history_index = len(command_history) mav_serialport.write(cur_line+'\n') cur_line = '' elif ord(ch) == 127: # backslash if len(cur_line) > 0: erase_last_n_chars(1) cur_line = cur_line[:-1] sys.stdout.write(ch) elif ord(ch) == 033: ch = sys.stdin.read(1) # skip one ch = sys.stdin.read(1) if ch == 'A': # arrow up if cur_history_index > 0: cur_history_index -= 1 elif ch == 'B': # arrow down if cur_history_index < len(command_history): cur_history_index += 1 # TODO: else: support line editing erase_last_n_chars(len(cur_line)) if cur_history_index == len(command_history): cur_line = '' else: cur_line = command_history[cur_history_index] sys.stdout.write(cur_line) elif ord(ch) > 3: cur_line += ch sys.stdout.write(ch) sys.stdout.flush() data = mav_serialport.read(4096) if data and len(data) > 0: sys.stdout.write(data) sys.stdout.flush() except serial.serialutil.SerialException as e: print(e) except KeyboardInterrupt: mav_serialport.close() finally: termios.tcsetattr(fd_in, termios.TCSADRAIN, old_attr)
def complete_serial_ports(self, text): """return list of serial ports""" ports = mavutil.auto_detect_serial( preferred_list=["*FTDI*", "*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", "*PX4*", "*FMU*"] ) return [p.device for p in ports]
def __init__(self, *args, **kwds): super(linkAddDialog, self).__init__(*args, **kwds) self.panelGUI = wx.Panel(self, wx.ID_ANY) self.sizerGUI = wx.FlexGridSizer(5, 2, 0, 0) self.addLink = None self.conStr = None label_1 = wx.StaticText(self.panelGUI, wx.ID_ANY, "Connection Type:") self.sizerGUI.Add( label_1, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL | wx.RESERVE_SPACE_EVEN_IF_HIDDEN, 3) self.choiceConnection = wx.Choice( self.panelGUI, wx.ID_ANY, choices=["udpin", "udpout", "tcpin", "tcp", "Serial"]) self.choiceConnection.SetSelection(0) self.sizerGUI.Add(self.choiceConnection, 0, wx.ALL, 3) self.labelConType = wx.StaticText(self.panelGUI, wx.ID_ANY, "IP:Port") self.sizerGUI.Add(self.labelConType, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3) self.textConIPPort = wx.TextCtrl(self.panelGUI, wx.ID_ANY, "127.0.0.1:14550") self.textConIPPort.SetMinSize((150, 34)) self.sizerGUI.Add(self.textConIPPort, 0, wx.ALL | wx.EXPAND, 3) self.labelSerialPort = wx.StaticText(self.panelGUI, wx.ID_ANY, "Port:") self.sizerGUI.Add( self.labelSerialPort, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL | wx.RESERVE_SPACE_EVEN_IF_HIDDEN, 3) self.choiceSerialPort = wx.Choice(self.panelGUI, wx.ID_ANY, choices=[]) self.sizerGUI.Add(self.choiceSerialPort, 0, wx.ALL | wx.RESERVE_SPACE_EVEN_IF_HIDDEN, 3) self.labelBaud = wx.StaticText(self.panelGUI, wx.ID_ANY, "Baud Rate:") self.sizerGUI.Add( self.labelBaud, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL | wx.RESERVE_SPACE_EVEN_IF_HIDDEN, 3) self.choiceBaud = wx.Choice(self.panelGUI, wx.ID_ANY, choices=[ "9600", "19200", "38400", "57600", "115200", "921600", "1500000" ]) self.choiceBaud.SetSelection(3) self.sizerGUI.Add(self.choiceBaud, 0, wx.ALL | wx.RESERVE_SPACE_EVEN_IF_HIDDEN, 3) self.buttonAdd = wx.Button(self.panelGUI, wx.ID_ADD, "Add Link") self.sizerGUI.Add(self.buttonAdd, 0, wx.ALL, 3) self.buttonExit = wx.Button(self.panelGUI, wx.ID_CANCEL, "") self.sizerGUI.Add(self.buttonExit, 0, wx.ALIGN_CENTER_VERTICAL, 0) self.panelGUI.SetSizer(self.sizerGUI) self.Layout() self.Bind(wx.EVT_CHOICE, self.onChangeType, self.choiceConnection) self.Bind(wx.EVT_BUTTON, self.onAdd, self.buttonAdd) self.Bind(wx.EVT_BUTTON, self.onClose, self.buttonExit) self.Bind(wx.EVT_CLOSE, self.onClose) # Set initial state self.choiceSerialPort.Disable() self.choiceBaud.Disable() self.labelSerialPort.Disable() self.labelBaud.Disable() self.textConIPPort.Enable() self.labelConType.Enable() ports = mavutil.auto_detect_serial( preferred_list=MAVProxy.modules.mavproxy_link.preferred_ports) for p in ports: self.choiceSerialPort.Append(p.device) self.choiceSerialPort.SetSelection(0)
def main(): parser = ArgumentParser(description=__doc__) parser.add_argument( "port", metavar="PORT", nargs="?", default=None, help="Mavlink port name: serial: DEVICE[,BAUD], udp: IP:PORT, tcp: tcp:IP:PORT. Eg: \ /dev/ttyUSB0 or 0.0.0.0:14550. Auto-detect serial if not given.", ) parser.add_argument( "--baudrate", "-b", dest="baudrate", type=int, help="Mavlink port baud rate (default=57600)", default=57600 ) args = parser.parse_args() if args.port == None: if sys.platform == "darwin": args.port = "/dev/tty.usbmodem1" else: serial_list = mavutil.auto_detect_serial( preferred_list=["*FTDI*", "*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", "*PX4*", "*FMU*"] ) if len(serial_list) == 0: print("Error: no serial connection found") return if len(serial_list) > 1: print("Auto-detected serial ports are:") for port in serial_list: print(" {:}".format(port)) print("Using port {:}".format(serial_list[0])) args.port = serial_list[0].device print("Connecting to MAVLINK...") mav_serialport = MavlinkSerialPort(args.port, args.baudrate, devnum=10) mav_serialport.write("\n") # make sure the shell is started # setup the console, so we can read one char at a time fd_in = sys.stdin.fileno() old_attr = termios.tcgetattr(fd_in) new_attr = termios.tcgetattr(fd_in) new_attr[3] = new_attr[3] & ~termios.ECHO # lflags new_attr[3] = new_attr[3] & ~termios.ICANON try: termios.tcsetattr(fd_in, termios.TCSANOW, new_attr) cur_line = "" command_history = [] cur_history_index = 0 def erase_last_n_chars(N): if N == 0: return CURSOR_BACK_N = "\x1b[" + str(N) + "D" ERASE_END_LINE = "\x1b[K" sys.stdout.write(CURSOR_BACK_N + ERASE_END_LINE) next_heartbeat_time = timer() while True: while True: i, o, e = select.select([sys.stdin], [], [], 0) if not i: break ch = sys.stdin.read(1) # provide a simple shell with command history if ch == "\n": if len(cur_line) > 0: # erase current text (mavlink shell will echo it as well) erase_last_n_chars(len(cur_line)) # add to history if len(command_history) == 0 or command_history[-1] != cur_line: command_history.append(cur_line) if len(command_history) > 50: del command_history[0] cur_history_index = len(command_history) mav_serialport.write(cur_line + "\n") cur_line = "" elif ord(ch) == 127: # backslash if len(cur_line) > 0: erase_last_n_chars(1) cur_line = cur_line[:-1] sys.stdout.write(ch) elif ord(ch) == 27: ch = sys.stdin.read(1) # skip one ch = sys.stdin.read(1) if ch == "A": # arrow up if cur_history_index > 0: cur_history_index -= 1 elif ch == "B": # arrow down if cur_history_index < len(command_history): cur_history_index += 1 # TODO: else: support line editing erase_last_n_chars(len(cur_line)) if cur_history_index == len(command_history): cur_line = "" else: cur_line = command_history[cur_history_index] sys.stdout.write(cur_line) elif ord(ch) > 3: cur_line += ch sys.stdout.write(ch) sys.stdout.flush() data = mav_serialport.read(4096) if data and len(data) > 0: sys.stdout.write(data) sys.stdout.flush() # handle heartbeat sending heartbeat_time = timer() if heartbeat_time > next_heartbeat_time: mav_serialport.mav.mav.heartbeat_send( mavutil.mavlink.MAV_TYPE_GCS, mavutil.mavlink.MAV_AUTOPILOT_GENERIC, 0, 0, 0 ) next_heartbeat_time = heartbeat_time + 1 except serial.serialutil.SerialException as e: print(e) except KeyboardInterrupt: mav_serialport.close() finally: termios.tcsetattr(fd_in, termios.TCSADRAIN, old_attr)
def scanForSerials(self): print "detecting serial ports..." return mavutil.auto_detect_serial( ['*ttyUSB*', '*ttyACM*', '*tty.usb*'])
def scanForSerials(self): print "detecting serial ports..." return mavutil.auto_detect_serial(['*ttyUSB*', '*ttyACM*', '*tty.usb*'])
def complete_serial_ports(self, text): '''return list of serial ports''' ports = mavutil.auto_detect_serial(preferred_list=preferred_ports) return [p.device for p in ports]
def main(): parser = ArgumentParser(description=__doc__) parser.add_argument( 'port', metavar='PORT', nargs='?', default=None, help= 'Mavlink port name: serial: DEVICE[,BAUD], udp: IP:PORT, tcp: tcp:IP:PORT. Eg: \ /dev/ttyUSB0 or 0.0.0.0:14550. Auto-detect serial if not given.') parser.add_argument("--baudrate", "-b", dest="baudrate", type=int, help="Mavlink port baud rate (default=115200)", default=115200) args = parser.parse_args() if args.port == None: serial_list = mavutil.auto_detect_serial(preferred_list=[ '*FTDI*', "*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", '*PX4*', '*FMU*' ]) if len(serial_list) == 0: print("Error: no serial connection found") return if len(serial_list) > 1: print('Auto-detected serial ports are:') for port in serial_list: print(" {:}".format(port)) print('Using port {:}'.format(serial_list[0])) args.port = serial_list[0].device print("Connecting to MAVLINK...") mav_serialport = MavlinkSerialPort(args.port, args.baudrate, devnum=10) mav_serialport.write('\n') # make sure the shell is started # setup the console, so we can read one char at a time fd_in = sys.stdin.fileno() old_attr = termios.tcgetattr(fd_in) new_attr = termios.tcgetattr(fd_in) new_attr[3] = new_attr[3] & ~termios.ECHO # lflags new_attr[3] = new_attr[3] & ~termios.ICANON try: termios.tcsetattr(fd_in, termios.TCSANOW, new_attr) cur_line = '' command_history = [] cur_history_index = 0 def erase_last_n_chars(N): if N == 0: return CURSOR_BACK_N = '\x1b[' + str(N) + 'D' ERASE_END_LINE = '\x1b[K' sys.stdout.write(CURSOR_BACK_N + ERASE_END_LINE) while True: while True: i, o, e = select.select([sys.stdin], [], [], 0) if not i: break ch = sys.stdin.read(1) # provide a simple shell with command history if ch == '\n': if len(cur_line) > 0: # erase current text (mavlink shell will echo it as well) erase_last_n_chars(len(cur_line)) # add to history if len(command_history ) == 0 or command_history[-1] != cur_line: command_history.append(cur_line) if len(command_history) > 50: del command_history[0] cur_history_index = len(command_history) mav_serialport.write(cur_line + '\n') cur_line = '' elif ord(ch) == 127: # backslash if len(cur_line) > 0: erase_last_n_chars(1) cur_line = cur_line[:-1] sys.stdout.write(ch) elif ord(ch) == 033: ch = sys.stdin.read(1) # skip one ch = sys.stdin.read(1) if ch == 'A': # arrow up if cur_history_index > 0: cur_history_index -= 1 elif ch == 'B': # arrow down if cur_history_index < len(command_history): cur_history_index += 1 # TODO: else: support line editing erase_last_n_chars(len(cur_line)) if cur_history_index == len(command_history): cur_line = '' else: cur_line = command_history[cur_history_index] sys.stdout.write(cur_line) elif ord(ch) > 3: cur_line += ch sys.stdout.write(ch) sys.stdout.flush() data = mav_serialport.read(4096) if data and len(data) > 0: sys.stdout.write(data) sys.stdout.flush() except serial.serialutil.SerialException as e: print(e) except KeyboardInterrupt: mav_serialport.close() finally: termios.tcsetattr(fd_in, termios.TCSADRAIN, old_attr)
handler.setFormatter(formatter) # log to file handler = logging.FileHandler('main.log') handler.setFormatter(formatter) # -------------------- Connect to pixhawk ----------------------- connections = [] # try to connect to simulator connections.append('tcp:localhost:14551') # try to connect to pixhawk over serial port preferred_list = [ '*FTDI*', "*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", '*PX4*', '*FMU*' ] connections.append(str(mavutil.auto_detect_serial(preferred_list)[0])) for connection in connections: try: vehicle = connect(connection, wait_ready=True) print("Connection to {} succeeded".format(connection)) break except Exception as e: print("Connection to {} failed".format(connection)) else: logging.error("Could not connect to Pixhawk") # --------------------- Load mission -------------------------- # @vehicle.on_message('*') @vehicle.on_message('MISSION_ITEM_REACHED')
def main(): parser = ArgumentParser(description=__doc__) parser.add_argument( 'port', metavar='PORT', nargs='?', default=None, help= 'Mavlink port name: serial: DEVICE[,BAUD], udp: IP:PORT, tcp: tcp:IP:PORT. Eg: \ /dev/ttyUSB0 or 0.0.0.0:14550. Auto-detect serial if not given.') parser.add_argument("--baudrate", "-b", dest="baudrate", type=int, help="Mavlink port baud rate (default=57600)", default=57600) args = parser.parse_args() if args.port == None: if sys.platform == "darwin": args.port = "/dev/tty.usbmodem01" else: serial_list = mavutil.auto_detect_serial(preferred_list=[ '*FTDI*', "*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", '*PX4*', '*FMU*', "*Gumstix*" ]) if len(serial_list) == 0: print("Error: no serial connection found") return if len(serial_list) > 1: print('Auto-detected serial ports are:') for port in serial_list: print(" {:}".format(port)) print('Using port {:}'.format(serial_list[0])) args.port = serial_list[0].device print("Connecting to MAVLINK...") mav_serialport = MavlinkSerialPort(args.port, args.baudrate, devnum=10) mav_serialport.write('\n') # make sure the shell is started # disable echo & avoid buffering on stdin fd_in = sys.stdin.fileno() try: old_attr = termios.tcgetattr(fd_in) new_attr = termios.tcgetattr(fd_in) new_attr[3] = new_attr[3] & ~termios.ECHO # lflags new_attr[3] = new_attr[3] & ~termios.ICANON termios.tcsetattr(fd_in, termios.TCSANOW, new_attr) except termios.error: # tcgetattr can fail if stdin is not a tty old_attr = None ubuf_stdin = os.fdopen(fd_in, 'rb', buffering=0) try: cur_line = '' command_history = [] cur_history_index = 0 def erase_last_n_chars(N): if N == 0: return CURSOR_BACK_N = '\x1b[' + str(N) + 'D' ERASE_END_LINE = '\x1b[K' sys.stdout.write(CURSOR_BACK_N + ERASE_END_LINE) next_heartbeat_time = timer() quit_time = None while quit_time is None or quit_time > timer(): while True: i, o, e = select.select([ubuf_stdin], [], [], 0) if not i: break ch = ubuf_stdin.read(1).decode('utf8') if len(ch) == 0: # EOF if quit_time is None: # run a bit longer to read the response (we could also # read until we get a prompt) quit_time = timer() + 1 break # provide a simple shell with command history if ch == '\n': if len(cur_line) > 0: # erase current text (mavlink shell will echo it as well) erase_last_n_chars(len(cur_line)) # add to history if len(command_history ) == 0 or command_history[-1] != cur_line: command_history.append(cur_line) if len(command_history) > 50: del command_history[0] cur_history_index = len(command_history) mav_serialport.write(cur_line + '\n') cur_line = '' elif ord(ch) == 127: # backslash if len(cur_line) > 0: erase_last_n_chars(1) cur_line = cur_line[:-1] sys.stdout.write(ch) elif ord(ch) == 27: ch = ubuf_stdin.read(1).decode('utf8') # skip one ch = ubuf_stdin.read(1).decode('utf8') if ch == 'A': # arrow up if cur_history_index > 0: cur_history_index -= 1 elif ch == 'B': # arrow down if cur_history_index < len(command_history): cur_history_index += 1 # TODO: else: support line editing erase_last_n_chars(len(cur_line)) if cur_history_index == len(command_history): cur_line = '' else: cur_line = command_history[cur_history_index] sys.stdout.write(cur_line) elif ord(ch) > 3: cur_line += ch sys.stdout.write(ch) sys.stdout.flush() data = mav_serialport.read(4096) if data and len(data) > 0: sys.stdout.write(data) sys.stdout.flush() # handle heartbeat sending heartbeat_time = timer() if heartbeat_time > next_heartbeat_time: mav_serialport.mav.mav.heartbeat_send( mavutil.mavlink.MAV_TYPE_GCS, mavutil.mavlink.MAV_AUTOPILOT_GENERIC, 0, 0, 0) next_heartbeat_time = heartbeat_time + 1 except serial.serialutil.SerialException as e: print(e) except KeyboardInterrupt: mav_serialport.close() finally: if old_attr: termios.tcsetattr(fd_in, termios.TCSADRAIN, old_attr)
def main(): parser = ArgumentParser(description=__doc__) parser.add_argument( 'port', metavar='PORT', nargs='?', default=None, help= 'Mavlink port name: serial: DEVICE[,BAUD], udp: IP:PORT, tcp: tcp:IP:PORT. Eg: \ /dev/ttyUSB0 or 0.0.0.0:14550. Auto-detect serial if not given.') parser.add_argument("--baudrate", "-b", dest="baudrate", type=int, help="Mavlink port baud rate (default=115200)", default=115200) parser.add_argument("--output", "-o", dest="output", default='.', help="output file or directory (default=CWD)") args = parser.parse_args() if os.path.isdir(args.output): filename = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S.ulg") filename = os.path.join(args.output, filename) else: filename = args.output print('Output file name: {:}'.format(filename)) if args.port == None: serial_list = mavutil.auto_detect_serial(preferred_list=[ '*FTDI*', "*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", '*PX4*', '*FMU*' ]) if len(serial_list) == 0: print("Error: no serial connection found") return if len(serial_list) > 1: print('Auto-detected serial ports are:') for port in serial_list: print(" {:}".format(port)) print('Using port {:}'.format(serial_list[0])) args.port = serial_list[0].device print("Connecting to MAVLINK...") mav_log_streaming = MavlinkLogStreaming(args.port, args.baudrate, filename) try: print('Starting log...') mav_log_streaming.start_log() mav_log_streaming.read_messages() print('Stopping log') mav_log_streaming.stop_log() except KeyboardInterrupt: print('Stopping log') mav_log_streaming.stop_log()
mpstate.command_map = command_map mpstate.continue_mode = opts.continue_mode # queues for logging mpstate.logqueue = Queue.Queue() mpstate.logqueue_raw = Queue.Queue() if opts.speech: # start the speech-dispatcher early, so it doesn't inherit any ports from # modules/mavutil load_module('speech') serial_list = mavutil.auto_detect_serial(preferred_list=[ '*FTDI*', "*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", '*Ardu*', '*PX4*', '*FMU*']) if not opts.master: print('Auto-detected serial ports are:') for port in serial_list: print("%s" % port) # container for status information mpstate.settings.target_system = opts.TARGET_SYSTEM mpstate.settings.target_component = opts.TARGET_COMPONENT mpstate.mav_master = [] mpstate.rl = rline.rline("MAV> ", mpstate)
def cmd_link_ports(self): '''show available ports''' ports = mavutil.auto_detect_serial(preferred_list=['*FTDI*',"*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", '*PX4*', '*FMU*']) for p in ports: print("%s : %s : %s" % (p.device, p.description, p.hwid))