예제 #1
0
파일: gui.py 프로젝트: kedder/kdrvario
    def __init__(self, feed):
        # load gui
        thisdir = os.path.dirname(__file__)
        gladefile = os.path.join(thisdir, "glade/main.glade")

        self.builder = gtk.Builder()
        self.builder.add_from_file(gladefile)

        self.datarate = DataRateAnalizer()

        # create and connect components
        self.hardware = Hardware(feed)
        self.pressure_plot = DataPlot()
        self.vario = Vario()

        #self.filter = AlphaBeta(1.2923, 0.86411);
        #self.filter = UnpredictingKalman(0.004, 0.5)

        self.hardware.listen("pressure", self.vario.on_pressure)
        self.hardware.listen("altitude", self.pressure_plot.on_raw_data)


        #self.distribution_plot = PressureDistributionPlot()
        #self.hardware.listen("pressure", self.distribution_plot.on_raw_data)

        #self.vario.listen("altitude", lambda k, v: self.filter.accept(v))
        self.hardware.listen("filtered", self.pressure_plot.on_filtered_data)

        self.hardware.listen("temp", self.on_temperature)
        self.hardware.listen("pressure", self.on_raw_pressure)
        self.hardware.listen("altitude", self.on_altitude)
        self.hardware.listen("filtered", self.on_filtered)
        self.hardware.listen("velocity", self.on_vario)
예제 #2
0
                                            len(dfull_traj[degree]), freq)
            degree += 1
        print(
            "----------------------------------Finished reading data-------------------------------------------"
        )

        # choose what kind of data to paint
        PaintXYZ = False  # paint the xyz change according to time
        PaintRaw = False  # paint 3D raw data as scatter points
        PaintDMP = True  # paint 3D raw data and data processed by DMP as scatter points
        PaintPaper = False  # plot DMP processed points on 2D
        PaintSegment = False  # plot strokes on 2D
        PaintSeg_XZ = False  # segment D and plot stroke2 of D in x according to time
        Creat_letter = False  # segment D and sue it to create P/B/D

        plot = DataPlot(name, full_traj, dfull_traj, ddfull_traj)
        # if PaintXYZ == True:
        #     plot.paint_xyz()
        # if PaintRaw == True:
        #     plot.paint_raw()
        # if PaintDMP == True:
        #     plot.paint_dmp()
        # if PaintPaper == True:
        #     plot.paint_paper()
        # if PaintSegment == True:
        #     plot.paint_segment()
        # if PaintSeg_XZ == True:
        #     plot.paint_seg_xz()
        # if Creat_letter == True:
        #     plot.create_letter()
예제 #3
0
파일: gui.py 프로젝트: kedder/kdrvario
class Gui(object):
    builder = None
    hardware = None
    vario = None

    datarate = None

    pressure_plot = None
    distribution_plot = None

    def __init__(self, feed):
        # load gui
        thisdir = os.path.dirname(__file__)
        gladefile = os.path.join(thisdir, "glade/main.glade")

        self.builder = gtk.Builder()
        self.builder.add_from_file(gladefile)

        self.datarate = DataRateAnalizer()

        # create and connect components
        self.hardware = Hardware(feed)
        self.pressure_plot = DataPlot()
        self.vario = Vario()

        #self.filter = AlphaBeta(1.2923, 0.86411);
        #self.filter = UnpredictingKalman(0.004, 0.5)

        self.hardware.listen("pressure", self.vario.on_pressure)
        self.hardware.listen("altitude", self.pressure_plot.on_raw_data)


        #self.distribution_plot = PressureDistributionPlot()
        #self.hardware.listen("pressure", self.distribution_plot.on_raw_data)

        #self.vario.listen("altitude", lambda k, v: self.filter.accept(v))
        self.hardware.listen("filtered", self.pressure_plot.on_filtered_data)

        self.hardware.listen("temp", self.on_temperature)
        self.hardware.listen("pressure", self.on_raw_pressure)
        self.hardware.listen("altitude", self.on_altitude)
        self.hardware.listen("filtered", self.on_filtered)
        self.hardware.listen("velocity", self.on_vario)

    def run(self):
        window = self.builder.get_object('main_window')
        self.builder.connect_signals(self)


        figures = self.builder.get_object('figures')
        figures.add(self.pressure_plot.get_canvas())
        #figures.add(self.distribution_plot.get_canvas())

        #lbl = gtk.Label("Hello")
        #figures.add(lbl)

        self.hardware.open()
        window.show_all()
        gtk.idle_add(self.on_idle)
        gtk.main()

    def on_temperature(self, key, value):
        self.set_label('temperature', "%s °C" % (float(value) / 10))

    def on_raw_pressure(self, key, value):
        raw_pressure = int(value)

        self.set_label('raw_pressure', self.format_pressure(raw_pressure))

    def on_filtered(self, key, altitude):
        #self.set_label('filtered_pressure', self.format_pressure(pressure))
        #alt = self.vario.pressure_to_alt(pressure)
        self.set_label("altitude", "%.2f m" % altitude)

    def on_altitude(self, key, altitude):
        self.set_label('raw_altitude', "%.2fm" % altitude)

        self.datarate.tick()
        if self.datarate.rate:
            lbl = self.builder.get_object('datarate')
            lbl.set_text("%.2f Hz" % (self.datarate.rate))


    def on_vario(self, key, vario):
        self.set_label("vario", "%s%.1f m/s" % (vario >= 0 and '↑' or '↓', abs(vario)))

    def on_idle(self):
        self.hardware.read()
        #print "Idle"
        return True

    def on_main_window_destroy(self, widget, data=None):
        gtk.main_quit()

    def format_pressure(self, pressure):
        return  "%.2f hPa" % (float(pressure) / 100.0)
    def quit(self, widget):
		sys.exit(0)

    def set_label(self, id, value):
        lbl = self.builder.get_object(id)
        lbl.set_text(value)