Exemplo n.º 1
0
#!/usr/bin/env python3

import manager
import serialmanager
import plotter

if __name__ == '__main__':
    dt1 = manager.DataType('test1', int)
    dt2 = manager.DataType('test2', float, units="foo")
    dt3 = manager.DataType('test3', str, False)
    dt4 = manager.DataType('test4', float)
    dt5 = manager.DataType('test5', str, False)
    dt6 = manager.DataType('test6', float)
    dt7 = manager.DataType('test7', float)
    dt8 = manager.DataType('test8', float)
    d = manager.Dispatcher(dt1, dt2, dt3, dt4, dt5, dt6, dt7, dt8)
    m = manager.DataManager(d)
    plot1 = plotter.DynamicUpdatePlot(m, dt6)
    plot2 = plotter.DynamicUpdatePlot(m, dt8)
    serial_in = serialmanager.SerialManager(d, serialmanager.serial_ports()[0])
    
    m.start()
    while True:
        serial_in.handleInput()
        m.update_all_listeners()
Exemplo n.º 2
0
    def __init__(self, dispatcher, manager, plots, master=None, **flags):
        self.dispatcher = dispatcher
        self.manager = manager
        self.plots = plots
        self.master = master

        # Default values
        new_flags = {'send_with_newline_default': False,
                     'show_current_values': True,
                     'show_send_value': True,
                     'full_screen': False,
                     'backup_log': ".temp_log.json",
                     'serial_console_height': 15,
                     'default_baud': 9600}
        new_flags.update(flags)
        self.flags = new_flags

        # Command-line flags
        parser = argparse.ArgumentParser()
        parser.add_argument('filename',
                            nargs='?',
                            help="default file to open, if provided")
        parser.add_argument('-F','--full-screen',
                            action='store_true',
                            default=self.flags['full_screen'],
                            help="open the gui in full screen mode if requested")
        parser.add_argument('-p','--port',
                            help="default port to open")
        args = parser.parse_args()
        self.flags['full_screen'] = args.full_screen

        # Init gui
        Frame.__init__(self, master)
        self.pack()
        #master.iconbitmap('telemetry.png')
        master.attributes("-fullscreen", self.flags['full_screen'])
        master.bind('<Escape>', self.unmaximize)
        master.wm_title("Telemetry monitor")
        self.createWidgets()
        self.manager.add_listener("sys time", self.saveBackup)

        # Start reading from Serial
        self.serialManager = None
        self.checkSerial()
        self.baud.set(str(self.flags['default_baud']))
        self.serialPort.trace('w', self.changeSerial)
        self.baud.trace('w', self.changeSerial)
        ports = serialmanager.serial_ports()
        if args.port:
            if args.port in ports:
                self.serialPort.set(args.port)
            else:
                parser.error("Invalid serial port " + args.port)
        elif ports:
            self.serialPort.set(ports[0])

        self.startListeners()

        # Open a file if requested from command line
        if args.filename:
            extension = args.filename.split(".")[-1].lower()
            if extension not in ["json", "log", "csv"]:
                parser.error("Invalid file extension \"." + extension + "\"\n" +
                             "Legal formats are json, log, csv")
            else:
                self.reset()
                try:
                    if self.manager.load(extension, open(args.filename).read(), self, self.colorStreams['red']):
                        self.controlButton.config(text="Reset", bg="grey", command=self.reset)
                    else:
                        parser.error("Invalid data file")
                except FileNotFoundError:
                    parser.error("File " + args.filename + " not found")
Exemplo n.º 3
0
 def checkSerial(self):
     self.serialSelect['menu'].delete(0, 'end')
     for port in serialmanager.serial_ports():
         self.serialSelect['menu'].add_command(label=port, command=lambda p=port: self.serialPort.set(p))
Exemplo n.º 4
0
#!/usr/bin/env python3

import manager
import serialmanager
import plotter

if __name__ == '__main__':
    dt1 = manager.DataType('test1', int)
    dt2 = manager.DataType('test2', float, units="foo")
    dt3 = manager.DataType('test3', str, False)
    dt4 = manager.DataType('test4', float)
    dt5 = manager.DataType('test5', str, False)
    dt6 = manager.DataType('test6', float)
    dt7 = manager.DataType('test7', float)
    dt8 = manager.DataType('test8', float)
    d = manager.Dispatcher(dt1, dt2, dt3, dt4, dt5, dt6, dt7, dt8)
    m = manager.DataManager(d)
    plot1 = plotter.DynamicUpdatePlot(m, dt6)
    plot2 = plotter.DynamicUpdatePlot(m, dt8)
    serial_in = serialmanager.SerialManager(d, serialmanager.serial_ports()[0])

    m.start()
    while True:
        serial_in.handleInput()
        m.update_all_listeners()