def __init__(self, parent, frame): self.parent = parent # we are drawing on our parent, so dc comes from this self.frame = frame # the frame owns any controls we might need to update parent.SetDropTarget(TextDropTarget( self)) # calls self.OnDropText when drag and drop complete self.width = 800 self.height = 200 self.margin = min(self.height / 10, 20) self.font = wx.Font(self.margin / 2, wx.DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) self.pixmap = wx.EmptyBitmap(self.width, self.height) self.plot_size = self.width self.max = -1e32 self.min = 1e32 self.plot_interval = 200 self.plots = {} self.auto_scale = True self.offset = 0.0 self.scale = 1.0 self.x_axis = None messages_xml_map.parse_messages() self.ivy_interface = IvyMessagesInterface(_IVY_APPNAME) # start the timer self.timer = wx.FutureCall(self.plot_interval, self.OnTimer)
def __init__(self, parent, frame): self.parent = parent # we are drawing on our parent, so dc comes from this self.frame = frame # the frame owns any controls we might need to update parent.SetDropTarget(TextDropTarget(self)) # calls self.OnDropText when drag and drop complete self.InitIvy() self.width = 800 self.height = 200 self.margin = min(self.height / 10, 20) self.font = wx.Font(self.margin / 2, wx.DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) self.pixmap = wx.EmptyBitmap(self.width, self.height) self.plot_size = self.width self.max = -1e32 self.min = 1e32 self.plot_interval = 200 self.plots = {} self.auto_scale = True self.offset = 0.0 self.scale = 1.0 self.x_axis = None messages_xml_map.parse_messages() # start the timer self.timer = wx.FutureCall(self.plot_interval, self.OnTimer)
def test(): ''' run test program as a module to avoid namespace conflicts with serial module: python -p pprzlink.serial pprzlink should be installed in a python standard path or included to your PYTHONPATH ''' import time import argparse from pprzlink import messages_xml_map parser = argparse.ArgumentParser() parser.add_argument("-f", "--file", help="path to messages.xml file") parser.add_argument("-c", "--class", help="message class", dest='msg_class', default='telemetry') parser.add_argument("-d", "--device", help="device name", dest='dev', default='/dev/ttyUSB0') parser.add_argument("-b", "--baudrate", help="baudrate", dest='baud', default=115200, type=int) parser.add_argument("-id", "--ac_id", help="aircraft id (receiver)", dest='ac_id', default=42, type=int) parser.add_argument("--interface_id", help="interface id (sender)", dest='id', default=0, type=int) args = parser.parse_args() messages_xml_map.parse_messages(args.file) serial_interface = SerialMessagesInterface(lambda s, m: print("new message from %i: %s" % (s, m)), device=args.dev, baudrate=args.baud, msg_class=args.msg_class, interface_id=args.id, verbose=True) print("Starting serial interface on %s at %i baud" % (args.dev, args.baud)) try: serial_interface.start() # give the thread some time to properly start time.sleep(0.1) # send some datalink messages to aicraft for test ac_id = args.ac_id print("sending ping") ping = PprzMessage('datalink', 'PING') serial_interface.send(ping, 0) get_setting = PprzMessage('datalink', 'GET_SETTING') get_setting['index'] = 0 get_setting['ac_id'] = ac_id serial_interface.send(get_setting, 0) # change setting with index 0 (usually the telemetry mode) set_setting = PprzMessage('datalink', 'SETTING') set_setting['index'] = 0 set_setting['ac_id'] = ac_id set_setting['value'] = 1 serial_interface.send(set_setting, 0) # block = PprzMessage('datalink', 'BLOCK') # block['block_id'] = 3 # block['ac_id'] = ac_id # serial_interface.send(block, 0) while serial_interface.isAlive(): serial_interface.join(1) except (KeyboardInterrupt, SystemExit): print('Shutting down...') serial_interface.stop() exit()
def test(): import time import argparse from pprzlink import messages_xml_map parser = argparse.ArgumentParser() parser.add_argument("-f", "--file", help="path to messages.xml file") parser.add_argument("-c", "--class", help="message class of incoming messages", dest='msg_class', default='telemetry') parser.add_argument("-a", "--address", help="destination address", dest='address', default='127.0.0.1') parser.add_argument("-id", "--ac_id", help="aircraft id (receiver)", dest='ac_id', default=42, type=int) parser.add_argument("--interface_id", help="interface id (sender)", dest='id', default=0, type=int) parser.add_argument("-up", "--uplink_port", help="uplink port", dest='uplink', default=UPLINK_PORT, type=int) parser.add_argument("-dp", "--downlink_port", help="downlink port", dest='downlink', default=DOWNLINK_PORT, type=int) args = parser.parse_args() messages_xml_map.parse_messages(args.file) udp_interface = UdpMessagesInterface(lambda s, a, m: print("new message from %i (%s): %s" % (s, a, m)), uplink_port=args.uplink, downlink_port=args.downlink, msg_class=args.msg_class, interface_id=args.id, verbose=True) print("Starting UDP interface with '%s' with id '%d'" % (args.address, args.ac_id)) address = (args.address, args.uplink) try: udp_interface.start() # give the thread some time to properly start time.sleep(0.1) # send some datalink messages to aicraft for test ac_id = args.ac_id print("sending ping") ping = PprzMessage('datalink', 'PING') udp_interface.send(ping, 0, address) print("sending get_setting") get_setting = PprzMessage('datalink', 'GET_SETTING') get_setting['index'] = 0 get_setting['ac_id'] = ac_id udp_interface.send(get_setting, 0, address) # change setting with index 0 (usually the telemetry mode) print("sending setting") set_setting = PprzMessage('datalink', 'SETTING') set_setting['index'] = 0 set_setting['ac_id'] = ac_id set_setting['value'] = 1 udp_interface.send(set_setting, 0, address) # print("sending block") # block = PprzMessage('datalink', 'BLOCK') # block['block_id'] = 3 # block['ac_id'] = ac_id # udp_interface.send(block, 0, address) while udp_interface.isAlive(): udp_interface.join(1) except (KeyboardInterrupt, SystemExit): print('Shutting down...') udp_interface.stop() exit()
def __init__(self, callback=None, init=True, verbose=False, bind_regex='(.*)', ivy_bus=IVY_BUS): self.callback = callback self.ivy_id = 0 self.verbose = verbose self.ivy_bus = ivy_bus # make sure all messages are parsed before we start creating them in callbacks messages_xml_map.parse_messages() self.init_ivy(init, bind_regex)
def test(): import time import argparse from pprzlink import messages_xml_map parser = argparse.ArgumentParser() parser.add_argument("-f", "--file", help="path to messages.xml file") parser.add_argument("-c", "--class", help="message class of incoming messages", dest='msg_class', default='telemetry') parser.add_argument("-a", "--address", help="destination address", dest='address', default='127.0.0.1') parser.add_argument("-id", "--ac_id", help="aircraft id", dest='ac_id', default=42, type=int) parser.add_argument("-up", "--uplink_port", help="uplink port", dest='uplink', default=UPLINK_PORT, type=int) parser.add_argument("-dp", "--downlink_port", help="downlink port", dest='downlink', default=DOWNLINK_PORT, type=int) args = parser.parse_args() messages_xml_map.parse_messages(args.file) udp_interface = UdpMessagesInterface(lambda s, a, m: print("new message from %i (%s): %s" % (s, a, m)), uplink_port=args.uplink, downlink_port=args.downlink, msg_class=args.msg_class, verbose=True) print("Starting UDP interface with '%s' with id '%d'" % (args.address, args.ac_id)) address = (args.address, args.uplink) try: udp_interface.start() # give the thread some time to properly start time.sleep(0.1) # send some datalink messages to aicraft for test ac_id = args.ac_id print("sending ping") ping = PprzMessage('datalink', 'PING') udp_interface.send(ping, 0, address) print("sending get_setting") get_setting = PprzMessage('datalink', 'GET_SETTING') get_setting['index'] = 0 get_setting['ac_id'] = ac_id udp_interface.send(get_setting, 0, address) # change setting with index 0 (usually the telemetry mode) print("sending setting") set_setting = PprzMessage('datalink', 'SETTING') set_setting['index'] = 0 set_setting['ac_id'] = ac_id set_setting['value'] = 1 udp_interface.send(set_setting, 0, address) # print("sending block") # block = PprzMessage('datalink', 'BLOCK') # block['block_id'] = 3 # block['ac_id'] = ac_id # udp_interface.send(block, 0, address) while udp_interface.isAlive(): udp_interface.join(1) except (KeyboardInterrupt, SystemExit): print('Shutting down...') udp_interface.stop() exit()
def test(): import argparse parser = argparse.ArgumentParser() parser.add_argument("-f", "--file", help="path to messages.xml file") parser.add_argument("-c", "--class", help="message class", dest="msg_class", default="telemetry") args = parser.parse_args() messages_xml_map.parse_messages(args.file) messages = [PprzMessage(args.msg_class, n) for n in messages_xml_map.get_msgs(args.msg_class)] print("Listing %i messages in '%s' msg_class" % (len(messages), args.msg_class)) for msg in messages: print(msg)
def main(): messages_xml_map.parse_messages() #Command line options parser = argparse.ArgumentParser(description="Link_Combiner listens to the ivy messages received from multiple Link agents (set each of their -id options to a unique number), and sends a combined stream of messages to the other agents.") parser.add_argument("-b", "-buffer_size", "--buffer_size", help="The number of elements messages to be stored in the circular buffer for each link", default=10) args = parser.parse_args() global BUFFER_SIZE BUFFER_SIZE = int(args.buffer_size) #The number of elements messages to be stored in the circular buffer for each link. link_combiner = Link_Combiner()
def __init__(self, opts): messages_xml_map.parse_messages() self.run_event = threading.Event() self.uplink_port = opts.uplink_port self.downlink_port = opts.downlink_port self.udp = pprzlink.udp.UdpMessagesInterface( self.proccess_downlink_msg, False, self.uplink_port, self.downlink_port) self.ivy = pprzlink.ivy.IvyMessagesInterface("UDPLink", True, False, opts.bus) self.ac_downlink_status = {} self.rx_err = 0 self.status_timer = threading.Timer(STATUS_PERIOD, self.sendStatus) self.ping_timer = threading.Timer(PING_PERIOD, self.sendPing) self.bcast_method = opts.broadcast_method self.bcast_addr = opts.broadcast_address
def __init__(self): self.InitIvy() self.ivy_id = 0 self.status_timer = threading.Timer(STATUS_PERIOD, self.sendStatus) self.ping_timer = threading.Timer(STATUS_PERIOD, self.sendPing) self.ac_downlink_status = {} self.rx_err = 0 messages_xml_map.parse_messages() self.data_types = {'float': ['f', 4], 'uint8': ['B', 1], 'uint16': ['H', 2], 'uint32': ['L', 4], 'int8': ['b', 1], 'int16': ['h', 2], 'int32': ['l', 4] }
def __init__(self): self.InitIvy() self.ivy_id = 0 self.status_timer = threading.Timer(STATUS_PERIOD, self.sendStatus) self.ping_timer = threading.Timer(STATUS_PERIOD, self.sendPing) self.ac_downlink_status = {} self.rx_err = 0 messages_xml_map.parse_messages() self.data_types = { 'float': ['f', 4], 'uint8': ['B', 1], 'uint16': ['H', 2], 'uint32': ['L', 4], 'int8': ['b', 1], 'int16': ['h', 2], 'int32': ['l', 4] }
def __init__(self, agent_name=None, start_ivy=True, verbose=False, ivy_bus=IVY_BUS): if agent_name is None: agent_name = "IvyMessagesInterface %i" % os.getpid() self.verbose = verbose self._ivy_bus = ivy_bus self._running = False # make sure all messages are parsed before we start creating them in callbacks # the message parsing should really be redone... messages_xml_map.parse_messages() # bindings with associated callback functions self.bindings = {} IvyInit(agent_name, "READY") logging.getLogger('Ivy').setLevel(logging.WARN) if start_ivy: self.start()
def main(): ''' Real-time Fault prediction module: ''' import time import argparse from pprzlink import messages_xml_map import numpy as np parser = argparse.ArgumentParser() parser.add_argument("-f", "--file", help="path to messages.xml file", default='pprzlink/messages.xml') parser.add_argument("-c", "--class", help="message class", dest='msg_class', default='telemetry') parser.add_argument("-d", "--device", help="device name", dest='dev', default='/dev/serial0') parser.add_argument("-b", "--baudrate", help="baudrate", dest='baud', default=230400, type=int) parser.add_argument("-id", "--ac_id", help="aircraft id (receiver)", dest='ac_id', default=42, type=int) parser.add_argument("--interface_id", help="interface id (sender)", dest='id', default=0, type=int) args = parser.parse_args() messages_xml_map.parse_messages(args.file) #model_filename = 'svm_model_1.joblib' #scaler_filename = 'svm_scaler_1.joblib' #model_filename = 'models/svm_model_binary_r05.joblib' #scaler_filename = 'models/svm_scaler_binary_r05.joblib' #model_filename = 'models/svm_model_binary_r05_07072020_AGC_20h_10s.joblib' #scaler_filename = 'models/svm_scaler_binary_r05_07072020_AGC_20h_10s.joblib' #model_filename = 'models/svm_model_binary_r03_10072020_AGC_20h_10s.joblib' #scaler_filename = 'models/svm_scaler_binary_r03_10072020_AGC_20h_10s.joblib' #model_filename = 'models/svm_model_binary_r03_l03_13072020_AGC_20h_10s.joblib' #scaler_filename = 'models/svm_scaler_binary_r03_l03_13072020_AGC_20h_10s.joblib' model_filename = 'models/svm_model_binary_multi_21072020_AGC_20h_10s.joblib' scaler_filename = 'models/svm_scaler_binary_multi_21072020_AGC_20h_10s.joblib' model = Model(model_filename, scaler_filename) #collector = Data_Collector(model=model, dimension=8, history_step=20, verbose=True) collector = Data_Collector(model=model, dimension=8, history_step=20, verbose=False) serial_interface = SerialMessagesInterface(collector.parse_msg, device=args.dev, baudrate=args.baud, msg_class=args.msg_class, interface_id=args.id, verbose=False) logger = Logger() model.set_interface(serial_interface) model.set_logger(logger) print("Starting serial interface on %s at %i baud" % (args.dev, args.baud)) try: serial_interface.start() # give the thread some time to properly start time.sleep(0.1) while serial_interface.isAlive(): serial_interface.join(1) except (KeyboardInterrupt, SystemExit): print('Shutting down...') logger.close_log() serial_interface.stop() exit()