ARRka  1.05
plotswindow.cpp
Idź do dokumentacji tego pliku.
1 
8 #include "inc/plotswindow.h"
9 #include "ui_plotswindow.h"
10 #include <QDebug>
11 
12 PlotsWindow::PlotsWindow(QWidget *parent) :
13  QDialog(parent),
14  ui(new Ui::PlotsWindow)
15 {
16  ui->setupUi(this);
17  _time = 0;
18  // dodanie tytułu
19  ui->accPlot->plotLayout()->insertRow(0);
20  ui->accPlot->plotLayout()->addElement(0, 0, new QCPTextElement(ui->accPlot, tr("Osie akcelerometru"), QFont("sans", 12, QFont::Bold)));
21 
22  // dodanie grafów dla 3 osi
23  ui->accPlot->addGraph();
24  ui->accPlot->graph(0)->setPen(QPen(QColor("red")));
25  ui->accPlot->graph(0)->setName(tr("X"));
26  ui->accPlot->addGraph();
27  ui->accPlot->graph(1)->setPen(QPen(QColor("green")));
28  ui->accPlot->graph(1)->setName(tr("Y"));
29  ui->accPlot->addGraph();
30  ui->accPlot->graph(2)->setPen(QPen(QColor("blue")));
31  ui->accPlot->graph(2)->setName(tr("Z"));
32 
33  // ustawienie zegarka na osi x
34  QSharedPointer<QCPAxisTickerTime> timeTicker(new QCPAxisTickerTime);
35  timeTicker->setTimeFormat("%h:%m:%s");
36  ui->accPlot->xAxis->setTicker(timeTicker);
37  ui->accPlot->axisRect()->setupFullAxesBox();
38  ui->accPlot->xAxis->setLabel("Czas [hh:mm:ss]");
39 
40  // ustawienia osi y
41  ui->accPlot->yAxis->setRange(-2000,2000);
42  ui->accPlot->yAxis->setLabel("Przyspieszenie liniowe [mg]");
43 
44  // włączenie legendy
45  ui->accPlot->legend->setVisible(true);
46 
47  // ustawienie interakcji z użytkownikiem (przeciagnie i zoom)
48  ui->accPlot->setInteraction(QCP::iRangeDrag);
49  //ui->accPlot->axisRects().at(0)->setRangeDrag(Qt::Horizontal);
50  ui->accPlot->setInteraction(QCP::iRangeZoom);
51 
52  // przeniesienie zakresu lewej i dolnej osi na prawą i górną
53  //connect(ui->accPlot->xAxis, SIGNAL(rangeChanged(QCPRange)), ui->accPlot->xAxis2, SLOT(setRange(QCPRange)));
54  //connect(ui->accPlot->yAxis, SIGNAL(rangeChanged(QCPRange)), ui->accPlot->yAxis2, SLOT(setRange(QCPRange)));
55 
56  // dodanie tytułu
57  ui->gyroPlot->plotLayout()->insertRow(0);
58  ui->gyroPlot->plotLayout()->addElement(0, 0, new QCPTextElement(ui->gyroPlot, tr("Osie żyroskopu"), QFont("sans", 12, QFont::Bold)));
59 
60  // dodanie grafów dla 3 osi
61  ui->gyroPlot->addGraph();
62  ui->gyroPlot->graph(0)->setPen(QPen(QColor("red")));
63  ui->gyroPlot->graph(0)->setName(tr("X"));
64  ui->gyroPlot->addGraph();
65  ui->gyroPlot->graph(1)->setPen(QPen(QColor("green")));
66  ui->gyroPlot->graph(1)->setName(tr("Y"));
67  ui->gyroPlot->addGraph();
68  ui->gyroPlot->graph(2)->setPen(QPen(QColor("blue")));
69  ui->gyroPlot->graph(2)->setName(tr("Z"));
70 
71  // ustawienie zegarka na osi x
72  ui->gyroPlot->xAxis->setTicker(timeTicker);
73  ui->gyroPlot->xAxis->setLabel("Czas [hh:mm:ss]");
74  ui->gyroPlot->axisRect()->setupFullAxesBox();
75 
76  // ustawienia osi y
77  ui->gyroPlot->yAxis->setRange(-50000,50000);
78  ui->gyroPlot->yAxis->setLabel("Prędkość kątowa [mdps]");
79 
80  // włączenie legendy
81  ui->gyroPlot->legend->setVisible(true);
82 
83  // ustawienie interakcji z użytkownikiem (przeciagnie i zoom)
84  ui->gyroPlot->setInteraction(QCP::iRangeDrag);
85  ui->gyroPlot->setInteraction(QCP::iRangeZoom);
86 
87  // przeniesienie zakresu lewej i dolnej osi na prawą i górną
88  //connect(ui->gyroPlot->xAxis, SIGNAL(rangeChanged(QCPRange)), ui->gyroPlot->xAxis2, SLOT(setRange(QCPRange)));
89  //connect(ui->gyroPlot->yAxis, SIGNAL(rangeChanged(QCPRange)), ui->gyroPlot->yAxis2, SLOT(setRange(QCPRange)));
90 
91 
92 }
93 
95 {
96  delete ui;
97 }
98 
99 
101 {
102  _time+=static_cast<double>(data.time)/1000;
103 
104  ui->accPlot->graph(0)->addData(_time, data.X_XL);
105  ui->accPlot->graph(1)->addData(_time, data.Y_XL);
106  ui->accPlot->graph(2)->addData(_time, data.Z_XL);
107  ui->accPlot->xAxis->setRange(_time, 8, Qt::AlignRight);
108  ui->accPlot->replot();
109  ui->accPlot->update();
110 
111  ui->gyroPlot->graph(0)->addData(_time, data.X_G);
112  ui->gyroPlot->graph(1)->addData(_time, data.Y_G);
113  ui->gyroPlot->graph(2)->addData(_time, data.Z_G);
114  ui->gyroPlot->xAxis->setRange(_time, 8, Qt::AlignRight);
115  ui->gyroPlot->replot();
116  ui->gyroPlot->update();
117 }
int Y_XL
Wartość przyspieszenia na osi Y akcelerometru (mg)
Definition: memsdata.h:29
int Z_G
Wartość prędkości kątowej na osi Z żyroskopu (mdps)
Definition: memsdata.h:53
Definicja klasy PlotsWindow.
int Y_G
Wartość prędkości kątowej na osi Y żyroskopu (mdps)
Definition: memsdata.h:47
int X_XL
Wartość przyspieszenia na osi X akcelerometru (mg)
Definition: memsdata.h:23
Definicja przestrzeni nazw interfejsu użytkownika.
PlotsWindow(QWidget *parent=0)
Konstruktor klasy PlotsWindow.
Definition: plotswindow.cpp:12
void onControllerNewData(rawData data)
Slot obsługujący pojawienie się nowych danych.
int X_G
Wartość prędkości kątowej na osi X żyroskopu (mdps)
Definition: memsdata.h:41
int time
Czas pomiędzy odczytami (ms)
Definition: memsdata.h:59
double _time
Czas pomiaru (od kiedy dostarczane są dane)
Definition: plotswindow.h:70
Surowe dane otrzymane z kontrolera (płytki)
Definition: memsdata.h:17
Modeluje klasę PlotsWindow - okna z wykresami.
Definition: plotswindow.h:26
Ui::PlotsWindow * ui
Uchwyt do interfejsu graficznego okna.
Definition: plotswindow.h:62
int Z_XL
Wartość przyspieszenia na osi Z akcelerometru (mg)
Definition: memsdata.h:35
~PlotsWindow()
Desktruktor klasy PlotsWindow.
Definition: plotswindow.cpp:94