Subversion Repositories Projects

Rev

Rev 199 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 199 Rev 227
Line 24... Line 24...
24
#include <QTimer>
24
#include <QTimer>
25
#include <QIcon>
25
#include <QIcon>
26
#include <QToolButton>
26
#include <QToolButton>
27
#include <QSpinBox>
27
#include <QSpinBox>
28
#include <QAction>
28
#include <QAction>
-
 
29
#include <QPalette>
Line 29... Line 30...
29
 
30
 
30
#include "mktool.h"
31
#include "mktool.h"
31
#include "dlg_Config.h"
32
#include "dlg_Config.h"
32
#include "dlg_Motortest.h"
33
#include "dlg_Motortest.h"
33
#include "dlg_Preferences.h"
34
#include "dlg_Preferences.h"
34
#include "../global.h"
35
#include "../global.h"
Line 35... Line 36...
35
#include "../ToolBox.h"
36
#include "../Classes/ToolBox.h"
Line 36... Line 37...
36
 
37
 
37
#include <stdlib.h>
38
#include <stdlib.h>
Line 54... Line 55...
54
void MKTool::init_GUI()
55
void MKTool::init_GUI()
55
{
56
{
56
    setWindowTitle(QA_NAME + " v" + QA_VERSION);
57
    setWindowTitle(QA_NAME + " v" + QA_VERSION);
Line 57... Line 58...
57
 
58
 
-
 
59
    // Tab mit Debug-Elementen verbergen
-
 
60
     tab_Main->removeTab(6);
-
 
61
 
58
    // Tab mit Debug-Elementen verbergen
62
    // Tab mit Wegpunkte-Elementen verbergen
Line 59... Line 63...
59
    tab_Main->removeTab(5);
63
     tab_Main->removeTab(5);
60
 
64
 
-
 
65
    // Settings-Tab hinzufügen.
61
    // Settings-Tab hinzufügen.
66
    f_Settings = new wdg_Settings( this );
62
    f_Settings = new wdg_Settings( this );
67
    f_Settings->set_Config(Settings);
Line 63... Line 68...
63
    tab_Main->insertTab ( 2, f_Settings, "FC-Settings");
68
    tab_Main->insertTab ( 2, f_Settings, ac_View2->icon(), "FC-Settings");
64
    tab_Main->widget(2)->setObjectName("Tab_2");
-
 
65
 
-
 
66
    // Develop - Nicht gebrauchte sachen abschalten.
69
    tab_Main->widget(2)->setObjectName("Tab_2");
67
    box_Flugdaten->hide();
70
 
68
    box_System->hide();
71
    // Develop - Nicht gebrauchte sachen abschalten.
Line 69... Line 72...
69
    pb_SettingsReset->hide();
72
    pb_SettingsReset->hide();
70
    pb_Flash->hide();
73
    pb_Flash->hide();
71
    rb_NC->hide();
74
    rb_NC->hide();
72
 
-
 
73
    // Zusätzliche Widgets in die Toolbar.
75
 
74
    toolBar->addWidget(lb_Port);
76
    // Zusätzliche Widgets in die Toolbar.
75
    toolBar->addWidget(le_Port);
77
    tb_TTY->addWidget(lb_Port);
76
    toolBar->addSeparator();
78
    tb_TTY->addWidget(le_Port);
-
 
79
 
-
 
80
    tb_Hardware->addWidget(rb_SelFC);
-
 
81
    tb_Hardware->addWidget(rb_SelNC);
-
 
82
    tb_Hardware->addWidget(rb_SelMag);
-
 
83
 
-
 
84
    tb_Allgemein->setVisible(Settings->GUI.ToolViews[0]);
Line 77... Line 85...
77
 
85
    tb_Werkzeuge->setVisible(Settings->GUI.ToolViews[1]);
Line -... Line 86...
-
 
86
    tb_Debug->setVisible(Settings->GUI.ToolViews[2]);
-
 
87
    tb_TTY->setVisible(Settings->GUI.ToolViews[3]);
-
 
88
    tb_Hardware->setVisible(Settings->GUI.ToolViews[4]);
-
 
89
 
-
 
90
    lb_Status->setText(tr("Hallo bei QMK-Groundstation...!!!"));
-
 
91
 
-
 
92
    QPalette newPalette;
-
 
93
 
-
 
94
    newPalette.setColor(QPalette::Base, Qt::darkBlue);
-
 
95
    newPalette.setColor(QPalette::Foreground, QColor(Qt::darkBlue).dark(120));
-
 
96
    newPalette.setColor(QPalette::Text, Qt::white);
-
 
97
 
-
 
98
    Compass->setScaleOptions(QwtDial::ScaleTicks | QwtDial::ScaleLabel);
-
 
99
    Compass->setScaleTicks(0, 0, 3);
-
 
100
    Compass->setScale(36, 5, 0);
-
 
101
 
-
 
102
//    Compass->setNeedle(new QwtCompassMagnetNeedle(QwtCompassMagnetNeedle::ThinStyle));
-
 
103
    Compass->setNeedle(new QwtDialSimpleNeedle(QwtDialSimpleNeedle::Arrow, true, Qt::red, QColor(Qt::gray).light(130)));
-
 
104
    Compass->setPalette(newPalette);
-
 
105
    Compass->setMaximumSize(QSize(MeterSize, MeterSize));
-
 
106
    Compass->setMinimumSize(QSize(MeterSize, MeterSize));
-
 
107
 
-
 
108
    QPalette newPalette1;
-
 
109
 
-
 
110
    newPalette1.setColor(QPalette::Base, Qt::darkBlue);
-
 
111
    newPalette1.setColor(QPalette::Foreground, QColor(255,128,0).dark(120));
-
 
112
    newPalette1.setColor(QPalette::Text, Qt::white);
-
 
113
 
-
 
114
    Attitude = new AttitudeIndicator(this);
-
 
115
    Attitude->setMaximumSize(QSize(MeterSize, MeterSize));
-
 
116
    Attitude->setMinimumSize(QSize(MeterSize, MeterSize));
-
 
117
    Attitude->setPalette(newPalette1);
-
 
118
 
-
 
119
    verticalLayout->addWidget(Attitude);
-
 
120
 
-
 
121
    qwt_Rate->setRange(-10.0, 10.0, 0.1, 0);
-
 
122
 
-
 
123
    newPalette1.setColor(QPalette::Foreground, QColor(Qt::darkBlue).dark(120));
-
 
124
 
-
 
125
    SpeedMeter = new cSpeedMeter(this);
-
 
126
    SpeedMeter->setMaximumSize(QSize(MeterSize, MeterSize));
-
 
127
    SpeedMeter->setMinimumSize(QSize(MeterSize, MeterSize));
Line 78... Line 128...
78
    toolBar->addWidget(rb_SelFC);
128
    SpeedMeter->setPalette(newPalette1);
79
    toolBar->addWidget(rb_SelNC);
-
 
80
    toolBar->addWidget(rb_SelMag);
129
    SpeedMeter->setRange(0.0, 5.0);
81
 
130
    SpeedMeter->setScale(1, 2, 0.5);
Line 82... Line 131...
82
    lb_Status->setText(tr("Hallo bei QMK-Groundstation...!!!"));
131
    SpeedMeter->setProperty("END", 5);
83
 
132
 
Line 100... Line 149...
100
    {
149
    {
101
        lb_Analog[a]->setText(Settings->Analog1.Label[a]);
150
        lb_Analog[a]->setText(Settings->Analog1.Label[a]);
102
    }
151
    }
Line 103... Line 152...
103
 
152
 
-
 
153
    // Kopie der Tabs anlegen
104
    // Kopie der Tabs anlegen
154
//    for (int b = 0; b < 7; b++)
105
    for (int b = 0; b < 6; b++)
155
    for (int b = 0; b < 6; b++)
106
    {
156
    {
107
        TabWidgets[b] = tab_Main->widget(b);
157
        TabWidgets[b] = tab_Main->widget(b);
Line 108... Line 158...
108
    }
158
    }
-
 
159
 
109
 
160
    // Ausgeblendete Tabs ausblenden
110
    // Ausgeblendete Tabs ausblenden
161
//    for (int c = 0; c < 7; c++)
111
    for (int c = 0; c < 6; c++)
162
    for (int c = 0; c < 6; c++)
112
    {
163
    {
113
        if (Settings->GUI.TabViews[c] == false)
164
        if (Settings->GUI.TabViews[c] == false)
Line 128... Line 179...
128
    ac_View1->setChecked(Settings->GUI.TabViews[1]);
179
    ac_View1->setChecked(Settings->GUI.TabViews[1]);
129
    ac_View2->setChecked(Settings->GUI.TabViews[2]);
180
    ac_View2->setChecked(Settings->GUI.TabViews[2]);
130
    ac_View3->setChecked(Settings->GUI.TabViews[3]);
181
    ac_View3->setChecked(Settings->GUI.TabViews[3]);
131
    ac_View4->setChecked(Settings->GUI.TabViews[4]);
182
    ac_View4->setChecked(Settings->GUI.TabViews[4]);
132
    ac_View5->setChecked(Settings->GUI.TabViews[5]);
183
    ac_View5->setChecked(Settings->GUI.TabViews[5]);
-
 
184
//    ac_View6->setChecked(Settings->GUI.TabViews[6]);
Line 133... Line 185...
133
 
185
 
Line 134... Line 186...
134
    le_Port->setText(Settings->TTY.Port);
186
    le_Port->setText(Settings->TTY.Port);
135
 
187
 
Line 147... Line 199...
147
    serialPort = new ManageSerialPort;
199
    serialPort = new ManageSerialPort;
Line 148... Line 200...
148
 
200
 
149
    // QFile-Instanz (Log-Datei)
201
    // QFile-Instanz (Log-Datei)
Line -... Line 202...
-
 
202
    CSVFile = new QFile("");
-
 
203
 
-
 
204
    // LCD-Dialog
150
    CSVFile = new QFile("");
205
    f_LCD = new dlg_LCD(this);
151
 
206
 
Line 152... Line 207...
152
    // Senden erlauben (Warum auch immer)
207
    // Senden erlauben (Warum auch immer)
Line -... Line 208...
-
 
208
    AllowSend = true;
-
 
209
 
-
 
210
    Server = new cServer();
-
 
211
 
153
    AllowSend = true;
212
    MyServer = new cQMK_Server();
154
 
213
    MyServer->setProperty("Connect", false);
155
    Server = new cServer();
214
 
156
 
215
 
157
    if (Settings->Server.StartServer)
216
    if (Settings->Server.StartServer)
Line 169... Line 228...
169
    connect(serialPort, SIGNAL(newDataReceived(const QByteArray &)), this, SLOT(slot_newDataReceived(const QByteArray &)));
228
    connect(serialPort, SIGNAL(newDataReceived(const QByteArray &)), this, SLOT(slot_newDataReceived(const QByteArray &)));
Line 170... Line 229...
170
 
229
 
171
    // Serielle Verbundung öffnen / schließen
230
    // Serielle Verbundung öffnen / schließen
Line -... Line 231...
-
 
231
    connect(ac_ConnectTTY, SIGNAL(triggered()), this, SLOT(slot_OpenPort()));
-
 
232
 
-
 
233
    // TCP-Connection verbinden / trennen
172
    connect(ac_ConnectTTY, SIGNAL(triggered()), this, SLOT(slot_OpenPort()));
234
    connect(ac_QMKServer, SIGNAL(triggered()), this, SLOT(slot_QMKS_Connect()));
173
 
235
 
174
    // Buttons Settings lesen / schreiben
236
    // Buttons Settings lesen / schreiben
Line 175... Line -...
175
    connect(f_Settings->pb_Read,   SIGNAL(clicked()), this, SLOT(slot_GetFCSettings()));
-
 
176
    connect(f_Settings->pb_Write,  SIGNAL(clicked()), this, SLOT(slot_SetFCSettings()));
-
 
177
 
-
 
178
    // LCD auf / ab
-
 
179
    connect(pb_LCDup,   SIGNAL(clicked()), this, SLOT(slot_LCD_UP()));
237
    connect(f_Settings->pb_Read,   SIGNAL(clicked()), this, SLOT(slot_GetFCSettings()));
180
    connect(pb_LCDdown, SIGNAL(clicked()), this, SLOT(slot_LCD_DOWN()));
238
    connect(f_Settings->pb_Write,  SIGNAL(clicked()), this, SLOT(slot_SetFCSettings()));
181
 
239
 
182
    // Actions
240
    // Actions
-
 
241
    connect(ac_Config,       SIGNAL(triggered()), this, SLOT(slot_ac_Config()));
183
    connect(ac_Config,       SIGNAL(triggered()), this, SLOT(slot_ac_Config()));
242
    connect(ac_Preferences,  SIGNAL(triggered()), this, SLOT(slot_ac_Preferences()));
184
    connect(ac_Preferences,  SIGNAL(triggered()), this, SLOT(slot_ac_Preferences()));
243
    connect(ac_Motortest,    SIGNAL(triggered()), this, SLOT(slot_ac_Motortest()));
185
    connect(ac_Motortest,    SIGNAL(triggered()), this, SLOT(slot_ac_Motortest()));
244
    connect(ac_LCD,          SIGNAL(triggered()), this, SLOT(slot_ac_LCD()));
186
    connect(ac_FastDebug,    SIGNAL(triggered()), this, SLOT(slot_ac_FastDebug()));
245
    connect(ac_FastDebug,    SIGNAL(triggered()), this, SLOT(slot_ac_FastDebug()));
187
    connect(ac_NoDebug,      SIGNAL(triggered()), this, SLOT(slot_ac_NoDebug()));
246
    connect(ac_NoDebug,      SIGNAL(triggered()), this, SLOT(slot_ac_NoDebug()));
Line 199... Line 258...
199
    connect(ac_View1,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
258
    connect(ac_View1,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
200
    connect(ac_View2,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
259
    connect(ac_View2,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
201
    connect(ac_View3,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
260
    connect(ac_View3,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
202
    connect(ac_View4,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
261
    connect(ac_View4,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
203
    connect(ac_View5,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
262
    connect(ac_View5,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
-
 
263
    connect(ac_View6,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
Line 204... Line 264...
204
 
264
 
205
    connect(ac_SelNC,        SIGNAL(triggered()), this, SLOT(slot_ac_Hardware()));
265
    connect(ac_SelNC,        SIGNAL(triggered()), this, SLOT(slot_ac_Hardware()));
206
    connect(ac_SelFC,        SIGNAL(triggered()), this, SLOT(slot_ac_Hardware()));
266
    connect(ac_SelFC,        SIGNAL(triggered()), this, SLOT(slot_ac_Hardware()));
Line 293... Line 353...
293
}
353
}
Line 294... Line 354...
294
 
354
 
295
 
355
 
-
 
356
void MKTool::slot_Test()
296
void MKTool::slot_Test()
357
{
Line 297... Line 358...
297
{
358
/*
298
    sRxData RX;
359
    sRxData RX;
Line 299... Line 360...
299
 
360
 
-
 
361
    RX.String = IN->text();
300
    RX.String = IN->text();
362
    RX.Input  = IN->text().toLatin1().data();
Line 301... Line 363...
301
    RX.Input  = IN->text().toLatin1().data();
363
 
302
 
364
    new_RXData(RX);
303
    new_RXData(RX);
365
*/
Line 311... Line 373...
311
    {
373
    {
312
        Action->setChecked(true);
374
        Action->setChecked(true);
313
    }
375
    }
Line 314... Line 376...
314
 
376
 
315
    slot_rb_Hardware();
-
 
316
//    qDebug("Select AC Hardware");
377
    slot_rb_Hardware();
Line 317... Line 378...
317
}
378
}
318
 
379
 
319
void MKTool::slot_rb_Hardware()
380
void MKTool::slot_rb_Hardware()
Line 326... Line 387...
326
        TX_Data[2] = 0x55;
387
        TX_Data[2] = 0x55;
327
        TX_Data[3] = 0xAA;
388
        TX_Data[3] = 0xAA;
328
        TX_Data[4] = 0x00;
389
        TX_Data[4] = 0x00;
329
        TX_Data[5] = '\r';
390
        TX_Data[5] = '\r';
330
        send_Data('#', ADDRESS_NC, TX_Data, 6, false);
391
        send_Data('#', ADDRESS_NC, TX_Data, 6, false);
331
        usleep(Sleep);
392
        ToolBox::Wait(SLEEP);
332
    }
393
    }
Line 333... Line 394...
333
 
394
 
334
    if (rb_SelFC->isChecked())
395
    if (rb_SelFC->isChecked())
335
    {
396
    {
Line 354... Line 415...
354
        TX_Data[3] = 0xAA;
415
        TX_Data[3] = 0xAA;
355
        TX_Data[4] = 0x00;
416
        TX_Data[4] = 0x00;
356
        TX_Data[5] = '\r';
417
        TX_Data[5] = '\r';
357
        send_Data('#', ADDRESS_NC, TX_Data, 6, false);
418
        send_Data('#', ADDRESS_NC, TX_Data, 6, false);
358
    }
419
    }
359
    usleep(Sleep);
420
    ToolBox::Wait(SLEEP);
Line 360... Line 421...
360
 
421
 
361
//    qDebug("Select RB Hardware");
422
//    qDebug("Select RB Hardware");
362
    send_Data('v', ADDRESS_ALL, TX_Data, 0, true);
423
    send_Data('v', ADDRESS_ALL, TX_Data, 0, true);
Line 387... Line 448...
387
                case 1 :
448
                case 1 :
388
                    TX_Data[0] = 0;
449
                    TX_Data[0] = 0;
389
                    send_Data('p', ADDRESS_FC, TX_Data, 0, false);
450
                    send_Data('p', ADDRESS_FC, TX_Data, 0, false);
390
                break;
451
                break;
391
                case 2 :
452
                case 2 :
392
                    if (cb_LCD->isChecked())
453
                    if (f_LCD->cb_LCD->isChecked())
393
                    {
454
                    {
-
 
455
                        if (!f_LCD->isVisible())
-
 
456
                        {
-
 
457
                            Ticker->setInterval(2000);
-
 
458
                            TickerEvent[2] = false;
-
 
459
                        }
394
                        TX_Data[0] = LCD_Page;
460
                        TX_Data[0] = LCD_Page;
395
                        TX_Data[1] = 0;
461
                        TX_Data[1] = 0;
396
                        send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
462
                        send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
397
                    }
463
                    }
398
                break;
464
                break;
Line 411... Line 477...
411
            }
477
            }
412
        }
478
        }
413
    }
479
    }
414
}
480
}
Line -... Line 481...
-
 
481
 
-
 
482
void MKTool::slot_QMKS_Connect()
-
 
483
{
-
 
484
    if (ac_QMKServer->isChecked())
-
 
485
    {
-
 
486
        lb_Status->setText(tr("Verbinde zum QMK-Datenserver."));
-
 
487
 
-
 
488
        MyServer->Connect("nimari.de", 16441, Settings->Server.QMKS_Login, Settings->Server.QMKS_Password);
-
 
489
        connect(MyServer, SIGNAL(sig_Connected()), this, SLOT(slot_QMKS_Connected()));
-
 
490
        connect(MyServer, SIGNAL(sig_Disconnected(int)), this, SLOT(slot_QMKS_Disconnected(int)));
-
 
491
 
-
 
492
    }
-
 
493
    else
-
 
494
    {
-
 
495
        if ((MyServer->property("Connect")) == true)
-
 
496
        {
-
 
497
            disconnect(MyServer, SIGNAL(sig_Disconnected(int)), 0, 0);
-
 
498
            lb_Status->setText(tr("Trenne vom QMK-Datenserver."));
-
 
499
 
-
 
500
            MyServer->Disconnect();
-
 
501
            MyServer->setProperty("Connect", false);
-
 
502
            ac_QMKServer->setText("QMK-Server Verbinden");
-
 
503
        }
-
 
504
    }
-
 
505
}
-
 
506
 
-
 
507
void MKTool::slot_QMKS_Connected()
-
 
508
{
-
 
509
    MyServer->setProperty("Connect", true);
-
 
510
    ac_QMKServer->setText("QMK-Server Trennnen");
-
 
511
    lb_Status->setText(tr("Verbunden mit QMK-Datenserver."));
-
 
512
}
-
 
513
 
-
 
514
void MKTool::slot_QMKS_Disconnected(int Error)
-
 
515
{
-
 
516
    MyServer->setProperty("Connect", false);
-
 
517
    ac_QMKServer->setText("QMK-Server Verbinden");
-
 
518
    ac_QMKServer->setChecked(false);
-
 
519
 
-
 
520
    disconnect(MyServer, SIGNAL(sig_Disconnected(int)), 0, 0);
-
 
521
 
-
 
522
    switch (Error)
-
 
523
    {
-
 
524
        case 1 :
-
 
525
        {
-
 
526
            lb_Status->setText(tr("Verbindung vom Server beendet."));
-
 
527
            QMessageBox::warning(this, QA_NAME,"QMK-Datenserver: Verbindung wurde vom Server beendet.", QMessageBox::Ok);
-
 
528
        }
-
 
529
        break;
-
 
530
        case 2 :
-
 
531
        {
-
 
532
            lb_Status->setText(tr("Server nicht gefunden."));
-
 
533
            QMessageBox::warning(this, QA_NAME,"QMK-Datenserver: Kann nicht zum Server verbinden.", QMessageBox::Ok);
-
 
534
        }
-
 
535
        break;
-
 
536
        case 3 :
-
 
537
        {
-
 
538
            lb_Status->setText(tr("Serververbindung getrennt. Logindaten falsch."));
-
 
539
            QMessageBox::warning(this, QA_NAME,"QMK-Datenserver: Loginname oder Password falsch.", QMessageBox::Ok);
-
 
540
        }
-
 
541
        break;
-
 
542
        default :
-
 
543
        {
-
 
544
            lb_Status->setText(tr("Getrennt vom QMK-Datenserver."));
-
 
545
        }
-
 
546
        break;
-
 
547
    }
Line 415... Line 548...
415
 
548
}
416
 
549
 
417
// Slots der Actions (Menüpunkte, Buttons)
550
// Slots der Actions (Menüpunkte, Buttons)
418
//////////////////////////////////////////
551
//////////////////////////////////////////
Line 428... Line 561...
428
 
561
 
429
    disconnect(f_Motortest, 0,0,0);
562
    disconnect(f_Motortest, 0,0,0);
430
    slot_Motortest(0,0,0,0);
563
    slot_Motortest(0,0,0,0);
Line -... Line 564...
-
 
564
}
-
 
565
 
-
 
566
void MKTool::slot_ac_LCD()
-
 
567
{
-
 
568
    if (!f_LCD->isVisible())
-
 
569
    {
-
 
570
        f_LCD = new dlg_LCD(this);
-
 
571
 
-
 
572
        // LCD auf / ab
-
 
573
        connect(f_LCD->pb_LCDup,   SIGNAL(clicked()), this, SLOT(slot_LCD_UP()));
-
 
574
        connect(f_LCD->pb_LCDdown, SIGNAL(clicked()), this, SLOT(slot_LCD_DOWN()));
-
 
575
 
-
 
576
        f_LCD->show();
-
 
577
        TX_Data[0] = 0;
-
 
578
        TX_Data[1] = 0;
-
 
579
        send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
-
 
580
 
-
 
581
        Ticker->setInterval(500);
-
 
582
        TickerEvent[2] = true;
-
 
583
    }
431
}
584
}
432
 
585
 
433
void MKTool::slot_Motortest(int Motor1, int Motor2, int Motor3, int Motor4)
586
void MKTool::slot_Motortest(int Motor1, int Motor2, int Motor3, int Motor4)
434
{
587
{
435
    TX_Data[0] = Motor1;
588
    TX_Data[0] = Motor1;
Line 501... Line 654...
501
    }
654
    }
502
}
655
}
Line 503... Line 656...
503
 
656
 
504
void MKTool::slot_ac_View()
657
void MKTool::slot_ac_View()
505
{
658
{
Line 506... Line 659...
506
    int Aktive;
659
    int Aktive = -1;
Line 507... Line 660...
507
 
660
 
508
    QAction *Action = (QAction*)sender();
661
    QAction *Action = (QAction*)sender();
Line 517... Line 670...
517
        Aktive = 3;
670
        Aktive = 3;
518
    if (Action->objectName() == QString("ac_View4"))
671
    if (Action->objectName() == QString("ac_View4"))
519
        Aktive = 4;
672
        Aktive = 4;
520
    if (Action->objectName() == QString("ac_View5"))
673
    if (Action->objectName() == QString("ac_View5"))
521
        Aktive = 5;
674
        Aktive = 5;
-
 
675
//    if (Action->objectName() == QString("ac_View6"))
-
 
676
//        Aktive = 6;
Line 522... Line 677...
522
 
677
 
Line 523... Line 678...
523
    QString TabName = QString("Tab_%1").arg(Aktive);
678
    QString TabName = QString("Tab_%1").arg(Aktive);
524
 
679
 
Line 529... Line 684...
529
            if (tab_Main->widget(a)->objectName() == TabName)
684
            if (tab_Main->widget(a)->objectName() == TabName)
530
            {
685
            {
531
                tab_Main->removeTab(a);
686
                tab_Main->removeTab(a);
532
            }
687
            }
533
        }
688
        }
534
 
-
 
535
//        Action->setChecked(false);
-
 
536
    }
689
    }
537
    else
690
    else
538
    {
691
    {
539
//        Action->setChecked(true);
-
 
540
        tab_Main->insertTab(Aktive, TabWidgets[Aktive], Action->text());
692
        tab_Main->insertTab(Aktive, TabWidgets[Aktive], Action->icon(), Action->text());
541
    }
693
    }
542
}
694
}
Line 543... Line 695...
543
 
695
 
544
void MKTool::slot_ac_FastNavi() // DONE NC 0.12i
696
void MKTool::slot_ac_FastNavi() // DONE NC 0.12i
Line 652... Line 804...
652
        lb_Status->setText(tr("GoogleEarth-Server gestopt."));
804
        lb_Status->setText(tr("GoogleEarth-Server gestopt."));
653
        Server->stop_Server();
805
        Server->stop_Server();
654
    }
806
    }
655
}
807
}
Line -... Line 808...
-
 
808
 
656
 
809
 
657
//  Daten-Plotter
810
//  Daten-Plotter
658
/////////////////
811
/////////////////
659
void MKTool::update_Plot()
812
void MKTool::update_Plot()
660
{
813
{
Line 810... Line 963...
810
        else
963
        else
811
        {
964
        {
812
            Ticker->setInterval(2000);
965
            Ticker->setInterval(2000);
813
            TickerEvent[1] = false;
966
            TickerEvent[1] = false;
814
        }
967
        }
815
 
968
/*
816
        if ((tab_Main->currentWidget()->objectName() == QString("Tab_4")))
969
        if ((tab_Main->currentWidget()->objectName() == QString("Tab_4")))
817
        {
970
        {
818
            TX_Data[0] = 0;
971
            TX_Data[0] = 0;
819
            TX_Data[1] = 0;
972
            TX_Data[1] = 0;
820
            send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
973
            send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
Line 825... Line 978...
825
        else
978
        else
826
        {
979
        {
827
            Ticker->setInterval(2000);
980
            Ticker->setInterval(2000);
828
            TickerEvent[2] = false;
981
            TickerEvent[2] = false;
829
        }
982
        }
-
 
983
*/
830
    }
984
    }
831
}
985
}
Line 832... Line 986...
832
 
986
 
833
// LCD-Seiten weiterschalten
987
// LCD-Seiten weiterschalten
Line 838... Line 992...
838
    else
992
    else
839
        TX_Data[0] = LCD_Page + 1;
993
        TX_Data[0] = LCD_Page + 1;
Line 840... Line 994...
840
 
994
 
841
    TX_Data[1] = 0;
995
    TX_Data[1] = 0;
-
 
996
    send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
842
    send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
997
 
Line 843... Line 998...
843
}
998
}
844
 
999
 
845
void MKTool::slot_LCD_DOWN() // DONE 0.71g
1000
void MKTool::slot_LCD_DOWN() // DONE 0.71g
Line 849... Line 1004...
849
    else
1004
    else
850
        TX_Data[0] = LCD_Page - 1;
1005
        TX_Data[0] = LCD_Page - 1;
Line 851... Line 1006...
851
 
1006
 
852
    TX_Data[1] = 0;
1007
    TX_Data[1] = 0;
-
 
1008
    send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
-
 
1009
 
-
 
1010
    aa--;
853
    send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
1011
 
Line 854... Line 1012...
854
}
1012
}
855
 
1013
 
856
// Settings aus MK lesen / in MK schreiben
1014
// Settings aus MK lesen / in MK schreiben
Line 880... Line 1038...
880
    Settings->GUI.TabViews.setBit(1, ac_View1->isChecked());
1038
    Settings->GUI.TabViews.setBit(1, ac_View1->isChecked());
881
    Settings->GUI.TabViews.setBit(2, ac_View2->isChecked());
1039
    Settings->GUI.TabViews.setBit(2, ac_View2->isChecked());
882
    Settings->GUI.TabViews.setBit(3, ac_View3->isChecked());
1040
    Settings->GUI.TabViews.setBit(3, ac_View3->isChecked());
883
    Settings->GUI.TabViews.setBit(4, ac_View4->isChecked());
1041
    Settings->GUI.TabViews.setBit(4, ac_View4->isChecked());
884
    Settings->GUI.TabViews.setBit(5, ac_View5->isChecked());
1042
    Settings->GUI.TabViews.setBit(5, ac_View5->isChecked());
-
 
1043
    Settings->GUI.TabViews.setBit(6, ac_View6->isChecked());
-
 
1044
 
-
 
1045
    Settings->GUI.ToolViews.setBit(0, tb_Allgemein->isVisibleTo(this));
-
 
1046
    Settings->GUI.ToolViews.setBit(1, tb_Werkzeuge->isVisibleTo(this));
-
 
1047
    Settings->GUI.ToolViews.setBit(2, tb_Debug->isVisibleTo(this));
-
 
1048
    Settings->GUI.ToolViews.setBit(3, tb_TTY->isVisibleTo(this));
-
 
1049
    Settings->GUI.ToolViews.setBit(4, tb_Hardware->isVisibleTo(this));
Line 885... Line 1050...
885
 
1050
 
886
    Settings->GUI.Term_Info   = cb_ShowMSG->isChecked();
1051
    Settings->GUI.Term_Info   = cb_ShowMSG->isChecked();
887
    Settings->GUI.Term_Data   = cb_ShowData->isChecked();
1052
    Settings->GUI.Term_Data   = cb_ShowData->isChecked();
888
    Settings->GUI.Term_Always = cb_ShowAlways->isChecked();
1053
    Settings->GUI.Term_Always = cb_ShowAlways->isChecked();
Line 940... Line 1105...
940
        else
1105
        else
941
        {
1106
        {
942
            CSVFile->open(QIODevice::Append | QIODevice::Text);
1107
            CSVFile->open(QIODevice::Append | QIODevice::Text);
943
        }
1108
        }
Line 944... Line 1109...
944
 
1109
 
945
        pb_Record->setIcon(ToolBox::Icon(6));
1110
//        pb_Record->setIcon(ToolBox::Icon(6));
946
        pb_Record->setText("CSV Stop");
1111
//        pb_Record->setText("CSV Stop");
947
        ac_RecordCSV->setIcon(ToolBox::Icon(6));
1112
//        ac_RecordCSV->setIcon(ToolBox::Icon(6));
948
        ac_RecordCSV->setText("CSV Stop");
1113
        ac_RecordCSV->setText("CSV Stop");
949
        lb_Status->setText(tr("CVS-Record gestartet."));
1114
        lb_Status->setText(tr("CVS-Record gestartet."));
950
    }
1115
    }
951
    else
1116
    else
952
    {
1117
    {
953
        CSVFile->close();
1118
        CSVFile->close();
954
        pb_Record->setIcon(ToolBox::Icon(7));
1119
//        pb_Record->setIcon(ToolBox::Icon(7));
955
        pb_Record->setText("CSV Aufzeichnen");
1120
//        pb_Record->setText("CSV Aufzeichnen");
956
        ac_RecordCSV->setIcon(ToolBox::Icon(7));
1121
//        ac_RecordCSV->setIcon(ToolBox::Icon(7));
957
        ac_RecordCSV->setText("CSV  Aufzeichnen");
1122
        ac_RecordCSV->setText("CSV  Aufzeichnen");
958
        lb_Status->setText(tr("CVS-Record gestopt."));
1123
        lb_Status->setText(tr("CVS-Record gestopt."));
959
    }
1124
    }
Line 1010... Line 1175...
1010
    le_A_27->setText(QString("%1").arg(AnalogData[27]));
1175
    le_A_27->setText(QString("%1").arg(AnalogData[27]));
1011
    le_A_28->setText(QString("%1").arg(AnalogData[28]));
1176
    le_A_28->setText(QString("%1").arg(AnalogData[28]));
1012
    le_A_29->setText(QString("%1").arg(AnalogData[29]));
1177
    le_A_29->setText(QString("%1").arg(AnalogData[29]));
1013
    le_A_30->setText(QString("%1").arg(AnalogData[30]));
1178
    le_A_30->setText(QString("%1").arg(AnalogData[30]));
1014
    le_A_31->setText(QString("%1").arg(AnalogData[31]));
1179
    le_A_31->setText(QString("%1").arg(AnalogData[31]));
-
 
1180
 
-
 
1181
    if ((Mode.ID == ADDRESS_FC) && (FCSettings[P_GYRO_ACC_FAKTOR] > 0))
-
 
1182
    {
-
 
1183
        bar_UBAT->setValue(AnalogData[9]);
-
 
1184
        bar_RX->setValue(AnalogData[10]);
-
 
1185
 
-
 
1186
        Compass->setValue(AnalogData[8]);
-
 
1187
 
-
 
1188
        int Roll = (AnalogData[1] * FCSettings[P_GYRO_ACC_FAKTOR]) / 1024;
-
 
1189
        int Nick = (AnalogData[0] * FCSettings[P_GYRO_ACC_FAKTOR]) / 1024;
-
 
1190
 
-
 
1191
        if (Roll > 128)
-
 
1192
            Roll = Roll - 255;
-
 
1193
 
-
 
1194
        if (Nick > 128)
-
 
1195
            Nick = Nick - 255;
-
 
1196
 
-
 
1197
        Attitude->setAngle(Roll);
-
 
1198
        Attitude->setGradient(double(double(Nick) / 100.0));
-
 
1199
    }
1015
}
1200
}
Line 1016... Line 1201...
1016
 
1201
 
1017
 
1202
 
1018
void MKTool::new_NaviData(sRxData RX)
1203
void MKTool::new_NaviData(sRxData RX)
1019
{
1204
{
1020
    Navi.Current.Longitude = ToolBox::Data2Long(RX.Decode, 0, true);
1205
    Navi.Current.Longitude = ToolBox::Data2Long(RX.Decode, 0, true);
1021
    Navi.Current.Latitude  = ToolBox::Data2Long(RX.Decode, 4, true);
1206
    Navi.Current.Latitude  = ToolBox::Data2Long(RX.Decode, 4, true);
1022
    Navi.Current.Altitude  = ToolBox::Data2Long(RX.Decode, 8, true);
1207
    Navi.Current.Altitude  = ToolBox::Data2Long(RX.Decode, 8, true);
1023
    Navi.Target.Longitude  = ToolBox::Data2Long(RX.Decode, 10, true);
1208
    Navi.Target.Longitude  = ToolBox::Data2Long(RX.Decode, 16, true);
-
 
1209
    Navi.Target.Latitude   = ToolBox::Data2Long(RX.Decode, 20, true);
-
 
1210
    Navi.Target.Altitude   = ToolBox::Data2Long(RX.Decode, 24, true);
-
 
1211
 
-
 
1212
    le_CDistance->setText(QString("%1 cm").arg(ToolBox::Data2Int(RX.Decode, 52)));
-
 
1213
    le_CWPA->setText(QString("%1").arg(RX.Decode[56]));
-
 
1214
    le_CWPT->setText(QString("%1").arg(RX.Decode[57]));
-
 
1215
    le_CSats->setText(QString("%1").arg(RX.Decode[58]));
-
 
1216
 
-
 
1217
    qwt_Rate->setValue(double(ToolBox::Data2Int(RX.Decode, 61, true)));
-
 
1218
 
-
 
1219
    le_CTime->setText(QString("%1 sec.").arg(ToolBox::Data2Int(RX.Decode, 63)));
-
 
1220
 
-
 
1221
    bar_UBAT->setValue(RX.Decode[65]);
-
 
1222
 
-
 
1223
    double Speed = double((ToolBox::Data2Int(RX.Decode, 66)) / 10.0);
-
 
1224
 
-
 
1225
    if ((Speed > 4.5) && SpeedMeter->property("END") == 5)
-
 
1226
    {
-
 
1227
        SpeedMeter->setRange(0.0, 10.0);
-
 
1228
        SpeedMeter->setScale(1, 2, 1);
-
 
1229
        SpeedMeter->setProperty("END", 10);
-
 
1230
    }
-
 
1231
 
-
 
1232
    if ((Speed > 9) && SpeedMeter->property("END") == 10)
-
 
1233
    {
-
 
1234
        SpeedMeter->setRange(0.0, 20.0);
-
 
1235
        SpeedMeter->setScale(1, 2, 2);
-
 
1236
        SpeedMeter->setProperty("END", 20);
-
 
1237
    }
-
 
1238
 
-
 
1239
    SpeedMeter->setValue(Speed);
-
 
1240
 
-
 
1241
    Compass->setValue(ToolBox::Data2Int(RX.Decode, 70)); //(68)
-
 
1242
 
-
 
1243
    bar_RX->setValue(RX.Decode[74]);
-
 
1244
 
-
 
1245
    int Nick = RX.Decode[72];
-
 
1246
    int Roll = RX.Decode[73];
-
 
1247
 
-
 
1248
    if (Roll > 128)
-
 
1249
        Roll = Roll - 255;
-
 
1250
 
-
 
1251
    if (Nick > 128)
-
 
1252
        Nick = Nick - 255;
-
 
1253
 
Line 1024... Line 1254...
1024
    Navi.Target.Latitude   = ToolBox::Data2Long(RX.Decode, 14, true);
1254
    Attitude->setAngle(Roll);
Line 1025... Line 1255...
1025
    Navi.Target.Altitude   = ToolBox::Data2Long(RX.Decode, 18, true);
1255
    Attitude->setGradient(double(double(Nick) / 100.0));
1026
 
1256
 
1027
    sNaviString NaviString;
1257
    sNaviString NaviString;
Line 1028... Line 1258...
1028
 
1258
 
Line -... Line 1259...
-
 
1259
    NaviString.Longitude = ToolBox::get_Float(Navi.Current.Longitude,10000000);
-
 
1260
    NaviString.Latitude  = ToolBox::get_Float(Navi.Current.Latitude,10000000);
-
 
1261
    NaviString.Altitude  = ToolBox::get_Float(Navi.Current.Altitude,1000);
-
 
1262
 
-
 
1263
    Server->store_NaviString(NaviString);
1029
    NaviString.Longitude = ToolBox::get_Float(Navi.Current.Longitude,10000000);
1264
 
1030
    NaviString.Latitude  = ToolBox::get_Float(Navi.Current.Latitude,10000000);
1265
    if ((MyServer->property("Connect")) == true)
1031
    NaviString.Altitude  = ToolBox::get_Float(Navi.Current.Altitude,1000);
1266
    {
1032
 
1267
        MyServer->NewPosition(NaviString);
1033
    Server->store_NaviString(NaviString);
1268
    }
Line 1126... Line 1361...
1126
                    if (ToolBox::Decode64(RX))
1361
                    if (ToolBox::Decode64(RX))
1127
                    {
1362
                    {
1128
                        int LCD[150];
1363
                        int LCD[150];
1129
                        memcpy(LCD,RX.Decode, sizeof(RX.Decode));
1364
                        memcpy(LCD,RX.Decode, sizeof(RX.Decode));
Line -... Line 1365...
-
 
1365
 
-
 
1366
                        f_LCD->show_Data(LCD);
1130
 
1367
 
1131
                        LCD_Page     = RX.Decode[0];
1368
                        LCD_Page     = RX.Decode[0];
Line 1132... Line -...
1132
                        LCD_MAX_Page = RX.Decode[1];
-
 
1133
 
-
 
1134
                        le_LCD0->setText(ToolBox::Data2QString(LCD,2,22));
-
 
1135
                        le_LCD1->setText(ToolBox::Data2QString(LCD,22,42));
-
 
1136
                        le_LCD2->setText(ToolBox::Data2QString(LCD,42,62));
-
 
1137
                        le_LCD3->setText(ToolBox::Data2QString(LCD,62,82));
1369
                        LCD_MAX_Page = RX.Decode[1];
1138
 
1370
 
1139
                        TickerEvent[0] = false;
1371
                        TickerEvent[0] = false;
1140
                    }
1372
                    }
1141
                break;
1373
                break;
Line 1337... Line 1569...
1337
 
1569
 
1338
// Seriellen Port öffnen
1570
// Seriellen Port öffnen
1339
void MKTool::slot_OpenPort()
1571
void MKTool::slot_OpenPort()
1340
{
1572
{
1341
    if (serialPort->isOpen())
1573
    if (serialPort->isOpen())
1342
    {
1574
    {        
1343
        TX_Data[0] = Settings->Data.Debug_Off / 10;
1575
        TX_Data[0] = Settings->Data.Debug_Off / 10;
1344
        send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
1576
        send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
Line 1345... Line 1577...
1345
        usleep(Sleep);
1577
        ToolBox::Wait(SLEEP);
1346
 
1578
 
1347
        if (Mode.ID == ADDRESS_NC)
1579
        if (Mode.ID == ADDRESS_NC)
1348
        {
1580
        {
1349
            TX_Data[0] = Settings->Data.Navi_Off / 10;
1581
            TX_Data[0] = Settings->Data.Navi_Off / 10;
1350
            send_Data('o', ADDRESS_NC, TX_Data, 1, false);
1582
            send_Data('o', ADDRESS_NC, TX_Data, 1, false);
Line 1351... Line 1583...
1351
            usleep(Sleep);
1583
            ToolBox::Wait(SLEEP);
1352
        }
1584
        }
1353
 
1585
 
1354
        if (Mode.ID == ADDRESS_NC)
1586
        if (Mode.ID == ADDRESS_NC)
1355
        {
1587
        {
1356
            TX_Data[0] = 0;
1588
            TX_Data[0] = 0;
1357
            TX_Data[1] = 0;
1589
            TX_Data[1] = 0;
1358
            TX_Data[2] = 0;
1590
            TX_Data[2] = 0;
1359
            TX_Data[3] = 0;
1591
            TX_Data[3] = 0;
1360
            send_Data('t', ADDRESS_FC, TX_Data, 4, false);
1592
            send_Data('t', ADDRESS_FC, TX_Data, 4, false);
1361
            usleep(Sleep);
1593
            ToolBox::Wait(SLEEP);
1362
        }
1594
        }
1363
        serialPort->close();
1595
        serialPort->close();
1364
        pb_Open->setText("Verbinden");
1596
//        pb_Open->setText("Seriell Verbinden");
Line 1365... Line 1597...
1365
        ac_ConnectTTY->setText("Verbinden");
1597
        ac_ConnectTTY->setText("Seriell Verbinden");
Line 1366... Line 1598...
1366
        pb_Open->setIcon(ToolBox::Icon(9));
1598
//        pb_Open->setIcon(ToolBox::Icon(9));
1367
        ac_ConnectTTY->setIcon(ToolBox::Icon(9));
1599
//        ac_ConnectTTY->setIcon(ToolBox::Icon(9));
Line 1390... Line 1622...
1390
            le_Port->setEnabled(false);
1622
            le_Port->setEnabled(false);
1391
            serialPort->receiveData();
1623
            serialPort->receiveData();
Line 1392... Line 1624...
1392
 
1624
 
Line 1393... Line 1625...
1393
            send_Data('v', ADDRESS_ALL, TX_Data, 0, true);
1625
            send_Data('v', ADDRESS_ALL, TX_Data, 0, true);
1394
 
1626
 
1395
            pb_Open->setText("Trennen");
1627
//            pb_Open->setText("Seriell Trennen");
1396
            ac_ConnectTTY->setText("Trennen");
1628
            ac_ConnectTTY->setText("Seriell Trennen");
Line 1397... Line 1629...
1397
            pb_Open->setIcon(ToolBox::Icon(8));
1629
//            pb_Open->setIcon(ToolBox::Icon(8));
1398
            ac_ConnectTTY->setIcon(ToolBox::Icon(8));
1630
//            ac_ConnectTTY->setIcon(ToolBox::Icon(8));
1399
 
1631
 
1400
            Ticker->start(2000);
1632
            Ticker->start(2000);