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) :
22 /* create the window without the title bar */
23 Qt::WindowFlags flags = this->windowFlags();
24 flags |= Qt::FramelessWindowHint;
25 this->setWindowFlags(flags);
27 //cursor will be hidden
28 setCursor(QCursor(Qt::BlankCursor));
31 //na zacatku nazname polohu
32 this->pos.positionIsActual=false;
35 pomoci timeru je kazdych 500 ms
36 vyvolan signal pro pohnuti tocitka
39 QTimer *timer = new QTimer(this);
41 connect(timer, SIGNAL(timeout()), this, SLOT(alive()));
44 //premalovavani kompasu
45 connect(this, SIGNAL(repaintCompass()), this, SLOT(update()));
48 //sipka od uhlu natoceni
49 void DisplayQT::paintEvent(QPaintEvent *)
51 //umisteni stredu kompasu
54 int const dimension=80;
56 static const QPoint arrow[3] = {
59 QPoint(0, -((dimension/2)-15))
64 QColor prvniColor(127, 0, 127);
65 QColor druhaColor(0, 127, 127, 191);
66 QColor pozadi(240, 240, 240);
68 QPainter painter(this);
71 painter.fillRect(x-dimension/2, y-dimension/2, dimension, dimension, pozadi);
73 painter.setRenderHint(QPainter::Antialiasing);
74 painter.translate(x,y);
76 painter.setPen(Qt::NoPen);
77 painter.setBrush(prvniColor);
80 //namalovani sipky p.t.k. je aktualni pozice
81 if(pos.positionIsActual){
82 painter.rotate(90-pos.phi);
83 painter.drawConvexPolygon(arrow, 3);
87 //namaluju 4 cary po 90 stupnich
88 painter.setPen(prvniColor);
89 for(int i=0; i<4; i++){
90 painter.drawLine((dimension/2)-10, 0, (dimension/2)-5, 0);
94 //namaluju mensi cary mezi ty predchozi
95 painter.setPen(druhaColor);
97 for(int j=0; j<12; j++){
99 painter.drawLine((dimension/2)-12, 0, (dimension/2)-7, 0);
100 painter.rotate(30.0);
104 DisplayQT::~DisplayQT()
109 void DisplayQT::alive(void)
111 static char aliveState=0;
116 case 0: ui->ziju->setText("|");break;
117 case 1: ui->ziju->setText("/");break;
118 case 2: ui->ziju->setText("-");break;
119 case 3: ui->ziju->setText("\\");break;
123 void DisplayQT::display_time(double time)
125 ui->matchTime->display(time);
129 void DisplayQT::setTeamColor(char color)
133 ui->our_color->setStyleSheet("background-color: white");
134 ui->our_color->setText("A3");
137 ui->our_color->setStyleSheet("background-color: white");
138 ui->our_color->setText("D3");
143 void DisplayQT::setPosition(double x, double y, double phi)
149 //prevod z radianu na stupne a uprava
150 pos.phi = RAD2DEG(pos.phi);
151 pos.phi = fmod(pos.phi, 360);
155 ui->position_x->setText("x: "+QString::number(pos.x, 10, 3)+" m");
156 ui->position_y->setText("y: "+QString::number(pos.y, 10, 3)+" m");
157 ui->position_phi->setText("phi: "+QString::number(pos.phi, 10, 1)+" deg");
159 pos.positionIsActual=true;
160 emit repaintCompass();
163 void DisplayQT::display_status(UDE_component_t c, UDE_hw_status_t s)
168 if(s==UDE_HW_STATUS_OK)
169 ui->comp_MOT->setStyleSheet(GREEN);
170 else if(s==UDE_HW_STATUS_FAILED)
171 ui->comp_MOT->setStyleSheet(RED);
173 ui->comp_MOT->setStyleSheet(YELLOW);
176 if(s==UDE_HW_STATUS_OK)
177 ui->comp_ODO->setStyleSheet(GREEN);
178 else if(s==UDE_HW_STATUS_FAILED)
179 ui->comp_ODO->setStyleSheet(RED);
181 ui->comp_ODO->setStyleSheet(YELLOW);
184 if(s==UDE_HW_STATUS_OK)
185 ui->comp_JAW->setStyleSheet(GREEN);
186 else if(s==UDE_HW_STATUS_FAILED)
187 ui->comp_JAW->setStyleSheet(RED);
189 ui->comp_JAW->setStyleSheet(YELLOW);
192 if(s==UDE_HW_STATUS_OK)
193 ui->comp_PWR->setStyleSheet(GREEN);
194 else if(s==UDE_HW_STATUS_FAILED){
195 ui->comp_PWR->setStyleSheet(RED);
197 ui->voltage_33->setText("v.33 = ?");
198 ui->voltage_50->setText("v.50 = ?");
199 ui->voltage_80->setText("v.80 = ?");
200 ui->voltage_BAT->setText("v.BAT = ?");
202 ui->voltage_33->setStyleSheet(YELLOW);
203 ui->voltage_50->setStyleSheet(YELLOW);
204 ui->voltage_80->setStyleSheet(YELLOW);
205 ui->voltage_BAT->setStyleSheet(YELLOW);
208 ui->comp_PWR->setStyleSheet(YELLOW);
211 if(s==UDE_HW_STATUS_OK)
212 ui->comp_HOK->setStyleSheet(GREEN);
213 else if(s==UDE_HW_STATUS_FAILED)
214 ui->comp_HOK->setStyleSheet(RED);
216 ui->comp_HOK->setStyleSheet(YELLOW);
219 if(s==UDE_HW_STATUS_OK)
220 ui->comp_APP->setStyleSheet(GREEN);
221 else if(s==UDE_HW_STATUS_FAILED){
222 ui->comp_APP->setStyleSheet(RED);
224 pos.positionIsActual=false;
225 ui->position_x->setText("x: ?");
226 ui->position_y->setText("y: ?");
227 ui->position_phi->setText("phi: ?");
228 emit repaintCompass();
231 ui->comp_APP->setStyleSheet(YELLOW);
234 if(s==UDE_HW_STATUS_OK)
235 ui->comp_SIC->setStyleSheet(GREEN);
236 else if(s==UDE_HW_STATUS_FAILED)
237 ui->comp_SIC->setStyleSheet(RED);
239 ui->comp_SIC->setStyleSheet(YELLOW);
242 if(s==UDE_HW_STATUS_OK)
243 ui->comp_STA->setStyleSheet(GREEN);
244 else if(s==UDE_HW_STATUS_FAILED)
245 ui->comp_STA->setStyleSheet(RED);
247 ui->comp_STA->setStyleSheet(YELLOW);
250 if(s==UDE_HW_STATUS_OK)
251 ui->matchTime->setStyleSheet(GREEN);
252 else if(s==UDE_HW_STATUS_FAILED)
253 ui->matchTime->setStyleSheet(RED);
255 ui->matchTime->setStyleSheet(YELLOW);
260 void DisplayQT::display_fsm(UDE_fsm_t fsm, QString state){
264 ui->fsm_main->setText(state);
267 ui->fsm_move->setText(state);
270 ui->fsm_act->setText(state);
275 void DisplayQT::display_voltage(double voltage33, double voltage50, double voltage80, double voltageBAT){
276 ui->voltage_33->setText("v.33 = "+QString::number(voltage33, 10, 2)+" V");
277 ui->voltage_50->setText("v.50 = "+QString::number(voltage50, 10, 2)+" V");
278 ui->voltage_80->setText("v.80 = "+QString::number(voltage80, 10, 2)+" V");
279 ui->voltage_BAT->setText("v.BAT = "+QString::number(voltageBAT, 10, 2)+" V");
282 if( voltageBAT < WARNING_VOLTAGEBAT && voltageBAT > TRESHOLDS_VOLTAGEBAT )
283 ui->voltage_BAT->setStyleSheet(YELLOW);
284 else if( voltageBAT < TRESHOLDS_VOLTAGEBAT )
285 ui->voltage_BAT->setStyleSheet(RED);
287 ui->voltage_BAT->setStyleSheet(GREEN);
289 if( voltage33 < TRESHOLDS_VOLTAGE33 )
290 ui->voltage_33->setStyleSheet(YELLOW);
292 ui->voltage_33->setStyleSheet(GREEN);
294 if( voltage50 < TRESHOLDS_VOLTAGE50 )
295 ui->voltage_50->setStyleSheet(YELLOW);
297 ui->voltage_50->setStyleSheet(GREEN);
299 if( voltage80 < TRESHOLDS_VOLTAGE80 )
300 ui->voltage_80->setStyleSheet(YELLOW);
302 ui->voltage_80->setStyleSheet(GREEN);