예제 #1
0
파일: tutils.py 프로젝트: delimitrou/Ripple
 def __init__(self, name: str, statistics: database.Statistics,
              resources: Any):
     Table.__init__(self, name, statistics, resources)
     self.entries = {}
예제 #2
0
    def __init__(self, *args, **kwargs):
        print('initializing window...')
        tk.Tk.__init__(self, *args, **kwargs)
        tk.Tk.wm_title(self, "Windkanal-Tool")

        #early response to user
        self.update_idletasks()

        print('initializing sensors...')
        self.adc = MCP3008(0, 0)
        self.pressureSensors = Spd610Array()
        self.forceSensors = LoadCells()
        self.forceSensors.start()
        self.motorController = PWM(32)
        self.pid = PID(100 / 22, 5, 1)
        self.pid.setWindup(1)

        print('initializing database...')
        Table.__init__(self, ["windspeed", "set_value", "motor_pwm"] +
                       ["pressure_{}".format(i) for i in range(8)] +
                       ["adc_{}".format(i) for i in range(1)] +
                       ["force_X_sum", "force_Y_sum", "force_Z_sum"] +
                       ["force_X_1", "force_Y_1", "force_Z_1"] +
                       ["force_X_2", "force_Y_2", "force_Z_2"] +
                       ["force_X_3", "force_Y_3", "force_Z_3"])

        print('initializing GUI...')
        self.menubar = tk.Menu(self)

        self.frameVar = tk.StringVar()
        self.menubar.add_radiobutton(indicatoron=0,
                                     variable=self.frameVar,
                                     value='Page_1',
                                     command=self.show_frame,
                                     label="Bedienelemente")
        self.menubar.add_radiobutton(indicatoron=0,
                                     variable=self.frameVar,
                                     value='Page_2',
                                     command=self.show_frame,
                                     label="Kräfte")
        self.menubar.add_radiobutton(indicatoron=0,
                                     variable=self.frameVar,
                                     value='Page_3',
                                     command=self.show_frame,
                                     label="Druck")
        self.menubar.add_radiobutton(indicatoron=0,
                                     variable=self.frameVar,
                                     value='Page_4',
                                     command=self.show_frame,
                                     label="Einstellungen")

        self.menubar.add_command(state=tk.DISABLED, label="          ")

        self.motorEnabled = tk.IntVar()
        self.menubar.add_checkbutton(
            indicatoron=0,
            variable=self.motorEnabled,
            background='#dd5252',
            label="Motor freischalten",
            command=lambda: self.menubar.entryconfigure(
                "Motor freischalten",
                background='#dd5252'
                if self.motorEnabled.get() == 0 else 'green'))
        self.motorEnabled.set(0)

        self.menubar.add_command(state=tk.DISABLED, label="          ")

        self.menubar.add_command(label="Messwerte speichern",
                                 command=self.save_dialog)
        self.menubar.add_command(label='Messwerte löschen', command=self.reset)

        self.menubar.add_command(state=tk.DISABLED, label="          ")

        self.menubar.add_command(label="Beenden",
                                 foreground="red",
                                 command=self.stop)

        tk.Tk.config(self, menu=self.menubar)

        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)

        self.frames = {}

        for F in (Page_1, Page_2, Page_3, Page_4):

            frame = F(container, self)

            self.frames[F.__name__] = frame

            frame.grid(row=0, column=0, sticky="nsew")

        self.frameVar.set('Page_1')
        self.show_frame()

        print('program ready!')

        self.windspeed = 0
        self.adcValue = 0
        self.pwmValue = 0
        self.pidDelay = 100

        self.pidThread = threading.Thread(target=self.pidThreadFunction)
        self.pidThread.daemon = True
        self.pidThread.start()

        self.intervalDelay = 300  # ms
        self.interval()