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 //na zacatku nazname polohu
21 this->pos.positionIsActual=false;
24 pomoci timeru je kazdych 500 ms
25 vyvolan signal pro pohnuti tocitka
28 //pomocna promenna pro ASCII tocitko
31 QTimer *timer = new QTimer(this);
33 connect(timer, SIGNAL(timeout()), this, SLOT(alive()));
36 //premalovavani kompasu
37 connect(this, SIGNAL(repaintCompass()), this, SLOT(update()));
40 //sipka od uhlu natoceni
41 void DisplayQT::paintEvent(QPaintEvent *)
43 //umisteni stredu kompasu
46 int const dimension=80;
48 static const QPoint hourHand[3] = {
51 QPoint(0, -((dimension/2)-15))
56 QColor prvniColor(127, 0, 127);
57 QColor druhaColor(0, 127, 127, 191);
58 QColor pozadi(240, 240, 240);
60 QPainter painter(this);
63 painter.fillRect(x-dimension/2, y-dimension/2, dimension, dimension, pozadi);
65 painter.setRenderHint(QPainter::Antialiasing);
66 painter.translate(x,y);
68 painter.setPen(Qt::NoPen);
69 painter.setBrush(prvniColor);
72 //namalovani sipky p.t.k. je aktualni pozice
73 if(pos.positionIsActual){
74 painter.rotate(90-pos.phi);
75 painter.drawConvexPolygon(hourHand, 3);
79 //namaluju 4 cary po 90 stupnich
80 painter.setPen(prvniColor);
81 for(int i=0; i<4; i++){
82 painter.drawLine((dimension/2)-10, 0, (dimension/2)-5, 0);
86 //namaluju mensi cary mezi ty predchozi
87 painter.setPen(druhaColor);
89 for(int j=0; j<12; j++){
91 painter.drawLine((dimension/2)-12, 0, (dimension/2)-7, 0);
96 DisplayQT::~DisplayQT()
101 void DisplayQT::alive(void)
107 case 0: ui->ziju->setText("|");break;
108 case 1: ui->ziju->setText("/");break;
109 case 2: ui->ziju->setText("-");break;
110 case 3: ui->ziju->setText("\\");break;
116 void DisplayQT::setTeamColor(char color)
120 ui->our_color->setStyleSheet("background-color: blue");
123 ui->our_color->setStyleSheet("background-color: rgb(213, 40, 24)");
127 void DisplayQT::setPosition(double x, double y, double phi)
133 //prevod z radianu na stupne a uprava
134 pos.phi = RAD2DEG(pos.phi);
135 pos.phi = fmod(pos.phi, 360);
139 ui->position_x->setText("x: "+QString::number(pos.x, 10, 3)+" m");
140 ui->position_y->setText("y: "+QString::number(pos.y, 10, 3)+" m");
141 ui->position_phi->setText("phi: "+QString::number(pos.phi, 10, 1)+" deg");
143 pos.positionIsActual=true;
144 emit repaintCompass();
147 void DisplayQT::display_status(UDE_component_t c, UDE_hw_status_t s)
153 ui->comp_MOT->setStyleSheet(GREEN);
154 else if(s==STATUS_FAILED)
155 ui->comp_MOT->setStyleSheet(RED);
157 ui->comp_MOT->setStyleSheet(YELLOW);
161 ui->comp_ODO->setStyleSheet(GREEN);
162 else if(s==STATUS_FAILED)
163 ui->comp_ODO->setStyleSheet(RED);
165 ui->comp_ODO->setStyleSheet(YELLOW);
169 ui->comp_CAM->setStyleSheet(GREEN);
170 else if(s==STATUS_FAILED)
171 ui->comp_CAM->setStyleSheet(RED);
173 ui->comp_CAM->setStyleSheet(YELLOW);
177 ui->comp_PWR->setStyleSheet(GREEN);
178 else if(s==STATUS_FAILED){
179 ui->comp_PWR->setStyleSheet(RED);
181 ui->voltage_33->setText("v.33 = ?");
182 ui->voltage_50->setText("v.50 = ?");
183 ui->voltage_80->setText("v.80 = ?");
184 ui->voltage_BAT->setText("v.BAT = ?");
186 ui->voltage_33->setStyleSheet(YELLOW);
187 ui->voltage_50->setStyleSheet(YELLOW);
188 ui->voltage_80->setStyleSheet(YELLOW);
189 ui->voltage_BAT->setStyleSheet(YELLOW);
192 ui->comp_PWR->setStyleSheet(YELLOW);
196 ui->comp_HOK->setStyleSheet(GREEN);
197 else if(s==STATUS_FAILED)
198 ui->comp_HOK->setStyleSheet(RED);
200 ui->comp_HOK->setStyleSheet(YELLOW);
204 ui->comp_APP->setStyleSheet(GREEN);
205 else if(s==STATUS_FAILED){
206 ui->comp_APP->setStyleSheet(RED);
208 pos.positionIsActual=false;
209 ui->position_x->setText("x: ?");
210 ui->position_y->setText("y: ?");
211 ui->position_phi->setText("phi: ?");
212 emit repaintCompass();
215 ui->comp_APP->setStyleSheet(YELLOW);
219 ui->comp_VID->setStyleSheet(GREEN);
220 else if(s==STATUS_FAILED)
221 ui->comp_VID->setStyleSheet(RED);
223 ui->comp_VID->setStyleSheet(YELLOW);
227 ui->comp_STA->setStyleSheet(GREEN);
228 else if(s==STATUS_FAILED)
229 ui->comp_STA->setStyleSheet(RED);
231 ui->comp_STA->setStyleSheet(YELLOW);
236 void DisplayQT::display_fsm(UDE_fsm_t fsm, QString state){
240 ui->fsm_main->setText(state);
243 ui->fsm_move->setText(state);
246 ui->fsm_act->setText(state);
251 void DisplayQT::display_voltage(double voltage33, double voltage50, double voltage80, double voltageBAT){
252 ui->voltage_33->setText("v.33 = "+QString::number(voltage33, 10, 2)+" V");
253 ui->voltage_50->setText("v.50 = "+QString::number(voltage50, 10, 2)+" V");
254 ui->voltage_80->setText("v.80 = "+QString::number(voltage80, 10, 2)+" V");
255 ui->voltage_BAT->setText("v.BAT = "+QString::number(voltageBAT, 10, 2)+" V");
258 if( voltageBAT < WARNING_VOLTAGEBAT && voltageBAT > TRESHOLDS_VOLTAGEBAT )
259 ui->voltage_BAT->setStyleSheet(YELLOW);
260 else if( voltageBAT < TRESHOLDS_VOLTAGEBAT )
261 ui->voltage_BAT->setStyleSheet(RED);
263 ui->voltage_BAT->setStyleSheet(GREEN);
268 if( voltage33 < TRESHOLDS_VOLTAGE33 )
269 ui->voltage_33->setStyleSheet(YELLOW);
271 ui->voltage_33->setStyleSheet(GREEN);
273 if( voltage50 < TRESHOLDS_VOLTAGE50 )
274 ui->voltage_50->setStyleSheet(YELLOW);
276 ui->voltage_50->setStyleSheet(GREEN);
278 if( voltage80 < TRESHOLDS_VOLTAGE80 )
279 ui->voltage_80->setStyleSheet(YELLOW);
281 ui->voltage_80->setStyleSheet(GREEN);