Subversion Repositories Projects

Rev

Rev 163 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 163 Rev 166
1
/***************************************************************************
1
/***************************************************************************
2
 *   Copyright (C) 2008 by Manuel Schrape                                  *
2
 *   Copyright (C) 2008 by Manuel Schrape                                  *
3
 *   manuel.schrape@gmx.de                                                 *
3
 *   manuel.schrape@gmx.de                                                 *
4
 *                                                                         *
4
 *                                                                         *
5
 *   This program is free software; you can redistribute it and/or modify  *
5
 *   This program is free software; you can redistribute it and/or modify  *
6
 *   it under the terms of the GNU General Public License as published by  *
6
 *   it under the terms of the GNU General Public License as published by  *
7
 *   the Free Software Foundation; either version 2 of the License.        *
7
 *   the Free Software Foundation; either version 2 of the License.        *
8
 *                                                                         *
8
 *                                                                         *
9
 *   This program is distributed in the hope that it will be useful,       *
9
 *   This program is distributed in the hope that it will be useful,       *
10
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
10
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
11
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
11
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
12
 *   GNU General Public License for more details.                          *
12
 *   GNU General Public License for more details.                          *
13
 *                                                                         *
13
 *                                                                         *
14
 *   You should have received a copy of the GNU General Public License     *
14
 *   You should have received a copy of the GNU General Public License     *
15
 *   along with this program; if not, write to the                         *
15
 *   along with this program; if not, write to the                         *
16
 *   Free Software Foundation, Inc.,                                       *
16
 *   Free Software Foundation, Inc.,                                       *
17
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
17
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
18
 ***************************************************************************/
18
 ***************************************************************************/
19
 
19
 
20
#include <QtGui>
20
#include <QtGui>
21
 
21
 
22
#include <QLineEdit>
22
#include <QLineEdit>
23
#include <QString>
23
#include <QString>
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
 
28
 
29
#include "mktool.h"
29
#include "mktool.h"
30
#include "dlg_Config.h"
30
#include "dlg_Config.h"
31
#include "dlg_Motortest.h"
31
#include "dlg_Motortest.h"
32
#include "dlg_Preferences.h"
32
#include "dlg_Preferences.h"
33
#include "../global.h"
33
#include "../global.h"
34
#include "../ToolBox.h"
34
#include "../ToolBox.h"
35
 
35
 
36
#include <stdlib.h>
36
#include <stdlib.h>
37
 
37
 
38
MKTool::MKTool()
38
MKTool::MKTool()
39
{
39
{
40
    setupUi(this);
40
    setupUi(this);
41
 
41
 
42
    Settings = new cSettings;
42
    Settings = new cSettings;
43
//    Settings->read_Settings();
43
//    Settings->read_Settings();
44
//    Settings->read_Settings_FC();
44
//    Settings->read_Settings_FC();
45
 
45
 
46
    init_Arrays();
46
    init_Arrays();
47
    init_Icons();
47
    init_Icons();
48
    init_GUI();
48
    init_GUI();
49
 
49
 
50
    init_Objects();
50
    init_Objects();
51
    init_Connections();
51
    init_Connections();
52
 
52
 
53
    init_Plot();
53
    init_Plot();
54
 
54
 
55
    Ticker->start(2000);
55
    Ticker->start(2000);
56
}
56
}
57
 
57
 
58
void MKTool::init_GUI()
58
void MKTool::init_GUI()
59
{
59
{
60
    setWindowTitle(QA_NAME + " v" + QA_VERSION);
60
    setWindowTitle(QA_NAME + " v" + QA_VERSION);
-
 
61
 
-
 
62
    toolBar->addWidget(lb_Port);
-
 
63
    toolBar->addWidget(le_Port);
-
 
64
    toolBar->addSeparator();
-
 
65
    toolBar->addWidget(cb_Hardware);
-
 
66
 
-
 
67
    lb_Status->setText("Hallo bei QMK-Groundstation...!!!");
-
 
68
 
-
 
69
    tab_Main->removeTab(6);
61
 
70
 
62
#ifdef _EEEPC_
71
#ifdef _EEEPC_
-
 
72
    toolBar->hide();
63
    toolBar->hide();
73
    lb_Status->hide();
64
#endif
74
#endif
65
 
75
 
66
    resize(Settings->GUI.Size);
76
    resize(Settings->GUI.Size);
67
    move(Settings->GUI.Point);
77
    move(Settings->GUI.Point);
68
 
78
 
69
    if (Settings->GUI.isMax)
79
    if (Settings->GUI.isMax)
70
    {
80
    {
71
        showMaximized();
81
        showMaximized();
72
    }
82
    }
73
 
83
 
74
    for (int a = 0; a < MaxAnalog; a++)
84
    for (int a = 0; a < MaxAnalog; a++)
75
    {
85
    {
76
        lb_Analog[a]->setText(Settings->Analog1.Label[a]);
86
        lb_Analog[a]->setText(Settings->Analog1.Label[a]);
77
    }
87
    }
78
 
88
 
79
    for (int b = 0; b < 6; b++)
89
    for (int b = 0; b < 6; b++)
80
    {
90
    {
81
        TabWidgets[b] = tab_Main->widget(b);
91
        TabWidgets[b] = tab_Main->widget(b);
82
    }
92
    }
83
 
93
 
84
    for (int c = 0; c < 6; c++)
94
    for (int c = 0; c < 6; c++)
85
    {
95
    {
86
        if (Settings->GUI.TabViews[c] == false)
96
        if (Settings->GUI.TabViews[c] == false)
87
        {
97
        {
88
            QString TabName = QString("Tab_%1").arg(c);
98
            QString TabName = QString("Tab_%1").arg(c);
89
 
99
 
90
            for (int d = 0; d < tab_Main->count(); d++)
100
            for (int d = 0; d < tab_Main->count(); d++)
91
            {
101
            {
92
                if (tab_Main->widget(d)->objectName() == TabName)
102
                if (tab_Main->widget(d)->objectName() == TabName)
93
                {
103
                {
94
                    tab_Main->removeTab(d);
104
                    tab_Main->removeTab(d);
95
                }
105
                }
96
            }
106
            }
97
        }
107
        }
98
    }
108
    }
99
 
109
 
100
    ac_View0->setChecked(Settings->GUI.TabViews[0]);
110
    ac_View0->setChecked(Settings->GUI.TabViews[0]);
101
    ac_View1->setChecked(Settings->GUI.TabViews[1]);
111
    ac_View1->setChecked(Settings->GUI.TabViews[1]);
102
    ac_View2->setChecked(Settings->GUI.TabViews[2]);
112
    ac_View2->setChecked(Settings->GUI.TabViews[2]);
103
    ac_View3->setChecked(Settings->GUI.TabViews[3]);
113
    ac_View3->setChecked(Settings->GUI.TabViews[3]);
104
    ac_View4->setChecked(Settings->GUI.TabViews[4]);
114
    ac_View4->setChecked(Settings->GUI.TabViews[4]);
105
    ac_View5->setChecked(Settings->GUI.TabViews[5]);
115
    ac_View5->setChecked(Settings->GUI.TabViews[5]);
106
 
116
 
107
    le_Port->setText(Settings->TTY.Port);
117
    le_Port->setText(Settings->TTY.Port);
108
 
118
 
109
    cb_ShowMSG->setChecked(Settings->GUI.Term_Info);
119
    cb_ShowMSG->setChecked(Settings->GUI.Term_Info);
110
    cb_ShowData->setChecked(Settings->GUI.Term_Data);
120
    cb_ShowData->setChecked(Settings->GUI.Term_Data);
111
    cb_ShowAlways->setChecked(Settings->GUI.Term_Always);
121
    cb_ShowAlways->setChecked(Settings->GUI.Term_Always);
112
}
122
}
113
 
123
 
114
void MKTool::init_Objects()
124
void MKTool::init_Objects()
115
{
125
{
116
    // QTimer-Instanzen
126
    // QTimer-Instanzen
117
    Ticker  = new QTimer(this);
127
    Ticker  = new QTimer(this);
118
 
128
 
119
    // Seriell-Port
129
    // Seriell-Port
120
    serialPort = new ManageSerialPort;
130
    serialPort = new ManageSerialPort;
121
 
131
 
122
    // QFile-Instanz (Log-Datei)
132
    // QFile-Instanz (Log-Datei)
123
    CSVFile = new QFile("");
133
    CSVFile = new QFile("");
124
 
134
 
125
    AllowSend = true;
135
    AllowSend = true;
126
}
136
}
127
 
137
 
128
void MKTool::init_Connections()
138
void MKTool::init_Connections()
129
{
139
{
130
    // Seriel-Port Empfang
140
    // Seriel-Port Empfang
131
    connect(serialPort, SIGNAL(newDataReceived(const QByteArray &)), this, SLOT(slot_newDataReceived(const QByteArray &)));
141
    connect(serialPort, SIGNAL(newDataReceived(const QByteArray &)), this, SLOT(slot_newDataReceived(const QByteArray &)));
132
 
142
 
133
    // Buttons und Menüpunkte / Toolbar
143
    // Buttons und Menüpunkte / Toolbar
134
    connect(pb_Load,   SIGNAL(clicked()), this, SLOT(slot_LoadParameter()));
144
    connect(pb_Load,   SIGNAL(clicked()), this, SLOT(slot_LoadParameter()));
135
    connect(pb_Save,   SIGNAL(clicked()), this, SLOT(slot_SaveParameter()));
145
    connect(pb_Save,   SIGNAL(clicked()), this, SLOT(slot_SaveParameter()));
136
    connect(pb_Read,   SIGNAL(clicked()), this, SLOT(slot_GetParameter()));
146
    connect(pb_Read,   SIGNAL(clicked()), this, SLOT(slot_GetParameter()));
137
    connect(pb_Write,  SIGNAL(clicked()), this, SLOT(slot_SetParameter()));
147
    connect(pb_Write,  SIGNAL(clicked()), this, SLOT(slot_SetParameter()));
138
 
148
 
139
    connect(pb_LCDup,   SIGNAL(clicked()), this, SLOT(slot_LCD_UP()));
149
    connect(pb_LCDup,   SIGNAL(clicked()), this, SLOT(slot_LCD_UP()));
140
    connect(pb_LCDdown, SIGNAL(clicked()), this, SLOT(slot_LCD_DOWN()));
150
    connect(pb_LCDdown, SIGNAL(clicked()), this, SLOT(slot_LCD_DOWN()));
141
 
151
 
142
    // Actions
152
    // Actions
143
    connect(ac_Config,       SIGNAL(triggered()), this, SLOT(slot_ac_Config()));
153
    connect(ac_Config,       SIGNAL(triggered()), this, SLOT(slot_ac_Config()));
144
    connect(ac_Preferences,  SIGNAL(triggered()), this, SLOT(slot_ac_Preferences()));
154
    connect(ac_Preferences,  SIGNAL(triggered()), this, SLOT(slot_ac_Preferences()));
145
 
155
 
146
    connect(ac_Motortest,    SIGNAL(triggered()), this, SLOT(slot_ac_Motortest()));
156
    connect(ac_Motortest,    SIGNAL(triggered()), this, SLOT(slot_ac_Motortest()));
147
    connect(ac_StartPlotter, SIGNAL(triggered()), this, SLOT(slot_ac_StartPlotter()));
157
    connect(ac_StartPlotter, SIGNAL(triggered()), this, SLOT(slot_ac_StartPlotter()));
148
    connect(ac_MehrDaten,    SIGNAL(triggered()), this, SLOT(slot_ac_MehrDaten()));
158
    connect(ac_MehrDaten,    SIGNAL(triggered()), this, SLOT(slot_ac_MehrDaten()));
149
    connect(ac_About,        SIGNAL(triggered()), this, SLOT(slot_ac_About()));
159
    connect(ac_About,        SIGNAL(triggered()), this, SLOT(slot_ac_About()));
-
 
160
    connect(ac_KeineDaten,   SIGNAL(triggered()), this, SLOT(slot_ac_KeineDaten()));
150
    connect(ac_GetLabels,    SIGNAL(triggered()), this, SLOT(slot_ac_GetLabels()));
161
    connect(ac_GetLabels,    SIGNAL(triggered()), this, SLOT(slot_ac_GetLabels()));
151
 
162
 
152
    // Tabs ein & ausblenden
163
    // Tabs ein & ausblenden
153
    connect(ac_View0,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
164
    connect(ac_View0,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
154
    connect(ac_View1,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
165
    connect(ac_View1,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
155
    connect(ac_View2,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
166
    connect(ac_View2,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
156
    connect(ac_View3,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
167
    connect(ac_View3,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
157
    connect(ac_View4,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
168
    connect(ac_View4,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
158
    connect(ac_View5,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
169
    connect(ac_View5,        SIGNAL(triggered()), this, SLOT(slot_ac_View()));
159
 
170
 
-
 
171
    connect(pb_Update,  SIGNAL(clicked()), this, SLOT(slot_pb_Update()));
160
//    connect(pb_Update,  SIGNAL(clicked()), this, SLOT(slot_pb_Update()));
172
    connect(pb_HexFile,  SIGNAL(clicked()), this, SLOT(slot_pb_HexFile()));
161
 
173
 
162
    connect(ac_ConnectTTY, SIGNAL(triggered()), this, SLOT(slot_OpenPort()));
174
    connect(ac_ConnectTTY, SIGNAL(triggered()), this, SLOT(slot_OpenPort()));
163
    connect(ac_RecordCSV,  SIGNAL(triggered()), this, SLOT(slot_RecordCSV()));
175
    connect(ac_RecordCSV,  SIGNAL(triggered()), this, SLOT(slot_RecordCSV()));
164
 
176
 
165
    // Timer-Events
177
    // Timer-Events
166
    connect(Ticker,   SIGNAL(timeout()),       SLOT(slot_Ticker()));
178
    connect(Ticker,   SIGNAL(timeout()),       SLOT(slot_Ticker()));
167
 
179
 
168
    // Seitenwechsel :)
180
    // Seitenwechsel :)
169
    connect(tab_Main, SIGNAL(currentChanged(int)), this, SLOT(slot_TabChanged(int)));
181
    connect(tab_Main, SIGNAL(currentChanged(int)), this, SLOT(slot_TabChanged(int)));
170
    connect(tab_Par,  SIGNAL(currentChanged(int)), this, SLOT(slot_TabChanged(int)));
182
    connect(tab_Par,  SIGNAL(currentChanged(int)), this, SLOT(slot_TabChanged(int)));
171
 
183
 
172
    // Parameterevents
184
    // Parameterevents
173
    connect(tb_9_6,  SIGNAL(clicked()), this, SLOT(slot_tbUp()));
185
    connect(tb_9_6,  SIGNAL(clicked()), this, SLOT(slot_tbUp()));
174
    connect(tb_9_7,  SIGNAL(clicked()), this, SLOT(slot_tbDown()));
186
    connect(tb_9_7,  SIGNAL(clicked()), this, SLOT(slot_tbDown()));
175
    connect(tb_9_8,  SIGNAL(clicked()), this, SLOT(slot_tbLeft()));
187
    connect(tb_9_8,  SIGNAL(clicked()), this, SLOT(slot_tbLeft()));
176
    connect(tb_9_9,  SIGNAL(clicked()), this, SLOT(slot_tbRight()));
188
    connect(tb_9_9,  SIGNAL(clicked()), this, SLOT(slot_tbRight()));
177
 
189
 
178
    connect(J16_0,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
190
    connect(J16_0,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
179
    connect(J16_1,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
191
    connect(J16_1,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
180
    connect(J16_2,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
192
    connect(J16_2,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
181
    connect(J16_3,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
193
    connect(J16_3,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
182
    connect(J16_4,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
194
    connect(J16_4,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
183
    connect(J16_5,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
195
    connect(J16_5,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
184
    connect(J16_6,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
196
    connect(J16_6,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
185
    connect(J16_7,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
197
    connect(J16_7,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
186
 
198
 
187
    connect(J17_0,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
199
    connect(J17_0,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
188
    connect(J17_1,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
200
    connect(J17_1,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
189
    connect(J17_2,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
201
    connect(J17_2,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
190
    connect(J17_3,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
202
    connect(J17_3,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
191
    connect(J17_4,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
203
    connect(J17_4,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
192
    connect(J17_5,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
204
    connect(J17_5,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
193
    connect(J17_6,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
205
    connect(J17_6,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
194
    connect(J17_7,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
206
    connect(J17_7,  SIGNAL(clicked()), this, SLOT(slot_LEDtoValue()));
195
 
207
 
196
    connect(sb_11_1, SIGNAL(valueChanged(int)), this, SLOT(slot_ValuetoLED16(int)));
208
    connect(sb_11_1, SIGNAL(valueChanged(int)), this, SLOT(slot_ValuetoLED16(int)));
197
    connect(sb_11_3, SIGNAL(valueChanged(int)), this, SLOT(slot_ValuetoLED17(int)));
209
    connect(sb_11_3, SIGNAL(valueChanged(int)), this, SLOT(slot_ValuetoLED17(int)));
198
 
210
 
199
    // Plotter
211
    // Plotter
200
    connect(scroll_plot, SIGNAL(valueChanged(int)), this, SLOT(slot_ScrollPlot(int)));
212
    connect(scroll_plot, SIGNAL(valueChanged(int)), this, SLOT(slot_ScrollPlot(int)));
201
 
213
 
202
    // About-QT Dialog einfügen
214
    // About-QT Dialog einfügen
203
    menu_Help->addAction(trUtf8("Über &Qt"), qApp, SLOT(aboutQt()));
215
    menu_Help->addAction(trUtf8("Über &Qt"), qApp, SLOT(aboutQt()));
204
}
216
}
205
 
217
 
206
void MKTool::init_Arrays()
218
void MKTool::init_Arrays()
207
{
219
{
208
    lb_Analog[0]  = lb_A_0;
220
    lb_Analog[0]  = lb_A_0;
209
    lb_Analog[1]  = lb_A_1;
221
    lb_Analog[1]  = lb_A_1;
210
    lb_Analog[2]  = lb_A_2;
222
    lb_Analog[2]  = lb_A_2;
211
    lb_Analog[3]  = lb_A_3;
223
    lb_Analog[3]  = lb_A_3;
212
    lb_Analog[4]  = lb_A_4;
224
    lb_Analog[4]  = lb_A_4;
213
    lb_Analog[5]  = lb_A_5;
225
    lb_Analog[5]  = lb_A_5;
214
    lb_Analog[6]  = lb_A_6;
226
    lb_Analog[6]  = lb_A_6;
215
    lb_Analog[7]  = lb_A_7;
227
    lb_Analog[7]  = lb_A_7;
216
    lb_Analog[8]  = lb_A_8;
228
    lb_Analog[8]  = lb_A_8;
217
    lb_Analog[9]  = lb_A_9;
229
    lb_Analog[9]  = lb_A_9;
218
    lb_Analog[10] = lb_A_10;
230
    lb_Analog[10] = lb_A_10;
219
    lb_Analog[11] = lb_A_11;
231
    lb_Analog[11] = lb_A_11;
220
    lb_Analog[12] = lb_A_12;
232
    lb_Analog[12] = lb_A_12;
221
    lb_Analog[13] = lb_A_13;
233
    lb_Analog[13] = lb_A_13;
222
    lb_Analog[14] = lb_A_14;
234
    lb_Analog[14] = lb_A_14;
223
    lb_Analog[15] = lb_A_15;
235
    lb_Analog[15] = lb_A_15;
224
    lb_Analog[16] = lb_A_16;
236
    lb_Analog[16] = lb_A_16;
225
    lb_Analog[17] = lb_A_17;
237
    lb_Analog[17] = lb_A_17;
226
    lb_Analog[18] = lb_A_18;
238
    lb_Analog[18] = lb_A_18;
227
    lb_Analog[19] = lb_A_19;
239
    lb_Analog[19] = lb_A_19;
228
    lb_Analog[20] = lb_A_20;
240
    lb_Analog[20] = lb_A_20;
229
    lb_Analog[21] = lb_A_21;
241
    lb_Analog[21] = lb_A_21;
230
    lb_Analog[22] = lb_A_22;
242
    lb_Analog[22] = lb_A_22;
231
    lb_Analog[23] = lb_A_23;
243
    lb_Analog[23] = lb_A_23;
232
    lb_Analog[24] = lb_A_24;
244
    lb_Analog[24] = lb_A_24;
233
    lb_Analog[25] = lb_A_25;
245
    lb_Analog[25] = lb_A_25;
234
    lb_Analog[26] = lb_A_26;
246
    lb_Analog[26] = lb_A_26;
235
    lb_Analog[27] = lb_A_27;
247
    lb_Analog[27] = lb_A_27;
236
    lb_Analog[28] = lb_A_28;
248
    lb_Analog[28] = lb_A_28;
237
    lb_Analog[29] = lb_A_29;
249
    lb_Analog[29] = lb_A_29;
238
    lb_Analog[30] = lb_A_30;
250
    lb_Analog[30] = lb_A_30;
239
    lb_Analog[31] = lb_A_31;
251
    lb_Analog[31] = lb_A_31;
240
}
252
}
241
 
253
 
242
void MKTool::init_Plot()
254
void MKTool::init_Plot()
243
{
255
{
244
    NextPlot = 0;
256
    NextPlot = 0;
245
 
257
 
246
    qwtPlot->setCanvasBackground(QColor(QRgb(0x00000000)));
258
    qwtPlot->setCanvasBackground(QColor(QRgb(0x00000000)));
247
 
259
 
248
    qwtPlot->insertLegend(new QwtLegend(), QwtPlot::RightLegend);
260
    qwtPlot->insertLegend(new QwtLegend(), QwtPlot::RightLegend);
249
 
261
 
250
    QwtPlotGrid *Grid = new QwtPlotGrid();
262
    QwtPlotGrid *Grid = new QwtPlotGrid();
251
    Grid->setMajPen(QPen(Qt::gray, 0, Qt::DotLine));
263
    Grid->setMajPen(QPen(Qt::gray, 0, Qt::DotLine));
252
 
264
 
253
 
265
 
254
    Grid->attach(qwtPlot);
266
    Grid->attach(qwtPlot);
255
 
267
 
256
    qwtPlot->setAxisScale(QwtPlot::xBottom,0,PlotWide,0);
268
    qwtPlot->setAxisScale(QwtPlot::xBottom,0,Settings->Data.Plotter_Count,0);
257
 
269
 
258
    for (int a = 0; a < MaxAnalog; a++)
270
    for (int a = 0; a < MaxAnalog; a++)
259
    {
271
    {
260
        Plot[a] = new QwtPlotCurve(Settings->Analog1.Label[a]);
272
        Plot[a] = new QwtPlotCurve(Settings->Analog1.Label[a]);
261
        Plot[a]->setPen(QPen(QColor(Def_Colors[a])));
273
        Plot[a]->setPen(QPen(QColor(Def_Colors[a])));
262
//        Plot[a]->setRenderHint(QwtPlotItem::RenderAntialiased);
274
//        Plot[a]->setRenderHint(QwtPlotItem::RenderAntialiased);
263
 
275
 
264
        if (Settings->Analog1.PlotView[a])
276
        if (Settings->Analog1.PlotView[a])
265
            Plot[a]->attach(qwtPlot);
277
            Plot[a]->attach(qwtPlot);
266
    }
278
    }
267
    qwtPlot->replot();
279
    qwtPlot->replot();
268
}
280
}
269
 
281
 
270
void MKTool::init_Icons()
282
void MKTool::init_Icons()
271
{
283
{
272
    Icons[0].addPixmap(QPixmap(QString::fromUtf8(":/LED/Images/16X16/ledred.png")), QIcon::Normal, QIcon::Off);
284
    Icons[0].addPixmap(QPixmap(QString::fromUtf8(":/LED/Images/16X16/ledred.png")), QIcon::Normal, QIcon::Off);
273
    Icons[1].addPixmap(QPixmap(QString::fromUtf8(":/LED/Images/16X16/ledyellow.png")), QIcon::Normal, QIcon::Off);
285
    Icons[1].addPixmap(QPixmap(QString::fromUtf8(":/LED/Images/16X16/ledyellow.png")), QIcon::Normal, QIcon::Off);
274
    Icons[3].addPixmap(QPixmap(QString::fromUtf8(":/LED/Images/16X16/ledyellow.png")), QIcon::Normal, QIcon::Off);
286
    Icons[3].addPixmap(QPixmap(QString::fromUtf8(":/LED/Images/16X16/ledyellow.png")), QIcon::Normal, QIcon::Off);
275
    Icons[4].addPixmap(QPixmap(QString::fromUtf8(":/LED/Images/16X16/ledoff.png")), QIcon::Normal, QIcon::Off);
287
    Icons[4].addPixmap(QPixmap(QString::fromUtf8(":/LED/Images/16X16/ledoff.png")), QIcon::Normal, QIcon::Off);
276
 
288
 
277
    Icons[5].addPixmap(QPixmap(QString::fromUtf8(":/Actions/Images/22X22/application-exit.png")), QIcon::Normal, QIcon::Off);
289
    Icons[5].addPixmap(QPixmap(QString::fromUtf8(":/Actions/Images/22X22/application-exit.png")), QIcon::Normal, QIcon::Off);
278
    Icons[6].addPixmap(QPixmap(QString::fromUtf8(":/Actions/Images/22X22/media-playback-stop.png")), QIcon::Normal, QIcon::Off);
290
    Icons[6].addPixmap(QPixmap(QString::fromUtf8(":/Actions/Images/22X22/media-playback-stop.png")), QIcon::Normal, QIcon::Off);
279
    Icons[7].addPixmap(QPixmap(QString::fromUtf8(":/Actions/Images/22X22/media-record.png")), QIcon::Normal, QIcon::Off);
291
    Icons[7].addPixmap(QPixmap(QString::fromUtf8(":/Actions/Images/22X22/media-record.png")), QIcon::Normal, QIcon::Off);
280
    Icons[8].addPixmap(QPixmap(QString::fromUtf8(":/Actions/Images/22X22/network-connect.png")), QIcon::Normal, QIcon::Off);
292
    Icons[8].addPixmap(QPixmap(QString::fromUtf8(":/Actions/Images/22X22/network-connect.png")), QIcon::Normal, QIcon::Off);
281
    Icons[9].addPixmap(QPixmap(QString::fromUtf8(":/Actions/Images/22X22/network-disconnect.png")), QIcon::Normal, QIcon::Off);
293
    Icons[9].addPixmap(QPixmap(QString::fromUtf8(":/Actions/Images/22X22/network-disconnect.png")), QIcon::Normal, QIcon::Off);
282
    Icons[10].addPixmap(QPixmap(QString::fromUtf8(":/Actions/Images/22X22/utilities-system-monitor.png")), QIcon::Normal, QIcon::Off);
294
    Icons[10].addPixmap(QPixmap(QString::fromUtf8(":/Actions/Images/22X22/utilities-system-monitor.png")), QIcon::Normal, QIcon::Off);
283
 
295
 
284
    Icons[20].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-up-double.png")), QIcon::Normal, QIcon::Off);
296
    Icons[20].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-up-double.png")), QIcon::Normal, QIcon::Off);
285
    Icons[21].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-up.png")), QIcon::Normal, QIcon::Off);
297
    Icons[21].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-up.png")), QIcon::Normal, QIcon::Off);
286
    Icons[22].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-down-double.png")), QIcon::Normal, QIcon::Off);
298
    Icons[22].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-down-double.png")), QIcon::Normal, QIcon::Off);
287
    Icons[23].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-down.png")), QIcon::Normal, QIcon::Off);
299
    Icons[23].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-down.png")), QIcon::Normal, QIcon::Off);
288
    Icons[24].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-left-double.png")), QIcon::Normal, QIcon::Off);
300
    Icons[24].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-left-double.png")), QIcon::Normal, QIcon::Off);
289
    Icons[25].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-left.png")), QIcon::Normal, QIcon::Off);
301
    Icons[25].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-left.png")), QIcon::Normal, QIcon::Off);
290
    Icons[26].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-right-double.png")), QIcon::Normal, QIcon::Off);
302
    Icons[26].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-right-double.png")), QIcon::Normal, QIcon::Off);
291
    Icons[27].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-right.png")), QIcon::Normal, QIcon::Off);
303
    Icons[27].addPixmap(QPixmap(QString::fromUtf8(":/Arrows/Images/32X32/arrow-right.png")), QIcon::Normal, QIcon::Off);
292
}
304
}
293
 
305
 
294
 
306
 
295
// Ticker-Event
307
// Ticker-Event
296
///////////////
308
///////////////
297
void MKTool::slot_Ticker()
309
void MKTool::slot_Ticker()
298
{
310
{
299
    if (TickerDiv)
311
    if (TickerDiv)
300
        TickerDiv = false;
312
        TickerDiv = false;
301
    else
313
    else
302
        TickerDiv = true;
314
        TickerDiv = true;
303
 
315
 
304
    for (int a = 0; a < MaxTickerEvents; a++)
316
    for (int a = 0; a < MaxTickerEvents; a++)
305
    {
317
    {
306
        if (TickerEvent[a] == true)
318
        if (TickerEvent[a] == true)
307
        {
319
        {
308
            switch(a)
320
            switch(a)
309
            {
321
            {
310
                case 0 :
322
                case 0 :
311
                    if (TickerDiv)
323
                    if (TickerDiv)
312
                    {
324
                    {
313
                        QByteArray Temp(LastSend.toUtf8());
325
                        QByteArray Temp(LastSend.toUtf8());
314
                        serialPort->sendData(Temp);
326
                        serialPort->sendData(Temp);
315
                    }
327
                    }
316
                break;
328
                break;
317
                case 1 :
329
                case 1 :
318
                    TX_Data[0] = 0;
330
                    TX_Data[0] = 0;
319
                    send_Data('p', ADDRESS_FC, TX_Data, 0, false);
331
                    send_Data('p', ADDRESS_FC, TX_Data, 0, false);
320
                break;
332
                break;
321
                case 2 :
333
                case 2 :
322
                    TX_Data[0] = LCD_Page;
334
                    TX_Data[0] = LCD_Page;
323
                    TX_Data[1] = 0;
335
                    TX_Data[1] = 0;
324
                    send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
336
                    send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
325
                break;
337
                break;
326
            }
338
            }
327
        }
339
        }
328
    }
340
    }
329
}
341
}
330
 
342
 
331
 
343
 
332
// Slots der Actions (Menüpunkte, Buttons)
344
// Slots der Actions (Menüpunkte, Buttons)
333
//////////////////////////////////////////
345
//////////////////////////////////////////
334
void MKTool::slot_ac_Motortest()
346
void MKTool::slot_ac_Motortest()
335
{
347
{
336
    dlg_Motortest *f_Motortest = new dlg_Motortest(this);
348
    dlg_Motortest *f_Motortest = new dlg_Motortest(this);
337
 
349
 
338
    connect(f_Motortest, SIGNAL(updateMotor(int, int, int, int)), this, SLOT(slot_Motortest(int, int, int, int)));
350
    connect(f_Motortest, SIGNAL(updateMotor(int, int, int, int)), this, SLOT(slot_Motortest(int, int, int, int)));
339
 
351
 
340
    if (f_Motortest->exec()==QDialog::Accepted)
352
    if (f_Motortest->exec()==QDialog::Accepted)
341
    {
353
    {
342
    }
354
    }
343
 
355
 
344
    disconnect(f_Motortest, 0,0,0);
356
    disconnect(f_Motortest, 0,0,0);
345
    slot_Motortest(0,0,0,0);
357
    slot_Motortest(0,0,0,0);
346
}
358
}
347
 
359
 
348
void MKTool::slot_Motortest(int Motor1, int Motor2, int Motor3, int Motor4)
360
void MKTool::slot_Motortest(int Motor1, int Motor2, int Motor3, int Motor4)
349
{
361
{
350
    TX_Data[0] = Motor1;
362
    TX_Data[0] = Motor1;
351
    TX_Data[1] = Motor2;
363
    TX_Data[1] = Motor2;
352
    TX_Data[2] = Motor3;
364
    TX_Data[2] = Motor3;
353
    TX_Data[3] = Motor4;
365
    TX_Data[3] = Motor4;
354
    send_Data('t', ADDRESS_FC, TX_Data, 4, false);
366
    send_Data('t', ADDRESS_FC, TX_Data, 4, false);
355
}
367
}
356
 
368
 
357
void MKTool::slot_ac_Config()
369
void MKTool::slot_ac_Config()
358
{
370
{
359
    set_Analog Old_Analog1;
371
    set_Analog Old_Analog1;
360
 
372
 
361
    Old_Analog1 = Settings->Analog1;
373
    Old_Analog1 = Settings->Analog1;
362
 
374
 
363
    dlg_Config *f_Config = new dlg_Config(this);
375
    dlg_Config *f_Config = new dlg_Config(this);
364
    f_Config->set_Settings(Settings, Mode.ID);
376
    f_Config->set_Settings(Settings, Mode.ID);
365
 
377
 
366
    if (f_Config->exec()==QDialog::Accepted)
378
    if (f_Config->exec()==QDialog::Accepted)
367
    {
379
    {
368
        Settings = f_Config->get_Settings();
380
        Settings = f_Config->get_Settings();
369
        Settings->write_Settings_Analog(Mode.ID);
381
        Settings->write_Settings_Analog(Mode.ID);
370
 
382
 
371
        // Plotter neu einrichten
383
        // Plotter neu einrichten
372
        if (Old_Analog1.PlotView != Settings->Analog1.PlotView)
384
        if (Old_Analog1.PlotView != Settings->Analog1.PlotView)
373
        {
385
        {
374
            config_Plot();
386
            config_Plot();
375
        }
387
        }
376
 
388
 
377
        // CVS-Datei neu anlegen.
389
        // CVS-Datei neu anlegen.
378
        if ((CSVFile->isOpen()) && (Old_Analog1.LogView != Settings->Analog1.LogView))
390
        if ((CSVFile->isOpen()) && (Old_Analog1.LogView != Settings->Analog1.LogView))
379
        {
391
        {
380
            slot_RecordCSV();
392
            slot_RecordCSV();
381
            slot_RecordCSV();
393
            slot_RecordCSV();
382
        }
394
        }
383
 
395
 
384
    }
396
    }
385
}
397
}
386
 
398
 
387
void MKTool::slot_ac_Preferences()
399
void MKTool::slot_ac_Preferences()
388
{
400
{
389
    dlg_Preferences *f_Preferences = new dlg_Preferences(this);
401
    dlg_Preferences *f_Preferences = new dlg_Preferences(this);
-
 
402
 
390
 
403
    Settings->TTY.Port = le_Port->text();
391
    f_Preferences->set_Settings(Settings);
404
    f_Preferences->set_Settings(Settings);
392
 
405
 
393
    if (f_Preferences->exec()==QDialog::Accepted)
406
    if (f_Preferences->exec()==QDialog::Accepted)
394
    {
407
    {
395
        Settings = f_Preferences->get_Settings();
408
        Settings = f_Preferences->get_Settings();
396
        Settings->write_Settings();
409
        Settings->write_Settings();
-
 
410
        le_Port->setText(Settings->TTY.Port);
-
 
411
        config_Plot();
397
    }
412
    }
398
}
413
}
399
 
414
 
400
void MKTool::slot_ac_StartPlotter()
415
void MKTool::slot_ac_StartPlotter()
401
{
416
{
402
    if (ac_StartPlotter->isChecked())
417
    if (ac_StartPlotter->isChecked())
403
    {
418
    {
404
        ac_StartPlotter->setText("Stop Plotter");
419
        ac_StartPlotter->setText("Stop Plotter");
405
        pb_StartPlotter->setText("Stop Plotter");
420
        pb_StartPlotter->setText("Stop Plotter");
406
    }
421
    }
407
    else
422
    else
408
    {
423
    {
409
        ac_StartPlotter->setText("Start Plotter");
424
        ac_StartPlotter->setText("Start Plotter");
410
        pb_StartPlotter->setText("Start Plotter");
425
        pb_StartPlotter->setText("Start Plotter");
411
    }
426
    }
412
}
427
}
413
 
428
 
414
void MKTool::slot_ac_View()
429
void MKTool::slot_ac_View()
415
{
430
{
416
    int Aktive;
431
    int Aktive;
417
 
432
 
418
    QAction *Action = (QAction*)sender();
433
    QAction *Action = (QAction*)sender();
419
 
434
 
420
    if (Action->objectName() == QString("ac_View0"))
435
    if (Action->objectName() == QString("ac_View0"))
421
        Aktive = 0;
436
        Aktive = 0;
422
    if (Action->objectName() == QString("ac_View1"))
437
    if (Action->objectName() == QString("ac_View1"))
423
        Aktive = 1;
438
        Aktive = 1;
424
    if (Action->objectName() == QString("ac_View2"))
439
    if (Action->objectName() == QString("ac_View2"))
425
        Aktive = 2;
440
        Aktive = 2;
426
    if (Action->objectName() == QString("ac_View3"))
441
    if (Action->objectName() == QString("ac_View3"))
427
        Aktive = 3;
442
        Aktive = 3;
428
    if (Action->objectName() == QString("ac_View4"))
443
    if (Action->objectName() == QString("ac_View4"))
429
        Aktive = 4;
444
        Aktive = 4;
430
    if (Action->objectName() == QString("ac_View5"))
445
    if (Action->objectName() == QString("ac_View5"))
431
        Aktive = 5;
446
        Aktive = 5;
432
 
447
 
433
    QString TabName = QString("Tab_%1").arg(Aktive);
448
    QString TabName = QString("Tab_%1").arg(Aktive);
434
 
449
 
435
    if (!Action->isChecked())
450
    if (!Action->isChecked())
436
    {
451
    {
437
        for (int a = 0; a < tab_Main->count(); a++)
452
        for (int a = 0; a < tab_Main->count(); a++)
438
        {
453
        {
439
            if (tab_Main->widget(a)->objectName() == TabName)
454
            if (tab_Main->widget(a)->objectName() == TabName)
440
            {
455
            {
441
                tab_Main->removeTab(a);
456
                tab_Main->removeTab(a);
442
            }
457
            }
443
        }
458
        }
444
 
459
 
445
//        Action->setChecked(false);
460
//        Action->setChecked(false);
446
    }
461
    }
447
    else
462
    else
448
    {
463
    {
449
//        Action->setChecked(true);
464
//        Action->setChecked(true);
450
        tab_Main->insertTab(Aktive, TabWidgets[Aktive], Action->text());
465
        tab_Main->insertTab(Aktive, TabWidgets[Aktive], Action->text());
451
    }
466
    }
452
}
467
}
453
 
468
 
454
void MKTool::slot_ac_MehrDaten() // DONE 0.71g
469
void MKTool::slot_ac_MehrDaten() // DONE 0.71g
455
{
470
{
456
    if (ac_MehrDaten->isChecked())
471
    if (!ac_KeineDaten->isChecked())
457
    {
472
    {
-
 
473
        if (ac_MehrDaten->isChecked())
-
 
474
        {
-
 
475
            TX_Data[0] = Settings->Data.Debug_Fast / 10;
-
 
476
            send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
-
 
477
        }
-
 
478
        else
-
 
479
        {
-
 
480
            TX_Data[0] = Settings->Data.Debug_Slow / 10;
-
 
481
            send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
-
 
482
        }
-
 
483
    }
-
 
484
}
-
 
485
 
-
 
486
void MKTool::slot_ac_KeineDaten() // DONE 0.71g
-
 
487
{
-
 
488
    if (ac_KeineDaten->isChecked())
-
 
489
    {
458
        TX_Data[0] = 10;
490
        TX_Data[0] = 0;
459
        send_Data('d', ADDRESS_ALL, TX_Data, 1, false);    }
491
        send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
-
 
492
    }
460
    else
493
    else
461
    {
494
    {
-
 
495
        if (ac_MehrDaten->isChecked())
-
 
496
        {
462
        TX_Data[0] = 50;
497
            TX_Data[0] = Settings->Data.Debug_Fast / 10;
463
        send_Data('d', ADDRESS_ALL, TX_Data, 1, false);    }
498
            send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
-
 
499
        }
-
 
500
        else
-
 
501
        {
-
 
502
            TX_Data[0] = Settings->Data.Debug_Slow / 10;
-
 
503
            send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
-
 
504
        }
-
 
505
    }
464
}
506
}
465
 
507
 
466
void MKTool::slot_ac_About()
508
void MKTool::slot_ac_About()
467
{
509
{
468
    QMessageBox::about(this, trUtf8(("Über ")) + QA_NAME, QA_ABOUT);
510
    QMessageBox::about(this, trUtf8(("Über ")) + QA_NAME, QA_ABOUT);
469
}
511
}
470
 
512
 
471
void MKTool::slot_ac_GetLabels() // DONE 0.71g
513
void MKTool::slot_ac_GetLabels() // DONE 0.71g
472
{
514
{
473
    TX_Data[0] = 0;
515
    TX_Data[0] = 0;
474
    send_Data('a', ADDRESS_ALL, TX_Data, 1, false);
516
    send_Data('a', ADDRESS_ALL, TX_Data, 1, false);
475
}
517
}
476
 
518
 
477
 
519
 
478
//  Daten-Plotter
520
//  Daten-Plotter
479
/////////////////
521
/////////////////
480
void MKTool::update_Plot()
522
void MKTool::update_Plot()
481
{
523
{
482
    for (int a = 0; a < MaxAnalog; a++)
524
    for (int a = 0; a < MaxAnalog; a++)
483
    {
525
    {
484
        Plot[a]->setData(aID,aData[a],NextPlot - 1);
526
        Plot[a]->setData(aID,aData[a],NextPlot - 1);
485
    }
527
    }
486
 
528
 
487
    if ((NextPlot > PlotWide))
529
    if ((NextPlot > Settings->Data.Plotter_Count))
488
    {
530
    {
489
        scroll_plot->setMaximum(NextPlot - PlotWide);
531
        scroll_plot->setMaximum(NextPlot - Settings->Data.Plotter_Count);
490
    }
532
    }
491
 
533
 
492
    if ((scroll_plot->value() == NextPlot - (PlotWide + 1)))
534
    if ((scroll_plot->value() == NextPlot - (Settings->Data.Plotter_Count + 1)))
493
    {
535
    {
494
        qwtPlot->setAxisScale(QwtPlot::xBottom,NextPlot - PlotWide,NextPlot,0);
536
        qwtPlot->setAxisScale(QwtPlot::xBottom,NextPlot - Settings->Data.Plotter_Count,NextPlot,0);
495
        scroll_plot->setValue(NextPlot - PlotWide);
537
        scroll_plot->setValue(NextPlot - Settings->Data.Plotter_Count);
496
    }
538
    }
497
 
539
 
498
    qwtPlot->replot();
540
    qwtPlot->replot();
499
}
541
}
500
 
542
 
501
void MKTool::config_Plot()
543
void MKTool::config_Plot()
502
{
544
{
-
 
545
//    qDebug("Plotter rekonfiguriert..!!");
-
 
546
    qwtPlot->setAxisScale(QwtPlot::xBottom,0,Settings->Data.Plotter_Count,0);
-
 
547
 
503
    for (int a = 0; a < MaxAnalog; a++)
548
    for (int a = 0; a < MaxAnalog; a++)
504
    {
549
    {
505
        Plot[a]->detach();
550
        Plot[a]->detach();
506
        Plot[a]->setPen(QPen(QColor(Def_Colors[a])));
551
        Plot[a]->setPen(QPen(QColor(Def_Colors[a])));
507
 
552
 
508
        if (Settings->Analog1.PlotView[a])
553
        if (Settings->Analog1.PlotView[a])
509
        {
554
        {
510
            Plot[a]->setTitle(Settings->Analog1.Label[a]);
555
            Plot[a]->setTitle(Settings->Analog1.Label[a]);
511
            Plot[a]->attach(qwtPlot);
556
            Plot[a]->attach(qwtPlot);
512
        }
557
        }
513
    }
558
    }
-
 
559
    qwtPlot->replot();
514
}
560
}
515
 
561
 
516
void MKTool::slot_ScrollPlot(int Pos)
562
void MKTool::slot_ScrollPlot(int Pos)
517
{
563
{
518
    qwtPlot->setAxisScale(QwtPlot::xBottom,Pos,Pos + PlotWide,0);
564
    qwtPlot->setAxisScale(QwtPlot::xBottom,Pos,Pos + Settings->Data.Plotter_Count,0);
519
    qwtPlot->replot();
565
    qwtPlot->replot();
520
}
566
}
521
 
567
 
522
 
568
 
523
// Firmeware-Update
569
// Firmeware-Update
524
///////////////////
570
///////////////////
525
void MKTool::slot_pb_Update()
571
void MKTool::slot_pb_Update()
526
{
572
{
527
    qDebug("Update");
-
 
-
 
573
 
-
 
574
 
-
 
575
    QString Message = "Firmeware-Datei \n\n";
-
 
576
    Message = Message + le_HexFile->text() + "\n\n";
-
 
577
    Message = Message + trUtf8("an FlightCtrl mit AVRDUDE - Seriel & Bootloader über ") + le_Port->text() + trUtf8(" übertragen?\n");
528
 
578
 
529
    if (serialPort->isOpen())
579
    if (le_HexFile->text() == "")
530
    {
580
    {
531
        slot_OpenPort();
581
        QMessageBox::warning(this, QA_NAME, trUtf8("Bitte Firmeware-Datei wählen."), QMessageBox::Ok);
-
 
582
    }
-
 
583
    else if (QMessageBox::warning(this, QA_NAME, Message, QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
-
 
584
    {
-
 
585
        QString Programm = "avrdude" ;
-
 
586
        QString Device   = "m644";
-
 
587
 
-
 
588
        QStringList Argumente;
-
 
589
 
-
 
590
        Update = new QProcess();
-
 
591
 
-
 
592
        if (serialPort->isOpen())
-
 
593
        {
-
 
594
            slot_OpenPort();
-
 
595
        }
-
 
596
 
-
 
597
        Argumente << "-P";
-
 
598
        Argumente << le_Port->text();
-
 
599
        Argumente << "-p";
-
 
600
        Argumente << Device;
-
 
601
        Argumente << "-c";
-
 
602
        Argumente << "butterfly";
-
 
603
        Argumente << "-b";
-
 
604
        Argumente << "57600";
-
 
605
        Argumente << "-U";
532
    }
606
        Argumente << "flash:w:" + le_HexFile->text();
533
 
-
 
534
    Update = new QProcess();
607
 
535
 
608
//    QString Programm = "/home/Manuel/bin/avrdude -p m644 -P /dev/ttyS0 -c butterfly -b 57600 -U flash:w:/home/Manuel/Documents/Mikrokopter/Firmeware/FlightCtrl/Flight-Ctrl_MEGA644_V0_71h.hex";
536
    const QString Programm = "avrdude -p m644 -P /dev/ttyS0 -c butterfly -b 57600 -U flash:w:Flight-Ctrl_MEGA644_V0_71f.hex";
609
 
-
 
610
        te_Shell->setText(""); // Ausgabefenster säubern
537
    const QStringList Argumente = (QStringList() << "-?");
611
 
538
 
612
        connect(Update, SIGNAL(readyReadStandardOutput()), this, SLOT(slot_UpdateShell()) );
539
    te_Shell->setText(""); // Ausgabefenster säubern
-
 
540
    Update->start(Programm); // Programmaufruf
613
        connect(Update, SIGNAL(readyReadStandardError()), this, SLOT(slot_UpdateShell()) );
541
//   Update.waitForFinished(); // auf Rückmeldung warten
614
 
542
//   Update.close(); // Kanal schließen
615
        Update->start(Programm, Argumente); // Programmaufruf
543
     connect(Update, SIGNAL(readyReadStandardOutput()), this, SLOT(slot_UpdateShell()) );
616
    }
544
}
617
}
545
 
618
 
546
void MKTool::slot_UpdateShell()
619
void MKTool::slot_UpdateShell()
547
{
620
{
548
    QByteArray Output;
621
    QByteArray Output;
549
//   te_Shell->setText(""); // Ausgabefenster säubern
-
 
550
    Output = Update->readAllStandardOutput(); // Shellausgabe an Variable
-
 
-
 
622
 
551
 
623
    Output = Update->readAllStandardError(); // Shellausgabe an Variable
552
    te_Shell->moveCursor(QTextCursor::End,  QTextCursor::MoveAnchor);
624
    te_Shell->moveCursor(QTextCursor::End,  QTextCursor::MoveAnchor);
553
    te_Shell->insertPlainText(QString::fromUtf8(Output));
625
    te_Shell->insertPlainText(QString::fromUtf8(Output));
-
 
626
 
554
 
627
    Output = Update->readAll();
555
    te_Shell->setText(QString::fromUtf8(Output)); // ...und endlich: Ausgabe im QLabel
628
    te_Shell->moveCursor(QTextCursor::End,  QTextCursor::MoveAnchor);
556
    qDebug("Shell");
629
    te_Shell->insertPlainText(QString::fromUtf8(Output));
-
 
630
}
-
 
631
 
-
 
632
void MKTool::slot_pb_HexFile()
-
 
633
{
-
 
634
    QString FileName = QFileDialog::getOpenFileName(this,trUtf8(("Firmeware-Datei wählen")),"",
-
 
635
                                tr("Intel Hex(*.hex);;Alle Dateien (*)"));
-
 
636
    if (!FileName.isEmpty())
-
 
637
    {
-
 
638
        le_HexFile->setText(FileName);
557
}
639
    }
558
 
640
}
559
 
641
 
560
// Settings-Bereich
642
// Settings-Bereich
561
///////////////////
643
///////////////////
562
 
644
 
563
void MKTool::slot_LEDtoValue()
645
void MKTool::slot_LEDtoValue()
564
{
646
{
565
    QToolButton *ToolButton = (QToolButton*)sender();
647
    QToolButton *ToolButton = (QToolButton*)sender();
566
    if (ToolButton->text() == QString("0"))
648
    if (ToolButton->text() == QString("0"))
567
    {
649
    {
568
        set_LED(ToolButton, true);
650
        set_LED(ToolButton, true);
569
        sb_11_1->setValue(sb_11_1->value() + ToolButton->toolTip().toInt());
651
        sb_11_1->setValue(sb_11_1->value() + ToolButton->toolTip().toInt());
570
    }
652
    }
571
    else if (ToolButton->text() == QString("1"))
653
    else if (ToolButton->text() == QString("1"))
572
    {
654
    {
573
        set_LED(ToolButton);
655
        set_LED(ToolButton);
574
        sb_11_1->setValue(sb_11_1->value() - ToolButton->toolTip().toInt());
656
        sb_11_1->setValue(sb_11_1->value() - ToolButton->toolTip().toInt());
575
    }
657
    }
576
    else if (ToolButton->text() == QString("00"))
658
    else if (ToolButton->text() == QString("00"))
577
    {
659
    {
578
        set_LED(ToolButton, true);
660
        set_LED(ToolButton, true);
579
        sb_11_3->setValue(sb_11_3->value() + ToolButton->toolTip().toInt());
661
        sb_11_3->setValue(sb_11_3->value() + ToolButton->toolTip().toInt());
580
    }
662
    }
581
    else if (ToolButton->text() == QString("11"))
663
    else if (ToolButton->text() == QString("11"))
582
    {
664
    {
583
        set_LED(ToolButton);
665
        set_LED(ToolButton);
584
        sb_11_3->setValue(sb_11_3->value() - ToolButton->toolTip().toInt());
666
        sb_11_3->setValue(sb_11_3->value() - ToolButton->toolTip().toInt());
585
    }
667
    }
586
}
668
}
587
 
669
 
588
void MKTool::slot_ValuetoLED16(int Wert)
670
void MKTool::slot_ValuetoLED16(int Wert)
589
{
671
{
590
//    QSpinBox *SpinBox = (QSpinBox*)sender();
672
//    QSpinBox *SpinBox = (QSpinBox*)sender();
591
 
673
 
592
//    int Wert = SpinBox->value();
674
//    int Wert = SpinBox->value();
593
 
675
 
594
    set_LED(J16_0);
676
    set_LED(J16_0);
595
    set_LED(J16_1);
677
    set_LED(J16_1);
596
    set_LED(J16_2);
678
    set_LED(J16_2);
597
    set_LED(J16_3);
679
    set_LED(J16_3);
598
    set_LED(J16_4);
680
    set_LED(J16_4);
599
    set_LED(J16_5);
681
    set_LED(J16_5);
600
    set_LED(J16_6);
682
    set_LED(J16_6);
601
    set_LED(J16_7);
683
    set_LED(J16_7);
602
 
684
 
603
    for (int a = 0; a < 8; a++)
685
    for (int a = 0; a < 8; a++)
604
    {
686
    {
605
        if (Wert > 127)
687
        if (Wert > 127)
606
        {
688
        {
607
            set_LED(J16_0, true);
689
            set_LED(J16_0, true);
608
            Wert = Wert - 128;
690
            Wert = Wert - 128;
609
        }
691
        }
610
        if (Wert > 63)
692
        if (Wert > 63)
611
        {
693
        {
612
            set_LED(J16_1, true);
694
            set_LED(J16_1, true);
613
            Wert = Wert - 64;
695
            Wert = Wert - 64;
614
        }
696
        }
615
        if (Wert > 31)
697
        if (Wert > 31)
616
        {
698
        {
617
            set_LED(J16_2, true);
699
            set_LED(J16_2, true);
618
            Wert = Wert - 32;
700
            Wert = Wert - 32;
619
        }
701
        }
620
        if (Wert > 15)
702
        if (Wert > 15)
621
        {
703
        {
622
            set_LED(J16_3, true);
704
            set_LED(J16_3, true);
623
            Wert = Wert - 16;
705
            Wert = Wert - 16;
624
        }
706
        }
625
        if (Wert > 7)
707
        if (Wert > 7)
626
        {
708
        {
627
            set_LED(J16_4, true);
709
            set_LED(J16_4, true);
628
            Wert = Wert - 8;
710
            Wert = Wert - 8;
629
        }
711
        }
630
        if (Wert > 3)
712
        if (Wert > 3)
631
        {
713
        {
632
            set_LED(J16_5, true);
714
            set_LED(J16_5, true);
633
            Wert = Wert - 4;
715
            Wert = Wert - 4;
634
        }
716
        }
635
        if (Wert > 1)
717
        if (Wert > 1)
636
        {
718
        {
637
            set_LED(J16_6, true);
719
            set_LED(J16_6, true);
638
            Wert = Wert - 2;
720
            Wert = Wert - 2;
639
        }
721
        }
640
        if (Wert > 0)
722
        if (Wert > 0)
641
        {
723
        {
642
            set_LED(J16_7, true);
724
            set_LED(J16_7, true);
643
            Wert = Wert - 1;
725
            Wert = Wert - 1;
644
        }
726
        }
645
    }
727
    }
646
}
728
}
647
 
729
 
648
void MKTool::slot_ValuetoLED17(int Wert)
730
void MKTool::slot_ValuetoLED17(int Wert)
649
{
731
{
650
//    QSpinBox *SpinBox = (QSpinBox*)sender();
732
//    QSpinBox *SpinBox = (QSpinBox*)sender();
651
 
733
 
652
//    int Wert = SpinBox->value();
734
//    int Wert = SpinBox->value();
653
 
735
 
654
    set_LED(J17_0);
736
    set_LED(J17_0);
655
    set_LED(J17_1);
737
    set_LED(J17_1);
656
    set_LED(J17_2);
738
    set_LED(J17_2);
657
    set_LED(J17_3);
739
    set_LED(J17_3);
658
    set_LED(J17_4);
740
    set_LED(J17_4);
659
    set_LED(J17_5);
741
    set_LED(J17_5);
660
    set_LED(J17_6);
742
    set_LED(J17_6);
661
    set_LED(J17_7);
743
    set_LED(J17_7);
662
 
744
 
663
    for (int a = 0; a < 8; a++)
745
    for (int a = 0; a < 8; a++)
664
    {
746
    {
665
        if (Wert > 127)
747
        if (Wert > 127)
666
        {
748
        {
667
            set_LED(J17_0, true);
749
            set_LED(J17_0, true);
668
            Wert = Wert - 128;
750
            Wert = Wert - 128;
669
        }
751
        }
670
        if (Wert > 63)
752
        if (Wert > 63)
671
        {
753
        {
672
            set_LED(J17_1, true);
754
            set_LED(J17_1, true);
673
            Wert = Wert - 64;
755
            Wert = Wert - 64;
674
        }
756
        }
675
        if (Wert > 31)
757
        if (Wert > 31)
676
        {
758
        {
677
            set_LED(J17_2, true);
759
            set_LED(J17_2, true);
678
            Wert = Wert - 32;
760
            Wert = Wert - 32;
679
        }
761
        }
680
        if (Wert > 15)
762
        if (Wert > 15)
681
        {
763
        {
682
            set_LED(J17_3, true);
764
            set_LED(J17_3, true);
683
            Wert = Wert - 16;
765
            Wert = Wert - 16;
684
        }
766
        }
685
        if (Wert > 7)
767
        if (Wert > 7)
686
        {
768
        {
687
            set_LED(J17_4, true);
769
            set_LED(J17_4, true);
688
            Wert = Wert - 8;
770
            Wert = Wert - 8;
689
        }
771
        }
690
        if (Wert > 3)
772
        if (Wert > 3)
691
        {
773
        {
692
            set_LED(J17_5, true);
774
            set_LED(J17_5, true);
693
            Wert = Wert - 4;
775
            Wert = Wert - 4;
694
        }
776
        }
695
        if (Wert > 1)
777
        if (Wert > 1)
696
        {
778
        {
697
            set_LED(J17_6, true);
779
            set_LED(J17_6, true);
698
            Wert = Wert - 2;
780
            Wert = Wert - 2;
699
        }
781
        }
700
        if (Wert > 0)
782
        if (Wert > 0)
701
        {
783
        {
702
            set_LED(J17_7, true);
784
            set_LED(J17_7, true);
703
            Wert = Wert - 1;
785
            Wert = Wert - 1;
704
        }
786
        }
705
    }
787
    }
706
}
788
}
707
 
789
 
708
void MKTool::set_LED(QToolButton *ToolButton, bool On)
790
void MKTool::set_LED(QToolButton *ToolButton, bool On)
709
{
791
{
710
    if (ToolButton->text() == QString("0") && On)
792
    if (ToolButton->text() == QString("0") && On)
711
    {
793
    {
712
        ToolButton->setIcon(Icons[0]);
794
        ToolButton->setIcon(Icons[0]);
713
        ToolButton->setText("1");
795
        ToolButton->setText("1");
714
    }
796
    }
715
    else if (ToolButton->text() == QString("1") && !On)
797
    else if (ToolButton->text() == QString("1") && !On)
716
    {
798
    {
717
        ToolButton->setIcon(Icons[4]);
799
        ToolButton->setIcon(Icons[4]);
718
        ToolButton->setText("0");
800
        ToolButton->setText("0");
719
    }
801
    }
720
    else if (ToolButton->text() == QString("00") && On)
802
    else if (ToolButton->text() == QString("00") && On)
721
    {
803
    {
722
        ToolButton->setIcon(Icons[0]);
804
        ToolButton->setIcon(Icons[0]);
723
        ToolButton->setText("11");
805
        ToolButton->setText("11");
724
    }
806
    }
725
    else if (ToolButton->text() == QString("11") && !On)
807
    else if (ToolButton->text() == QString("11") && !On)
726
    {
808
    {
727
        ToolButton->setIcon(Icons[4]);
809
        ToolButton->setIcon(Icons[4]);
728
        ToolButton->setText("00");
810
        ToolButton->setText("00");
729
    }
811
    }
730
}
812
}
731
 
813
 
732
void MKTool::slot_tbUp()
814
void MKTool::slot_tbUp()
733
{
815
{
734
    if (tb_9_6->text() == QString("0"))
816
    if (tb_9_6->text() == QString("0"))
735
    {
817
    {
736
        tb_9_6->setIcon(Icons[20]);
818
        tb_9_6->setIcon(Icons[20]);
737
        tb_9_6->setText("1");
819
        tb_9_6->setText("1");
738
    }
820
    }
739
    else
821
    else
740
    {
822
    {
741
        tb_9_6->setIcon(Icons[21]);
823
        tb_9_6->setIcon(Icons[21]);
742
        tb_9_6->setText("0");
824
        tb_9_6->setText("0");
743
    }
825
    }
744
}
826
}
745
 
827
 
746
void MKTool::slot_tbDown()
828
void MKTool::slot_tbDown()
747
{
829
{
748
    if (tb_9_7->text() == QString("0"))
830
    if (tb_9_7->text() == QString("0"))
749
    {
831
    {
750
        tb_9_7->setIcon(Icons[22]);
832
        tb_9_7->setIcon(Icons[22]);
751
        tb_9_7->setText("1");
833
        tb_9_7->setText("1");
752
    }
834
    }
753
    else
835
    else
754
    {
836
    {
755
        tb_9_7->setIcon(Icons[23]);
837
        tb_9_7->setIcon(Icons[23]);
756
        tb_9_7->setText("0");
838
        tb_9_7->setText("0");
757
    }
839
    }
758
}
840
}
759
 
841
 
760
void MKTool::slot_tbLeft()
842
void MKTool::slot_tbLeft()
761
{
843
{
762
    if (tb_9_8->text() == QString("0"))
844
    if (tb_9_8->text() == QString("0"))
763
    {
845
    {
764
        tb_9_8->setIcon(Icons[24]);
846
        tb_9_8->setIcon(Icons[24]);
765
        tb_9_8->setText("1");
847
        tb_9_8->setText("1");
766
    }
848
    }
767
    else
849
    else
768
    {
850
    {
769
        tb_9_8->setIcon(Icons[25]);
851
        tb_9_8->setIcon(Icons[25]);
770
        tb_9_8->setText("0");
852
        tb_9_8->setText("0");
771
    }
853
    }
772
}
854
}
773
 
855
 
774
void MKTool::slot_tbRight()
856
void MKTool::slot_tbRight()
775
{
857
{
776
    if (tb_9_9->text() == QString("0"))
858
    if (tb_9_9->text() == QString("0"))
777
    {
859
    {
778
        tb_9_9->setIcon(Icons[26]);
860
        tb_9_9->setIcon(Icons[26]);
779
        tb_9_9->setText("1");
861
        tb_9_9->setText("1");
780
    }
862
    }
781
    else
863
    else
782
    {
864
    {
783
        tb_9_9->setIcon(Icons[27]);
865
        tb_9_9->setIcon(Icons[27]);
784
        tb_9_9->setText("0");
866
        tb_9_9->setText("0");
785
    }
867
    }
786
}
868
}
787
 
869
 
788
QComboBox *MKTool::setCombo(QComboBox *Combo, int Set, int Wert)
870
QComboBox *MKTool::setCombo(QComboBox *Combo, int Set, int Wert)
789
{
871
{
790
    if (ParameterSet[Set][Wert] <= 250)
872
    if (ParameterSet[Set][Wert] <= 250)
791
    {
873
    {
792
        Combo->setItemText(4, QString("%1").arg(ParameterSet[Set][Wert]));
874
        Combo->setItemText(4, QString("%1").arg(ParameterSet[Set][Wert]));
793
        Combo->setCurrentIndex(4);
875
        Combo->setCurrentIndex(4);
794
    }
876
    }
795
    else
877
    else
796
    {
878
    {
797
        Combo->setCurrentIndex(ParameterSet[Set][Wert] - 251);
879
        Combo->setCurrentIndex(ParameterSet[Set][Wert] - 251);
798
    }
880
    }
799
    return Combo;
881
    return Combo;
800
}
882
}
801
 
883
 
802
int MKTool::get_Value(QComboBox *Combo)
884
int MKTool::get_Value(QComboBox *Combo)
803
{
885
{
804
    if (Combo->currentText() == QString("Poti 1"))
886
    if (Combo->currentText() == QString("Poti 1"))
805
        return 251;
887
        return 251;
806
    if (Combo->currentText() == QString("Poti 2"))
888
    if (Combo->currentText() == QString("Poti 2"))
807
        return 252;
889
        return 252;
808
    if (Combo->currentText() == QString("Poti 3"))
890
    if (Combo->currentText() == QString("Poti 3"))
809
        return 253;
891
        return 253;
810
    if (Combo->currentText() == QString("Poti 4"))
892
    if (Combo->currentText() == QString("Poti 4"))
811
        return 254;
893
        return 254;
812
    return Combo->currentText().toInt();
894
    return Combo->currentText().toInt();
813
}
895
}
814
 
896
 
815
void MKTool::store_ParameterSet(int Set) // DONE 0.71g
897
void MKTool::store_ParameterSet(int Set) // DONE 0.71h
816
{
898
{
817
    char *Name = le_SetName->text().toLatin1().data();
899
    char *Name = le_SetName->text().toLatin1().data();
818
 
900
 
819
    int a;
901
    int a;
820
 
902
 
821
    for (a = 0; a < le_SetName->text().length(); a++)
903
    for (a = 0; a < le_SetName->text().length(); a++)
822
    {
904
    {
823
        ParameterSet[Set][P_NAME+a] = Name[a];
905
        ParameterSet[Set][P_NAME+a] = Name[a];
824
    }
906
    }
825
 
907
 
826
    while(a < 12)
908
    while(a < 12)
827
    {
909
    {
828
        ParameterSet[Set][P_NAME+a] = 0;
910
        ParameterSet[Set][P_NAME+a] = 0;
829
        a++;
911
        a++;
830
    }
912
    }
831
 
913
 
832
    // Seite 1
914
    // Seite 1
833
    ParameterSet[Set][P_GLOBAL_CONF] = 0;
915
    ParameterSet[Set][P_GLOBAL_CONF] = 0;
834
 
916
 
835
    if (cb_1_1->isChecked())
917
    if (cb_1_1->isChecked())
836
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x01;
918
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x01;
837
    if (cb_1_2->isChecked())
919
    if (cb_1_2->isChecked())
838
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x02;
920
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x02;
839
    if (cb_1_3->isChecked())
921
    if (cb_1_3->isChecked())
840
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x04;
922
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x04;
841
    if (cb_1_4->isChecked())
923
    if (cb_1_4->isChecked())
842
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x08;
924
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x08;
843
    if (cb_1_5->isChecked())
925
    if (cb_1_5->isChecked())
844
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x10;
926
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x10;
845
    if (cb_1_6->isChecked())
927
    if (cb_1_6->isChecked())
846
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x20;
928
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x20;
847
    if (cb_1_7->isChecked())
929
    if (cb_1_7->isChecked())
848
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x40;
930
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x40;
849
    if (cb_1_8->isChecked())
931
    if (cb_1_8->isChecked())
850
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x80;
932
        ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x80;
851
 
933
 
852
    // Seite 2
934
    // Seite 2
853
    ParameterSet[Set][P_KANAL_NICK]  = sb_2_1->value();
935
    ParameterSet[Set][P_KANAL_NICK]  = sb_2_1->value();
854
    ParameterSet[Set][P_KANAL_ROLL]  = sb_2_2->value();
936
    ParameterSet[Set][P_KANAL_ROLL]  = sb_2_2->value();
855
    ParameterSet[Set][P_KANAL_GAS]   = sb_2_3->value();
937
    ParameterSet[Set][P_KANAL_GAS]   = sb_2_3->value();
856
    ParameterSet[Set][P_KANAL_GIER]  = sb_2_4->value();
938
    ParameterSet[Set][P_KANAL_GIER]  = sb_2_4->value();
857
    ParameterSet[Set][P_KANAL_POTI1] = sb_2_5->value();
939
    ParameterSet[Set][P_KANAL_POTI1] = sb_2_5->value();
858
    ParameterSet[Set][P_KANAL_POTI2] = sb_2_6->value();
940
    ParameterSet[Set][P_KANAL_POTI2] = sb_2_6->value();
859
    ParameterSet[Set][P_KANAL_POTI3] = sb_2_7->value();
941
    ParameterSet[Set][P_KANAL_POTI3] = sb_2_7->value();
860
    ParameterSet[Set][P_KANAL_POTI4] = sb_2_8->value();
942
    ParameterSet[Set][P_KANAL_POTI4] = sb_2_8->value();
861
 
943
 
862
    // Seite 3
944
    // Seite 3
863
    ParameterSet[Set][P_STICK_P]  = sb_3_1->value();
945
    ParameterSet[Set][P_STICK_P]  = sb_3_1->value();
864
    ParameterSet[Set][P_STICK_D]  = sb_3_2->value();
946
    ParameterSet[Set][P_STICK_D]  = sb_3_2->value();
865
    ParameterSet[Set][P_GIER_P]   = get_Value(cb_3_3);
947
    ParameterSet[Set][P_GIER_P]   = get_Value(cb_3_3);
866
    ParameterSet[Set][P_EXTERNAL] = get_Value(cb_3_4);
948
    ParameterSet[Set][P_EXTERNAL] = get_Value(cb_3_4);
867
 
949
 
868
    // Seite 4
950
    // Seite 4
869
    ParameterSet[Set][P_MAXHOEHE]   = get_Value(cb_4_1);
951
    ParameterSet[Set][P_MAXHOEHE]   = get_Value(cb_4_1);
870
    ParameterSet[Set][P_MIN_GAS]    = sb_4_2->value();
952
    ParameterSet[Set][P_MIN_GAS]    = sb_4_2->value();
871
    ParameterSet[Set][P_HOEHE_P]    = get_Value(cb_4_3);
953
    ParameterSet[Set][P_HOEHE_P]    = get_Value(cb_4_3);
872
    ParameterSet[Set][P_DRUCK_D]    = get_Value(cb_4_4);
954
    ParameterSet[Set][P_DRUCK_D]    = get_Value(cb_4_4);
873
    ParameterSet[Set][P_HOEHE_ACC]  = get_Value(cb_4_5);
955
    ParameterSet[Set][P_HOEHE_ACC]  = get_Value(cb_4_5);
874
    ParameterSet[Set][P_HOEHE_GAIN] = sb_4_6->value();
956
    ParameterSet[Set][P_HOEHE_GAIN] = sb_4_6->value();
875
 
957
 
876
    // Seite 5
958
    // Seite 5
877
    ParameterSet[Set][P_GYRO_P]          = get_Value(cb_5_1);
959
    ParameterSet[Set][P_GYRO_P]          = get_Value(cb_5_1);
878
    ParameterSet[Set][P_GYRO_I]          = get_Value(cb_5_2);
960
    ParameterSet[Set][P_GYRO_I]          = get_Value(cb_5_2);
879
    ParameterSet[Set][P_DYNAMIC_STAB]    = get_Value(cb_5_3);
961
    ParameterSet[Set][P_DYNAMIC_STAB]    = get_Value(cb_5_3);
880
    ParameterSet[Set][P_GYRO_ACC_FAKTOR] = sb_5_4->value();
962
    ParameterSet[Set][P_GYRO_ACC_FAKTOR] = sb_5_4->value();
881
    ParameterSet[Set][P_GYRO_ACC_ABGL]   = sb_5_5->value();
963
    ParameterSet[Set][P_GYRO_ACC_ABGL]   = sb_5_5->value();
882
    ParameterSet[Set][P_FAKTOR_I]        = get_Value(cb_5_6);
964
    ParameterSet[Set][P_FAKTOR_I]        = get_Value(cb_5_6);
883
    ParameterSet[Set][P_DRIFT_KOMP]      = sb_5_7->value();
965
    ParameterSet[Set][P_DRIFT_KOMP]      = sb_5_7->value();
884
 
966
 
885
    // Seite 6
967
    // Seite 6
886
    ParameterSet[Set][P_SERVO_NICK_CONT]  = get_Value(cb_6_1);
968
    ParameterSet[Set][P_SERVO_NICK_CONT]  = get_Value(cb_6_1);
887
    ParameterSet[Set][P_SERVO_NICK_COMP]  = sb_6_2->value();
969
    ParameterSet[Set][P_SERVO_NICK_COMP]  = sb_6_2->value();
888
    ParameterSet[Set][P_SERVO_NICK_MIN]   = sb_6_3->value();
970
    ParameterSet[Set][P_SERVO_NICK_MIN]   = sb_6_3->value();
889
    ParameterSet[Set][P_SERVO_NICK_MAX]   = sb_6_4->value();
971
    ParameterSet[Set][P_SERVO_NICK_MAX]   = sb_6_4->value();
890
    ParameterSet[Set][P_SERVO_NICK_REFR]  = sb_6_5->value();
972
    ParameterSet[Set][P_SERVO_NICK_REFR]  = sb_6_5->value();
891
    ParameterSet[Set][P_SERVO_NICK_COMPI] = cb_6_6->isChecked();
973
    ParameterSet[Set][P_SERVO_NICK_COMPI] = cb_6_6->isChecked();
892
 
974
 
893
    // Seite 7
975
    // Seite 7
894
    ParameterSet[Set][P_GAS_MIN]         = sb_7_1->value();
976
    ParameterSet[Set][P_GAS_MIN]         = sb_7_1->value();
895
    ParameterSet[Set][P_GAS_MAX]         = sb_7_2->value();
977
    ParameterSet[Set][P_GAS_MAX]         = sb_7_2->value();
896
    ParameterSet[Set][P_KOMPASS_WIRKUNG] = get_Value(cb_7_3);
978
    ParameterSet[Set][P_KOMPASS_WIRKUNG] = get_Value(cb_7_3);
897
    ParameterSet[Set][P_UNTERSPANNUNG]   = sb_7_4->value();
979
    ParameterSet[Set][P_UNTERSPANNUNG]   = sb_7_4->value();
898
    ParameterSet[Set][P_NOTGASZEIT]      = sb_7_5->value();
980
    ParameterSet[Set][P_NOTGASZEIT]      = sb_7_5->value();
899
    ParameterSet[Set][P_NOTGAS]          = sb_7_6->value();
981
    ParameterSet[Set][P_NOTGAS]          = sb_7_6->value();
900
 
982
 
901
    // Seite 8
983
    // Seite 8
902
    ParameterSet[Set][P_ACHS_KOPPLUNG]  = get_Value(cb_8_1);
984
    ParameterSet[Set][P_ACHS_KOPPLUNG]  = get_Value(cb_8_1);
903
    ParameterSet[Set][P_ACHS_GKOPPLUNG] = get_Value(cb_8_2);
985
    ParameterSet[Set][P_ACHS_GKOPPLUNG] = get_Value(cb_8_2);
904
 
986
 
905
    // Seite 9
987
    // Seite 9
906
    ParameterSet[Set][P_LOOP_CONFIG] = 0;
988
    ParameterSet[Set][P_LOOP_CONFIG] = 0;
907
    if (tb_9_6->text() == QString("1"))
989
    if (tb_9_6->text() == QString("1"))
908
        ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x01;
990
        ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x01;
909
    if (tb_9_7->text() == QString("1"))
991
    if (tb_9_7->text() == QString("1"))
910
        ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x02;
992
        ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x02;
911
    if (tb_9_8->text() == QString("1"))
993
    if (tb_9_8->text() == QString("1"))
912
        ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x04;
994
        ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x04;
913
    if (tb_9_9->text() == QString("1"))
995
    if (tb_9_9->text() == QString("1"))
914
        ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x08;
996
        ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x08;
915
    if (cb_4_7->isChecked())
997
    if (cb_4_7->isChecked())
916
        ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x10;
998
        ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x10;
917
 
999
 
918
    ParameterSet[Set][P_LOOP_GAS_LIMIT] = get_Value(cb_9_1);
1000
    ParameterSet[Set][P_LOOP_GAS_LIMIT] = get_Value(cb_9_1);
919
    ParameterSet[Set][P_LOOP_THRESHOLD] = sb_9_2->value();
1001
    ParameterSet[Set][P_LOOP_THRESHOLD] = sb_9_2->value();
920
    ParameterSet[Set][P_WINKEL_NICK]    = sb_9_3->value();
1002
    ParameterSet[Set][P_WINKEL_NICK]    = sb_9_3->value();
921
    ParameterSet[Set][P_LOOP_HYSTERESE] = sb_9_4->value();
1003
    ParameterSet[Set][P_LOOP_HYSTERESE] = sb_9_4->value();
922
    ParameterSet[Set][P_WINKEL_ROLL]    = sb_9_5->value();
1004
    ParameterSet[Set][P_WINKEL_ROLL]    = sb_9_5->value();
923
 
1005
 
924
    // Seite 10
1006
    // Seite 10
925
    ParameterSet[Set][P_USER_1] = get_Value(cb_10_1);
1007
    ParameterSet[Set][P_USER_1] = get_Value(cb_10_1);
926
    ParameterSet[Set][P_USER_2] = get_Value(cb_10_2);
1008
    ParameterSet[Set][P_USER_2] = get_Value(cb_10_2);
927
    ParameterSet[Set][P_USER_3] = get_Value(cb_10_3);
1009
    ParameterSet[Set][P_USER_3] = get_Value(cb_10_3);
928
    ParameterSet[Set][P_USER_4] = get_Value(cb_10_4);
1010
    ParameterSet[Set][P_USER_4] = get_Value(cb_10_4);
929
    ParameterSet[Set][P_USER_5] = get_Value(cb_10_5);
1011
    ParameterSet[Set][P_USER_5] = get_Value(cb_10_5);
930
    ParameterSet[Set][P_USER_6] = get_Value(cb_10_6);
1012
    ParameterSet[Set][P_USER_6] = get_Value(cb_10_6);
931
    ParameterSet[Set][P_USER_7] = get_Value(cb_10_7);
1013
    ParameterSet[Set][P_USER_7] = get_Value(cb_10_7);
932
    ParameterSet[Set][P_USER_8] = get_Value(cb_10_8);
1014
    ParameterSet[Set][P_USER_8] = get_Value(cb_10_8);
933
 
1015
 
934
    // Seite 11
1016
    // Seite 11
935
    ParameterSet[Set][P_J16_BITMASK] = sb_11_1->value();
1017
    ParameterSet[Set][P_J16_BITMASK] = sb_11_1->value();
936
    ParameterSet[Set][P_J16_TIMING]  = get_Value(cb_11_2);
1018
    ParameterSet[Set][P_J16_TIMING]  = get_Value(cb_11_2);
937
    ParameterSet[Set][P_J17_BITMASK] = sb_11_3->value();
1019
    ParameterSet[Set][P_J17_BITMASK] = sb_11_3->value();
938
    ParameterSet[Set][P_J17_TIMING]  = get_Value(cb_11_4);
1020
    ParameterSet[Set][P_J17_TIMING]  = get_Value(cb_11_4);
939
 
1021
 
940
    // Seite 12
1022
    // Seite 12
941
    ParameterSet[Set][P_NAV_GPS_MODE]   = get_Value(cb_12_1);
1023
    ParameterSet[Set][P_NAV_GPS_MODE]   = get_Value(cb_12_1);
942
    ParameterSet[Set][P_NAV_GPS_GAIN]   = get_Value(cb_12_2);
1024
    ParameterSet[Set][P_NAV_GPS_GAIN]   = get_Value(cb_12_2);
943
    ParameterSet[Set][P_NAV_STICK_THRE] = sb_12_3->value();
1025
    ParameterSet[Set][P_NAV_STICK_THRE] = sb_12_3->value();
944
    ParameterSet[Set][P_NAV_GPS_MIN]    = sb_12_4->value();
1026
    ParameterSet[Set][P_NAV_GPS_MIN]    = sb_12_4->value();
945
    ParameterSet[Set][P_NAV_GPS_P]      = get_Value(cb_12_5);
1027
    ParameterSet[Set][P_NAV_GPS_P]      = get_Value(cb_12_5);
946
    ParameterSet[Set][P_NAV_GPS_I]      = get_Value(cb_12_6);
1028
    ParameterSet[Set][P_NAV_GPS_I]      = get_Value(cb_12_6);
947
    ParameterSet[Set][P_NAV_GPS_D]      = get_Value(cb_12_7);
1029
    ParameterSet[Set][P_NAV_GPS_D]      = get_Value(cb_12_7);
948
    ParameterSet[Set][P_NAV_GPS_ACC]    = get_Value(cb_12_8);
1030
    ParameterSet[Set][P_NAV_GPS_ACC]    = get_Value(cb_12_8);
949
 
1031
 
950
    //Seite 13
1032
    //Seite 13
951
    ParameterSet[Set][P_NAV_WIND_CORR]  = get_Value(cb_13_1);
1033
    ParameterSet[Set][P_NAV_WIND_CORR]   = get_Value(cb_13_1);
952
    ParameterSet[Set][P_NAV_SPEED_COMP] = get_Value(cb_13_2);
1034
    ParameterSet[Set][P_NAV_SPEED_COMP]  = get_Value(cb_13_2);
953
    ParameterSet[Set][P_NAV_RADIUS]     = get_Value(cb_13_3);
1035
    ParameterSet[Set][P_NAV_RADIUS]      = get_Value(cb_13_3);
-
 
1036
    ParameterSet[Set][P_NAV_ANGLE_LIMIT] = get_Value(cb_13_4);
954
}
1037
}
955
 
1038
 
956
void MKTool::slot_SaveParameter() // DONE 0.71g
1039
void MKTool::slot_SaveParameter() // DONE 0.71g
957
{
1040
{
958
    int Set = sb_Set->value() + 5;
1041
    int Set = sb_Set->value() + 5;
959
 
1042
 
960
    QString Filename = QFileDialog::getSaveFileName(this, "Mikrokopter Parameter speichern", Settings->DIR.Parameter + le_SetName->text(), "Mikrokopter Parameter(*.mkp);;Alle Dateien (*)");
1043
    QString Filename = QFileDialog::getSaveFileName(this, "Mikrokopter Parameter speichern", Settings->DIR.Parameter + le_SetName->text(), "Mikrokopter Parameter(*.mkp);;Alle Dateien (*)");
961
 
1044
 
962
    if (!Filename.isEmpty())
1045
    if (!Filename.isEmpty())
963
    {
1046
    {
964
        if (!(Filename.endsWith(".mkp", Qt::CaseInsensitive)))
1047
        if (!(Filename.endsWith(".mkp", Qt::CaseInsensitive)))
965
        {
1048
        {
966
            Filename = Filename + QString(".mkp");
1049
            Filename = Filename + QString(".mkp");
967
        }
1050
        }
968
        store_ParameterSet(Set);
1051
        store_ParameterSet(Set);
969
        QSettings Setting(Filename, QSettings::IniFormat);
1052
        QSettings Setting(Filename, QSettings::IniFormat);
970
 
1053
 
971
        Setting.beginGroup("Setup");
1054
        Setting.beginGroup("Setup");
972
            Setting.setValue("Name",         le_SetName->text());
1055
            Setting.setValue("Name",         le_SetName->text());
973
            Setting.setValue("GlobalConfig", ParameterSet[Set][P_GLOBAL_CONF]);
1056
            Setting.setValue("GlobalConfig", ParameterSet[Set][P_GLOBAL_CONF]);
974
        Setting.endGroup();
1057
        Setting.endGroup();
975
 
1058
 
976
        Setting.beginGroup("Channels");
1059
        Setting.beginGroup("Channels");
977
            Setting.setValue("Nick",   ParameterSet[Set][P_KANAL_NICK]);
1060
            Setting.setValue("Nick",   ParameterSet[Set][P_KANAL_NICK]);
978
            Setting.setValue("Roll",   ParameterSet[Set][P_KANAL_ROLL]);
1061
            Setting.setValue("Roll",   ParameterSet[Set][P_KANAL_ROLL]);
979
            Setting.setValue("Gas",    ParameterSet[Set][P_KANAL_GAS]);
1062
            Setting.setValue("Gas",    ParameterSet[Set][P_KANAL_GAS]);
980
            Setting.setValue("Gier",   ParameterSet[Set][P_KANAL_GIER]);
1063
            Setting.setValue("Gier",   ParameterSet[Set][P_KANAL_GIER]);
981
            Setting.setValue("Poti_1", ParameterSet[Set][P_KANAL_POTI1]);
1064
            Setting.setValue("Poti_1", ParameterSet[Set][P_KANAL_POTI1]);
982
            Setting.setValue("Poti_2", ParameterSet[Set][P_KANAL_POTI2]);
1065
            Setting.setValue("Poti_2", ParameterSet[Set][P_KANAL_POTI2]);
983
            Setting.setValue("Poti_3", ParameterSet[Set][P_KANAL_POTI3]);
1066
            Setting.setValue("Poti_3", ParameterSet[Set][P_KANAL_POTI3]);
984
            Setting.setValue("Poti_4", ParameterSet[Set][P_KANAL_POTI4]);
1067
            Setting.setValue("Poti_4", ParameterSet[Set][P_KANAL_POTI4]);
985
        Setting.endGroup();
1068
        Setting.endGroup();
986
 
1069
 
987
        Setting.beginGroup("Stick");
1070
        Setting.beginGroup("Stick");
988
            Setting.setValue("Nick_Roll-P",     ParameterSet[Set][P_STICK_P]);
1071
            Setting.setValue("Nick_Roll-P",     ParameterSet[Set][P_STICK_P]);
989
            Setting.setValue("Nick_Roll-D",     ParameterSet[Set][P_STICK_D]);
1072
            Setting.setValue("Nick_Roll-D",     ParameterSet[Set][P_STICK_D]);
990
            Setting.setValue("Gier-P",          ParameterSet[Set][P_GIER_P]);
1073
            Setting.setValue("Gier-P",          ParameterSet[Set][P_GIER_P]);
991
            Setting.setValue("ExternalControl", ParameterSet[Set][P_EXTERNAL]);
1074
            Setting.setValue("ExternalControl", ParameterSet[Set][P_EXTERNAL]);
992
        Setting.endGroup();
1075
        Setting.endGroup();
993
 
1076
 
994
        Setting.beginGroup("Altitude");
1077
        Setting.beginGroup("Altitude");
995
            Setting.setValue("Setpoint",     ParameterSet[Set][P_MAXHOEHE]);
1078
            Setting.setValue("Setpoint",     ParameterSet[Set][P_MAXHOEHE]);
996
            Setting.setValue("MinGas",       ParameterSet[Set][P_MIN_GAS]);
1079
            Setting.setValue("MinGas",       ParameterSet[Set][P_MIN_GAS]);
997
            Setting.setValue("P",            ParameterSet[Set][P_HOEHE_P]);
1080
            Setting.setValue("P",            ParameterSet[Set][P_HOEHE_P]);
998
            Setting.setValue("Barometric-D", ParameterSet[Set][P_DRUCK_D]);
1081
            Setting.setValue("Barometric-D", ParameterSet[Set][P_DRUCK_D]);
999
            Setting.setValue("Z-ACC-Effect", ParameterSet[Set][P_HOEHE_ACC]);
1082
            Setting.setValue("Z-ACC-Effect", ParameterSet[Set][P_HOEHE_ACC]);
1000
            Setting.setValue("Gain",         ParameterSet[Set][P_HOEHE_GAIN]);
1083
            Setting.setValue("Gain",         ParameterSet[Set][P_HOEHE_GAIN]);
1001
        Setting.endGroup();
1084
        Setting.endGroup();
1002
 
1085
 
1003
        Setting.beginGroup("Gyro");
1086
        Setting.beginGroup("Gyro");
1004
            Setting.setValue("P",                     ParameterSet[Set][P_GYRO_P]);
1087
            Setting.setValue("P",                     ParameterSet[Set][P_GYRO_P]);
1005
            Setting.setValue("I",                     ParameterSet[Set][P_GYRO_I]);
1088
            Setting.setValue("I",                     ParameterSet[Set][P_GYRO_I]);
1006
            Setting.setValue("DynamicStability",      ParameterSet[Set][P_DYNAMIC_STAB]);
1089
            Setting.setValue("DynamicStability",      ParameterSet[Set][P_DYNAMIC_STAB]);
1007
            Setting.setValue("ACC_Gyro-Factor",       ParameterSet[Set][P_GYRO_ACC_FAKTOR]);
1090
            Setting.setValue("ACC_Gyro-Factor",       ParameterSet[Set][P_GYRO_ACC_FAKTOR]);
1008
            Setting.setValue("ACC_Gyro-Compensation", ParameterSet[Set][P_GYRO_ACC_ABGL]);
1091
            Setting.setValue("ACC_Gyro-Compensation", ParameterSet[Set][P_GYRO_ACC_ABGL]);
1009
            Setting.setValue("DriftCompensation",     ParameterSet[Set][P_DRIFT_KOMP]);
1092
            Setting.setValue("DriftCompensation",     ParameterSet[Set][P_DRIFT_KOMP]);
1010
            Setting.setValue("Main-I",                ParameterSet[Set][P_FAKTOR_I]);
1093
            Setting.setValue("Main-I",                ParameterSet[Set][P_FAKTOR_I]);
1011
        Setting.endGroup();
1094
        Setting.endGroup();
1012
 
1095
 
1013
        Setting.beginGroup("Camera");
1096
        Setting.beginGroup("Camera");
1014
            Setting.setValue("ServoNickControl",      ParameterSet[Set][P_SERVO_NICK_CONT]);
1097
            Setting.setValue("ServoNickControl",      ParameterSet[Set][P_SERVO_NICK_CONT]);
1015
            Setting.setValue("ServoNickCompensation", ParameterSet[Set][P_SERVO_NICK_COMP]);
1098
            Setting.setValue("ServoNickCompensation", ParameterSet[Set][P_SERVO_NICK_COMP]);
1016
            Setting.setValue("ServoNickInvert",       ParameterSet[Set][P_SERVO_NICK_COMPI]);
1099
            Setting.setValue("ServoNickInvert",       ParameterSet[Set][P_SERVO_NICK_COMPI]);
1017
            Setting.setValue("ServoNickMin",          ParameterSet[Set][P_SERVO_NICK_MIN]);
1100
            Setting.setValue("ServoNickMin",          ParameterSet[Set][P_SERVO_NICK_MIN]);
1018
            Setting.setValue("ServoNickMax",          ParameterSet[Set][P_SERVO_NICK_MAX]);
1101
            Setting.setValue("ServoNickMax",          ParameterSet[Set][P_SERVO_NICK_MAX]);
1019
            Setting.setValue("ServoNickRefreshRate",  ParameterSet[Set][P_SERVO_NICK_REFR]);
1102
            Setting.setValue("ServoNickRefreshRate",  ParameterSet[Set][P_SERVO_NICK_REFR]);
1020
        Setting.endGroup();
1103
        Setting.endGroup();
1021
 
1104
 
1022
        Setting.beginGroup("Others");
1105
        Setting.beginGroup("Others");
1023
            Setting.setValue("MinGas",         ParameterSet[Set][P_GAS_MIN]);
1106
            Setting.setValue("MinGas",         ParameterSet[Set][P_GAS_MIN]);
1024
            Setting.setValue("MaxGas",         ParameterSet[Set][P_GAS_MAX]);
1107
            Setting.setValue("MaxGas",         ParameterSet[Set][P_GAS_MAX]);
1025
            Setting.setValue("Compass-Effect", ParameterSet[Set][P_KOMPASS_WIRKUNG]);
1108
            Setting.setValue("Compass-Effect", ParameterSet[Set][P_KOMPASS_WIRKUNG]);
1026
            Setting.setValue("UnderVoltage",   ParameterSet[Set][P_UNTERSPANNUNG]);
1109
            Setting.setValue("UnderVoltage",   ParameterSet[Set][P_UNTERSPANNUNG]);
1027
            Setting.setValue("NotGas",         ParameterSet[Set][P_NOTGAS]);
1110
            Setting.setValue("NotGas",         ParameterSet[Set][P_NOTGAS]);
1028
            Setting.setValue("NotGasTime",     ParameterSet[Set][P_NOTGASZEIT]);
1111
            Setting.setValue("NotGasTime",     ParameterSet[Set][P_NOTGASZEIT]);
1029
        Setting.endGroup();
1112
        Setting.endGroup();
1030
 
1113
 
1031
        Setting.beginGroup("Coupling");
1114
        Setting.beginGroup("Coupling");
1032
            Setting.setValue("YawPosFeedback", ParameterSet[Set][P_ACHS_KOPPLUNG]);
1115
            Setting.setValue("YawPosFeedback", ParameterSet[Set][P_ACHS_KOPPLUNG]);
1033
            Setting.setValue("YawNegFeedback", ParameterSet[Set][P_ACHS_GKOPPLUNG]);
1116
            Setting.setValue("YawNegFeedback", ParameterSet[Set][P_ACHS_GKOPPLUNG]);
1034
        Setting.endGroup();
1117
        Setting.endGroup();
1035
 
1118
 
1036
        Setting.beginGroup("Loop");
1119
        Setting.beginGroup("Loop");
1037
            Setting.setValue("Config", ParameterSet[Set][P_LOOP_CONFIG]);
1120
            Setting.setValue("Config", ParameterSet[Set][P_LOOP_CONFIG]);
1038
            Setting.setValue("GasLimit", ParameterSet[Set][P_LOOP_GAS_LIMIT]);
1121
            Setting.setValue("GasLimit", ParameterSet[Set][P_LOOP_GAS_LIMIT]);
1039
            Setting.setValue("StickThreshold", ParameterSet[Set][P_LOOP_THRESHOLD]);
1122
            Setting.setValue("StickThreshold", ParameterSet[Set][P_LOOP_THRESHOLD]);
1040
            Setting.setValue("LoopHysteresis", ParameterSet[Set][P_LOOP_HYSTERESE]);
1123
            Setting.setValue("LoopHysteresis", ParameterSet[Set][P_LOOP_HYSTERESE]);
1041
            Setting.setValue("TurnOverNick", ParameterSet[Set][P_WINKEL_NICK]);
1124
            Setting.setValue("TurnOverNick", ParameterSet[Set][P_WINKEL_NICK]);
1042
            Setting.setValue("TurnOverRoll", ParameterSet[Set][P_WINKEL_ROLL]);
1125
            Setting.setValue("TurnOverRoll", ParameterSet[Set][P_WINKEL_ROLL]);
1043
        Setting.endGroup();
1126
        Setting.endGroup();
1044
 
1127
 
1045
        Setting.beginGroup("User");
1128
        Setting.beginGroup("User");
1046
             Setting.setValue("Parameter_1", ParameterSet[Set][P_USER_1]);
1129
             Setting.setValue("Parameter_1", ParameterSet[Set][P_USER_1]);
1047
             Setting.setValue("Parameter_2", ParameterSet[Set][P_USER_2]);
1130
             Setting.setValue("Parameter_2", ParameterSet[Set][P_USER_2]);
1048
             Setting.setValue("Parameter_3", ParameterSet[Set][P_USER_3]);
1131
             Setting.setValue("Parameter_3", ParameterSet[Set][P_USER_3]);
1049
             Setting.setValue("Parameter_4", ParameterSet[Set][P_USER_4]);
1132
             Setting.setValue("Parameter_4", ParameterSet[Set][P_USER_4]);
1050
             Setting.setValue("Parameter_5", ParameterSet[Set][P_USER_5]);
1133
             Setting.setValue("Parameter_5", ParameterSet[Set][P_USER_5]);
1051
             Setting.setValue("Parameter_6", ParameterSet[Set][P_USER_6]);
1134
             Setting.setValue("Parameter_6", ParameterSet[Set][P_USER_6]);
1052
             Setting.setValue("Parameter_7", ParameterSet[Set][P_USER_7]);
1135
             Setting.setValue("Parameter_7", ParameterSet[Set][P_USER_7]);
1053
             Setting.setValue("Parameter_8", ParameterSet[Set][P_USER_8]);
1136
             Setting.setValue("Parameter_8", ParameterSet[Set][P_USER_8]);
1054
        Setting.endGroup();
1137
        Setting.endGroup();
1055
 
1138
 
1056
        Setting.beginGroup("Output");
1139
        Setting.beginGroup("Output");
1057
            Setting.setValue("J16_Bitmask", ParameterSet[Set][P_J16_BITMASK]);
1140
            Setting.setValue("J16_Bitmask", ParameterSet[Set][P_J16_BITMASK]);
1058
            Setting.setValue("J16_Timing",  ParameterSet[Set][P_J16_TIMING]);
1141
            Setting.setValue("J16_Timing",  ParameterSet[Set][P_J16_TIMING]);
1059
            Setting.setValue("J17_Bitmask", ParameterSet[Set][P_J17_BITMASK]);
1142
            Setting.setValue("J17_Bitmask", ParameterSet[Set][P_J17_BITMASK]);
1060
            Setting.setValue("J17_Timing",  ParameterSet[Set][P_J17_TIMING]);
1143
            Setting.setValue("J17_Timing",  ParameterSet[Set][P_J17_TIMING]);
1061
        Setting.endGroup();
1144
        Setting.endGroup();
1062
 
1145
 
1063
        Setting.beginGroup("NaviCtrl");
1146
        Setting.beginGroup("NaviCtrl");
1064
            Setting.setValue("GPS_ModeControl",       ParameterSet[Set][P_NAV_GPS_MODE]);
1147
            Setting.setValue("GPS_ModeControl",       ParameterSet[Set][P_NAV_GPS_MODE]);
1065
            Setting.setValue("GPS_Gain",              ParameterSet[Set][P_NAV_GPS_GAIN]);
1148
            Setting.setValue("GPS_Gain",              ParameterSet[Set][P_NAV_GPS_GAIN]);
1066
            Setting.setValue("GPS_P",                 ParameterSet[Set][P_NAV_GPS_P]);
1149
            Setting.setValue("GPS_P",                 ParameterSet[Set][P_NAV_GPS_P]);
1067
            Setting.setValue("GPS_I",                 ParameterSet[Set][P_NAV_GPS_I]);
1150
            Setting.setValue("GPS_I",                 ParameterSet[Set][P_NAV_GPS_I]);
1068
            Setting.setValue("GPS_D",                 ParameterSet[Set][P_NAV_GPS_D]);
1151
            Setting.setValue("GPS_D",                 ParameterSet[Set][P_NAV_GPS_D]);
1069
            Setting.setValue("GPS_Acc",               ParameterSet[Set][P_NAV_GPS_ACC]);
1152
            Setting.setValue("GPS_Acc",               ParameterSet[Set][P_NAV_GPS_ACC]);
1070
            Setting.setValue("GPS_MinSat",            ParameterSet[Set][P_NAV_GPS_MIN]);
1153
            Setting.setValue("GPS_MinSat",            ParameterSet[Set][P_NAV_GPS_MIN]);
1071
            Setting.setValue("GPS_StickThreshold",    ParameterSet[Set][P_NAV_STICK_THRE]);
1154
            Setting.setValue("GPS_StickThreshold",    ParameterSet[Set][P_NAV_STICK_THRE]);
1072
            Setting.setValue("GPS_WindCorrection",    ParameterSet[Set][P_NAV_WIND_CORR]);
1155
            Setting.setValue("GPS_WindCorrection",    ParameterSet[Set][P_NAV_WIND_CORR]);
1073
            Setting.setValue("GPS_SpeedCompensation", ParameterSet[Set][P_NAV_SPEED_COMP]);
1156
            Setting.setValue("GPS_SpeedCompensation", ParameterSet[Set][P_NAV_SPEED_COMP]);
1074
            Setting.setValue("GPS_MaxRadius",         ParameterSet[Set][P_NAV_RADIUS]);
1157
            Setting.setValue("GPS_MaxRadius",         ParameterSet[Set][P_NAV_RADIUS]);
1075
        Setting.endGroup();
1158
        Setting.endGroup();
1076
    }
1159
    }
1077
}
1160
}
1078
 
1161
 
1079
void MKTool::slot_LoadParameter() // DONE 0.71g
1162
void MKTool::slot_LoadParameter() // DONE 0.71g
1080
{
1163
{
1081
    QString Filename = QFileDialog::getOpenFileName(this, "Mikrokopter Parameter laden", Settings->DIR.Parameter, "Mikrokopter Parameter(*.mkp);;Alle Dateien (*)");
1164
    QString Filename = QFileDialog::getOpenFileName(this, "Mikrokopter Parameter laden", Settings->DIR.Parameter, "Mikrokopter Parameter(*.mkp);;Alle Dateien (*)");
1082
 
1165
 
1083
    if (!Filename.isEmpty())
1166
    if (!Filename.isEmpty())
1084
    {
1167
    {
1085
        int Set = sb_Set->value();
1168
        int Set = sb_Set->value();
1086
        QSettings Setting(Filename, QSettings::IniFormat);
1169
        QSettings Setting(Filename, QSettings::IniFormat);
1087
 
1170
 
1088
        Setting.beginGroup("Setup");
1171
        Setting.beginGroup("Setup");
1089
            QString Name = Setting.value("Name", QString("--noname--")).toString();
1172
            QString Name = Setting.value("Name", QString("--noname--")).toString();
1090
            char *CName = Name.toLatin1().data();
1173
            char *CName = Name.toLatin1().data();
1091
            int a;
1174
            int a;
1092
 
1175
 
1093
            for (a=0; a < Name.length(); a++)
1176
            for (a=0; a < Name.length(); a++)
1094
            {
1177
            {
1095
                ParameterSet[Set][P_NAME+a] = CName[a];
1178
                ParameterSet[Set][P_NAME+a] = CName[a];
1096
            }
1179
            }
1097
            while (a < 12)
1180
            while (a < 12)
1098
            {
1181
            {
1099
                ParameterSet[Set][P_NAME+a] = 0;
1182
                ParameterSet[Set][P_NAME+a] = 0;
1100
                a++;
1183
                a++;
1101
            }
1184
            }
1102
 
1185
 
1103
            ParameterSet[Set][P_GLOBAL_CONF] = Setting.value("GlobalConfig", 0).toInt();
1186
            ParameterSet[Set][P_GLOBAL_CONF] = Setting.value("GlobalConfig", 0).toInt();
1104
        Setting.endGroup();
1187
        Setting.endGroup();
1105
 
1188
 
1106
        Setting.beginGroup("Channels");
1189
        Setting.beginGroup("Channels");
1107
            ParameterSet[Set][P_KANAL_NICK]  = Setting.value("Nick", 1).toInt();
1190
            ParameterSet[Set][P_KANAL_NICK]  = Setting.value("Nick", 1).toInt();
1108
            ParameterSet[Set][P_KANAL_ROLL]  = Setting.value("Roll", 2).toInt();
1191
            ParameterSet[Set][P_KANAL_ROLL]  = Setting.value("Roll", 2).toInt();
1109
            ParameterSet[Set][P_KANAL_GAS]   = Setting.value("Gas", 3).toInt();
1192
            ParameterSet[Set][P_KANAL_GAS]   = Setting.value("Gas", 3).toInt();
1110
            ParameterSet[Set][P_KANAL_GIER]  = Setting.value("Gier", 4).toInt();
1193
            ParameterSet[Set][P_KANAL_GIER]  = Setting.value("Gier", 4).toInt();
1111
            ParameterSet[Set][P_KANAL_POTI1] = Setting.value("Poti_1", 5).toInt();
1194
            ParameterSet[Set][P_KANAL_POTI1] = Setting.value("Poti_1", 5).toInt();
1112
            ParameterSet[Set][P_KANAL_POTI2] = Setting.value("Poti_2", 6).toInt();
1195
            ParameterSet[Set][P_KANAL_POTI2] = Setting.value("Poti_2", 6).toInt();
1113
            ParameterSet[Set][P_KANAL_POTI3] = Setting.value("Poti_3", 7).toInt();
1196
            ParameterSet[Set][P_KANAL_POTI3] = Setting.value("Poti_3", 7).toInt();
1114
            ParameterSet[Set][P_KANAL_POTI4] = Setting.value("Poti_4", 8).toInt();
1197
            ParameterSet[Set][P_KANAL_POTI4] = Setting.value("Poti_4", 8).toInt();
1115
        Setting.endGroup();
1198
        Setting.endGroup();
1116
 
1199
 
1117
        Setting.beginGroup("Stick");
1200
        Setting.beginGroup("Stick");
1118
            ParameterSet[Set][P_STICK_P]  = Setting.value("Nick_Roll-P", 4).toInt();
1201
            ParameterSet[Set][P_STICK_P]  = Setting.value("Nick_Roll-P", 4).toInt();
1119
            ParameterSet[Set][P_STICK_D]  = Setting.value("Nick_Roll-D", 8).toInt();
1202
            ParameterSet[Set][P_STICK_D]  = Setting.value("Nick_Roll-D", 8).toInt();
1120
            ParameterSet[Set][P_GIER_P]   = Setting.value("Gier-P", 1).toInt();
1203
            ParameterSet[Set][P_GIER_P]   = Setting.value("Gier-P", 1).toInt();
1121
            ParameterSet[Set][P_EXTERNAL] = Setting.value("ExternalControl", 1).toInt();
1204
            ParameterSet[Set][P_EXTERNAL] = Setting.value("ExternalControl", 1).toInt();
1122
        Setting.endGroup();
1205
        Setting.endGroup();
1123
 
1206
 
1124
        Setting.beginGroup("Altitude");
1207
        Setting.beginGroup("Altitude");
1125
            ParameterSet[Set][P_MAXHOEHE]   = Setting.value("Setpoint", 251).toInt();
1208
            ParameterSet[Set][P_MAXHOEHE]   = Setting.value("Setpoint", 251).toInt();
1126
            ParameterSet[Set][P_MIN_GAS]    = Setting.value("MinGas", 30).toInt();
1209
            ParameterSet[Set][P_MIN_GAS]    = Setting.value("MinGas", 30).toInt();
1127
            ParameterSet[Set][P_HOEHE_P]    = Setting.value("P", 10).toInt();
1210
            ParameterSet[Set][P_HOEHE_P]    = Setting.value("P", 10).toInt();
1128
            ParameterSet[Set][P_DRUCK_D]    = Setting.value("Barometric-D", 30).toInt();
1211
            ParameterSet[Set][P_DRUCK_D]    = Setting.value("Barometric-D", 30).toInt();
1129
            ParameterSet[Set][P_HOEHE_ACC]  = Setting.value("Z-ACC-Effect", 30).toInt();
1212
            ParameterSet[Set][P_HOEHE_ACC]  = Setting.value("Z-ACC-Effect", 30).toInt();
1130
            ParameterSet[Set][P_HOEHE_GAIN] = Setting.value("Gain", 3).toInt();
1213
            ParameterSet[Set][P_HOEHE_GAIN] = Setting.value("Gain", 3).toInt();
1131
        Setting.endGroup();
1214
        Setting.endGroup();
1132
 
1215
 
1133
        Setting.beginGroup("Gyro");
1216
        Setting.beginGroup("Gyro");
1134
            ParameterSet[Set][P_GYRO_P]          = Setting.value("P", 80).toInt();
1217
            ParameterSet[Set][P_GYRO_P]          = Setting.value("P", 80).toInt();
1135
            ParameterSet[Set][P_GYRO_I]          = Setting.value("I", 120).toInt();
1218
            ParameterSet[Set][P_GYRO_I]          = Setting.value("I", 120).toInt();
1136
            ParameterSet[Set][P_DYNAMIC_STAB]    = Setting.value("DynamicStability", 75).toInt();
1219
            ParameterSet[Set][P_DYNAMIC_STAB]    = Setting.value("DynamicStability", 75).toInt();
1137
            ParameterSet[Set][P_GYRO_ACC_FAKTOR] = Setting.value("ACC_Gyro-Factor", 30).toInt();
1220
            ParameterSet[Set][P_GYRO_ACC_FAKTOR] = Setting.value("ACC_Gyro-Factor", 30).toInt();
1138
            ParameterSet[Set][P_GYRO_ACC_ABGL]   = Setting.value("ACC_Gyro-Compensation", 32).toInt();
1221
            ParameterSet[Set][P_GYRO_ACC_ABGL]   = Setting.value("ACC_Gyro-Compensation", 32).toInt();
1139
            ParameterSet[Set][P_DRIFT_KOMP]      = Setting.value("DriftCompensation", 4).toInt();
1222
            ParameterSet[Set][P_DRIFT_KOMP]      = Setting.value("DriftCompensation", 4).toInt();
1140
            ParameterSet[Set][P_FAKTOR_I]        = Setting.value("Main-I", 32).toInt();
1223
            ParameterSet[Set][P_FAKTOR_I]        = Setting.value("Main-I", 32).toInt();
1141
        Setting.endGroup();
1224
        Setting.endGroup();
1142
 
1225
 
1143
        Setting.beginGroup("Camera");
1226
        Setting.beginGroup("Camera");
1144
            ParameterSet[Set][P_SERVO_NICK_CONT]  = Setting.value("ServoNickControl", 100).toInt();
1227
            ParameterSet[Set][P_SERVO_NICK_CONT]  = Setting.value("ServoNickControl", 100).toInt();
1145
            ParameterSet[Set][P_SERVO_NICK_COMP]  = Setting.value("ServoNickCompensation", 40).toInt();
1228
            ParameterSet[Set][P_SERVO_NICK_COMP]  = Setting.value("ServoNickCompensation", 40).toInt();
1146
            ParameterSet[Set][P_SERVO_NICK_COMPI] = Setting.value("ServoNickInvert", 0).toInt();
1229
            ParameterSet[Set][P_SERVO_NICK_COMPI] = Setting.value("ServoNickInvert", 0).toInt();
1147
            ParameterSet[Set][P_SERVO_NICK_MIN]   = Setting.value("ServoNickMin", 50).toInt();
1230
            ParameterSet[Set][P_SERVO_NICK_MIN]   = Setting.value("ServoNickMin", 50).toInt();
1148
            ParameterSet[Set][P_SERVO_NICK_MAX]   = Setting.value("ServoNickMax", 150).toInt();
1231
            ParameterSet[Set][P_SERVO_NICK_MAX]   = Setting.value("ServoNickMax", 150).toInt();
1149
            ParameterSet[Set][P_SERVO_NICK_REFR]  = Setting.value("ServoNickRefreshRate", 5).toInt();
1232
            ParameterSet[Set][P_SERVO_NICK_REFR]  = Setting.value("ServoNickRefreshRate", 5).toInt();
1150
        Setting.endGroup();
1233
        Setting.endGroup();
1151
 
1234
 
1152
        Setting.beginGroup("Others");
1235
        Setting.beginGroup("Others");
1153
            ParameterSet[Set][P_GAS_MIN]         = Setting.value("MinGas", 8).toInt();
1236
            ParameterSet[Set][P_GAS_MIN]         = Setting.value("MinGas", 8).toInt();
1154
            ParameterSet[Set][P_GAS_MAX]         = Setting.value("MaxGas", 230).toInt();
1237
            ParameterSet[Set][P_GAS_MAX]         = Setting.value("MaxGas", 230).toInt();
1155
            ParameterSet[Set][P_KOMPASS_WIRKUNG] = Setting.value("Compass-Effect", 128).toInt();
1238
            ParameterSet[Set][P_KOMPASS_WIRKUNG] = Setting.value("Compass-Effect", 128).toInt();
1156
            ParameterSet[Set][P_UNTERSPANNUNG]   = Setting.value("UnderVoltage", 94).toInt();
1239
            ParameterSet[Set][P_UNTERSPANNUNG]   = Setting.value("UnderVoltage", 94).toInt();
1157
            ParameterSet[Set][P_NOTGAS]          = Setting.value("NotGas", 35).toInt();
1240
            ParameterSet[Set][P_NOTGAS]          = Setting.value("NotGas", 35).toInt();
1158
            ParameterSet[Set][P_NOTGASZEIT]      = Setting.value("NotGasTime", 30).toInt();
1241
            ParameterSet[Set][P_NOTGASZEIT]      = Setting.value("NotGasTime", 30).toInt();
1159
        Setting.endGroup();
1242
        Setting.endGroup();
1160
 
1243
 
1161
        Setting.beginGroup("Coupling");
1244
        Setting.beginGroup("Coupling");
1162
            ParameterSet[Set][P_ACHS_KOPPLUNG]  = Setting.value("YawPosFeedback", 90).toInt();
1245
            ParameterSet[Set][P_ACHS_KOPPLUNG]  = Setting.value("YawPosFeedback", 90).toInt();
1163
            ParameterSet[Set][P_ACHS_GKOPPLUNG] = Setting.value("YawNegFeedback", 5).toInt();
1246
            ParameterSet[Set][P_ACHS_GKOPPLUNG] = Setting.value("YawNegFeedback", 5).toInt();
1164
        Setting.endGroup();
1247
        Setting.endGroup();
1165
 
1248
 
1166
        Setting.beginGroup("Loop");
1249
        Setting.beginGroup("Loop");
1167
            ParameterSet[Set][P_LOOP_CONFIG]    = Setting.value("Config", 0).toInt();
1250
            ParameterSet[Set][P_LOOP_CONFIG]    = Setting.value("Config", 0).toInt();
1168
            ParameterSet[Set][P_LOOP_GAS_LIMIT] = Setting.value("GasLimit", 50).toInt();
1251
            ParameterSet[Set][P_LOOP_GAS_LIMIT] = Setting.value("GasLimit", 50).toInt();
1169
            ParameterSet[Set][P_LOOP_THRESHOLD] = Setting.value("StickThreshold", 90).toInt();
1252
            ParameterSet[Set][P_LOOP_THRESHOLD] = Setting.value("StickThreshold", 90).toInt();
1170
            ParameterSet[Set][P_LOOP_HYSTERESE] = Setting.value("LoopHysteresis", 50).toInt();
1253
            ParameterSet[Set][P_LOOP_HYSTERESE] = Setting.value("LoopHysteresis", 50).toInt();
1171
            ParameterSet[Set][P_WINKEL_NICK]    = Setting.value("TurnOverNick", 85).toInt();
1254
            ParameterSet[Set][P_WINKEL_NICK]    = Setting.value("TurnOverNick", 85).toInt();
1172
            ParameterSet[Set][P_WINKEL_ROLL]    = Setting.value("TurnOverRoll", 85).toInt();
1255
            ParameterSet[Set][P_WINKEL_ROLL]    = Setting.value("TurnOverRoll", 85).toInt();
1173
        Setting.endGroup();
1256
        Setting.endGroup();
1174
 
1257
 
1175
        Setting.beginGroup("User");
1258
        Setting.beginGroup("User");
1176
            ParameterSet[Set][P_USER_1] = Setting.value("Parameter_1", 0).toInt();
1259
            ParameterSet[Set][P_USER_1] = Setting.value("Parameter_1", 0).toInt();
1177
            ParameterSet[Set][P_USER_2] = Setting.value("Parameter_2", 0).toInt();
1260
            ParameterSet[Set][P_USER_2] = Setting.value("Parameter_2", 0).toInt();
1178
            ParameterSet[Set][P_USER_3] = Setting.value("Parameter_3", 0).toInt();
1261
            ParameterSet[Set][P_USER_3] = Setting.value("Parameter_3", 0).toInt();
1179
            ParameterSet[Set][P_USER_4] = Setting.value("Parameter_4", 0).toInt();
1262
            ParameterSet[Set][P_USER_4] = Setting.value("Parameter_4", 0).toInt();
1180
            ParameterSet[Set][P_USER_5] = Setting.value("Parameter_5", 0).toInt();
1263
            ParameterSet[Set][P_USER_5] = Setting.value("Parameter_5", 0).toInt();
1181
            ParameterSet[Set][P_USER_6] = Setting.value("Parameter_6", 0).toInt();
1264
            ParameterSet[Set][P_USER_6] = Setting.value("Parameter_6", 0).toInt();
1182
            ParameterSet[Set][P_USER_7] = Setting.value("Parameter_7", 0).toInt();
1265
            ParameterSet[Set][P_USER_7] = Setting.value("Parameter_7", 0).toInt();
1183
            ParameterSet[Set][P_USER_8] = Setting.value("Parameter_8", 0).toInt();
1266
            ParameterSet[Set][P_USER_8] = Setting.value("Parameter_8", 0).toInt();
1184
        Setting.endGroup();
1267
        Setting.endGroup();
1185
 
1268
 
1186
        Setting.beginGroup("Output");
1269
        Setting.beginGroup("Output");
1187
            ParameterSet[Set][P_J16_BITMASK] = Setting.value("J16_Bitmask", 255).toInt();
1270
            ParameterSet[Set][P_J16_BITMASK] = Setting.value("J16_Bitmask", 255).toInt();
1188
            ParameterSet[Set][P_J16_TIMING]  = Setting.value("J16_Timing", 251).toInt();
1271
            ParameterSet[Set][P_J16_TIMING]  = Setting.value("J16_Timing", 251).toInt();
1189
            ParameterSet[Set][P_J17_BITMASK] = Setting.value("J17_Bitmask", 255).toInt();
1272
            ParameterSet[Set][P_J17_BITMASK] = Setting.value("J17_Bitmask", 255).toInt();
1190
            ParameterSet[Set][P_J17_TIMING]  = Setting.value("J17_Timing", 251).toInt();
1273
            ParameterSet[Set][P_J17_TIMING]  = Setting.value("J17_Timing", 251).toInt();
1191
        Setting.endGroup();
1274
        Setting.endGroup();
1192
 
1275
 
1193
        Setting.beginGroup("NaviCtrl");
1276
        Setting.beginGroup("NaviCtrl");
1194
            ParameterSet[Set][P_NAV_GPS_MODE]   = Setting.value("GPS_ModeControl", 253).toInt();
1277
            ParameterSet[Set][P_NAV_GPS_MODE]   = Setting.value("GPS_ModeControl", 253).toInt();
1195
            ParameterSet[Set][P_NAV_GPS_GAIN]   = Setting.value("GPS_Gain", 100).toInt();
1278
            ParameterSet[Set][P_NAV_GPS_GAIN]   = Setting.value("GPS_Gain", 100).toInt();
1196
            ParameterSet[Set][P_NAV_GPS_P]      = Setting.value("GPS_P", 90).toInt();
1279
            ParameterSet[Set][P_NAV_GPS_P]      = Setting.value("GPS_P", 90).toInt();
1197
            ParameterSet[Set][P_NAV_GPS_I]      = Setting.value("GPS_I", 90).toInt();
1280
            ParameterSet[Set][P_NAV_GPS_I]      = Setting.value("GPS_I", 90).toInt();
1198
            ParameterSet[Set][P_NAV_GPS_D]      = Setting.value("GPS_D", 90).toInt();
1281
            ParameterSet[Set][P_NAV_GPS_D]      = Setting.value("GPS_D", 90).toInt();
1199
            ParameterSet[Set][P_NAV_GPS_ACC]    = Setting.value("GPS_Acc", 0).toInt();
1282
            ParameterSet[Set][P_NAV_GPS_ACC]    = Setting.value("GPS_Acc", 0).toInt();
1200
            ParameterSet[Set][P_NAV_GPS_MIN]    = Setting.value("GPS_MinSat", 6).toInt();
1283
            ParameterSet[Set][P_NAV_GPS_MIN]    = Setting.value("GPS_MinSat", 6).toInt();
1201
            ParameterSet[Set][P_NAV_STICK_THRE] = Setting.value("GPS_StickThreshold", 8).toInt();
1284
            ParameterSet[Set][P_NAV_STICK_THRE] = Setting.value("GPS_StickThreshold", 8).toInt();
1202
            ParameterSet[Set][P_NAV_WIND_CORR]  = Setting.value("GPS_WindCorrection", 90).toInt();
1285
            ParameterSet[Set][P_NAV_WIND_CORR]  = Setting.value("GPS_WindCorrection", 90).toInt();
1203
            ParameterSet[Set][P_NAV_SPEED_COMP] = Setting.value("GPS_SpeedCompensation", 30).toInt();
1286
            ParameterSet[Set][P_NAV_SPEED_COMP] = Setting.value("GPS_SpeedCompensation", 30).toInt();
1204
            ParameterSet[Set][P_NAV_RADIUS]     = Setting.value("GPS_MaxRadius", 100).toInt();
1287
            ParameterSet[Set][P_NAV_RADIUS]     = Setting.value("GPS_MaxRadius", 100).toInt();
1205
        Setting.endGroup();
1288
        Setting.endGroup();
1206
 
1289
 
1207
        show_ParameterSet(Set);
1290
        show_ParameterSet(Set);
1208
    }
1291
    }
1209
}
1292
}
1210
 
1293
 
1211
void MKTool::show_ParameterSet(int Set) // DONE 0.71g
1294
void MKTool::show_ParameterSet(int Set) // DONE 0.71h
1212
{
1295
{
1213
    char Name[12];
1296
    char Name[12];
1214
    for (int a = 0; a < 12; a++)
1297
    for (int a = 0; a < 12; a++)
1215
    {
1298
    {
1216
        Name[a] = ParameterSet[Set][P_NAME+a];
1299
        Name[a] = ParameterSet[Set][P_NAME+a];
1217
    }
1300
    }
1218
    le_SetName->setText(QString(Name));
1301
    le_SetName->setText(QString(Name));
1219
 
1302
 
1220
    // Seite 1
1303
    // Seite 1
1221
{
1304
{
1222
    cb_1_1->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x01);
1305
    cb_1_1->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x01);
1223
    cb_1_2->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x02);
1306
    cb_1_2->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x02);
1224
    cb_1_3->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x04);
1307
    cb_1_3->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x04);
1225
    cb_1_4->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x08);
1308
    cb_1_4->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x08);
1226
    cb_1_5->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x10);
1309
    cb_1_5->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x10);
1227
    cb_1_6->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x20);
1310
    cb_1_6->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x20);
1228
    cb_1_7->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x40);
1311
    cb_1_7->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x40);
1229
    cb_1_8->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x80);
1312
    cb_1_8->setChecked(ParameterSet[Set][P_GLOBAL_CONF] & 0x80);
1230
}
1313
}
1231
    // Seite 2
1314
    // Seite 2
1232
{
1315
{
1233
    sb_2_1->setValue(ParameterSet[Set][P_KANAL_NICK]);
1316
    sb_2_1->setValue(ParameterSet[Set][P_KANAL_NICK]);
1234
    sb_2_2->setValue(ParameterSet[Set][P_KANAL_ROLL]);
1317
    sb_2_2->setValue(ParameterSet[Set][P_KANAL_ROLL]);
1235
    sb_2_3->setValue(ParameterSet[Set][P_KANAL_GAS]);
1318
    sb_2_3->setValue(ParameterSet[Set][P_KANAL_GAS]);
1236
    sb_2_4->setValue(ParameterSet[Set][P_KANAL_GIER]);
1319
    sb_2_4->setValue(ParameterSet[Set][P_KANAL_GIER]);
1237
    sb_2_5->setValue(ParameterSet[Set][P_KANAL_POTI1]);
1320
    sb_2_5->setValue(ParameterSet[Set][P_KANAL_POTI1]);
1238
    sb_2_6->setValue(ParameterSet[Set][P_KANAL_POTI2]);
1321
    sb_2_6->setValue(ParameterSet[Set][P_KANAL_POTI2]);
1239
    sb_2_7->setValue(ParameterSet[Set][P_KANAL_POTI3]);
1322
    sb_2_7->setValue(ParameterSet[Set][P_KANAL_POTI3]);
1240
    sb_2_8->setValue(ParameterSet[Set][P_KANAL_POTI4]);
1323
    sb_2_8->setValue(ParameterSet[Set][P_KANAL_POTI4]);
1241
}
1324
}
1242
    // Seite 3
1325
    // Seite 3
1243
{
1326
{
1244
    sb_3_1->setValue(ParameterSet[Set][P_STICK_P]);
1327
    sb_3_1->setValue(ParameterSet[Set][P_STICK_P]);
1245
    sb_3_2->setValue(ParameterSet[Set][P_STICK_D]);
1328
    sb_3_2->setValue(ParameterSet[Set][P_STICK_D]);
1246
    cb_3_3 = setCombo(cb_3_3, Set, P_GIER_P);
1329
    cb_3_3 = setCombo(cb_3_3, Set, P_GIER_P);
1247
    cb_3_4 = setCombo(cb_3_4, Set, P_EXTERNAL);
1330
    cb_3_4 = setCombo(cb_3_4, Set, P_EXTERNAL);
1248
}
1331
}
1249
    // Seite 4
1332
    // Seite 4
1250
{
1333
{
1251
    cb_4_1 = setCombo(cb_4_1, Set, P_MAXHOEHE);
1334
    cb_4_1 = setCombo(cb_4_1, Set, P_MAXHOEHE);
1252
    sb_4_2->setValue(ParameterSet[Set][P_MIN_GAS]);
1335
    sb_4_2->setValue(ParameterSet[Set][P_MIN_GAS]);
1253
    cb_4_3 = setCombo(cb_4_3, Set, P_HOEHE_P);
1336
    cb_4_3 = setCombo(cb_4_3, Set, P_HOEHE_P);
1254
    cb_4_4 = setCombo(cb_4_4, Set, P_DRUCK_D);
1337
    cb_4_4 = setCombo(cb_4_4, Set, P_DRUCK_D);
1255
    cb_4_5 = setCombo(cb_4_5, Set, P_HOEHE_ACC);
1338
    cb_4_5 = setCombo(cb_4_5, Set, P_HOEHE_ACC);
1256
    sb_4_6->setValue(ParameterSet[Set][P_HOEHE_GAIN]);
1339
    sb_4_6->setValue(ParameterSet[Set][P_HOEHE_GAIN]);
1257
    cb_4_7->setChecked(ParameterSet[Set][P_LOOP_CONFIG] & 0x10);
1340
    cb_4_7->setChecked(ParameterSet[Set][P_LOOP_CONFIG] & 0x10);
1258
}
1341
}
1259
    // Seite 5
1342
    // Seite 5
1260
{
1343
{
1261
    cb_5_1 = setCombo(cb_5_1, Set, P_GYRO_P);
1344
    cb_5_1 = setCombo(cb_5_1, Set, P_GYRO_P);
1262
    cb_5_2 = setCombo(cb_5_2, Set, P_GYRO_I);
1345
    cb_5_2 = setCombo(cb_5_2, Set, P_GYRO_I);
1263
    cb_5_3 = setCombo(cb_5_3, Set, P_DYNAMIC_STAB);
1346
    cb_5_3 = setCombo(cb_5_3, Set, P_DYNAMIC_STAB);
1264
    sb_5_4->setValue(ParameterSet[Set][P_GYRO_ACC_FAKTOR]);
1347
    sb_5_4->setValue(ParameterSet[Set][P_GYRO_ACC_FAKTOR]);
1265
    sb_5_5->setValue(ParameterSet[Set][P_GYRO_ACC_ABGL]);
1348
    sb_5_5->setValue(ParameterSet[Set][P_GYRO_ACC_ABGL]);
1266
    cb_5_6 = setCombo(cb_5_6, Set, P_FAKTOR_I);
1349
    cb_5_6 = setCombo(cb_5_6, Set, P_FAKTOR_I);
1267
    sb_5_7->setValue(ParameterSet[Set][P_DRIFT_KOMP]);
1350
    sb_5_7->setValue(ParameterSet[Set][P_DRIFT_KOMP]);
1268
}
1351
}
1269
    // Seite 6
1352
    // Seite 6
1270
{
1353
{
1271
    cb_6_1 = setCombo(cb_6_1, Set, P_SERVO_NICK_CONT);
1354
    cb_6_1 = setCombo(cb_6_1, Set, P_SERVO_NICK_CONT);
1272
    sb_6_2->setValue(ParameterSet[Set][P_SERVO_NICK_COMP]);
1355
    sb_6_2->setValue(ParameterSet[Set][P_SERVO_NICK_COMP]);
1273
    sb_6_3->setValue(ParameterSet[Set][P_SERVO_NICK_MIN]);
1356
    sb_6_3->setValue(ParameterSet[Set][P_SERVO_NICK_MIN]);
1274
    sb_6_4->setValue(ParameterSet[Set][P_SERVO_NICK_MAX]);
1357
    sb_6_4->setValue(ParameterSet[Set][P_SERVO_NICK_MAX]);
1275
    sb_6_5->setValue(ParameterSet[Set][P_SERVO_NICK_REFR]);
1358
    sb_6_5->setValue(ParameterSet[Set][P_SERVO_NICK_REFR]);
1276
    cb_6_6->setChecked(ParameterSet[Set][P_SERVO_NICK_COMPI]);
1359
    cb_6_6->setChecked(ParameterSet[Set][P_SERVO_NICK_COMPI]);
1277
}
1360
}
1278
    // Seite 7
1361
    // Seite 7
1279
{
1362
{
1280
    sb_7_1->setValue(ParameterSet[Set][P_GAS_MIN]);
1363
    sb_7_1->setValue(ParameterSet[Set][P_GAS_MIN]);
1281
    sb_7_2->setValue(ParameterSet[Set][P_GAS_MAX]);
1364
    sb_7_2->setValue(ParameterSet[Set][P_GAS_MAX]);
1282
    cb_7_3 = setCombo(cb_7_3, Set, P_KOMPASS_WIRKUNG);
1365
    cb_7_3 = setCombo(cb_7_3, Set, P_KOMPASS_WIRKUNG);
1283
    sb_7_4->setValue(ParameterSet[Set][P_UNTERSPANNUNG]);
1366
    sb_7_4->setValue(ParameterSet[Set][P_UNTERSPANNUNG]);
1284
    sb_7_5->setValue(ParameterSet[Set][P_NOTGASZEIT]);
1367
    sb_7_5->setValue(ParameterSet[Set][P_NOTGASZEIT]);
1285
    sb_7_6->setValue(ParameterSet[Set][P_NOTGAS]);
1368
    sb_7_6->setValue(ParameterSet[Set][P_NOTGAS]);
1286
}
1369
}
1287
    // Seite 8
1370
    // Seite 8
1288
{
1371
{
1289
    cb_8_1 = setCombo(cb_8_1, Set, P_ACHS_KOPPLUNG);
1372
    cb_8_1 = setCombo(cb_8_1, Set, P_ACHS_KOPPLUNG);
1290
    cb_8_2 = setCombo(cb_8_2, Set, P_ACHS_GKOPPLUNG);
1373
    cb_8_2 = setCombo(cb_8_2, Set, P_ACHS_GKOPPLUNG);
1291
}
1374
}
1292
    // Seite 9
1375
    // Seite 9
1293
{
1376
{
1294
    if (ParameterSet[Set][P_LOOP_CONFIG] & 0x01)
1377
    if (ParameterSet[Set][P_LOOP_CONFIG] & 0x01)
1295
    {
1378
    {
1296
        tb_9_6->setIcon(Icons[20]);
1379
        tb_9_6->setIcon(Icons[20]);
1297
        tb_9_6->setText("1");
1380
        tb_9_6->setText("1");
1298
    }
1381
    }
1299
    else
1382
    else
1300
    {
1383
    {
1301
        tb_9_6->setIcon(Icons[21]);
1384
        tb_9_6->setIcon(Icons[21]);
1302
        tb_9_6->setText("0");
1385
        tb_9_6->setText("0");
1303
    }
1386
    }
1304
 
1387
 
1305
    if (ParameterSet[Set][P_LOOP_CONFIG] & 0x02)
1388
    if (ParameterSet[Set][P_LOOP_CONFIG] & 0x02)
1306
    {
1389
    {
1307
        tb_9_7->setIcon(Icons[22]);
1390
        tb_9_7->setIcon(Icons[22]);
1308
        tb_9_7->setText("1");
1391
        tb_9_7->setText("1");
1309
    }
1392
    }
1310
    else
1393
    else
1311
    {
1394
    {
1312
        tb_9_7->setIcon(Icons[23]);
1395
        tb_9_7->setIcon(Icons[23]);
1313
        tb_9_7->setText("0");
1396
        tb_9_7->setText("0");
1314
    }
1397
    }
1315
 
1398
 
1316
    if (ParameterSet[Set][P_LOOP_CONFIG] & 0x04)
1399
    if (ParameterSet[Set][P_LOOP_CONFIG] & 0x04)
1317
    {
1400
    {
1318
        tb_9_8->setIcon(Icons[24]);
1401
        tb_9_8->setIcon(Icons[24]);
1319
        tb_9_8->setText("1");
1402
        tb_9_8->setText("1");
1320
    }
1403
    }
1321
    else
1404
    else
1322
    {
1405
    {
1323
        tb_9_8->setIcon(Icons[25]);
1406
        tb_9_8->setIcon(Icons[25]);
1324
        tb_9_8->setText("0");
1407
        tb_9_8->setText("0");
1325
    }
1408
    }
1326
 
1409
 
1327
    if (ParameterSet[Set][P_LOOP_CONFIG] & 0x08)
1410
    if (ParameterSet[Set][P_LOOP_CONFIG] & 0x08)
1328
    {
1411
    {
1329
        tb_9_9->setIcon(Icons[26]);
1412
        tb_9_9->setIcon(Icons[26]);
1330
        tb_9_9->setText("1");
1413
        tb_9_9->setText("1");
1331
    }
1414
    }
1332
    else
1415
    else
1333
    {
1416
    {
1334
        tb_9_9->setIcon(Icons[27]);
1417
        tb_9_9->setIcon(Icons[27]);
1335
        tb_9_9->setText("0");
1418
        tb_9_9->setText("0");
1336
    }
1419
    }
1337
 
1420
 
1338
    cb_9_1 = setCombo(cb_9_1, Set, P_LOOP_GAS_LIMIT);
1421
    cb_9_1 = setCombo(cb_9_1, Set, P_LOOP_GAS_LIMIT);
1339
    sb_9_2->setValue(ParameterSet[Set][P_LOOP_THRESHOLD]);
1422
    sb_9_2->setValue(ParameterSet[Set][P_LOOP_THRESHOLD]);
1340
    sb_9_3->setValue(ParameterSet[Set][P_WINKEL_NICK]);
1423
    sb_9_3->setValue(ParameterSet[Set][P_WINKEL_NICK]);
1341
    sb_9_4->setValue(ParameterSet[Set][P_LOOP_HYSTERESE]);
1424
    sb_9_4->setValue(ParameterSet[Set][P_LOOP_HYSTERESE]);
1342
    sb_9_5->setValue(ParameterSet[Set][P_WINKEL_ROLL]);
1425
    sb_9_5->setValue(ParameterSet[Set][P_WINKEL_ROLL]);
1343
}
1426
}
1344
    // Seite 10
1427
    // Seite 10
1345
{
1428
{
1346
    cb_10_1 = setCombo(cb_10_1, Set, P_USER_1);
1429
    cb_10_1 = setCombo(cb_10_1, Set, P_USER_1);
1347
    cb_10_2 = setCombo(cb_10_2, Set, P_USER_2);
1430
    cb_10_2 = setCombo(cb_10_2, Set, P_USER_2);
1348
    cb_10_3 = setCombo(cb_10_3, Set, P_USER_3);
1431
    cb_10_3 = setCombo(cb_10_3, Set, P_USER_3);
1349
    cb_10_4 = setCombo(cb_10_4, Set, P_USER_4);
1432
    cb_10_4 = setCombo(cb_10_4, Set, P_USER_4);
1350
    cb_10_5 = setCombo(cb_10_5, Set, P_USER_5);
1433
    cb_10_5 = setCombo(cb_10_5, Set, P_USER_5);
1351
    cb_10_6 = setCombo(cb_10_6, Set, P_USER_6);
1434
    cb_10_6 = setCombo(cb_10_6, Set, P_USER_6);
1352
    cb_10_7 = setCombo(cb_10_7, Set, P_USER_7);
1435
    cb_10_7 = setCombo(cb_10_7, Set, P_USER_7);
1353
    cb_10_8 = setCombo(cb_10_8, Set, P_USER_8);
1436
    cb_10_8 = setCombo(cb_10_8, Set, P_USER_8);
1354
}
1437
}
1355
    // Seite 11
1438
    // Seite 11
1356
{
1439
{
1357
    sb_11_1->setValue(ParameterSet[Set][P_J16_BITMASK]);
1440
    sb_11_1->setValue(ParameterSet[Set][P_J16_BITMASK]);
1358
    cb_11_2 = setCombo(cb_11_2, Set, P_J16_TIMING);
1441
    cb_11_2 = setCombo(cb_11_2, Set, P_J16_TIMING);
1359
    sb_11_3->setValue(ParameterSet[Set][P_J17_BITMASK]);
1442
    sb_11_3->setValue(ParameterSet[Set][P_J17_BITMASK]);
1360
    cb_11_4 = setCombo(cb_11_4, Set, P_J17_TIMING);
1443
    cb_11_4 = setCombo(cb_11_4, Set, P_J17_TIMING);
1361
}
1444
}
1362
    // Seite 12
1445
    // Seite 12
1363
{
1446
{
1364
    cb_12_1 = setCombo(cb_12_1, Set, P_NAV_GPS_MODE);
1447
    cb_12_1 = setCombo(cb_12_1, Set, P_NAV_GPS_MODE);
1365
    cb_12_2 = setCombo(cb_12_2, Set, P_NAV_GPS_GAIN);
1448
    cb_12_2 = setCombo(cb_12_2, Set, P_NAV_GPS_GAIN);
1366
    sb_12_3->setValue(ParameterSet[Set][P_NAV_STICK_THRE]);
1449
    sb_12_3->setValue(ParameterSet[Set][P_NAV_STICK_THRE]);
1367
    sb_12_4->setValue(ParameterSet[Set][P_NAV_GPS_MIN]);
1450
    sb_12_4->setValue(ParameterSet[Set][P_NAV_GPS_MIN]);
1368
    cb_12_5 = setCombo(cb_12_5, Set, P_NAV_GPS_P);
1451
    cb_12_5 = setCombo(cb_12_5, Set, P_NAV_GPS_P);
1369
    cb_12_6 = setCombo(cb_12_6, Set, P_NAV_GPS_I);
1452
    cb_12_6 = setCombo(cb_12_6, Set, P_NAV_GPS_I);
1370
    cb_12_7 = setCombo(cb_12_7, Set, P_NAV_GPS_D);
1453
    cb_12_7 = setCombo(cb_12_7, Set, P_NAV_GPS_D);
1371
    cb_12_8 = setCombo(cb_12_8, Set, P_NAV_GPS_ACC);
1454
    cb_12_8 = setCombo(cb_12_8, Set, P_NAV_GPS_ACC);
1372
}
1455
}
1373
 
1456
 
1374
    // Seite 13
1457
    // Seite 13
1375
{
1458
{
1376
    cb_13_1 = setCombo(cb_13_1, Set, P_NAV_WIND_CORR);
1459
    cb_13_1 = setCombo(cb_13_1, Set, P_NAV_WIND_CORR);
1377
    cb_13_2 = setCombo(cb_13_2, Set, P_NAV_SPEED_COMP);
1460
    cb_13_2 = setCombo(cb_13_2, Set, P_NAV_SPEED_COMP);
1378
    cb_13_3 = setCombo(cb_13_3, Set, P_NAV_RADIUS);
1461
    cb_13_3 = setCombo(cb_13_3, Set, P_NAV_RADIUS);
-
 
1462
    cb_13_4 = setCombo(cb_13_4, Set, P_NAV_ANGLE_LIMIT);
1379
}
1463
}
1380
 
1464
 
1381
 
1465
 
1382
}
1466
}
1383
 
1467
 
1384
void MKTool::slot_TabChanged(int Tab) // DONE 0.71g
1468
void MKTool::slot_TabChanged(int Tab) // DONE 0.71g
1385
{
1469
{
1386
    Tab = Tab;
1470
    Tab = Tab;
1387
    if (tab_Main->count() != 0)
1471
    if (tab_Main->count() != 0)
1388
    {
1472
    {
1389
        if ((tab_Main->currentWidget()->objectName() == QString("Tab_2")) && (tab_Par->currentIndex() == 1))
1473
        if ((tab_Main->currentWidget()->objectName() == QString("Tab_2")) && (tab_Par->currentIndex() == 1))
1390
        {
1474
        {
1391
            TX_Data[0] = 0;
1475
            TX_Data[0] = 0;
1392
            send_Data('p', ADDRESS_FC, TX_Data, 0, true);
1476
            send_Data('p', ADDRESS_FC, TX_Data, 0, true);
1393
 
1477
 
1394
            Ticker->setInterval(500);
1478
            Ticker->setInterval(500);
1395
            TickerEvent[1] = true;
1479
            TickerEvent[1] = true;
1396
        }
1480
        }
1397
        else
1481
        else
1398
        {
1482
        {
1399
            Ticker->setInterval(2000);
1483
            Ticker->setInterval(2000);
1400
            TickerEvent[1] = false;
1484
            TickerEvent[1] = false;
1401
        }
1485
        }
1402
 
1486
 
1403
        if ((tab_Main->currentWidget()->objectName() == QString("Tab_4")))
1487
        if ((tab_Main->currentWidget()->objectName() == QString("Tab_4")))
1404
        {
1488
        {
1405
            TX_Data[0] = 0;
1489
            TX_Data[0] = 0;
1406
            TX_Data[1] = 0;
1490
            TX_Data[1] = 0;
1407
            send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
1491
            send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
1408
 
1492
 
1409
            Ticker->setInterval(500);
1493
            Ticker->setInterval(500);
1410
            TickerEvent[2] = true;
1494
            TickerEvent[2] = true;
1411
        }
1495
        }
1412
        else
1496
        else
1413
        {
1497
        {
1414
            Ticker->setInterval(2000);
1498
            Ticker->setInterval(2000);
1415
            TickerEvent[2] = false;
1499
            TickerEvent[2] = false;
1416
        }
1500
        }
1417
    }
1501
    }
1418
}
1502
}
1419
 
1503
 
1420
void MKTool::slot_LCD_UP() // DONE 0.71g
1504
void MKTool::slot_LCD_UP() // DONE 0.71g
1421
{
1505
{
1422
    if (LCD_Page == LCD_MAX_Page)
1506
    if (LCD_Page == LCD_MAX_Page)
1423
        TX_Data[0] = 0;
1507
        TX_Data[0] = 0;
1424
    else
1508
    else
1425
        TX_Data[0] = LCD_Page + 1;
1509
        TX_Data[0] = LCD_Page + 1;
1426
 
1510
 
1427
    TX_Data[1] = 0;
1511
    TX_Data[1] = 0;
1428
    send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
1512
    send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
1429
}
1513
}
1430
 
1514
 
1431
void MKTool::slot_LCD_DOWN() // DONE 0.71g
1515
void MKTool::slot_LCD_DOWN() // DONE 0.71g
1432
{
1516
{
1433
    if (LCD_Page == 0)
1517
    if (LCD_Page == 0)
1434
        TX_Data[0] = LCD_MAX_Page;
1518
        TX_Data[0] = LCD_MAX_Page;
1435
    else
1519
    else
1436
        TX_Data[0] = LCD_Page - 1;
1520
        TX_Data[0] = LCD_Page - 1;
1437
 
1521
 
1438
    TX_Data[1] = 0;
1522
    TX_Data[1] = 0;
1439
    send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
1523
    send_Data('l', ADDRESS_ALL, TX_Data, 1, true);
1440
}
1524
}
1441
 
1525
 
1442
void MKTool::slot_GetParameter() // DONE 0.71g
1526
void MKTool::slot_GetParameter() // DONE 0.71g
1443
{
1527
{
1444
    TX_Data[0] = sb_Set->value();
1528
    TX_Data[0] = sb_Set->value();
1445
    TX_Data[1] = 0;
1529
    TX_Data[1] = 0;
1446
    send_Data('q', ADDRESS_FC, TX_Data, 1);
1530
    send_Data('q', ADDRESS_FC, TX_Data, 1);
1447
}
1531
}
1448
 
1532
 
1449
void MKTool::slot_SetParameter() // DONE 0.71g
1533
void MKTool::slot_SetParameter() // DONE 0.71g
1450
{
1534
{
1451
    store_ParameterSet(sb_Set->value());
1535
    store_ParameterSet(sb_Set->value());
1452
 
1536
 
1453
    TX_Data[0] = sb_Set->value();
1537
    TX_Data[0] = sb_Set->value();
1454
    TX_Data[1] = VERSION_SETTINGS;
1538
    TX_Data[1] = VERSION_SETTINGS;
1455
 
1539
 
1456
    for (int a = 0; a < MaxParameter; a++)
1540
    for (int a = 0; a < MaxParameter; a++)
1457
    {
1541
    {
1458
        TX_Data[a + 2] = ParameterSet[sb_Set->value()][a];
1542
        TX_Data[a + 2] = ParameterSet[sb_Set->value()][a];
1459
    }
1543
    }
1460
 
1544
 
1461
    store_ParameterSet(sb_Set->value());
1545
    store_ParameterSet(sb_Set->value());
1462
 
1546
 
1463
    send_Data('s', ADDRESS_FC, TX_Data, MaxParameter + 2, false);
1547
    send_Data('s', ADDRESS_FC, TX_Data, MaxParameter + 2, false);
1464
}
1548
}
1465
 
1549
 
1466
 
1550
 
1467
// Save GUI-Settings
1551
// Save GUI-Settings
1468
////////////////////
1552
////////////////////
1469
void MKTool::write_Settings()
1553
void MKTool::write_Settings()
1470
{
1554
{
1471
//    QBitArray TabViews(6);
1555
//    QBitArray TabViews(6);
1472
    Settings->GUI.TabViews.setBit(0, ac_View0->isChecked());
1556
    Settings->GUI.TabViews.setBit(0, ac_View0->isChecked());
1473
    Settings->GUI.TabViews.setBit(1, ac_View1->isChecked());
1557
    Settings->GUI.TabViews.setBit(1, ac_View1->isChecked());
1474
    Settings->GUI.TabViews.setBit(2, ac_View2->isChecked());
1558
    Settings->GUI.TabViews.setBit(2, ac_View2->isChecked());
1475
    Settings->GUI.TabViews.setBit(3, ac_View3->isChecked());
1559
    Settings->GUI.TabViews.setBit(3, ac_View3->isChecked());
1476
    Settings->GUI.TabViews.setBit(4, ac_View4->isChecked());
1560
    Settings->GUI.TabViews.setBit(4, ac_View4->isChecked());
1477
    Settings->GUI.TabViews.setBit(5, ac_View5->isChecked());
1561
    Settings->GUI.TabViews.setBit(5, ac_View5->isChecked());
1478
 
1562
 
1479
    Settings->GUI.Term_Info   = cb_ShowMSG->isChecked();
1563
    Settings->GUI.Term_Info   = cb_ShowMSG->isChecked();
1480
    Settings->GUI.Term_Data   = cb_ShowData->isChecked();
1564
    Settings->GUI.Term_Data   = cb_ShowData->isChecked();
1481
    Settings->GUI.Term_Always = cb_ShowAlways->isChecked();
1565
    Settings->GUI.Term_Always = cb_ShowAlways->isChecked();
-
 
1566
    Settings->GUI.Term_Send   = cb_ShowSend->isChecked();
1482
 
1567
 
1483
    Settings->TTY.Port = le_Port->text();
1568
    Settings->TTY.Port = le_Port->text();
1484
 
1569
 
1485
    QSettings Setting("KeyOz-Net", "QMK-Groundstation");
1570
    QSettings Setting("KeyOz-Net", "QMK-Groundstation");
1486
 
1571
 
1487
    Setting.beginGroup("GUI");
1572
    Setting.beginGroup("GUI");
1488
        Setting.setValue("IsMax", isMaximized());
1573
        Setting.setValue("IsMax", isMaximized());
1489
        Setting.setValue("Size",  size());
1574
        Setting.setValue("Size",  size());
1490
        Setting.setValue("Point", pos());
1575
        Setting.setValue("Point", pos());
1491
    Setting.endGroup();
1576
    Setting.endGroup();
1492
}
1577
}
1493
 
1578
 
1494
 
1579
 
1495
// Debug-Daten anzeigen und Aufzeichnen
1580
// Debug-Daten anzeigen und Aufzeichnen
1496
///////////////////////////////////////
1581
///////////////////////////////////////
1497
void MKTool::write_CSV()
1582
void MKTool::write_CSV()
1498
{
1583
{
1499
    QTextStream Out(CSVFile);
1584
    QTextStream Out(CSVFile);
1500
    for (int a=0; a<MaxAnalog; a++)
1585
    for (int a=0; a<MaxAnalog; a++)
1501
    {
1586
    {
1502
        if (Settings->Analog1.LogView[a])
1587
        if (Settings->Analog1.LogView[a])
1503
        {
1588
        {
1504
            Out << AnalogData[a];
1589
            Out << AnalogData[a];
1505
            if (a < MaxAnalog - 1)
1590
            if (a < MaxAnalog - 1)
1506
                Out << ';';
1591
                Out << ';';
1507
        }
1592
        }
1508
    }
1593
    }
1509
    Out << "\n";
1594
    Out << "\n";
1510
}
1595
}
1511
 
1596
 
1512
void MKTool::slot_RecordCSV() // DONE 0.71g
1597
void MKTool::slot_RecordCSV() // DONE 0.71g
1513
{
1598
{
1514
    if (!CSVFile->isOpen())
1599
    if (!CSVFile->isOpen())
1515
    {
1600
    {
1516
        QString Filename = Settings->DIR.Logging + Mode.Hardware + " - " + QDate::currentDate().toString(("yyyy-MM-dd")) + " -- " + QTime::currentTime().toString("hh-mm") + ".csv";
1601
        QString Filename = Settings->DIR.Logging + Mode.Hardware + " - " + QDate::currentDate().toString(("yyyy-MM-dd")) + " -- " + QTime::currentTime().toString("hh-mm") + ".csv";
1517
 
1602
 
1518
        CSVFile = new QFile(Filename);
1603
        CSVFile = new QFile(Filename);
1519
        if (!CSVFile->exists())
1604
        if (!CSVFile->exists())
1520
        {
1605
        {
1521
            CSVFile->open(QIODevice::Append | QIODevice::Text);
1606
            CSVFile->open(QIODevice::Append | QIODevice::Text);
1522
 
1607
 
1523
            QTextStream Out(CSVFile);
1608
            QTextStream Out(CSVFile);
1524
 
1609
 
1525
            for (int a = 0; a < MaxAnalog; a++)
1610
            for (int a = 0; a < MaxAnalog; a++)
1526
            {
1611
            {
1527
                if (Settings->Analog1.LogView[a])
1612
                if (Settings->Analog1.LogView[a])
1528
                {
1613
                {
1529
                    Out << Settings->Analog1.Label[a];
1614
                    Out << Settings->Analog1.Label[a];
1530
 
1615
 
1531
                    if (a < MaxAnalog - 1)
1616
                    if (a < MaxAnalog - 1)
1532
                        Out << ';';
1617
                        Out << ';';
1533
                }
1618
                }
1534
            }
1619
            }
1535
            Out << "\n";
1620
            Out << "\n";
1536
        }
1621
        }
1537
        else
1622
        else
1538
        {
1623
        {
1539
            CSVFile->open(QIODevice::Append | QIODevice::Text);
1624
            CSVFile->open(QIODevice::Append | QIODevice::Text);
1540
        }
1625
        }
1541
 
1626
 
1542
        pb_Record->setIcon(Icons[6]);
1627
        pb_Record->setIcon(Icons[6]);
1543
        pb_Record->setText("CSV Stop");
1628
        pb_Record->setText("CSV Stop");
1544
        ac_RecordCSV->setIcon(Icons[6]);
1629
        ac_RecordCSV->setIcon(Icons[6]);
1545
        ac_RecordCSV->setText("CSV Stop");
1630
        ac_RecordCSV->setText("CSV Stop");
1546
    }
1631
    }
1547
    else
1632
    else
1548
    {
1633
    {
1549
        CSVFile->close();
1634
        CSVFile->close();
1550
        pb_Record->setIcon(Icons[7]);
1635
        pb_Record->setIcon(Icons[7]);
1551
        pb_Record->setText("CSV Aufzeichnen");
1636
        pb_Record->setText("CSV Aufzeichnen");
1552
        ac_RecordCSV->setIcon(Icons[7]);
1637
        ac_RecordCSV->setIcon(Icons[7]);
1553
        ac_RecordCSV->setText("CSV  Aufzeichnen");
1638
        ac_RecordCSV->setText("CSV  Aufzeichnen");
1554
    }
1639
    }
1555
}
1640
}
1556
 
1641
 
1557
void MKTool::show_DebugData()
1642
void MKTool::show_DebugData()
1558
{
1643
{
1559
    if (CSVFile->isOpen())
1644
    if (CSVFile->isOpen())
1560
    {
1645
    {
1561
        write_CSV();
1646
        write_CSV();
1562
    }
1647
    }
1563
 
1648
 
1564
    if (ac_StartPlotter->isChecked())
1649
    if (ac_StartPlotter->isChecked())
1565
    {
1650
    {
1566
        aID[NextPlot] = NextPlot;
1651
        aID[NextPlot] = NextPlot;
1567
 
1652
 
1568
        for (int a = 0; a < MaxAnalog; a++)
1653
        for (int a = 0; a < MaxAnalog; a++)
1569
        {
1654
        {
1570
            aData[a][NextPlot] = AnalogData[a];
1655
            aData[a][NextPlot] = AnalogData[a];
1571
        }
1656
        }
1572
        NextPlot++;
1657
        NextPlot++;
1573
 
1658
 
1574
        if ((tab_Main->currentWidget()->objectName() == QString("Tab_1")))
1659
        if ((tab_Main->currentWidget()->objectName() == QString("Tab_1")))
1575
            update_Plot();
1660
            update_Plot();
1576
    }
1661
    }
1577
 
1662
 
1578
    le_A_0->setText(QString("%1").arg(AnalogData[0]));
1663
    le_A_0->setText(QString("%1").arg(AnalogData[0]));
1579
    le_A_1->setText(QString("%1").arg(AnalogData[1]));
1664
    le_A_1->setText(QString("%1").arg(AnalogData[1]));
1580
    le_A_2->setText(QString("%1").arg(AnalogData[2]));
1665
    le_A_2->setText(QString("%1").arg(AnalogData[2]));
1581
    le_A_3->setText(QString("%1").arg(AnalogData[3]));
1666
    le_A_3->setText(QString("%1").arg(AnalogData[3]));
1582
    le_A_4->setText(QString("%1").arg(AnalogData[4]));
1667
    le_A_4->setText(QString("%1").arg(AnalogData[4]));
1583
    le_A_5->setText(QString("%1").arg(AnalogData[5]));
1668
    le_A_5->setText(QString("%1").arg(AnalogData[5]));
1584
    le_A_6->setText(QString("%1").arg(AnalogData[6]));
1669
    le_A_6->setText(QString("%1").arg(AnalogData[6]));
1585
    le_A_7->setText(QString("%1").arg(AnalogData[7]));
1670
    le_A_7->setText(QString("%1").arg(AnalogData[7]));
1586
    le_A_8->setText(QString("%1").arg(AnalogData[8]));
1671
    le_A_8->setText(QString("%1").arg(AnalogData[8]));
1587
    le_A_9->setText(QString("%1").arg(AnalogData[9]));
1672
    le_A_9->setText(QString("%1").arg(AnalogData[9]));
1588
    le_A_10->setText(QString("%1").arg(AnalogData[10]));
1673
    le_A_10->setText(QString("%1").arg(AnalogData[10]));
1589
    le_A_11->setText(QString("%1").arg(AnalogData[11]));
1674
    le_A_11->setText(QString("%1").arg(AnalogData[11]));
1590
    le_A_12->setText(QString("%1").arg(AnalogData[12]));
1675
    le_A_12->setText(QString("%1").arg(AnalogData[12]));
1591
    le_A_13->setText(QString("%1").arg(AnalogData[13]));
1676
    le_A_13->setText(QString("%1").arg(AnalogData[13]));
1592
    le_A_14->setText(QString("%1").arg(AnalogData[14]));
1677
    le_A_14->setText(QString("%1").arg(AnalogData[14]));
1593
    le_A_15->setText(QString("%1").arg(AnalogData[15]));
1678
    le_A_15->setText(QString("%1").arg(AnalogData[15]));
1594
    le_A_16->setText(QString("%1").arg(AnalogData[16]));
1679
    le_A_16->setText(QString("%1").arg(AnalogData[16]));
1595
    le_A_17->setText(QString("%1").arg(AnalogData[17]));
1680
    le_A_17->setText(QString("%1").arg(AnalogData[17]));
1596
    le_A_18->setText(QString("%1").arg(AnalogData[18]));
1681
    le_A_18->setText(QString("%1").arg(AnalogData[18]));
1597
    le_A_19->setText(QString("%1").arg(AnalogData[19]));
1682
    le_A_19->setText(QString("%1").arg(AnalogData[19]));
1598
    le_A_20->setText(QString("%1").arg(AnalogData[20]));
1683
    le_A_20->setText(QString("%1").arg(AnalogData[20]));
1599
    le_A_21->setText(QString("%1").arg(AnalogData[21]));
1684
    le_A_21->setText(QString("%1").arg(AnalogData[21]));
1600
    le_A_22->setText(QString("%1").arg(AnalogData[22]));
1685
    le_A_22->setText(QString("%1").arg(AnalogData[22]));
1601
    le_A_23->setText(QString("%1").arg(AnalogData[23]));
1686
    le_A_23->setText(QString("%1").arg(AnalogData[23]));
1602
    le_A_24->setText(QString("%1").arg(AnalogData[24]));
1687
    le_A_24->setText(QString("%1").arg(AnalogData[24]));
1603
    le_A_25->setText(QString("%1").arg(AnalogData[25]));
1688
    le_A_25->setText(QString("%1").arg(AnalogData[25]));
1604
    le_A_26->setText(QString("%1").arg(AnalogData[26]));
1689
    le_A_26->setText(QString("%1").arg(AnalogData[26]));
1605
    le_A_27->setText(QString("%1").arg(AnalogData[27]));
1690
    le_A_27->setText(QString("%1").arg(AnalogData[27]));
1606
    le_A_28->setText(QString("%1").arg(AnalogData[28]));
1691
    le_A_28->setText(QString("%1").arg(AnalogData[28]));
1607
    le_A_29->setText(QString("%1").arg(AnalogData[29]));
1692
    le_A_29->setText(QString("%1").arg(AnalogData[29]));
1608
    le_A_30->setText(QString("%1").arg(AnalogData[30]));
1693
    le_A_30->setText(QString("%1").arg(AnalogData[30]));
1609
    le_A_31->setText(QString("%1").arg(AnalogData[31]));
1694
    le_A_31->setText(QString("%1").arg(AnalogData[31]));
1610
}
1695
}
1611
 
1696
 
1612
 
1697
 
1613
// Seriel-Port Bereich, Befehle senden und Daten empfangen
1698
// Seriel-Port Bereich, Befehle senden und Daten empfangen
1614
//////////////////////////////////////////////////////////
1699
//////////////////////////////////////////////////////////
1615
 
1700
 
1616
// Neues Datenpacket empfangen -> Verarbeiten
1701
// Neues Datenpacket empfangen -> Verarbeiten
1617
void MKTool::new_RXData(sRxData RX) // DONE 0.71g
1702
void MKTool::new_RXData(sRxData RX) // DONE 0.71g
1618
{
1703
{
1619
 
1704
 
1620
    if (LastSend.length() > 2)
1705
    if (LastSend.length() > 2)
1621
    {
1706
    {
1622
    }
1707
    }
1623
 
1708
 
1624
    int HardwareID = RX.Input[1] - 'a';
1709
    int HardwareID = RX.Input[1] - 'a';
1625
 
1710
 
1626
    switch(RX.Input[2])
1711
    switch(RX.Input[2])
1627
    {
1712
    {
1628
        case 'L' : // DONE 0.71g
1713
        case 'L' : // DONE 0.71g
1629
                    if (ToolBox::Decode64(RX, true))
1714
                    if (ToolBox::Decode64(RX, true))
1630
                    {
1715
                    {
1631
                        int LCD[150];
1716
                        int LCD[150];
1632
                        memcpy(LCD,RX.Decode, sizeof(RX.Decode));
1717
                        memcpy(LCD,RX.Decode, sizeof(RX.Decode));
1633
 
1718
 
1634
                        LCD_Page     = RX.Decode[0];
1719
                        LCD_Page     = RX.Decode[0];
1635
                        LCD_MAX_Page = RX.Decode[1];
1720
                        LCD_MAX_Page = RX.Decode[1];
1636
 
1721
 
1637
                        le_LCD0->setText(ToolBox::Data2QString(LCD,2,22));
1722
                        le_LCD0->setText(ToolBox::Data2QString(LCD,2,22));
1638
                        le_LCD1->setText(ToolBox::Data2QString(LCD,22,42));
1723
                        le_LCD1->setText(ToolBox::Data2QString(LCD,22,42));
1639
                        le_LCD2->setText(ToolBox::Data2QString(LCD,42,62));
1724
                        le_LCD2->setText(ToolBox::Data2QString(LCD,42,62));
1640
                        le_LCD3->setText(ToolBox::Data2QString(LCD,62,82));
1725
                        le_LCD3->setText(ToolBox::Data2QString(LCD,62,82));
1641
 
1726
 
1642
                        TickerEvent[0] = false;
1727
                        TickerEvent[0] = false;
1643
                    }
1728
                    }
1644
                break;
1729
                break;
1645
        case 'P' : // DONE 0.71g
1730
        case 'P' : // DONE 0.71g
1646
                    if (ToolBox::Decode64(RX, true))
1731
                    if (ToolBox::Decode64(RX, true))
1647
                    {
1732
                    {
1648
                        pb_K1->setValue(ToolBox::Data2Int(RX.Decode,  0,true));
1733
                        pb_K1->setValue(ToolBox::Data2Int(RX.Decode,  0,true));
1649
                        pb_K2->setValue(ToolBox::Data2Int(RX.Decode,  2,true));
1734
                        pb_K2->setValue(ToolBox::Data2Int(RX.Decode,  2,true));
1650
                        pb_K3->setValue(ToolBox::Data2Int(RX.Decode,  4,true));
1735
                        pb_K3->setValue(ToolBox::Data2Int(RX.Decode,  4,true));
1651
                        pb_K4->setValue(ToolBox::Data2Int(RX.Decode,  6,true));
1736
                        pb_K4->setValue(ToolBox::Data2Int(RX.Decode,  6,true));
1652
                        pb_K5->setValue(ToolBox::Data2Int(RX.Decode,  8,true));
1737
                        pb_K5->setValue(ToolBox::Data2Int(RX.Decode,  8,true));
1653
                        pb_K6->setValue(ToolBox::Data2Int(RX.Decode, 10,true));
1738
                        pb_K6->setValue(ToolBox::Data2Int(RX.Decode, 10,true));
1654
                        pb_K7->setValue(ToolBox::Data2Int(RX.Decode, 12,true));
1739
                        pb_K7->setValue(ToolBox::Data2Int(RX.Decode, 12,true));
1655
                        pb_K8->setValue(ToolBox::Data2Int(RX.Decode, 14,true));
1740
                        pb_K8->setValue(ToolBox::Data2Int(RX.Decode, 14,true));
1656
                    }
1741
                    }
1657
                break;
1742
                break;
1658
        case 'A' : // DONE 0.71g
1743
        case 'A' : // DONE 0.71g
1659
                    if (ToolBox::Decode64(RX, true))
1744
                    if (ToolBox::Decode64(RX, true))
1660
                    {
1745
                    {
1661
                        int Position = RX.Decode[0];
1746
                        int Position = RX.Decode[0];
1662
                        if (Position != 31)
1747
                        if (Position != 31)
1663
                        {
1748
                        {
1664
                            Settings->Analog1.Label[Position] = ToolBox::Data2QString(RX.Decode,1,17).trimmed();
1749
                            Settings->Analog1.Label[Position] = ToolBox::Data2QString(RX.Decode,1,17).trimmed();
1665
                            Position ++;
1750
                            Position ++;
1666
                            TX_Data[0] = Position;
1751
                            TX_Data[0] = Position;
1667
                            send_Data('a', ADDRESS_ALL, TX_Data, 1, false);
1752
                            send_Data('a', ADDRESS_ALL, TX_Data, 1, false);
1668
                        }
1753
                        }
1669
                        if (Position == 32)
1754
                        if (Position == 31)
1670
                        {
1755
                        {
1671
                            for (int a = 0; a < MaxAnalog; a++)
1756
                            for (int a = 0; a < MaxAnalog; a++)
1672
                            {
1757
                            {
1673
                                lb_Analog[a]->setText(Settings->Analog1.Label[a]);
1758
                                lb_Analog[a]->setText(Settings->Analog1.Label[a]);
1674
                            }
1759
                            }
1675
                            Settings->Analog1.Version = Mode.Version;
1760
                            Settings->Analog1.Version = Mode.Version;
1676
                            Settings->write_Settings_AnalogLabels(HardwareID);
1761
                            Settings->write_Settings_AnalogLabels(HardwareID);
1677
                            config_Plot();
1762
                            config_Plot();
1678
                        }
1763
                        }
1679
                    }
1764
                    }
1680
                break;
1765
                break;
1681
        case 'D' : // DONE 0.71g
1766
        case 'D' : // DONE 0.71g
1682
                    if (ToolBox::Decode64(RX, true))
1767
                    if (ToolBox::Decode64(RX, true))
1683
                    {
1768
                    {
1684
                        for (int i = 0; i < MaxAnalog; i++)
1769
                        for (int i = 0; i < MaxAnalog; i++)
1685
                        {
1770
                        {
1686
                            AnalogData[i] = ToolBox::Data2Int(RX.Decode, (i * 2) + 2);
1771
                            AnalogData[i] = ToolBox::Data2Int(RX.Decode, (i * 2) + 2);
1687
                        }
1772
                        }
1688
                        show_DebugData();
1773
                        show_DebugData();
1689
                    }
1774
                    }
1690
                break;
1775
                break;
1691
        case 'Q' : // DONE 0.71g
1776
        case 'Q' : // DONE 0.71g
1692
                    TickerEvent[0] = false;
1777
                    TickerEvent[0] = false;
1693
 
1778
 
1694
                    ToolBox::Decode64(RX, true);
1779
                    ToolBox::Decode64(RX, true);
1695
 
1780
 
1696
                    if (RX.Decode[1] == VERSION_SETTINGS)
1781
                    if (RX.Decode[1] == VERSION_SETTINGS)
1697
                    {
1782
                    {
1698
                        int Settings_ID = RX.Decode[0];
1783
                        int Settings_ID = RX.Decode[0];
1699
                        for (int a = 0; a < MaxParameter; a++)
1784
                        for (int a = 0; a < MaxParameter; a++)
1700
                        {
1785
                        {
1701
                            ParameterSet[Settings_ID][a] = RX.Decode[a + 2];
1786
                            ParameterSet[Settings_ID][a] = RX.Decode[a + 2];
1702
                        }
1787
                        }
1703
//                        memcpy(ParameterSet[Settings_ID],RX.Decode, sizeof(RX.Decode));
1788
//                        memcpy(ParameterSet[Settings_ID],RX.Decode, sizeof(RX.Decode));
1704
                        show_ParameterSet(Settings_ID);
1789
                        show_ParameterSet(Settings_ID);
1705
                    }
1790
                    }
1706
                    else
1791
                    else
1707
                    {
1792
                    {
1708
                        pb_Read->setDisabled(true);
1793
                        pb_Read->setDisabled(true);
1709
                        pb_Write->setDisabled(true);
1794
                        pb_Write->setDisabled(true);
1710
 
1795
 
1711
                        QMessageBox::warning(this, QA_NAME,
1796
                        QMessageBox::warning(this, QA_NAME,
1712
                               "Versionen inkompatibel. \nParameterbearbeitung nicht moeglich.", QMessageBox::Ok);
1797
                               "Versionen inkompatibel. \nParameterbearbeitung nicht moeglich.", QMessageBox::Ok);
1713
                    }
1798
                    }
1714
 
1799
 
1715
                break;
1800
                break;
1716
        case 'S' : // DONE 0.71g
1801
        case 'S' : // DONE 0.71g
1717
                    TickerEvent[0] = false;
1802
                    TickerEvent[0] = false;
1718
                    qDebug("Settings set...!!!");
1803
                    qDebug("Settings set...!!!");
1719
                break;
1804
                break;
1720
        case 'V' : // DONE 0.71g
1805
        case 'V' : // DONE 0.71g
1721
                    TickerEvent[0] = false;
1806
                    TickerEvent[0] = false;
1722
 
1807
 
1723
                    ToolBox::Decode64(RX, true);
1808
                    ToolBox::Decode64(RX, true);
1724
 
1809
 
1725
                    Mode.ID            = RX.Input[1] - 'a';
1810
                    Mode.ID            = RX.Input[1] - 'a';
1726
                    Mode.VERSION_MAJOR = RX.Decode[0];
1811
                    Mode.VERSION_MAJOR = RX.Decode[0];
1727
                    Mode.VERSION_MINOR = RX.Decode[1];
1812
                    Mode.VERSION_MINOR = RX.Decode[1];
1728
                    Mode.VERSION_PATCH = RX.Decode[4];
1813
                    Mode.VERSION_PATCH = RX.Decode[4];
1729
                    Mode.VERSION_SERIAL_MAJOR = RX.Decode[2];
1814
                    Mode.VERSION_SERIAL_MAJOR = RX.Decode[2];
1730
                    Mode.VERSION_SERIAL_MINOR = RX.Decode[3];
1815
                    Mode.VERSION_SERIAL_MINOR = RX.Decode[3];
1731
 
1816
 
1732
                    Mode.Hardware   = HardwareType[Mode.ID];
1817
                    Mode.Hardware   = HardwareType[Mode.ID];
1733
                    Mode.Version    = QString("%1").arg(RX.Decode[0]) + "." + QString("%1").arg(RX.Decode[1]) + QString(RX.Decode[4] + 'a');
1818
                    Mode.Version    = QString("%1").arg(RX.Decode[0]) + "." + QString("%1").arg(RX.Decode[1]) + QString(RX.Decode[4] + 'a');
1734
 
1819
 
1735
                    setWindowTitle(QA_NAME + " v" + QA_VERSION + " - " + Mode.Hardware + " " + Mode.Version);
1820
                    setWindowTitle(QA_NAME + " v" + QA_VERSION + " - " + Mode.Hardware + " " + Mode.Version);
1736
 
1821
 
1737
                    if (Mode.VERSION_SERIAL_MAJOR != VERSION_SERIAL_MAJOR)
1822
                    if (Mode.VERSION_SERIAL_MAJOR != VERSION_SERIAL_MAJOR)
1738
                    {
1823
                    {
1739
                            AllowSend = false;
1824
                            AllowSend = false;
1740
                            QMessageBox::warning(this, QA_NAME,
1825
                            QMessageBox::warning(this, QA_NAME,
1741
                               "Serielles Protokoll Inkompatibel. \nBitte neue Programmversion installieren,", QMessageBox::Ok);
1826
                               "Serielles Protokoll Inkompatibel. \nBitte neue Programmversion installieren,", QMessageBox::Ok);
1742
                    }
1827
                    }
1743
 
1828
 
1744
                    TX_Data[0] = 50;
1829
                    TX_Data[0] = Settings->Data.Debug_Slow / 10;
1745
                    send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
1830
                    send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
1746
 
1831
 
1747
                    if (Mode.ID == ADDRESS_FC)
1832
                    if (Mode.ID == ADDRESS_FC)
1748
                    {
1833
                    {
1749
                        {
1834
                        {
1750
                            TX_Data[0] = 0xff;
1835
                            TX_Data[0] = 0xff;
1751
                            TX_Data[1] = 0;
1836
                            TX_Data[1] = 0;
1752
                            send_Data('q', ADDRESS_FC, TX_Data, 1);
1837
                            send_Data('q', ADDRESS_FC, TX_Data, 1);
1753
                        }
1838
                        }
1754
                    }
1839
                    }
1755
                    else
1840
                    else
1756
                    {
1841
                    {
1757
                            pb_Read->setDisabled(true);
1842
                            pb_Read->setDisabled(true);
1758
                            pb_Write->setDisabled(true);
1843
                            pb_Write->setDisabled(true);
1759
 
1844
 
1760
//                            QMessageBox::warning(this, QA_NAME,
1845
//                            QMessageBox::warning(this, QA_NAME,
1761
//                               "Keine Verbindung zur FlightCtrl. \nParameterbearbeitung nicht moeglich.", QMessageBox::Ok);
1846
//                               "Keine Verbindung zur FlightCtrl. \nParameterbearbeitung nicht moeglich.", QMessageBox::Ok);
1762
                    }
1847
                    }
1763
 
1848
 
1764
                    Settings->read_Settings_Analog(HardwareID);
1849
                    Settings->read_Settings_Analog(HardwareID);
1765
                    Settings->read_Settings_AnalogLabels(HardwareID);
1850
                    Settings->read_Settings_AnalogLabels(HardwareID);
1766
 
1851
 
1767
                    if (Settings->Analog1.Version != Mode.Version)
1852
                    if (Settings->Analog1.Version != Mode.Version)
1768
                    {
1853
                    {
-
 
1854
                        lb_Status->setText("Analoglabel-Version unterschiedlich. Lese Analoglabels neu aus.");
1769
                        slot_ac_GetLabels();
1855
                        slot_ac_GetLabels();
1770
                    }
1856
                    }
1771
                    else
1857
                    else
1772
                    for (int a = 0; a < MaxAnalog; a++)
1858
                    for (int a = 0; a < MaxAnalog; a++)
1773
                    {
1859
                    {
1774
                        lb_Analog[a]->setText(Settings->Analog1.Label[a]);
1860
                        lb_Analog[a]->setText(Settings->Analog1.Label[a]);
1775
                    }
1861
                    }
1776
                    config_Plot();
1862
                    config_Plot();
1777
 
1863
 
1778
                break;
1864
                break;
1779
    }
1865
    }
1780
}
1866
}
1781
 
1867
 
1782
// Neue Daten an der Schnittstelle
1868
// Neue Daten an der Schnittstelle
1783
void MKTool::slot_newDataReceived(const QByteArray &dataReceived) // DONE 0.71g
1869
void MKTool::slot_newDataReceived(const QByteArray &dataReceived) // DONE 0.71g
1784
{
1870
{
1785
    const char *RXt;
1871
    const char *RXt;
1786
    RXt = dataReceived.data();
1872
    RXt = dataReceived.data();
1787
    int a = 0;
1873
    int a = 0;
1788
 
1874
 
1789
    while (RXt[a] != '\0')
1875
    while (RXt[a] != '\0')
1790
    {
1876
    {
1791
        if (RXt[a] == '\r')
1877
        if (RXt[a] == '\r')
1792
        {
1878
        {
1793
            while ((RxData.String.length() > 1) && (RxData.String.at(1) == '#'))
1879
            while ((RxData.String.length() > 1) && (RxData.String.at(1) == '#'))
1794
            {
1880
            {
1795
                RxData.String.remove(0,1);
1881
                RxData.String.remove(0,1);
1796
            }
1882
            }
1797
 
1883
 
1798
            if (ToolBox::check_CRC(RxData.String))
1884
            if (ToolBox::check_CRC(RxData.String))
1799
            {
1885
            {
1800
                RxData.Input = RxData.String.toLatin1().data();
1886
                RxData.Input = RxData.String.toLatin1().data();
1801
                new_RXData(RxData);
1887
                new_RXData(RxData);
1802
 
1888
 
1803
                if ((cb_ShowData->isChecked()) && ((tab_Main->currentWidget()->objectName() == QString("Tab_3")) || (cb_ShowAlways->isChecked())))
1889
                if ((cb_ShowData->isChecked()) && ((tab_Main->currentWidget()->objectName() == QString("Tab_3")) || (cb_ShowAlways->isChecked())))
1804
                {
1890
                {
1805
                    te_RX->moveCursor(QTextCursor::End,  QTextCursor::MoveAnchor);
1891
                    te_RX->moveCursor(QTextCursor::End,  QTextCursor::MoveAnchor);
1806
                    te_RX->insertPlainText(RxData.String + '\r');
1892
//                    te_RX->insertPlainText(" > " + RxData.String + '\r');
-
 
1893
                    te_RX->insertHtml("<span style=\"color:#00008b;\">" + RxData.String + "<br /></span>");
1807
                }
1894
                }
1808
            }
1895
            }
1809
            else
1896
            else
1810
            {
1897
            {
1811
                if ((cb_ShowMSG->isChecked()) && ((tab_Main->currentWidget()->objectName() == QString("Tab_3")) || (cb_ShowAlways->isChecked())))
1898
                if ((cb_ShowMSG->isChecked()) && ((tab_Main->currentWidget()->objectName() == QString("Tab_3")) || (cb_ShowAlways->isChecked())))
1812
                {
1899
                {
1813
                    te_RX->moveCursor(QTextCursor::End,  QTextCursor::MoveAnchor);
1900
                    te_RX->moveCursor(QTextCursor::End,  QTextCursor::MoveAnchor);
1814
                    te_RX->insertPlainText(RxData.String + '\r');
1901
//                    te_RX->insertPlainText(" > " + RxData.String + '\r');
-
 
1902
                    te_RX->insertHtml("<span style=\"color:#008b00;\">" + RxData.String + "<br /></span>");
1815
                }
1903
                }
1816
            }
1904
            }
1817
            RxData.String = QString("");
1905
            RxData.String = QString("");
1818
        }
1906
        }
1819
        else
1907
        else
1820
        {
1908
        {
1821
            {
1909
            {
1822
                RxData.String = RxData.String + QString(RXt[a]);
1910
                RxData.String = RxData.String + QString(RXt[a]);
1823
            }
1911
            }
1824
        }
1912
        }
1825
        a++;
1913
        a++;
1826
    }
1914
    }
1827
}
1915
}
1828
 
1916
 
1829
// Seriellen Port öffnen
1917
// Seriellen Port öffnen
1830
void MKTool::slot_OpenPort()
1918
void MKTool::slot_OpenPort()
1831
{
1919
{
1832
    if (serialPort->isOpen())
1920
    if (serialPort->isOpen())
1833
    {
1921
    {
1834
        TX_Data[0] = 0;
1922
        TX_Data[0] = 0;
1835
        TX_Data[1] = 0;
1923
        TX_Data[1] = 0;
1836
        TX_Data[2] = 0;
1924
        TX_Data[2] = 0;
1837
        TX_Data[3] = 0;
1925
        TX_Data[3] = 0;
1838
        send_Data('t', ADDRESS_FC, TX_Data, 4, false);
1926
        send_Data('t', ADDRESS_FC, TX_Data, 4, false);
1839
 
1927
 
1840
        serialPort->close();
1928
        serialPort->close();
1841
        pb_Open->setText("Verbinden");
1929
        pb_Open->setText("Verbinden");
1842
        ac_ConnectTTY->setText("Verbinden");
1930
        ac_ConnectTTY->setText("Verbinden");
1843
        pb_Open->setIcon(Icons[9]);
1931
        pb_Open->setIcon(Icons[9]);
1844
        ac_ConnectTTY->setIcon(Icons[9]);
1932
        ac_ConnectTTY->setIcon(Icons[9]);
1845
    }
1933
    }
1846
    else
1934
    else
1847
    {
1935
    {
1848
        serialPort->setPort(le_Port->text()); //Port
1936
        serialPort->setPort(le_Port->text()); //Port
1849
 
1937
 
1850
        serialPort->setBaudRate(BAUD57600); //BaudRate
1938
        serialPort->setBaudRate(BAUD57600); //BaudRate
1851
        serialPort->setDataBits(DATA_8); //DataBits
1939
        serialPort->setDataBits(DATA_8); //DataBits
1852
        serialPort->setParity(PAR_NONE); //Parity
1940
        serialPort->setParity(PAR_NONE); //Parity
1853
        serialPort->setStopBits(STOP_1); //StopBits
1941
        serialPort->setStopBits(STOP_1); //StopBits
1854
        serialPort->setFlowControl(FLOW_OFF); //FlowControl
1942
        serialPort->setFlowControl(FLOW_OFF); //FlowControl
1855
 
1943
 
1856
        serialPort->setTimeout(0, 10);
1944
        serialPort->setTimeout(0, 10);
1857
        serialPort->enableSending();
1945
        serialPort->enableSending();
1858
        serialPort->enableReceiving();
1946
        serialPort->enableReceiving();
1859
 
1947
 
1860
        serialPort->open();
1948
        serialPort->open();
1861
        if (serialPort->isOpen())
1949
        if (serialPort->isOpen())
1862
        {
1950
        {
1863
            serialPort->receiveData();
1951
            serialPort->receiveData();
1864
 
1952
 
1865
            send_Data('v', ADDRESS_ALL, TX_Data, 0, true);
1953
            send_Data('v', ADDRESS_ALL, TX_Data, 0, true);
1866
 
1954
 
1867
            pb_Open->setText("Trennen");
1955
            pb_Open->setText("Trennen");
1868
            ac_ConnectTTY->setText("Trennen");
1956
            ac_ConnectTTY->setText("Trennen");
1869
            pb_Open->setIcon(Icons[8]);
1957
            pb_Open->setIcon(Icons[8]);
1870
            ac_ConnectTTY->setIcon(Icons[8]);
1958
            ac_ConnectTTY->setIcon(Icons[8]);
1871
        }
1959
        }
1872
    }
1960
    }
1873
}
1961
}
1874
 
1962
 
1875
// Daten senden
1963
// Daten senden
1876
void MKTool::send_Data(char CMD, int Address, char Data[150],unsigned int Length, bool Resend) // DONE 0.71g
1964
void MKTool::send_Data(char CMD, int Address, char Data[150],unsigned int Length, bool Resend) // DONE 0.71g
1877
{
1965
{
1878
    if (serialPort->isOpen() && AllowSend)
1966
    if (serialPort->isOpen() && AllowSend)
1879
    {
1967
    {
1880
        QString TX_Data = ToolBox::Encode64(Data, Length);
1968
        QString TX_Data = ToolBox::Encode64(Data, Length);
1881
 
1969
 
1882
        TX_Data = QString("#") + (QString('a' + Address)) + QString(CMD) + TX_Data;
1970
        TX_Data = QString("#") + (QString('a' + Address)) + QString(CMD) + TX_Data;
1883
 
1971
 
1884
//    qDebug(TX_Data.toLatin1().data());
1972
//    qDebug(TX_Data.toLatin1().data());
1885
 
1973
 
1886
        TX_Data = ToolBox::add_CRC(TX_Data) + '\r';
1974
        TX_Data = ToolBox::add_CRC(TX_Data) + '\r';
1887
 
1975
 
1888
//    qDebug(TX_Data.toLatin1().data());
1976
//    qDebug(TX_Data.toLatin1().data());
1889
 
1977
 
1890
        if (Resend)
1978
        if (Resend)
1891
        {
1979
        {
1892
            LastSend = TX_Data;
1980
            LastSend = TX_Data;
1893
            TickerEvent[0] = true;
1981
            TickerEvent[0] = true;
1894
        }
1982
        }
1895
 
1983
 
1896
        QByteArray Temp(TX_Data.toUtf8());
1984
        QByteArray Temp(TX_Data.toUtf8());
1897
        serialPort->sendData(Temp);
1985
        serialPort->sendData(Temp);
-
 
1986
 
-
 
1987
        if (cb_ShowSend->isChecked())
-
 
1988
        {
-
 
1989
            te_RX->moveCursor(QTextCursor::End,  QTextCursor::MoveAnchor);
-
 
1990
            te_RX->insertHtml("<span style='color:#8b0000;'>" + TX_Data + "<br /></span>");
-
 
1991
        }
1898
    }
1992
    }
1899
}
1993
}
1900
 
1994
 
1901
 
1995
 
1902
// Programm beenden
1996
// Programm beenden
1903
///////////////////
1997
///////////////////
1904
 
1998
 
1905
MKTool::~MKTool()
1999
MKTool::~MKTool()
1906
{
2000
{
1907
    qDebug(" Programm Ende ..!! ");
2001
//    qDebug(" Programm Ende ..!! ");
1908
    if (serialPort->isOpen())
2002
    if (serialPort->isOpen())
1909
    {
2003
    {
1910
        serialPort->close();
2004
        serialPort->close();
1911
    }
2005
    }
1912
 
2006
 
1913
    write_Settings();
2007
    write_Settings();
1914
    Settings->write_Settings();
2008
    Settings->write_Settings();
1915
 
2009
 
1916
    if (CSVFile->isOpen())
2010
    if (CSVFile->isOpen())
1917
    {
2011
    {
1918
        CSVFile->close();
2012
        CSVFile->close();
1919
    }
2013
    }
1920
}
2014
}
1921
 
2015