Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 165 → Rev 166

/QMK-Groundstation/trunk/ChangeLog.txt
63,3 → 63,15
unterschiedlich sind, werden Labels automatisch neu abgefragt.
* Einstellung der Verzeichnisse jetzt über den Einstellungs-Dialog.
 
#######################################
# 11.12.2008 * Version 0.5.6m -> 0.5.7w
 
Änderungen:
===========
* Anpassung der Settings (GPS-Winkelbegrenzung -> FC 0.71h)
* Umbau der GUI.
* Einstellungs-Dialog erweitert (Serieller Port ect.)
* Einstellbarkeit der Debug-Daten Intervalle und Plotteranzeige (Anzahl der Datensätze)
* Farbige Darstellung im Terminal, Anzeiger gesendeter Packete.
* Debug-Daten können abgeschalten werden.
* Firmeware-Update der FC mit hilfe von AVRDUDE. (AVRDUDE in der MK-Version muss vorhanden und ausfürbar sein.)
/QMK-Groundstation/trunk/Forms/dlg_Preferences.cpp
31,10 → 31,19
 
le_DIR_CVS->setText(Settings->DIR.Logging);
le_DIR_SET->setText(Settings->DIR.Parameter);
le_TTY->setText(Settings->TTY.Port);
sp_Plotter_Count->setValue(Settings->Data.Plotter_Count);
sp_Debug_Fast->setValue(Settings->Data.Debug_Fast);
sp_Debug_Slow->setValue(Settings->Data.Debug_Slow);
}
 
cSettings *dlg_Preferences::get_Settings()
{
Settings->TTY.Port = le_TTY->text();
Settings->Data.Plotter_Count = sp_Plotter_Count->value();
Settings->Data.Debug_Fast = sp_Debug_Fast->value();
Settings->Data.Debug_Slow = sp_Debug_Slow->value();
 
return Settings;
}
 
42,7 → 51,7
/////////////////////////////////
void dlg_Preferences::slot_DIR_CVS()
{
QString directory = QFileDialog::getExistingDirectory(this, "Verzeichniss fuer CSV-Logdateien", Settings->DIR.Logging, QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly);
QString directory = QFileDialog::getExistingDirectory(this, trUtf8("Verzeichniss für CSV-Logdateien"), Settings->DIR.Logging, QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly);
 
if ((!directory.isEmpty()) && (Settings->DIR.Logging != directory))
{
54,7 → 63,7
 
void dlg_Preferences::slot_DIR_SET()
{
QString directory = QFileDialog::getExistingDirectory(this, "Verzeichniss fuer Settings-Dateien", Settings->DIR.Parameter, QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly);
QString directory = QFileDialog::getExistingDirectory(this, trUtf8("Verzeichniss für Settings-Dateien"), Settings->DIR.Parameter, QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly);
 
if ((!directory.isEmpty()) && (Settings->DIR.Parameter != directory))
{
64,6 → 73,7
}
 
}
 
dlg_Preferences::~dlg_Preferences()
{
}
/QMK-Groundstation/trunk/Forms/dlg_Preferences.ui
6,7 → 6,7
<x>0</x>
<y>0</y>
<width>388</width>
<height>317</height>
<height>296</height>
</rect>
</property>
<property name="windowTitle" >
49,6 → 49,119
<property name="currentIndex" >
<number>0</number>
</property>
<widget class="QWidget" name="Seite" >
<attribute name="title" >
<string>Verbindung </string>
</attribute>
<layout class="QGridLayout" name="gridLayout_7" >
<item row="0" column="0" >
<widget class="QGroupBox" name="groupBox_5" >
<property name="title" >
<string>Serieller Port für Verbindung zum MK.</string>
</property>
<layout class="QGridLayout" name="gridLayout_6" >
<item row="0" column="0" >
<widget class="QLabel" name="label_6" >
<property name="text" >
<string>Device: </string>
</property>
</widget>
</item>
<item row="0" column="1" >
<widget class="QLineEdit" name="le_TTY" >
<property name="text" >
<string>/dev/ttyS0</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0" >
<widget class="QGroupBox" name="groupBox_6" >
<property name="enabled" >
<bool>false</bool>
</property>
<property name="title" >
<string>ISP-Adapter (Flash AVR)</string>
</property>
<layout class="QGridLayout" name="gridLayout_5" >
<item row="0" column="0" >
<widget class="QLabel" name="label_4" >
<property name="text" >
<string>ISP-Adapter: </string>
</property>
</widget>
</item>
<item row="0" column="1" >
<widget class="QComboBox" name="comboBox" >
<item>
<property name="text" >
<string>Sercon</string>
</property>
</item>
<item>
<property name="text" >
<string>STK200</string>
</property>
</item>
<item>
<property name="text" >
<string>USBProg</string>
</property>
</item>
<item>
<property name="text" >
<string>Atmel AVR ISP (STK500)</string>
</property>
</item>
<item>
<property name="text" >
<string>Atmel AVR ISP mkII (STK500v1)</string>
</property>
</item>
<item>
<property name="text" >
<string>Atmel AVR ISP mkII (STK500v2)</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0" >
<widget class="QLabel" name="label_5" >
<property name="text" >
<string>Device: </string>
</property>
</widget>
</item>
<item row="1" column="1" >
<widget class="QLineEdit" name="lineEdit_2" />
</item>
<item row="2" column="0" colspan="2" >
<widget class="QCheckBox" name="checkBox_2" >
<property name="text" >
<string>Serielle Firmeware-Updates mit AVRDUDE</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0" >
<spacer name="verticalSpacer_2" >
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0" >
<size>
<width>20</width>
<height>50</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab" >
<attribute name="title" >
<string>Analog-Daten</string>
117,18 → 230,14
</item>
<item row="2" column="0" colspan="2" >
<widget class="QCheckBox" name="checkBox" >
<property name="enabled" >
<bool>false</bool>
</property>
<property name="text" >
<string>Beim Beenden abschalten</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2" >
<widget class="QCheckBox" name="checkBox_2" >
<property name="text" >
<string>Debug-Texte immer neueinlesen</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
/QMK-Groundstation/trunk/Forms/mktool.cpp
59,8 → 59,18
{
setWindowTitle(QA_NAME + " v" + QA_VERSION);
 
toolBar->addWidget(lb_Port);
toolBar->addWidget(le_Port);
toolBar->addSeparator();
toolBar->addWidget(cb_Hardware);
 
lb_Status->setText("Hallo bei QMK-Groundstation...!!!");
 
tab_Main->removeTab(6);
 
#ifdef _EEEPC_
toolBar->hide();
lb_Status->hide();
#endif
 
resize(Settings->GUI.Size);
147,6 → 157,7
connect(ac_StartPlotter, SIGNAL(triggered()), this, SLOT(slot_ac_StartPlotter()));
connect(ac_MehrDaten, SIGNAL(triggered()), this, SLOT(slot_ac_MehrDaten()));
connect(ac_About, SIGNAL(triggered()), this, SLOT(slot_ac_About()));
connect(ac_KeineDaten, SIGNAL(triggered()), this, SLOT(slot_ac_KeineDaten()));
connect(ac_GetLabels, SIGNAL(triggered()), this, SLOT(slot_ac_GetLabels()));
 
// Tabs ein & ausblenden
157,7 → 168,8
connect(ac_View4, SIGNAL(triggered()), this, SLOT(slot_ac_View()));
connect(ac_View5, SIGNAL(triggered()), this, SLOT(slot_ac_View()));
 
// connect(pb_Update, SIGNAL(clicked()), this, SLOT(slot_pb_Update()));
connect(pb_Update, SIGNAL(clicked()), this, SLOT(slot_pb_Update()));
connect(pb_HexFile, SIGNAL(clicked()), this, SLOT(slot_pb_HexFile()));
 
connect(ac_ConnectTTY, SIGNAL(triggered()), this, SLOT(slot_OpenPort()));
connect(ac_RecordCSV, SIGNAL(triggered()), this, SLOT(slot_RecordCSV()));
253,7 → 265,7
 
Grid->attach(qwtPlot);
 
qwtPlot->setAxisScale(QwtPlot::xBottom,0,PlotWide,0);
qwtPlot->setAxisScale(QwtPlot::xBottom,0,Settings->Data.Plotter_Count,0);
 
for (int a = 0; a < MaxAnalog; a++)
{
388,6 → 400,7
{
dlg_Preferences *f_Preferences = new dlg_Preferences(this);
 
Settings->TTY.Port = le_Port->text();
f_Preferences->set_Settings(Settings);
 
if (f_Preferences->exec()==QDialog::Accepted)
394,6 → 407,8
{
Settings = f_Preferences->get_Settings();
Settings->write_Settings();
le_Port->setText(Settings->TTY.Port);
config_Plot();
}
}
 
453,14 → 468,41
 
void MKTool::slot_ac_MehrDaten() // DONE 0.71g
{
if (ac_MehrDaten->isChecked())
if (!ac_KeineDaten->isChecked())
{
TX_Data[0] = 10;
send_Data('d', ADDRESS_ALL, TX_Data, 1, false); }
if (ac_MehrDaten->isChecked())
{
TX_Data[0] = Settings->Data.Debug_Fast / 10;
send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
}
else
{
TX_Data[0] = Settings->Data.Debug_Slow / 10;
send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
}
}
}
 
void MKTool::slot_ac_KeineDaten() // DONE 0.71g
{
if (ac_KeineDaten->isChecked())
{
TX_Data[0] = 0;
send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
}
else
{
TX_Data[0] = 50;
send_Data('d', ADDRESS_ALL, TX_Data, 1, false); }
if (ac_MehrDaten->isChecked())
{
TX_Data[0] = Settings->Data.Debug_Fast / 10;
send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
}
else
{
TX_Data[0] = Settings->Data.Debug_Slow / 10;
send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
}
}
}
 
void MKTool::slot_ac_About()
484,15 → 526,15
Plot[a]->setData(aID,aData[a],NextPlot - 1);
}
 
if ((NextPlot > PlotWide))
if ((NextPlot > Settings->Data.Plotter_Count))
{
scroll_plot->setMaximum(NextPlot - PlotWide);
scroll_plot->setMaximum(NextPlot - Settings->Data.Plotter_Count);
}
 
if ((scroll_plot->value() == NextPlot - (PlotWide + 1)))
if ((scroll_plot->value() == NextPlot - (Settings->Data.Plotter_Count + 1)))
{
qwtPlot->setAxisScale(QwtPlot::xBottom,NextPlot - PlotWide,NextPlot,0);
scroll_plot->setValue(NextPlot - PlotWide);
qwtPlot->setAxisScale(QwtPlot::xBottom,NextPlot - Settings->Data.Plotter_Count,NextPlot,0);
scroll_plot->setValue(NextPlot - Settings->Data.Plotter_Count);
}
 
qwtPlot->replot();
500,6 → 542,9
 
void MKTool::config_Plot()
{
// qDebug("Plotter rekonfiguriert..!!");
qwtPlot->setAxisScale(QwtPlot::xBottom,0,Settings->Data.Plotter_Count,0);
 
for (int a = 0; a < MaxAnalog; a++)
{
Plot[a]->detach();
511,11 → 556,12
Plot[a]->attach(qwtPlot);
}
}
qwtPlot->replot();
}
 
void MKTool::slot_ScrollPlot(int Pos)
{
qwtPlot->setAxisScale(QwtPlot::xBottom,Pos,Pos + PlotWide,0);
qwtPlot->setAxisScale(QwtPlot::xBottom,Pos,Pos + Settings->Data.Plotter_Count,0);
qwtPlot->replot();
}
 
524,38 → 570,74
///////////////////
void MKTool::slot_pb_Update()
{
qDebug("Update");
 
if (serialPort->isOpen())
 
QString Message = "Firmeware-Datei \n\n";
Message = Message + le_HexFile->text() + "\n\n";
Message = Message + trUtf8("an FlightCtrl mit AVRDUDE - Seriel & Bootloader über ") + le_Port->text() + trUtf8(" übertragen?\n");
 
if (le_HexFile->text() == "")
{
slot_OpenPort();
QMessageBox::warning(this, QA_NAME, trUtf8("Bitte Firmeware-Datei wählen."), QMessageBox::Ok);
}
else if (QMessageBox::warning(this, QA_NAME, Message, QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
{
QString Programm = "avrdude" ;
QString Device = "m644";
 
Update = new QProcess();
QStringList Argumente;
 
const QString Programm = "avrdude -p m644 -P /dev/ttyS0 -c butterfly -b 57600 -U flash:w:Flight-Ctrl_MEGA644_V0_71f.hex";
const QStringList Argumente = (QStringList() << "-?");
Update = new QProcess();
 
te_Shell->setText(""); // Ausgabefenster säubern
Update->start(Programm); // Programmaufruf
// Update.waitForFinished(); // auf Rückmeldung warten
// Update.close(); // Kanal schließen
connect(Update, SIGNAL(readyReadStandardOutput()), this, SLOT(slot_UpdateShell()) );
if (serialPort->isOpen())
{
slot_OpenPort();
}
 
Argumente << "-P";
Argumente << le_Port->text();
Argumente << "-p";
Argumente << Device;
Argumente << "-c";
Argumente << "butterfly";
Argumente << "-b";
Argumente << "57600";
Argumente << "-U";
Argumente << "flash:w:" + le_HexFile->text();
 
// 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";
 
te_Shell->setText(""); // Ausgabefenster säubern
 
connect(Update, SIGNAL(readyReadStandardOutput()), this, SLOT(slot_UpdateShell()) );
connect(Update, SIGNAL(readyReadStandardError()), this, SLOT(slot_UpdateShell()) );
 
Update->start(Programm, Argumente); // Programmaufruf
}
}
 
void MKTool::slot_UpdateShell()
{
QByteArray Output;
// te_Shell->setText(""); // Ausgabefenster säubern
Output = Update->readAllStandardOutput(); // Shellausgabe an Variable
 
Output = Update->readAllStandardError(); // Shellausgabe an Variable
te_Shell->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
te_Shell->insertPlainText(QString::fromUtf8(Output));
 
te_Shell->setText(QString::fromUtf8(Output)); // ...und endlich: Ausgabe im QLabel
qDebug("Shell");
Output = Update->readAll();
te_Shell->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
te_Shell->insertPlainText(QString::fromUtf8(Output));
}
 
void MKTool::slot_pb_HexFile()
{
QString FileName = QFileDialog::getOpenFileName(this,trUtf8(("Firmeware-Datei wählen")),"",
tr("Intel Hex(*.hex);;Alle Dateien (*)"));
if (!FileName.isEmpty())
{
le_HexFile->setText(FileName);
}
}
 
// Settings-Bereich
///////////////////
812,7 → 894,7
return Combo->currentText().toInt();
}
 
void MKTool::store_ParameterSet(int Set) // DONE 0.71g
void MKTool::store_ParameterSet(int Set) // DONE 0.71h
{
char *Name = le_SetName->text().toLatin1().data();
 
948,9 → 1030,10
ParameterSet[Set][P_NAV_GPS_ACC] = get_Value(cb_12_8);
 
//Seite 13
ParameterSet[Set][P_NAV_WIND_CORR] = get_Value(cb_13_1);
ParameterSet[Set][P_NAV_SPEED_COMP] = get_Value(cb_13_2);
ParameterSet[Set][P_NAV_RADIUS] = get_Value(cb_13_3);
ParameterSet[Set][P_NAV_WIND_CORR] = get_Value(cb_13_1);
ParameterSet[Set][P_NAV_SPEED_COMP] = get_Value(cb_13_2);
ParameterSet[Set][P_NAV_RADIUS] = get_Value(cb_13_3);
ParameterSet[Set][P_NAV_ANGLE_LIMIT] = get_Value(cb_13_4);
}
 
void MKTool::slot_SaveParameter() // DONE 0.71g
1208,7 → 1291,7
}
}
 
void MKTool::show_ParameterSet(int Set) // DONE 0.71g
void MKTool::show_ParameterSet(int Set) // DONE 0.71h
{
char Name[12];
for (int a = 0; a < 12; a++)
1376,6 → 1459,7
cb_13_1 = setCombo(cb_13_1, Set, P_NAV_WIND_CORR);
cb_13_2 = setCombo(cb_13_2, Set, P_NAV_SPEED_COMP);
cb_13_3 = setCombo(cb_13_3, Set, P_NAV_RADIUS);
cb_13_4 = setCombo(cb_13_4, Set, P_NAV_ANGLE_LIMIT);
}
 
 
1479,6 → 1563,7
Settings->GUI.Term_Info = cb_ShowMSG->isChecked();
Settings->GUI.Term_Data = cb_ShowData->isChecked();
Settings->GUI.Term_Always = cb_ShowAlways->isChecked();
Settings->GUI.Term_Send = cb_ShowSend->isChecked();
 
Settings->TTY.Port = le_Port->text();
 
1666,7 → 1751,7
TX_Data[0] = Position;
send_Data('a', ADDRESS_ALL, TX_Data, 1, false);
}
if (Position == 32)
if (Position == 31)
{
for (int a = 0; a < MaxAnalog; a++)
{
1741,7 → 1826,7
"Serielles Protokoll Inkompatibel. \nBitte neue Programmversion installieren,", QMessageBox::Ok);
}
 
TX_Data[0] = 50;
TX_Data[0] = Settings->Data.Debug_Slow / 10;
send_Data('d', ADDRESS_ALL, TX_Data, 1, false);
 
if (Mode.ID == ADDRESS_FC)
1766,6 → 1851,7
 
if (Settings->Analog1.Version != Mode.Version)
{
lb_Status->setText("Analoglabel-Version unterschiedlich. Lese Analoglabels neu aus.");
slot_ac_GetLabels();
}
else
1803,7 → 1889,8
if ((cb_ShowData->isChecked()) && ((tab_Main->currentWidget()->objectName() == QString("Tab_3")) || (cb_ShowAlways->isChecked())))
{
te_RX->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
te_RX->insertPlainText(RxData.String + '\r');
// te_RX->insertPlainText(" > " + RxData.String + '\r');
te_RX->insertHtml("<span style=\"color:#00008b;\">" + RxData.String + "<br /></span>");
}
}
else
1811,7 → 1898,8
if ((cb_ShowMSG->isChecked()) && ((tab_Main->currentWidget()->objectName() == QString("Tab_3")) || (cb_ShowAlways->isChecked())))
{
te_RX->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
te_RX->insertPlainText(RxData.String + '\r');
// te_RX->insertPlainText(" > " + RxData.String + '\r');
te_RX->insertHtml("<span style=\"color:#008b00;\">" + RxData.String + "<br /></span>");
}
}
RxData.String = QString("");
1895,6 → 1983,12
 
QByteArray Temp(TX_Data.toUtf8());
serialPort->sendData(Temp);
 
if (cb_ShowSend->isChecked())
{
te_RX->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
te_RX->insertHtml("<span style='color:#8b0000;'>" + TX_Data + "<br /></span>");
}
}
}
 
1904,7 → 1998,7
 
MKTool::~MKTool()
{
qDebug(" Programm Ende ..!! ");
// qDebug(" Programm Ende ..!! ");
if (serialPort->isOpen())
{
serialPort->close();
/QMK-Groundstation/trunk/Forms/mktool.h
142,9 → 142,11
void slot_ac_StartPlotter();
void slot_ac_View();
void slot_ac_MehrDaten();
void slot_ac_KeineDaten();
void slot_ac_About();
void slot_ac_GetLabels();
void slot_ac_Motortest();
void slot_pb_HexFile();
 
// Default-Ticker
void slot_Ticker();
/QMK-Groundstation/trunk/Forms/mktool.ui
5,8 → 5,8
<rect>
<x>0</x>
<y>0</y>
<width>770</width>
<height>413</height>
<width>766</width>
<height>429</height>
</rect>
</property>
<property name="windowTitle" >
18,7 → 18,39
</property>
<widget class="QWidget" name="centralwidget" >
<layout class="QGridLayout" name="gridLayout_34" >
<item row="0" column="1" >
<property name="margin" >
<number>0</number>
</property>
<property name="spacing" >
<number>0</number>
</property>
<item row="0" column="0" >
<widget class="Line" name="line_2" >
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="3" column="0" >
<widget class="QLabel" name="lb_Status" >
<property name="font" >
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="frameShape" >
<enum>QFrame::Box</enum>
</property>
<property name="frameShadow" >
<enum>QFrame::Raised</enum>
</property>
<property name="text" >
<string/>
</property>
</widget>
</item>
<item row="1" column="0" >
<widget class="QTabWidget" name="tab_Main" >
<property name="currentIndex" >
<number>0</number>
944,76 → 976,6
</item>
</layout>
</item>
<item row="1" column="0" >
<layout class="QHBoxLayout" name="horizontalLayout_3" >
<item>
<widget class="QLabel" name="label" >
<property name="text" >
<string>Device</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="le_Port" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>/dev/ttyUSB0</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_Open" >
<property name="text" >
<string>Verbinden</string>
</property>
<property name="icon" >
<iconset resource="../MKTool.qrc" >
<normaloff>:/Actions/Images/22X22/network-disconnect.png</normaloff>:/Actions/Images/22X22/network-disconnect.png</iconset>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer" >
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0" >
<size>
<width>200</width>
<height>26</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pb_Record" >
<property name="text" >
<string>CSV Aufzeichen</string>
</property>
<property name="icon" >
<iconset resource="../MKTool.qrc" >
<normaloff>:/Actions/Images/22X22/media-record.png</normaloff>:/Actions/Images/22X22/media-record.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_Quit" >
<property name="text" >
<string>Beenden</string>
</property>
<property name="icon" >
<iconset resource="../MKTool.qrc" >
<normaloff>:/Actions/Images/22X22/application-exit.png</normaloff>:/Actions/Images/22X22/application-exit.png</iconset>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="Tab_1" >
5454,7 → 5416,7
<property name="frameShadow" >
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_39" >
<layout class="QGridLayout" name="gridLayout_36" >
<item row="0" column="0" >
<widget class="QLabel" name="label_134" >
<property name="font" >
5611,7 → 5573,59
</property>
</widget>
</item>
<item row="3" column="0" >
<widget class="QLabel" name="label_151" >
<property name="font" >
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text" >
<string>GPS Winkelbegrenzung:</string>
</property>
</widget>
</item>
<item row="3" column="1" >
<widget class="QComboBox" name="cb_13_4" >
<property name="editable" >
<bool>true</bool>
</property>
<item>
<property name="text" >
<string>Poti 1</string>
</property>
</item>
<item>
<property name="text" >
<string>Poti 2</string>
</property>
</item>
<item>
<property name="text" >
<string>Poti 3</string>
</property>
</item>
<item>
<property name="text" >
<string>Poti 4</string>
</property>
</item>
<item>
<property name="text" >
<string>0</string>
</property>
</item>
</widget>
</item>
<item row="3" column="2" >
<widget class="QLabel" name="label_150" >
<property name="text" >
<string>[x 0.5 Grad]</string>
</property>
</widget>
</item>
<item row="4" column="1" >
<spacer name="verticalSpacer_15" >
<property name="orientation" >
<enum>Qt::Vertical</enum>
5653,7 → 5667,11
&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600; text-decoration: underline;">&lt;/p>
&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">Speed Compensation:&lt;/span>&lt;/p>
&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600; text-decoration: underline;">&lt;/p>
&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">only for AID mode.&lt;/p>&lt;/body>&lt;/html></string>
&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">only for AID mode.&lt;/p>
&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;/p>
&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">GPS Winkelbegrenzung:&lt;/span>&lt;/p>
&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600; text-decoration: underline;">&lt;/p>
&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Begrenzung des Maximalen Neigungswinkel.&lt;/p>&lt;/body>&lt;/html></string>
</property>
</widget>
</item>
5668,7 → 5686,7
<string>Terminal </string>
</attribute>
<layout class="QGridLayout" name="gridLayout_2" >
<item row="0" column="0" colspan="4" >
<item row="0" column="0" colspan="5" >
<widget class="QTextEdit" name="te_RX" >
<property name="font" >
<font>
5676,6 → 5694,13
<pointsize>10</pointsize>
</font>
</property>
<property name="html" >
<string>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
p, li { white-space: pre-wrap; }
&lt;/style>&lt;/head>&lt;body style=" font-family:'Adobe Courier'; font-size:10pt; font-weight:400; font-style:normal;">
&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;/p>&lt;/body>&lt;/html></string>
</property>
</widget>
</item>
<item row="1" column="0" >
5695,7 → 5720,7
</property>
</widget>
</item>
<item row="1" column="3" >
<item row="1" column="4" >
<spacer name="horizontalSpacer_13" >
<property name="orientation" >
<enum>Qt::Horizontal</enum>
5708,7 → 5733,7
</property>
</spacer>
</item>
<item row="1" column="2" >
<item row="1" column="3" >
<widget class="QCheckBox" name="cb_ShowAlways" >
<property name="text" >
<string>auch wenn ausgeblendet </string>
5715,6 → 5740,13
</property>
</widget>
</item>
<item row="1" column="2" >
<widget class="QCheckBox" name="cb_ShowSend" >
<property name="text" >
<string>gesendete Daten anzeigen</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="Tab_4" >
5964,9 → 5996,84
</widget>
</item>
<item row="1" column="0" >
<widget class="QFrame" name="frame_20" >
<property name="frameShape" >
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow" >
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3" >
<item>
<widget class="QPushButton" name="pushButton" >
<property name="enabled" >
<bool>false</bool>
</property>
<property name="text" >
<string>Settings zurücksetzen</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer" >
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0" >
<size>
<width>178</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QRadioButton" name="rb_FC" >
<property name="text" >
<string>FlightCtrl </string>
</property>
<property name="checked" >
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rb_MK3MAG" >
<property name="enabled" >
<bool>false</bool>
</property>
<property name="text" >
<string>MK3Mag </string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rb_NC" >
<property name="enabled" >
<bool>false</bool>
</property>
<property name="text" >
<string>NaviCtrl </string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rb_BL" >
<property name="enabled" >
<bool>false</bool>
</property>
<property name="text" >
<string>BL-Ctrl </string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0" >
<layout class="QHBoxLayout" name="horizontalLayout_11" >
<item>
<widget class="QPushButton" name="pushButton" >
<widget class="QPushButton" name="pb_HexFile" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
5979,7 → 6086,11
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit" />
<widget class="QLineEdit" name="le_HexFile" >
<property name="text" >
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_Update" >
5994,10 → 6105,133
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_Flash" >
<property name="enabled" >
<bool>false</bool>
</property>
<property name="text" >
<string>Flashen</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="Seite" >
<attribute name="title" >
<string>Debug</string>
</attribute>
<widget class="QPushButton" name="pb_Quit" >
<property name="geometry" >
<rect>
<x>550</x>
<y>0</y>
<width>141</width>
<height>26</height>
</rect>
</property>
<property name="text" >
<string>Beenden</string>
</property>
<property name="icon" >
<iconset resource="../MKTool.qrc" >
<normaloff>:/Actions/Images/22X22/application-exit.png</normaloff>:/Actions/Images/22X22/application-exit.png</iconset>
</property>
</widget>
<widget class="QPushButton" name="pb_Record" >
<property name="geometry" >
<rect>
<x>350</x>
<y>0</y>
<width>201</width>
<height>26</height>
</rect>
</property>
<property name="text" >
<string>CSV Aufzeichen</string>
</property>
<property name="icon" >
<iconset resource="../MKTool.qrc" >
<normaloff>:/Actions/Images/22X22/media-record.png</normaloff>:/Actions/Images/22X22/media-record.png</iconset>
</property>
</widget>
<widget class="QLabel" name="lb_Port" >
<property name="geometry" >
<rect>
<x>10</x>
<y>10</y>
<width>51</width>
<height>17</height>
</rect>
</property>
<property name="text" >
<string>Device: </string>
</property>
</widget>
<widget class="QLineEdit" name="le_Port" >
<property name="geometry" >
<rect>
<x>60</x>
<y>0</y>
<width>131</width>
<height>27</height>
</rect>
</property>
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>/dev/ttyUSB0</string>
</property>
</widget>
<widget class="QPushButton" name="pb_Open" >
<property name="geometry" >
<rect>
<x>190</x>
<y>0</y>
<width>151</width>
<height>26</height>
</rect>
</property>
<property name="text" >
<string>Verbinden</string>
</property>
<property name="icon" >
<iconset resource="../MKTool.qrc" >
<normaloff>:/Actions/Images/22X22/network-disconnect.png</normaloff>:/Actions/Images/22X22/network-disconnect.png</iconset>
</property>
</widget>
<widget class="QComboBox" name="cb_Hardware" >
<property name="geometry" >
<rect>
<x>10</x>
<y>30</y>
<width>101</width>
<height>27</height>
</rect>
</property>
<item>
<property name="text" >
<string>FlightCtrl</string>
</property>
</item>
<item>
<property name="text" >
<string>NaviCtrl</string>
</property>
</item>
<item>
<property name="text" >
<string>MK3Mag</string>
</property>
</item>
</widget>
</widget>
</widget>
</item>
</layout>
6007,7 → 6241,7
<rect>
<x>0</x>
<y>0</y>
<width>770</width>
<width>766</width>
<height>25</height>
</rect>
</property>
6041,6 → 6275,8
<addaction name="ac_StartPlotter" />
<addaction name="separator" />
<addaction name="ac_MehrDaten" />
<addaction name="ac_KeineDaten" />
<addaction name="separator" />
<addaction name="ac_GetLabels" />
</widget>
<widget class="QMenu" name="menuAnsicht" >
6066,7 → 6302,16
</property>
<addaction name="ac_Motortest" />
</widget>
<widget class="QMenu" name="menuHardware" >
<property name="title" >
<string>Hardware</string>
</property>
<addaction name="actionFlightCtrl" />
<addaction name="actionNaviCtrl" />
<addaction name="actionMK3Mag" />
</widget>
<addaction name="menuProgramm" />
<addaction name="menuHardware" />
<addaction name="menuAnsicht" />
<addaction name="menuDaten" />
<addaction name="menuEinstellungen" />
6074,6 → 6319,9
<addaction name="menu_Help" />
</widget>
<widget class="QToolBar" name="toolBar" >
<property name="enabled" >
<bool>true</bool>
</property>
<property name="windowTitle" >
<string>toolBar</string>
</property>
6086,6 → 6334,9
<height>22</height>
</size>
</property>
<property name="toolButtonStyle" >
<enum>Qt::ToolButtonIconOnly</enum>
</property>
<attribute name="toolBarArea" >
<enum>TopToolBarArea</enum>
</attribute>
6098,8 → 6349,8
<addaction name="ac_StartPlotter" />
<addaction name="ac_MehrDaten" />
<addaction name="separator" />
<addaction name="ac_Config" />
<addaction name="ac_Quit" />
<addaction name="separator" />
</widget>
<action name="ac_LogDir" >
<property name="text" >
6135,6 → 6386,9
</property>
</action>
<action name="ac_RecordCSV" >
<property name="checkable" >
<bool>true</bool>
</property>
<property name="icon" >
<iconset resource="../MKTool.qrc" >
<normaloff>:/Actions/Images/22X22/media-record.png</normaloff>:/Actions/Images/22X22/media-record.png</iconset>
6161,7 → 6415,7
<normaloff>:/Actions/Images/22X22/configure.png</normaloff>:/Actions/Images/22X22/configure.png</iconset>
</property>
<property name="text" >
<string>Datenfelder wählwn</string>
<string>Datenfelder wählen</string>
</property>
</action>
<action name="ac_MehrDaten" >
6173,7 → 6427,7
<normaloff>:/Actions/Images/22X22/clock.png</normaloff>:/Actions/Images/22X22/clock.png</iconset>
</property>
<property name="text" >
<string>Mehr Daten</string>
<string>Schnelle Debugdaten</string>
</property>
</action>
<action name="ac_View0" >
6261,6 → 6515,38
<string>Motortest</string>
</property>
</action>
<action name="actionFlightCtrl" >
<property name="checkable" >
<bool>true</bool>
</property>
<property name="text" >
<string>FlightCtrl</string>
</property>
</action>
<action name="actionNaviCtrl" >
<property name="checkable" >
<bool>true</bool>
</property>
<property name="text" >
<string>NaviCtrl</string>
</property>
</action>
<action name="actionMK3Mag" >
<property name="checkable" >
<bool>true</bool>
</property>
<property name="text" >
<string>MK3Mag</string>
</property>
</action>
<action name="ac_KeineDaten" >
<property name="checkable" >
<bool>true</bool>
</property>
<property name="text" >
<string>Debugdaten abschalten.</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>
/QMK-Groundstation/trunk/Parameter_Positions.h
19,9 → 19,9
#ifndef PARAMETER_POSITIONS_H
#define PARAMETER_POSITIONS_H
 
static const int VERSION_SETTINGS = 72;
static const int VERSION_SETTINGS = 73;
 
static const int MaxParameter = 86;
static const int MaxParameter = 87;
 
static const int P_KANAL_GAS = 0;
static const int P_KANAL_GIER = 1;
96,11 → 96,12
static const int P_NAV_WIND_CORR = 64;
static const int P_NAV_SPEED_COMP = 65;
static const int P_NAV_RADIUS = 66;
static const int P_NAV_ANGLE_LIMIT = 67;
 
static const int P_EXTERNAL = 67;
static const int P_LOOP_CONFIG = 68;
static const int P_SERVO_NICK_COMPI = 69;
static const int P_RESERVED = 70;
static const int P_NAME = 74;
static const int P_EXTERNAL = 68;
static const int P_LOOP_CONFIG = 69;
static const int P_SERVO_NICK_COMPI = 70;
static const int P_RESERVED = 71;
static const int P_NAME = 75;
 
#endif
/QMK-Groundstation/trunk/Todo.txt
0,0 → 1,10
 
- Einstellung der Farben des Plotters.
 
- Updaten der Firmeware mit Hilfe von AVRDude.
- Done: FlightCtrl.
 
- Upload der Firmware über den Bootloader ohne AVRDude.
 
- Bootloader-Update mit AVRDude.
 
/QMK-Groundstation/trunk/cSettings.cpp
59,6 → 59,7
}
}
 
// Config der Analogwert-Anzeige (Plotter / CVS)
void cSettings::write_Settings_Analog(int ID)
{
QString Hardware = HardwareType[ID];
86,6 → 87,7
Setting.endGroup();
}
 
// Labels der Analogwerte.
void cSettings::write_Settings_AnalogLabels(int ID)
{
QString Hardware = HardwareType[ID];
116,6 → 118,7
Setting.endGroup();
}
 
// Programmeinstellungen
void cSettings::read_Settings()
{
QBitArray Def_TabViews;
143,6 → 146,7
GUI.Term_Info = Setting.value("Terminal_Info",false).toBool();
GUI.Term_Data = Setting.value("Terminal_Data",true).toBool();
GUI.Term_Always = Setting.value("Terminal_Always",false).toBool();
GUI.Term_Send = Setting.value("Terminal_Send",true).toBool();
Setting.endGroup();
 
Setting.beginGroup("Dirs");
149,6 → 153,13
DIR.Logging = Setting.value("LogDir", HomeDir).toString();
DIR.Parameter = Setting.value("ParDir", HomeDir).toString();
Setting.endGroup();
 
Setting.beginGroup("MKData");
Data.Plotter_Count = Setting.value("Plotter_Count", 100).toInt();
Data.Debug_Fast = Setting.value("Debug_Fast", 100).toInt();
Data.Debug_Slow = Setting.value("Debug_Slow", 500).toInt();
Setting.endGroup();
 
}
 
void cSettings::write_Settings()
169,11 → 180,18
Setting.endGroup();
 
Setting.beginGroup("GUI");
Setting.setValue("TabViews", QBitArray(GUI.TabViews));
Setting.setValue("Terminal_Info", GUI.Term_Info);
Setting.setValue("Terminal_Data", GUI.Term_Data);
Setting.setValue("Terminal_Always", GUI.Term_Always);
Setting.setValue("TabViews", QBitArray(GUI.TabViews));
Setting.setValue("Terminal_Send", GUI.Term_Send);
Setting.endGroup();
 
Setting.beginGroup("MKData");
Setting.setValue("Plotter_Count", Data.Plotter_Count);
Setting.setValue("Debug_Fast", Data.Debug_Fast);
Setting.setValue("Debug_Slow", Data.Debug_Slow);
Setting.endGroup();
}
 
cSettings::~cSettings()
/QMK-Groundstation/trunk/cSettings.h
35,8 → 35,16
bool Term_Info;
bool Term_Data;
bool Term_Always;
bool Term_Send;
};
 
struct set_Data
{
int Plotter_Count;
int Debug_Fast;
int Debug_Slow;
};
 
struct set_DIR
{
QString Logging;
63,6 → 71,7
set_DIR DIR;
set_TTY TTY;
set_Analog Analog1;
set_Data Data;
 
void read_Settings();
void write_Settings();
/QMK-Groundstation/trunk/global.h
40,8 → 40,8
static const int SETTINGS_ID = 2;
 
static const QString QA_NAME = "QMK-Groundstation";
static const QString QA_VERSION = "0.5.6m";
static const QString QA_DATE = "08.12.2008";
static const QString QA_VERSION = "0.5.7w";
static const QString QA_DATE = "11.12.2008";
static const QString QA_YEAR = "2008";
static const QString QA_AUTHOR = "Manuel Schrape";
static const QString QA_EMAIL = "manuel.schrape@gmx.de";
71,7 → 71,6
 
static const int MaxAnalog = 32;
static const int MaxPlot = 50000;
static const int PlotWide = 100;
 
struct sMode
{