2 #include "ui_displayqt.h"
9 //backround colors for labels
10 #define GREEN "background-color:rgb(27, 255, 11)"
11 #define RED "background-color:red"
12 #define YELLOW "background-color:yellow"
14 DisplayQT::DisplayQT(QWidget *parent) :
20 /* create the window without the title bar */
21 Qt::WindowFlags flags = this->windowFlags();
22 flags |= Qt::FramelessWindowHint;
23 this->setWindowFlags(flags);
25 //cursor will be hidden
26 setCursor(QCursor(Qt::BlankCursor));
28 //na zacatku nazname polohu
29 this->pos.positionIsActual=false;
32 pomoci timeru je kazdych 500 ms
33 vyvolan signal pro pohnuti tocitka
36 QTimer *timer = new QTimer(this);
38 connect(timer, SIGNAL(timeout()), this, SLOT(alive()));
41 //premalovavani kompasu
42 connect(this, SIGNAL(repaintCompass()), this, SLOT(update()));
45 //sipka od uhlu natoceni
46 void DisplayQT::paintEvent(QPaintEvent *)
48 //umisteni stredu kompasu
51 int const dimension=80;
53 static const QPoint arrow[3] = {
56 QPoint(0, -((dimension/2)-15))
61 QColor prvniColor(127, 0, 127);
62 QColor druhaColor(0, 127, 127, 191);
63 QColor pozadi(240, 240, 240);
65 QPainter painter(this);
68 painter.fillRect(x-dimension/2, y-dimension/2, dimension, dimension, pozadi);
70 painter.setRenderHint(QPainter::Antialiasing);
71 painter.translate(x,y);
73 painter.setPen(Qt::NoPen);
74 painter.setBrush(prvniColor);
77 //namalovani sipky p.t.k. je aktualni pozice
78 if(pos.positionIsActual){
79 painter.rotate(90-pos.phi);
80 painter.drawConvexPolygon(arrow, 3);
84 //namaluju 4 cary po 90 stupnich
85 painter.setPen(prvniColor);
86 for(int i=0; i<4; i++){
87 painter.drawLine((dimension/2)-10, 0, (dimension/2)-5, 0);
91 //namaluju mensi cary mezi ty predchozi
92 painter.setPen(druhaColor);
94 for(int j=0; j<12; j++){
96 painter.drawLine((dimension/2)-12, 0, (dimension/2)-7, 0);
101 DisplayQT::~DisplayQT()
106 void DisplayQT::alive(void)
108 static char aliveState=0;
113 case 0: ui->ziju->setText("|");break;
114 case 1: ui->ziju->setText("/");break;
115 case 2: ui->ziju->setText("-");break;
116 case 3: ui->ziju->setText("\\");break;
120 void DisplayQT::display_time(double time) {
122 this->match_time = 90 - time;
124 ui->matchTime->display(match_time);
129 void DisplayQT::setTeamColor(char color)
133 ui->our_color->setStyleSheet("background-color: rgb(213, 40, 24)");
136 ui->our_color->setStyleSheet("background-color: blue");
140 void DisplayQT::setPosition(double x, double y, double phi)
146 //prevod z radianu na stupne a uprava
147 pos.phi = RAD2DEG(pos.phi);
148 pos.phi = fmod(pos.phi, 360);
152 ui->position_x->setText("x: "+QString::number(pos.x, 10, 3)+" m");
153 ui->position_y->setText("y: "+QString::number(pos.y, 10, 3)+" m");
154 ui->position_phi->setText("phi: "+QString::number(pos.phi, 10, 1)+" deg");
156 pos.positionIsActual=true;
157 emit repaintCompass();
160 void DisplayQT::display_status(UDE_component_t c, UDE_hw_status_t s)
166 ui->comp_MOT->setStyleSheet(GREEN);
167 else if(s==STATUS_FAILED)
168 ui->comp_MOT->setStyleSheet(RED);
170 ui->comp_MOT->setStyleSheet(YELLOW);
174 ui->comp_ODO->setStyleSheet(GREEN);
175 else if(s==STATUS_FAILED)
176 ui->comp_ODO->setStyleSheet(RED);
178 ui->comp_ODO->setStyleSheet(YELLOW);
182 ui->comp_JAW->setStyleSheet(GREEN);
183 else if(s==STATUS_FAILED)
184 ui->comp_JAW->setStyleSheet(RED);
186 ui->comp_JAW->setStyleSheet(YELLOW);
190 ui->comp_PWR->setStyleSheet(GREEN);
191 else if(s==STATUS_FAILED){
192 ui->comp_PWR->setStyleSheet(RED);
194 ui->voltage_33->setText("v.33 = ?");
195 ui->voltage_50->setText("v.50 = ?");
196 ui->voltage_80->setText("v.80 = ?");
197 ui->voltage_BAT->setText("v.BAT = ?");
199 ui->voltage_33->setStyleSheet(YELLOW);
200 ui->voltage_50->setStyleSheet(YELLOW);
201 ui->voltage_80->setStyleSheet(YELLOW);
202 ui->voltage_BAT->setStyleSheet(YELLOW);
205 ui->comp_PWR->setStyleSheet(YELLOW);
209 ui->comp_HOK->setStyleSheet(GREEN);
210 else if(s==STATUS_FAILED)
211 ui->comp_HOK->setStyleSheet(RED);
213 ui->comp_HOK->setStyleSheet(YELLOW);
217 ui->comp_APP->setStyleSheet(GREEN);
218 else if(s==STATUS_FAILED){
219 ui->comp_APP->setStyleSheet(RED);
221 pos.positionIsActual=false;
222 ui->position_x->setText("x: ?");
223 ui->position_y->setText("y: ?");
224 ui->position_phi->setText("phi: ?");
225 emit repaintCompass();
228 ui->comp_APP->setStyleSheet(YELLOW);
232 ui->comp_LFT->setStyleSheet(GREEN);
233 else if(s==STATUS_FAILED)
234 ui->comp_LFT->setStyleSheet(RED);
236 ui->comp_LFT->setStyleSheet(YELLOW);
240 ui->comp_STA->setStyleSheet(GREEN);
241 else if(s==STATUS_FAILED)
242 ui->comp_STA->setStyleSheet(RED);
244 ui->comp_STA->setStyleSheet(YELLOW);
249 void DisplayQT::display_fsm(UDE_fsm_t fsm, QString state){
253 ui->fsm_main->setText(state);
256 ui->fsm_move->setText(state);
259 ui->fsm_act->setText(state);
264 void DisplayQT::display_voltage(double voltage33, double voltage50, double voltage80, double voltageBAT){
265 ui->voltage_33->setText("v.33 = "+QString::number(voltage33, 10, 2)+" V");
266 ui->voltage_50->setText("v.50 = "+QString::number(voltage50, 10, 2)+" V");
267 ui->voltage_80->setText("v.80 = "+QString::number(voltage80, 10, 2)+" V");
268 ui->voltage_BAT->setText("v.BAT = "+QString::number(voltageBAT, 10, 2)+" V");
271 if( voltageBAT < WARNING_VOLTAGEBAT && voltageBAT > TRESHOLDS_VOLTAGEBAT )
272 ui->voltage_BAT->setStyleSheet(YELLOW);
273 else if( voltageBAT < TRESHOLDS_VOLTAGEBAT )
274 ui->voltage_BAT->setStyleSheet(RED);
276 ui->voltage_BAT->setStyleSheet(GREEN);
278 if( voltage33 < TRESHOLDS_VOLTAGE33 )
279 ui->voltage_33->setStyleSheet(YELLOW);
281 ui->voltage_33->setStyleSheet(GREEN);
283 if( voltage50 < TRESHOLDS_VOLTAGE50 )
284 ui->voltage_50->setStyleSheet(YELLOW);
286 ui->voltage_50->setStyleSheet(GREEN);
288 if( voltage80 < TRESHOLDS_VOLTAGE80 )
289 ui->voltage_80->setStyleSheet(YELLOW);
291 ui->voltage_80->setStyleSheet(GREEN);