From 5a058dd18cd0506b481daea6d713ac41a245b3f8 Mon Sep 17 00:00:00 2001 From: Tristan Krause Date: Fri, 5 Apr 2019 08:47:06 +0200 Subject: [PATCH] monitor geht --- driver/Makefile | 4 ++-- driver/cli | Bin 78776 -> 84440 bytes driver/cli.cpp | 16 +++++++++++++- driver/ui/view_monitor.cpp | 44 +++++++++++++++++++++++++++++++++++++ driver/ui/view_monitor.h | 22 +++++++++++++++++++ 5 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 driver/ui/view_monitor.cpp create mode 100644 driver/ui/view_monitor.h diff --git a/driver/Makefile b/driver/Makefile index 3dbeb0c..723f21f 100644 --- a/driver/Makefile +++ b/driver/Makefile @@ -12,9 +12,9 @@ OBJ_MAIN = main.o OUT_CLI = cli OBJ_CLI = cli.o CFLAGS = -std=c++14 -O3 -Wall -Wextra -LDFLAGS = -lcurses +LDFLAGS = -lcurses -lpthread OBJECTS_DRV = drv/usart.o drv/b15f.o drv/plottyfile.o drv/dot.o -OBJECTS_UI = ui/view.o ui/view_selection.o ui/view_info.o +OBJECTS_UI = ui/view.o ui/view_selection.o ui/view_info.o ui/view_monitor.o COMPILE = $(COMPILER_PATH) $(CFLAGS) diff --git a/driver/cli b/driver/cli index 9cbf19d1cf7a96790b658eef2b3b717144b7c7f2..ee76f2f6f89617efe5bcb251f61648bbdcda4bfa 100755 GIT binary patch delta 35264 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 LTr#Pv-1h$i#H1~= delta 30551 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 QbpF diff --git a/driver/cli.cpp b/driver/cli.cpp index dc7e688..391a125 100644 --- a/driver/cli.cpp +++ b/driver/cli.cpp @@ -1,7 +1,7 @@ /** TODO * * - throw exception -> raise SIGINT - * + * - delete view stack */ @@ -16,6 +16,7 @@ #include #include "ui/view_selection.h" #include "ui/view_info.h" +#include "ui/view_monitor.h" //#include "drv/b15f.h" // global error message @@ -113,10 +114,23 @@ void show_info(int) input(0); } +void show_monitor(int) +{ + ViewMonitor* view = new ViewMonitor(); + view->setTitle("Monitor"); + view->setText("U0 = "); + view->setLabelClose("[ Zurueck ]"); + view->repaint(); + + win_stack.push_back(view); + input(0); +} + void show_main(int) { ViewSelection* view = new ViewSelection(); view->setTitle("B15F - Command Line Interface"); + view->addChoice("[ Monitor - Eingaben beobachten ]", &show_monitor); view->addChoice("[ Informationen ]", &show_info); view->addChoice("", nullptr); view->addChoice("[ Beenden ]", &finish); diff --git a/driver/ui/view_monitor.cpp b/driver/ui/view_monitor.cpp new file mode 100644 index 0000000..96d808e --- /dev/null +++ b/driver/ui/view_monitor.cpp @@ -0,0 +1,44 @@ +#include "view_monitor.h" + +ViewMonitor::ViewMonitor() : t_worker(&ViewMonitor::worker, this) +{ +} + +std::function ViewMonitor::keypress(int& key) +{ + switch(key) + { + + case KEY_MOUSE: + { + // http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml + MEVENT event; + if(getmouse(&event) == OK && event.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED)) + { + size_t column = start_x + close_offset_x; + size_t row = start_y + close_offset_y; + if(event.y == row && event.x >= column && event.x < column + label_close.length()) + key = -1; // do return from view + } + break; + } + case KEY_ENT: + run_worker = false; + key = -1; // do return from view + wclear(win); + wrefresh(win); + t_worker.join(); + break; + default: + break; + } + return calls[0]; +} + +void ViewMonitor::worker() +{ + while(run_worker) + { + std::this_thread::sleep_for(std::chrono::seconds(1)); + } +} diff --git a/driver/ui/view_monitor.h b/driver/ui/view_monitor.h new file mode 100644 index 0000000..5c9e0e0 --- /dev/null +++ b/driver/ui/view_monitor.h @@ -0,0 +1,22 @@ +#ifndef VIEW_MONITOR_H +#define VIEW_MONITOR_H + +#include +#include +#include "view_info.h" + +class ViewMonitor : public ViewInfo +{ + +public: + ViewMonitor(void); + virtual std::function keypress(int& key) override; + +protected: + virtual void worker(void); + volatile bool run_worker = true; + std::thread t_worker; + +}; + +#endif // VIEW_MONITOR_H