26,6 → 26,7 |
#include <QToolButton> |
#include <QSpinBox> |
#include <QAction> |
#include <QPalette> |
|
#include "mktool.h" |
#include "dlg_Config.h" |
32,7 → 33,7 |
#include "dlg_Motortest.h" |
#include "dlg_Preferences.h" |
#include "../global.h" |
#include "../ToolBox.h" |
#include "../Classes/ToolBox.h" |
|
#include <stdlib.h> |
|
56,34 → 57,82 |
setWindowTitle(QA_NAME + " v" + QA_VERSION); |
|
// Tab mit Debug-Elementen verbergen |
tab_Main->removeTab(5); |
tab_Main->removeTab(6); |
|
// Tab mit Wegpunkte-Elementen verbergen |
tab_Main->removeTab(5); |
|
// Settings-Tab hinzufügen. |
f_Settings = new wdg_Settings( this ); |
tab_Main->insertTab ( 2, f_Settings, "FC-Settings"); |
f_Settings->set_Config(Settings); |
tab_Main->insertTab ( 2, f_Settings, ac_View2->icon(), "FC-Settings"); |
tab_Main->widget(2)->setObjectName("Tab_2"); |
|
// Develop - Nicht gebrauchte sachen abschalten. |
box_Flugdaten->hide(); |
box_System->hide(); |
pb_SettingsReset->hide(); |
pb_Flash->hide(); |
rb_NC->hide(); |
|
// Zusätzliche Widgets in die Toolbar. |
toolBar->addWidget(lb_Port); |
toolBar->addWidget(le_Port); |
toolBar->addSeparator(); |
tb_TTY->addWidget(lb_Port); |
tb_TTY->addWidget(le_Port); |
|
toolBar->addWidget(rb_SelFC); |
toolBar->addWidget(rb_SelNC); |
toolBar->addWidget(rb_SelMag); |
tb_Hardware->addWidget(rb_SelFC); |
tb_Hardware->addWidget(rb_SelNC); |
tb_Hardware->addWidget(rb_SelMag); |
|
tb_Allgemein->setVisible(Settings->GUI.ToolViews[0]); |
tb_Werkzeuge->setVisible(Settings->GUI.ToolViews[1]); |
tb_Debug->setVisible(Settings->GUI.ToolViews[2]); |
tb_TTY->setVisible(Settings->GUI.ToolViews[3]); |
tb_Hardware->setVisible(Settings->GUI.ToolViews[4]); |
|
lb_Status->setText(tr("Hallo bei QMK-Groundstation...!!!")); |
|
QPalette newPalette; |
|
newPalette.setColor(QPalette::Base, Qt::darkBlue); |
newPalette.setColor(QPalette::Foreground, QColor(Qt::darkBlue).dark(120)); |
newPalette.setColor(QPalette::Text, Qt::white); |
|
Compass->setScaleOptions(QwtDial::ScaleTicks | QwtDial::ScaleLabel); |
Compass->setScaleTicks(0, 0, 3); |
Compass->setScale(36, 5, 0); |
|
// Compass->setNeedle(new QwtCompassMagnetNeedle(QwtCompassMagnetNeedle::ThinStyle)); |
Compass->setNeedle(new QwtDialSimpleNeedle(QwtDialSimpleNeedle::Arrow, true, Qt::red, QColor(Qt::gray).light(130))); |
Compass->setPalette(newPalette); |
Compass->setMaximumSize(QSize(MeterSize, MeterSize)); |
Compass->setMinimumSize(QSize(MeterSize, MeterSize)); |
|
QPalette newPalette1; |
|
newPalette1.setColor(QPalette::Base, Qt::darkBlue); |
newPalette1.setColor(QPalette::Foreground, QColor(255,128,0).dark(120)); |
newPalette1.setColor(QPalette::Text, Qt::white); |
|
Attitude = new AttitudeIndicator(this); |
Attitude->setMaximumSize(QSize(MeterSize, MeterSize)); |
Attitude->setMinimumSize(QSize(MeterSize, MeterSize)); |
Attitude->setPalette(newPalette1); |
|
verticalLayout->addWidget(Attitude); |
|
qwt_Rate->setRange(-10.0, 10.0, 0.1, 0); |
|
newPalette1.setColor(QPalette::Foreground, QColor(Qt::darkBlue).dark(120)); |
|
SpeedMeter = new cSpeedMeter(this); |
SpeedMeter->setMaximumSize(QSize(MeterSize, MeterSize)); |
SpeedMeter->setMinimumSize(QSize(MeterSize, MeterSize)); |
SpeedMeter->setPalette(newPalette1); |
SpeedMeter->setRange(0.0, 5.0); |
SpeedMeter->setScale(1, 2, 0.5); |
SpeedMeter->setProperty("END", 5); |
|
LayOut_Speed->addWidget(SpeedMeter); |
|
#ifdef _EEEPC_ |
toolBar->hide(); |
lb_Status->hide(); |
#endif |
|
102,6 → 151,7 |
} |
|
// Kopie der Tabs anlegen |
// for (int b = 0; b < 7; b++) |
for (int b = 0; b < 6; b++) |
{ |
TabWidgets[b] = tab_Main->widget(b); |
108,6 → 158,7 |
} |
|
// Ausgeblendete Tabs ausblenden |
// for (int c = 0; c < 7; c++) |
for (int c = 0; c < 6; c++) |
{ |
if (Settings->GUI.TabViews[c] == false) |
130,6 → 181,7 |
ac_View3->setChecked(Settings->GUI.TabViews[3]); |
ac_View4->setChecked(Settings->GUI.TabViews[4]); |
ac_View5->setChecked(Settings->GUI.TabViews[5]); |
// ac_View6->setChecked(Settings->GUI.TabViews[6]); |
|
le_Port->setText(Settings->TTY.Port); |
|
149,11 → 201,18 |
// QFile-Instanz (Log-Datei) |
CSVFile = new QFile(""); |
|
// LCD-Dialog |
f_LCD = new dlg_LCD(this); |
|
// Senden erlauben (Warum auch immer) |
AllowSend = true; |
|
Server = new cServer(); |
|
MyServer = new cQMK_Server(); |
MyServer->setProperty("Connect", false); |
|
|
if (Settings->Server.StartServer) |
{ |
ac_StartServer->setChecked(true); |
171,18 → 230,18 |
// Serielle Verbundung öffnen / schließen |
connect(ac_ConnectTTY, SIGNAL(triggered()), this, SLOT(slot_OpenPort())); |
|
// TCP-Connection verbinden / trennen |
connect(ac_QMKServer, SIGNAL(triggered()), this, SLOT(slot_QMKS_Connect())); |
|
// Buttons Settings lesen / schreiben |
connect(f_Settings->pb_Read, SIGNAL(clicked()), this, SLOT(slot_GetFCSettings())); |
connect(f_Settings->pb_Write, SIGNAL(clicked()), this, SLOT(slot_SetFCSettings())); |
|
// LCD auf / ab |
connect(pb_LCDup, SIGNAL(clicked()), this, SLOT(slot_LCD_UP())); |
connect(pb_LCDdown, SIGNAL(clicked()), this, SLOT(slot_LCD_DOWN())); |
|
// Actions |
connect(ac_Config, SIGNAL(triggered()), this, SLOT(slot_ac_Config())); |
connect(ac_Preferences, SIGNAL(triggered()), this, SLOT(slot_ac_Preferences())); |
connect(ac_Motortest, SIGNAL(triggered()), this, SLOT(slot_ac_Motortest())); |
connect(ac_LCD, SIGNAL(triggered()), this, SLOT(slot_ac_LCD())); |
connect(ac_FastDebug, SIGNAL(triggered()), this, SLOT(slot_ac_FastDebug())); |
connect(ac_NoDebug, SIGNAL(triggered()), this, SLOT(slot_ac_NoDebug())); |
connect(ac_FastNavi, SIGNAL(triggered()), this, SLOT(slot_ac_FastNavi())); |
201,6 → 260,7 |
connect(ac_View3, SIGNAL(triggered()), this, SLOT(slot_ac_View())); |
connect(ac_View4, SIGNAL(triggered()), this, SLOT(slot_ac_View())); |
connect(ac_View5, SIGNAL(triggered()), this, SLOT(slot_ac_View())); |
connect(ac_View6, SIGNAL(triggered()), this, SLOT(slot_ac_View())); |
|
connect(ac_SelNC, SIGNAL(triggered()), this, SLOT(slot_ac_Hardware())); |
connect(ac_SelFC, SIGNAL(triggered()), this, SLOT(slot_ac_Hardware())); |
295,6 → 355,7 |
|
void MKTool::slot_Test() |
{ |
/* |
sRxData RX; |
|
RX.String = IN->text(); |
301,6 → 362,7 |
RX.Input = IN->text().toLatin1().data(); |
|
new_RXData(RX); |
*/ |
} |
|
void MKTool::slot_ac_Hardware() |
313,7 → 375,6 |
} |
|
slot_rb_Hardware(); |
// qDebug("Select AC Hardware"); |
} |
|
void MKTool::slot_rb_Hardware() |
328,7 → 389,7 |
TX_Data[4] = 0x00; |
TX_Data[5] = '\r'; |
send_Data('#', ADDRESS_NC, TX_Data, 6, false); |
usleep(Sleep); |
ToolBox::Wait(SLEEP); |
} |
|
if (rb_SelFC->isChecked()) |
356,7 → 417,7 |
TX_Data[5] = '\r'; |
send_Data('#', ADDRESS_NC, TX_Data, 6, false); |
} |
usleep(Sleep); |
ToolBox::Wait(SLEEP); |
|
// qDebug("Select RB Hardware"); |
send_Data('v', ADDRESS_ALL, TX_Data, 0, true); |
389,8 → 450,13 |
send_Data('p', ADDRESS_FC, TX_Data, 0, false); |
break; |
case 2 : |
if (cb_LCD->isChecked()) |
if (f_LCD->cb_LCD->isChecked()) |
{ |
if (!f_LCD->isVisible()) |
{ |
Ticker->setInterval(2000); |
TickerEvent[2] = false; |
} |
TX_Data[0] = LCD_Page; |
TX_Data[1] = 0; |
send_Data('l', ADDRESS_ALL, TX_Data, 1, true); |
413,7 → 479,74 |
} |
} |
|
void MKTool::slot_QMKS_Connect() |
{ |
if (ac_QMKServer->isChecked()) |
{ |
lb_Status->setText(tr("Verbinde zum QMK-Datenserver.")); |
|
MyServer->Connect("nimari.de", 16441, Settings->Server.QMKS_Login, Settings->Server.QMKS_Password); |
connect(MyServer, SIGNAL(sig_Connected()), this, SLOT(slot_QMKS_Connected())); |
connect(MyServer, SIGNAL(sig_Disconnected(int)), this, SLOT(slot_QMKS_Disconnected(int))); |
|
} |
else |
{ |
if ((MyServer->property("Connect")) == true) |
{ |
disconnect(MyServer, SIGNAL(sig_Disconnected(int)), 0, 0); |
lb_Status->setText(tr("Trenne vom QMK-Datenserver.")); |
|
MyServer->Disconnect(); |
MyServer->setProperty("Connect", false); |
ac_QMKServer->setText("QMK-Server Verbinden"); |
} |
} |
} |
|
void MKTool::slot_QMKS_Connected() |
{ |
MyServer->setProperty("Connect", true); |
ac_QMKServer->setText("QMK-Server Trennnen"); |
lb_Status->setText(tr("Verbunden mit QMK-Datenserver.")); |
} |
|
void MKTool::slot_QMKS_Disconnected(int Error) |
{ |
MyServer->setProperty("Connect", false); |
ac_QMKServer->setText("QMK-Server Verbinden"); |
ac_QMKServer->setChecked(false); |
|
disconnect(MyServer, SIGNAL(sig_Disconnected(int)), 0, 0); |
|
switch (Error) |
{ |
case 1 : |
{ |
lb_Status->setText(tr("Verbindung vom Server beendet.")); |
QMessageBox::warning(this, QA_NAME,"QMK-Datenserver: Verbindung wurde vom Server beendet.", QMessageBox::Ok); |
} |
break; |
case 2 : |
{ |
lb_Status->setText(tr("Server nicht gefunden.")); |
QMessageBox::warning(this, QA_NAME,"QMK-Datenserver: Kann nicht zum Server verbinden.", QMessageBox::Ok); |
} |
break; |
case 3 : |
{ |
lb_Status->setText(tr("Serververbindung getrennt. Logindaten falsch.")); |
QMessageBox::warning(this, QA_NAME,"QMK-Datenserver: Loginname oder Password falsch.", QMessageBox::Ok); |
} |
break; |
default : |
{ |
lb_Status->setText(tr("Getrennt vom QMK-Datenserver.")); |
} |
break; |
} |
} |
|
// Slots der Actions (Menüpunkte, Buttons) |
////////////////////////////////////////// |
void MKTool::slot_ac_Motortest() |
430,6 → 563,26 |
slot_Motortest(0,0,0,0); |
} |
|
void MKTool::slot_ac_LCD() |
{ |
if (!f_LCD->isVisible()) |
{ |
f_LCD = new dlg_LCD(this); |
|
// LCD auf / ab |
connect(f_LCD->pb_LCDup, SIGNAL(clicked()), this, SLOT(slot_LCD_UP())); |
connect(f_LCD->pb_LCDdown, SIGNAL(clicked()), this, SLOT(slot_LCD_DOWN())); |
|
f_LCD->show(); |
TX_Data[0] = 0; |
TX_Data[1] = 0; |
send_Data('l', ADDRESS_ALL, TX_Data, 1, true); |
|
Ticker->setInterval(500); |
TickerEvent[2] = true; |
} |
} |
|
void MKTool::slot_Motortest(int Motor1, int Motor2, int Motor3, int Motor4) |
{ |
TX_Data[0] = Motor1; |
503,7 → 656,7 |
|
void MKTool::slot_ac_View() |
{ |
int Aktive; |
int Aktive = -1; |
|
QAction *Action = (QAction*)sender(); |
|
519,6 → 672,8 |
Aktive = 4; |
if (Action->objectName() == QString("ac_View5")) |
Aktive = 5; |
// if (Action->objectName() == QString("ac_View6")) |
// Aktive = 6; |
|
QString TabName = QString("Tab_%1").arg(Aktive); |
|
531,13 → 686,10 |
tab_Main->removeTab(a); |
} |
} |
|
// Action->setChecked(false); |
} |
else |
{ |
// Action->setChecked(true); |
tab_Main->insertTab(Aktive, TabWidgets[Aktive], Action->text()); |
tab_Main->insertTab(Aktive, TabWidgets[Aktive], Action->icon(), Action->text()); |
} |
} |
|
654,6 → 806,7 |
} |
} |
|
|
// Daten-Plotter |
///////////////// |
void MKTool::update_Plot() |
812,7 → 965,7 |
Ticker->setInterval(2000); |
TickerEvent[1] = false; |
} |
|
/* |
if ((tab_Main->currentWidget()->objectName() == QString("Tab_4"))) |
{ |
TX_Data[0] = 0; |
827,6 → 980,7 |
Ticker->setInterval(2000); |
TickerEvent[2] = false; |
} |
*/ |
} |
} |
|
840,6 → 994,7 |
|
TX_Data[1] = 0; |
send_Data('l', ADDRESS_ALL, TX_Data, 1, true); |
|
} |
|
void MKTool::slot_LCD_DOWN() // DONE 0.71g |
851,6 → 1006,9 |
|
TX_Data[1] = 0; |
send_Data('l', ADDRESS_ALL, TX_Data, 1, true); |
|
aa--; |
|
} |
|
// Settings aus MK lesen / in MK schreiben |
882,7 → 1040,14 |
Settings->GUI.TabViews.setBit(3, ac_View3->isChecked()); |
Settings->GUI.TabViews.setBit(4, ac_View4->isChecked()); |
Settings->GUI.TabViews.setBit(5, ac_View5->isChecked()); |
Settings->GUI.TabViews.setBit(6, ac_View6->isChecked()); |
|
Settings->GUI.ToolViews.setBit(0, tb_Allgemein->isVisibleTo(this)); |
Settings->GUI.ToolViews.setBit(1, tb_Werkzeuge->isVisibleTo(this)); |
Settings->GUI.ToolViews.setBit(2, tb_Debug->isVisibleTo(this)); |
Settings->GUI.ToolViews.setBit(3, tb_TTY->isVisibleTo(this)); |
Settings->GUI.ToolViews.setBit(4, tb_Hardware->isVisibleTo(this)); |
|
Settings->GUI.Term_Info = cb_ShowMSG->isChecked(); |
Settings->GUI.Term_Data = cb_ShowData->isChecked(); |
Settings->GUI.Term_Always = cb_ShowAlways->isChecked(); |
942,9 → 1107,9 |
CSVFile->open(QIODevice::Append | QIODevice::Text); |
} |
|
pb_Record->setIcon(ToolBox::Icon(6)); |
pb_Record->setText("CSV Stop"); |
ac_RecordCSV->setIcon(ToolBox::Icon(6)); |
// pb_Record->setIcon(ToolBox::Icon(6)); |
// pb_Record->setText("CSV Stop"); |
// ac_RecordCSV->setIcon(ToolBox::Icon(6)); |
ac_RecordCSV->setText("CSV Stop"); |
lb_Status->setText(tr("CVS-Record gestartet.")); |
} |
951,9 → 1116,9 |
else |
{ |
CSVFile->close(); |
pb_Record->setIcon(ToolBox::Icon(7)); |
pb_Record->setText("CSV Aufzeichnen"); |
ac_RecordCSV->setIcon(ToolBox::Icon(7)); |
// pb_Record->setIcon(ToolBox::Icon(7)); |
// pb_Record->setText("CSV Aufzeichnen"); |
// ac_RecordCSV->setIcon(ToolBox::Icon(7)); |
ac_RecordCSV->setText("CSV Aufzeichnen"); |
lb_Status->setText(tr("CVS-Record gestopt.")); |
} |
1012,6 → 1177,26 |
le_A_29->setText(QString("%1").arg(AnalogData[29])); |
le_A_30->setText(QString("%1").arg(AnalogData[30])); |
le_A_31->setText(QString("%1").arg(AnalogData[31])); |
|
if ((Mode.ID == ADDRESS_FC) && (FCSettings[P_GYRO_ACC_FAKTOR] > 0)) |
{ |
bar_UBAT->setValue(AnalogData[9]); |
bar_RX->setValue(AnalogData[10]); |
|
Compass->setValue(AnalogData[8]); |
|
int Roll = (AnalogData[1] * FCSettings[P_GYRO_ACC_FAKTOR]) / 1024; |
int Nick = (AnalogData[0] * FCSettings[P_GYRO_ACC_FAKTOR]) / 1024; |
|
if (Roll > 128) |
Roll = Roll - 255; |
|
if (Nick > 128) |
Nick = Nick - 255; |
|
Attitude->setAngle(Roll); |
Attitude->setGradient(double(double(Nick) / 100.0)); |
} |
} |
|
|
1020,10 → 1205,55 |
Navi.Current.Longitude = ToolBox::Data2Long(RX.Decode, 0, true); |
Navi.Current.Latitude = ToolBox::Data2Long(RX.Decode, 4, true); |
Navi.Current.Altitude = ToolBox::Data2Long(RX.Decode, 8, true); |
Navi.Target.Longitude = ToolBox::Data2Long(RX.Decode, 10, true); |
Navi.Target.Latitude = ToolBox::Data2Long(RX.Decode, 14, true); |
Navi.Target.Altitude = ToolBox::Data2Long(RX.Decode, 18, true); |
Navi.Target.Longitude = ToolBox::Data2Long(RX.Decode, 16, true); |
Navi.Target.Latitude = ToolBox::Data2Long(RX.Decode, 20, true); |
Navi.Target.Altitude = ToolBox::Data2Long(RX.Decode, 24, true); |
|
le_CDistance->setText(QString("%1 cm").arg(ToolBox::Data2Int(RX.Decode, 52))); |
le_CWPA->setText(QString("%1").arg(RX.Decode[56])); |
le_CWPT->setText(QString("%1").arg(RX.Decode[57])); |
le_CSats->setText(QString("%1").arg(RX.Decode[58])); |
|
qwt_Rate->setValue(double(ToolBox::Data2Int(RX.Decode, 61, true))); |
|
le_CTime->setText(QString("%1 sec.").arg(ToolBox::Data2Int(RX.Decode, 63))); |
|
bar_UBAT->setValue(RX.Decode[65]); |
|
double Speed = double((ToolBox::Data2Int(RX.Decode, 66)) / 10.0); |
|
if ((Speed > 4.5) && SpeedMeter->property("END") == 5) |
{ |
SpeedMeter->setRange(0.0, 10.0); |
SpeedMeter->setScale(1, 2, 1); |
SpeedMeter->setProperty("END", 10); |
} |
|
if ((Speed > 9) && SpeedMeter->property("END") == 10) |
{ |
SpeedMeter->setRange(0.0, 20.0); |
SpeedMeter->setScale(1, 2, 2); |
SpeedMeter->setProperty("END", 20); |
} |
|
SpeedMeter->setValue(Speed); |
|
Compass->setValue(ToolBox::Data2Int(RX.Decode, 70)); //(68) |
|
bar_RX->setValue(RX.Decode[74]); |
|
int Nick = RX.Decode[72]; |
int Roll = RX.Decode[73]; |
|
if (Roll > 128) |
Roll = Roll - 255; |
|
if (Nick > 128) |
Nick = Nick - 255; |
|
Attitude->setAngle(Roll); |
Attitude->setGradient(double(double(Nick) / 100.0)); |
|
sNaviString NaviString; |
|
NaviString.Longitude = ToolBox::get_Float(Navi.Current.Longitude,10000000); |
1032,6 → 1262,11 |
|
Server->store_NaviString(NaviString); |
|
if ((MyServer->property("Connect")) == true) |
{ |
MyServer->NewPosition(NaviString); |
} |
|
/* |
qDebug(NaviString.Longitude.toLatin1().data()); |
qDebug(NaviString.Latitude.toLatin1().data()); |
1128,14 → 1363,11 |
int LCD[150]; |
memcpy(LCD,RX.Decode, sizeof(RX.Decode)); |
|
f_LCD->show_Data(LCD); |
|
LCD_Page = RX.Decode[0]; |
LCD_MAX_Page = RX.Decode[1]; |
|
le_LCD0->setText(ToolBox::Data2QString(LCD,2,22)); |
le_LCD1->setText(ToolBox::Data2QString(LCD,22,42)); |
le_LCD2->setText(ToolBox::Data2QString(LCD,42,62)); |
le_LCD3->setText(ToolBox::Data2QString(LCD,62,82)); |
|
TickerEvent[0] = false; |
} |
break; |
1339,16 → 1571,16 |
void MKTool::slot_OpenPort() |
{ |
if (serialPort->isOpen()) |
{ |
{ |
TX_Data[0] = Settings->Data.Debug_Off / 10; |
send_Data('d', ADDRESS_ALL, TX_Data, 1, false); |
usleep(Sleep); |
ToolBox::Wait(SLEEP); |
|
if (Mode.ID == ADDRESS_NC) |
{ |
TX_Data[0] = Settings->Data.Navi_Off / 10; |
send_Data('o', ADDRESS_NC, TX_Data, 1, false); |
usleep(Sleep); |
ToolBox::Wait(SLEEP); |
} |
|
if (Mode.ID == ADDRESS_NC) |
1358,13 → 1590,13 |
TX_Data[2] = 0; |
TX_Data[3] = 0; |
send_Data('t', ADDRESS_FC, TX_Data, 4, false); |
usleep(Sleep); |
ToolBox::Wait(SLEEP); |
} |
serialPort->close(); |
pb_Open->setText("Verbinden"); |
ac_ConnectTTY->setText("Verbinden"); |
pb_Open->setIcon(ToolBox::Icon(9)); |
ac_ConnectTTY->setIcon(ToolBox::Icon(9)); |
// pb_Open->setText("Seriell Verbinden"); |
ac_ConnectTTY->setText("Seriell Verbinden"); |
// pb_Open->setIcon(ToolBox::Icon(9)); |
// ac_ConnectTTY->setIcon(ToolBox::Icon(9)); |
|
le_Port->setEnabled(true); |
|
1392,10 → 1624,10 |
|
send_Data('v', ADDRESS_ALL, TX_Data, 0, true); |
|
pb_Open->setText("Trennen"); |
ac_ConnectTTY->setText("Trennen"); |
pb_Open->setIcon(ToolBox::Icon(8)); |
ac_ConnectTTY->setIcon(ToolBox::Icon(8)); |
// pb_Open->setText("Seriell Trennen"); |
ac_ConnectTTY->setText("Seriell Trennen"); |
// pb_Open->setIcon(ToolBox::Icon(8)); |
// ac_ConnectTTY->setIcon(ToolBox::Icon(8)); |
|
Ticker->start(2000); |
} |