Subversion Repositories Projects

Rev

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

Rev 358 Rev 391
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
 
20
 
21
#ifndef MKTOOL_H
21
#ifndef MKTOOL_H
22
#define MKTOOL_H
22
#define MKTOOL_H
23
 
23
 
24
#include <QMainWindow>
24
#include <QMainWindow>
25
#include <QSettings>
25
#include <QSettings>
26
#include <QString>
26
#include <QString>
27
#include <QTimer>
27
#include <QTimer>
28
#include <QComboBox>
28
#include <QComboBox>
29
#include <QIcon>
29
#include <QIcon>
30
#include <QProcess>
30
#include <QProcess>
31
 
31
 
32
#include <qwt_plot_curve.h>
32
#include <qwt_plot_curve.h>
33
#include <qwt_plot_grid.h>
33
#include <qwt_plot_grid.h>
34
#include <qwt_legend.h>
34
#include <qwt_legend.h>
35
#include <qwt_plot.h>
35
#include <qwt_plot.h>
36
#include <qwt_compass.h>
36
#include <qwt_compass.h>
37
#include <qwt_compass_rose.h>
37
#include <qwt_compass_rose.h>
38
#include <qwt_dial_needle.h>
38
#include <qwt_dial_needle.h>
39
 
39
 
40
#include "ui_mktool.h"
40
#include "ui_mktool.h"
41
#include "wdg_Settings.h"
41
#include "wdg_Settings.h"
42
#include "dlg_LCD.h"
42
#include "dlg_LCD.h"
43
#include "dlg_Map.h"
43
#include "dlg_Map.h"
44
#include "dlg_MotorMixer.h"
44
#include "dlg_MotorMixer.h"
45
 
45
 
46
#include "../Classes/cConnection.h"
46
#include "../Classes/cConnection.h"
47
#include "../Classes/cSettings.h"
47
#include "../Classes/cSettings.h"
48
#include "../Classes/cKML_Server.h"
48
#include "../Classes/cKML_Server.h"
49
#include "../Classes/cQMK_Server.h"
49
#include "../Classes/cQMK_Server.h"
50
#include "../Classes/cAttitude.h"
50
#include "../Classes/cAttitude.h"
51
#include "../Classes/cSpeedMeter.h"
51
#include "../Classes/cSpeedMeter.h"
52
#include "../Logger/Logger.h"
52
#include "../Logger/Logger.h"
53
#include "../typedefs.h"
53
#include "../typedefs.h"
-
 
54
 
-
 
55
//quadcopter lib stuff
-
 
56
#include "../com/Parser.h"
54
 
57
 
55
class QextSerialPort;
58
class QextSerialPort;
56
 
59
 
57
class MKTool : public QMainWindow, public Ui::dlg_mktool_UI
60
class MKTool : public QMainWindow, public Ui::dlg_mktool_UI
58
{
61
{
59
      Q_OBJECT
62
      Q_OBJECT
60
 
63
 
61
public:
64
public:
62
      MKTool();
65
      MKTool();
63
      ~MKTool();
66
      ~MKTool();
64
 
67
 
65
private:
68
private:
66
    // Object für Kopter-Verbindung
69
    // Object für Kopter-Verbindung
67
    cConnection *o_Connection;
70
    cConnection *o_Connection;
68
 
71
 
69
    // Settings-Object (Programmeinstellungen)
72
    // Settings-Object (Programmeinstellungen)
70
    cSettings *Settings;
73
    cSettings *Settings;
71
 
74
 
72
    // Settings-Widget (FC-Settings)
75
    // Settings-Widget (FC-Settings)
73
    wdg_Settings *f_Settings;
76
    wdg_Settings *f_Settings;
74
 
77
 
75
    // HTTP-Server-Object für KML-Files
78
    // HTTP-Server-Object für KML-Files
76
    cKML_Server *KML_Server;
79
    cKML_Server *KML_Server;
77
 
80
 
78
    // QMK-Serverobjekt
81
    // QMK-Serverobjekt
79
    cQMK_Server *QMK_Server;
82
    cQMK_Server *QMK_Server;
80
 
83
 
81
    // LCD-Dialog
84
    // LCD-Dialog
82
    dlg_LCD *f_LCD;
85
    dlg_LCD *f_LCD;
83
 
86
 
84
    // MotorMixer-Dialog
87
    // MotorMixer-Dialog
85
    dlg_MotorMixer *f_MotorMixer;
88
    dlg_MotorMixer *f_MotorMixer;
86
 
89
 
87
    // Map-Dialog
90
    // Map-Dialog
88
    dlg_Map *f_Map;
91
    dlg_Map *f_Map;
89
 
92
 
90
    //TCP-Socket
93
    //TCP-Socket
91
    QTcpSocket *TcpSocket;
94
    QTcpSocket *TcpSocket;
92
 
95
 
93
    // Default-Ticker
96
    // Default-Ticker
94
    QTimer *Ticker;
97
    QTimer *Ticker;
95
 
98
 
96
    // Kopie der Tabs des Hauptfensters
99
    // Kopie der Tabs des Hauptfensters
97
    QWidget *TabWidgets[7];
100
    QWidget *TabWidgets[7];
98
 
101
 
99
    // Analogwert-Beschreibungen
102
    // Analogwert-Beschreibungen
100
    QLabel *lb_Analog[MaxAnalog];
103
    QLabel *lb_Analog[MaxAnalog];
101
 
104
 
102
    // Analogwerte
105
    // Analogwerte
103
    int AnalogData[MaxAnalog];
106
    int AnalogData[MaxAnalog];
104
 
107
 
105
    // Plots für die Analogwerte
108
    // Plots für die Analogwerte
106
    QwtPlotCurve *Plot[MaxAnalog];    
109
    QwtPlotCurve *Plot[MaxAnalog];    
107
 
110
 
108
    // Datenspeicher für die Plots
111
    // Datenspeicher für die Plots
109
    double aData[MaxAnalog][MaxPlot];
112
    double aData[MaxAnalog][MaxPlot];
110
    double aID[MaxPlot];
113
    double aID[MaxPlot];
111
    int NextPlot;
114
    int NextPlot;
112
 
115
 
113
    AttitudeIndicator *Attitude;
116
    AttitudeIndicator *Attitude;
114
    cSpeedMeter * SpeedMeter;
117
    cSpeedMeter * SpeedMeter;
115
 
118
 
116
    // Ticker-Event-Array
119
    // Ticker-Event-Array
117
    bool TickerEvent[MaxTickerEvents];
120
    bool TickerEvent[MaxTickerEvents];
118
    bool TickerDiv;
121
    bool TickerDiv;
119
 
122
 
120
    // Aktuelle und Max-Anzahl der LCD-Seiten
123
    // Aktuelle und Max-Anzahl der LCD-Seiten
121
    int LCD_Page;
124
    int LCD_Page;
122
    int LCD_MAX_Page;
125
    int LCD_MAX_Page;
123
 
126
 
124
    //Logger für CVS und andere
127
    //Logger für CVS und andere
125
    Logger * logger;
128
    Logger * logger;
126
 
129
 
127
    sMode Mode;
130
    sMode Mode;
128
    sRxData RxData;
131
    sRxData RxData;
129
    sNaviData Navi;
132
    sNaviData Navi;
130
    sMotor Motor;
133
    sMotor Motor;
131
 
134
 
132
    QString RXS;
135
    QString RXS;
133
    QString LastSend;
136
    QString LastSend;
134
 
137
 
135
    // Softwareupdate
138
    // Softwareupdate
136
    QProcess *Update;
139
    QProcess *Update;
137
 
140
 
138
    // Sendedatenbuffer
141
    // Sendedatenbuffer
139
    char TX_Data[150];
142
    char TX_Data[150];
140
 
143
 
141
    // FC-Settings
144
    // FC-Settings
142
    int FCSettings[MaxParameter];
145
    int FCSettings[MaxParameter];
143
 
146
 
144
    // Programm Initialisieren
147
    // Programm Initialisieren
145
    void init_GUI();
148
    void init_GUI();
146
    void init_Objects();
149
    void init_Objects();
147
    void init_Connections();
150
    void init_Connections();
148
    void init_Arrays();
151
    void init_Arrays();
149
    void init_Plot();
152
    void init_Plot();
150
    void init_Cockpit();
153
    void init_Cockpit();
151
 
154
 
152
    // Daten-Plotter
155
    // Daten-Plotter
153
    void update_Plot();
156
    void update_Plot();
154
    void config_Plot();
157
    void config_Plot();
155
 
158
 
156
    void new_NaviData(sRxData RX);
159
    void new_NaviData(sRxData RX);
157
    void parse_TargetKML();
160
    void parse_TargetKML();
158
 
161
 
159
    // Debugdaten anzeigen und speichern.
162
    // Debugdaten anzeigen und speichern.
160
    void show_DebugData();
163
    void show_DebugData();
161
    void update_Log();
164
    void update_Log();
162
 
165
 
163
    // Programmeinstellungen speichern
166
    // Programmeinstellungen speichern
164
    void set_Preferences();
167
    void set_Preferences();
165
 
168
 
166
private slots:
169
private slots:
167
    void slot_QMKS_Connect();
170
    void slot_QMKS_Connect();
168
    void slot_QMKS_Connected();
171
    void slot_QMKS_Connected();
169
    void slot_QMKS_Disconnected(int Error);
172
    void slot_QMKS_Disconnected(int Error);
170
 
173
 
171
    void slot_set_Settings(cSettings *t_Settings);
174
    void slot_set_Settings(cSettings *t_Settings);
172
 
175
 
173
    void slot_MAP_SetTarget(sWayPoint Target);
176
    void slot_MAP_SetTarget(sWayPoint Target);
174
    void slot_MAP_SetWayPoints(QList<sWayPoint> l_WayPoints);
177
    void slot_MAP_SetWayPoints(QList<sWayPoint> l_WayPoints);
175
 
178
 
176
 
179
 
177
    void slot_showTerminal(int Typ, QString Text);
180
    void slot_showTerminal(int Typ, QString Text);
178
 
181
 
179
    void slot_ac_Hardware();
182
    void slot_ac_Hardware();
180
    void slot_rb_Hardware();
183
    void slot_rb_Hardware();
181
 
184
 
182
    void slot_ac_StartServer();
185
    void slot_ac_StartServer();
183
 
186
 
184
    void slot_Test();
187
    void slot_Test();
185
 
188
 
186
    void slot_ac_Config();
189
    void slot_ac_Config();
187
    void slot_ac_Preferences();
190
    void slot_ac_Preferences();
188
    void slot_ac_StartPlotter();
191
    void slot_ac_StartPlotter();
189
    void slot_ac_View();
192
    void slot_ac_View();
190
    void slot_ac_FastDebug();
193
    void slot_ac_FastDebug();
191
    void slot_ac_NoDebug();
194
    void slot_ac_NoDebug();
192
    void slot_ac_FastNavi();
195
    void slot_ac_FastNavi();
193
    void slot_ac_NoNavi();
196
    void slot_ac_NoNavi();
194
    void slot_ac_About();
197
    void slot_ac_About();
195
    void slot_ac_GetLabels();
198
    void slot_ac_GetLabels();
196
    void slot_ac_Motortest();
199
    void slot_ac_Motortest();
197
    void slot_ac_LCD();
200
    void slot_ac_LCD();
198
    void slot_ac_Map();
201
    void slot_ac_Map();
199
    void slot_ac_MotorMixer();
202
    void slot_ac_MotorMixer();
200
 
203
 
201
    void slot_pb_HexFile();
204
    void slot_pb_HexFile();
202
    void slot_pb_SendTarget();
205
    void slot_pb_SendTarget();
203
 
206
 
204
    // Default-Ticker
207
    // Default-Ticker
205
    void slot_Ticker();
208
    void slot_Ticker();
206
 
209
 
207
    // LCD-Seite vor / zurück
210
    // LCD-Seite vor / zurück
208
    void slot_LCD_UP();
211
    void slot_LCD_UP();
209
    void slot_LCD_DOWN();
212
    void slot_LCD_DOWN();
210
 
213
 
211
    void slot_Motortest(sMotor p_Motor);
214
    void slot_Motortest(sMotor p_Motor);
212
 
215
 
213
    // Firmeware-Update
216
    // Firmeware-Update
214
    void slot_pb_Update();
217
    void slot_pb_Update();
215
    void slot_UpdateShell();
218
    void slot_UpdateShell();
216
 
219
 
217
    // Seriell-Port Slots
220
    // Seriell-Port Slots
218
    void slot_newData(sRxData RX);
221
    void slot_newData(sRxData RX);
219
    void slot_OpenPort();
222
    void slot_OpenPort();
220
 
223
 
221
    void slot_TabChanged(int Tab);
224
    void slot_TabChanged(int Tab);
222
 
225
 
223
    void slot_RecordLog();
226
    void slot_RecordLog();
224
 
227
 
225
    void slot_ScrollPlot(int Pos);
228
    void slot_ScrollPlot(int Pos);
226
 
229
 
227
    // FC-Settings lesen / Schreiben
230
    // FC-Settings lesen / Schreiben
228
    void slot_GetFCSettings();
231
    void slot_GetFCSettings();
229
    void slot_SetFCSettings();
232
    void slot_SetFCSettings();
230
};
233
};
231
 
234
 
232
#endif
235
#endif
233
 
236