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)
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()
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)