Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 712 → Rev 750

/QMK-Groundstation/trunk/QMK-Scope/Classes/cSettings.cpp
76,7 → 76,7
Setting.endGroup();
 
Setting.beginGroup("DATA");
DATA.Debug_Intervall = Setting.value("Debug-Intervall", 500).toInt();
// DATA.Debug_Intervall = Setting.value("Debug-Intervall", 500).toInt();
DATA.Plotter_Count = Setting.value("Plotter-Count", 100).toInt();
Setting.endGroup();
 
85,7 → 85,7
GUI.Size = Setting.value("Size", QSize(700, 300)).toSize();
GUI.Point = Setting.value("Point",QPoint(1,1)).toPoint();
Setting.endGroup();
 
/*
Setting.beginGroup("SERVER");
SERVER.Password = Setting.value("Password", QString("")).toString();
SERVER.IP_MAX = Setting.value("IP_MAX", 1).toInt();
96,6 → 96,7
SERVER.IP[z] = Setting.value("IP_" + QString("%1").arg(z), QString("127.0.0.1:64400")).toString();
}
Setting.endGroup();
*/
}
 
void cSettings::write_Settings()
108,7 → 109,7
 
Setting.beginGroup("DATA");
Setting.setValue("Plotter-Count", DATA.Plotter_Count);
Setting.setValue("Debug-Intervall", DATA.Debug_Intervall);
// Setting.setValue("Debug-Intervall", DATA.Debug_Intervall);
Setting.endGroup();
 
Setting.beginGroup("GUI");
116,7 → 117,7
Setting.setValue("Size", GUI.Size);
Setting.setValue("Point", GUI.Point);
Setting.endGroup();
 
/*
Setting.beginGroup("SERVER");
Setting.setValue("Password", SERVER.Password);
Setting.setValue("IP_MAX", SERVER.IP_MAX);
127,6 → 128,7
Setting.setValue("IP_" + QString("%1").arg(z), SERVER.IP[z]);
}
Setting.endGroup();
*/
}
 
 
/QMK-Groundstation/trunk/QMK-Scope/Classes/cSettings.h
44,9 → 44,9
struct set_DATA
{
int Plotter_Count;
int Debug_Intervall;
// int Debug_Intervall;
};
 
/*
struct set_SERVER
{
int IP_MAX;
54,7 → 54,7
QString IP[10];
QString Password;
};
 
*/
class cSettings
{
public:
65,7 → 65,7
set_GUI GUI;
set_DebugData DebugData;
set_DATA DATA;
set_SERVER SERVER;
// set_SERVER SERVER;
 
void read_DebugLabels(int ID);
void write_DebugLabels(int ID);
/QMK-Groundstation/trunk/QMK-Scope/Defines.h
24,7 → 24,7
#include "../Global/Kopter.h"
 
static const QString QA_NAME = "QMK-Scope";
static const QString QA_VERSION_NR = "1.1.4";
static const QString QA_VERSION_NR = "1.2.0";
 
#ifdef _BETA_
static const QString QA_VERSION = QA_VERSION_NR + " (BETA)";
32,8 → 32,8
static const QString QA_VERSION = QA_VERSION_NR;
#endif
 
static const QString QA_DATE = "30.11.2009";
static const QString QA_YEAR = "2008-2009";
static const QString QA_DATE = "28.03.2010";
static const QString QA_YEAR = "2008-2010";
 
static const QString QA_ABOUT =
"<HTML>"
/QMK-Groundstation/trunk/QMK-Scope/Dialogs/dlg_Main.cpp
27,11 → 27,12
{
setupUi(this);
 
 
o_Settings = new cSettings();
 
o_Settings->read_DebugLabels(0);
 
o_Input = new Input();
wg_Connection->set_Client(ID_SCOPE, QA_NAME + " " + QA_VERSION, DataFields);
 
init_GUI();
init_Connections();
51,20 → 52,9
showMaximized();
}
 
for(int z = 0; z < o_Settings->SERVER.IP_MAX; z++)
{
if (cb_Server->findText(o_Settings->SERVER.IP[z]) == -1)
{
cb_Server->addItem(o_Settings->SERVER.IP[z]);
}
}
wg_Connection->set_SelectVisible(false);
wg_Connection->set_ButtonVisible(false);
 
cb_Server->setCurrentIndex(o_Settings->SERVER.IP_ID);
 
le_Password->setText(o_Settings->SERVER.Password);
 
sb_Intervall->setValue(o_Settings->DATA.Debug_Intervall);
 
btn_Start->setCheckable(true);
 
ac_Plotter->setChecked(true);
98,9 → 88,8
// Signale mit Slots verbinden
void dlg_Main::init_Connections()
{
connect(sb_Intervall, SIGNAL(valueChanged(int)), this, SLOT(slot_sb_Intervall(int)));
connect(ac_Connect, SIGNAL(triggered()), wg_Connection, SLOT(slot_btn_Connect()));
 
connect(ac_Connect, SIGNAL(triggered()), this, SLOT(slot_ac_Connect()));
connect(ac_Plotter, SIGNAL(triggered()), this, SLOT(slot_ac_Plotter()));
connect(ac_Debug, SIGNAL(triggered()), this, SLOT(slot_ac_Debug()));
connect(ac_Chose, SIGNAL(triggered()), this, SLOT(slot_ac_Chose()));
107,10 → 96,6
 
connect(ac_ReadLabels, SIGNAL(triggered()), this, SLOT(slot_ac_ReadLabels()));
 
connect(rb_NC, SIGNAL(clicked()), this, SLOT(slot_rb_Hardware()));
connect(rb_FC, SIGNAL(clicked()), this, SLOT(slot_rb_Hardware()));
connect(rb_MK3MAG, SIGNAL(clicked()), this, SLOT(slot_rb_Hardware()));
 
connect(Plotter_Scroll, SIGNAL(valueChanged(int)), this, SLOT(slot_Plotter_Scroll(int)));
 
connect(btn_Start, SIGNAL(clicked()), this, SLOT(slot_Plotter_Start()));
119,6 → 104,11
// About QMK-Kernel & About-QT Dialog einfügen
connect(ac_About, SIGNAL(triggered()), this, SLOT(slot_ac_About()));
menu_Help->addAction(trUtf8("Über &Qt"), qApp, SLOT(aboutQt()));
 
connect(wg_Connection, SIGNAL(sig_Status(int)), this, SLOT(slot_ConnectionStatus(int)));
connect(wg_Connection, SIGNAL(sig_MK_Version(s_Hardware)), this, SLOT(slot_MK_Version(s_Hardware)));
connect(wg_Connection, SIGNAL(sig_MK_Debug(s_MK_Debug)), this, SLOT(slot_MK_Debug(s_MK_Debug)));
connect(wg_Connection, SIGNAL(sig_MK_DebugLabels(s_MK_DebugLabels)), this, SLOT(slot_MK_DebugLabels(s_MK_DebugLabels)));
}
 
void dlg_Main::init_Plotter()
198,171 → 188,95
qwt_Plotter->replot();
}
 
// IP-Input-Daten verarbeiten.
void dlg_Main::parse_IP_Data(QString t_Data)
///////////
// Slots //
///////////
 
// About-Dialog
void dlg_Main::slot_ac_About()
{
QStringList Data;
Data = t_Data.split(":");
QMessageBox::about(this, trUtf8(("Über ")) + QA_NAME, QA_ABOUT);
}
 
if (Data.count() > 1)
void dlg_Main::slot_ConnectionStatus(int li_Status)
{
if (li_Status)
{
int CMD = Data[2].toInt();
ac_Connect->setChecked(true);
ac_Connect->setText(tr("Trennen"));
}
else
{
ac_Connect->setChecked(false);
ac_Connect->setText(tr("Verbinden"));
}
}
 
switch(CMD)
{
case 101 :
{
o_Input->send_Data(HandlerIP::make_Frame(ID_SCOPE, 101, QA_NAME + " " + QA_VERSION));
}
case 502 :
{
switch (Data[3].toInt())
{
case 105 :
{
QString s_MD5PW;
QByteArray a_MD5PW;
void dlg_Main::slot_MK_Version(s_Hardware ls_Version)
{
gs_Version = ls_Version;
setWindowTitle(QA_NAME + " " + QA_VERSION + " - " + ls_Version.Hardware + " " + ls_Version.Version);
 
a_MD5PW = QCryptographicHash::hash(le_Password->text().toAscii(),QCryptographicHash::Md5);
o_Settings->read_DebugLabels(gs_Version.ID);
 
s_MD5PW = QString(a_MD5PW.toHex().data());
if (o_Settings->DebugData.Version != gs_Version.Version)
{
qDebug(QString("Debug-Labels unterschiedlich. Neue anforden. " + o_Settings->DebugData.Version + " <> " + gs_Version.Version).toLatin1().data());
usleep(50000);
 
o_Input->send_Data(HandlerIP::make_Frame(ID_SCOPE, 105, s_MD5PW));
}
break;
case 106 :
{
o_Input->send_Data(HandlerIP::make_Frame(ID_SCOPE, 106, DataFields));
}
break;
}
}
break;
case 505 :
{
if (Data[3] == "OK")
{
}
else
{
QMessageBox::warning(this, QA_NAME, trUtf8("Authentifizierung fehlgeschlagen. <br />Daten senden zum Mikrokopter nicht möglich."), QMessageBox::Ok);
}
}
break;
slot_ac_ReadLabels();
}
else
{
for(int z = 0; z < MAX_DebugData; z++)
{
lb_Debug[z]->setText(o_Settings->DebugData.Label[z]);
cb_Debug[z]->setText(o_Settings->DebugData.Label[z]);
cb_Debug[z]->setChecked(o_Settings->DebugData.Show_Plotter[z]);
}
config_Plotter();
}
}
 
// MK-Eingangsdaten verarbeiten
void dlg_Main::parse_MK_Data(QString t_Data)
void dlg_Main::slot_MK_Debug(s_MK_Debug ls_Debug)
{
unsigned char OutData[150];
char *InData = t_Data.toLatin1().data();
gs_Debug = ls_Debug;
 
if (HandlerMK::Decode_64(InData, t_Data.length(), OutData) != 0)
for (int z = 0; z < MAX_DebugData; z++)
{
switch(InData[2])
Debug_Data[z] = ls_Debug.Analog[z];
if (ac_Debug->isChecked())
{
case 'A' : // 0.76e - Debug-Labels
{
o_Input->stop_Resend(DATA_READ_LABEL);
int Position = OutData[0];
if (Position < 32)
{
o_Settings->DebugData.Label[Position] = HandlerMK::Data2QString(OutData,1,17).trimmed();
if (o_Settings->DebugData.Label[Position] == "")
{
o_Settings->DebugData.Label[Position] = "Debug-" + QString("%1").arg(Position);
}
lb_Debug[Position]->setText("" + o_Settings->DebugData.Label[Position]);
cb_Debug[Position]->setText("" + o_Settings->DebugData.Label[Position]);
le_Debug[z]->setText(QString("%1").arg(Debug_Data[z]));
}
}
if (btn_Start->isChecked())
{
update_Plotter();
}
}
 
Position ++;
void dlg_Main::slot_MK_DebugLabels(s_MK_DebugLabels MK_DebugLabels)
{
if (MK_DebugLabels.Position < 32)
{
o_Settings->DebugData.Label[MK_DebugLabels.Position] = MK_DebugLabels.Text;
if (o_Settings->DebugData.Label[MK_DebugLabels.Position] == "")
{
o_Settings->DebugData.Label[MK_DebugLabels.Position] = "Debug-" + QString("%1").arg(MK_DebugLabels.Position);
}
lb_Debug[MK_DebugLabels.Position]->setText("" + o_Settings->DebugData.Label[MK_DebugLabels.Position]);
cb_Debug[MK_DebugLabels.Position]->setText("" + o_Settings->DebugData.Label[MK_DebugLabels.Position]);
 
if ((Position < 32) && (get_Analoglabels == true))
{
c_Data[0] = Position;
o_Input->send_Data(HandlerMK::make_Frame('a', ADDRESS_ALL, c_Data, 1).toLatin1().data(), DATA_READ_LABEL);
}
}
if (Position == 32)
{
o_Settings->DebugData.Version = VersionInfo.Version;
o_Settings->write_DebugLabels(VersionInfo.ID);
config_Plotter();
get_Analoglabels = false;
}
}
break;
 
case 'D' : // 0.75a - Debug-Daten
{
for (int z = 0; z < MAX_DebugData; z++)
{
Debug_Data[z] = HandlerMK::Data2Int(OutData, (z * 2) + 2);
if (ac_Debug->isChecked())
{
le_Debug[z]->setText(QString("%1").arg(Debug_Data[z]));
}
}
if (btn_Start->isChecked())
{
update_Plotter();
}
}
break;
 
case 'V' : // 0.75a - Versions-Info
{
o_Input->stop_Resend(DATA_VERSION);
VersionInfo = HandlerMK::parse_Version(OutData, InData[1] - 'a');
setWindowTitle(QA_NAME + " " + QA_VERSION + " - " + VersionInfo.Hardware + " " + VersionInfo.Version);
 
if (VersionInfo.ID == ADDRESS_FC)
{
rb_FC->setChecked(true);
}
if (VersionInfo.ID == ADDRESS_NC)
{
rb_NC->setChecked(true);
}
if (VersionInfo.ID == ADDRESS_MK3MAG)
{
rb_MK3MAG->setChecked(true);
}
 
o_Settings->read_DebugLabels(VersionInfo.ID);
 
if (o_Settings->DebugData.Version != VersionInfo.Version)
{
// qDebug(QString("Debug-Labels unterschiedlich. Neue anforden. " + o_Settings->DebugData.Version + " <> " + VersionInfo.Version).toLatin1().data());
 
usleep(50000);
 
slot_ac_ReadLabels();
// o_Input->send_Data(HandlerMK::make_Frame('a', ADDRESS_ALL, c_Data, 1).toLatin1().data());
}
else
{
for(int z = 0; z < MAX_DebugData; z++)
{
lb_Debug[z]->setText(o_Settings->DebugData.Label[z]);
cb_Debug[z]->setText(o_Settings->DebugData.Label[z]);
cb_Debug[z]->setChecked(o_Settings->DebugData.Show_Plotter[z]);
}
config_Plotter();
}
c_Data[0] = sb_Intervall->value() / 10;
o_Input->send_Data(HandlerMK::make_Frame('d', ADDRESS_ALL, c_Data, 1).toLatin1().data());
}
break;
}
}
if (MK_DebugLabels.Position == 31)
{
o_Settings->DebugData.Version = gs_Version.Version;
o_Settings->write_DebugLabels(gs_Version.ID);
config_Plotter();
}
}
 
///////////
// Slots //
///////////
void dlg_Main::slot_Plotter_Start()
{
if (btn_Start->isChecked())
382,12 → 296,11
o_Settings->DebugData.Show_Plotter[z] = cb_Debug[z]->isChecked();
}
config_Plotter();
o_Settings->write_DebugLabels(VersionInfo.ID);
o_Settings->write_DebugLabels(gs_Version.ID);
}
 
void dlg_Main::slot_ac_Chose()
{
 
for(int z = 0; z < MAX_DebugData; z++)
{
cb_Debug[z]->setChecked(o_Settings->DebugData.Show_Plotter[z]);
417,199 → 330,10
 
void dlg_Main::slot_ac_ReadLabels()
{
get_Analoglabels = true;
c_Data[0] = 0;
o_Input->send_Data(HandlerMK::make_Frame('a', ADDRESS_ALL, c_Data, 1).toLatin1().data(), DATA_READ_LABEL);
wg_Connection->send_Data(HandlerMK::make_Frame('a', ADDRESS_ALL, c_Data, 1).toLatin1().data(), DATA_READ_LABEL);
}
 
// About-Dialog
void dlg_Main::slot_ac_About()
{
QMessageBox::about(this, trUtf8(("Über ")) + QA_NAME, QA_ABOUT);
}
 
// Datenintervall geändert.
void dlg_Main::slot_sb_Intervall(int t_Intervall)
{
if (t_Intervall == 0)
{
c_Data[0] = 0;
}
else
{
c_Data[0] = t_Intervall / 10;
}
o_Input->send_Data(HandlerMK::make_Frame('d', ADDRESS_ALL, c_Data, 1).toLatin1().data());
}
 
// Hardware auswählen.
void dlg_Main::slot_rb_Hardware()
{
if ((rb_NC->isChecked() == false) && (VersionInfo.ID != ADDRESS_NC))
{
o_Input->send_Data(HandlerMK::get_SelectNC());
}
 
if (rb_FC->isChecked())
{
o_Input->send_Data(HandlerMK::get_SelectFC());
}
else
if (rb_MK3MAG->isChecked())
{
o_Input->send_Data(HandlerMK::get_SelectMK3MAG());
}
else
if (rb_NC->isChecked())
{
o_Input->send_Data(HandlerMK::get_SelectNC());
}
 
o_Input->send_Data(HandlerMK::make_Frame('v', 0, c_Data, 0).toLatin1().data(), DATA_VERSION);
}
 
// Verbindung zum Server aufbauen
void dlg_Main::slot_ac_Connect()
{
if (!o_Input->IsOpen())
{
if (cb_Server->findText(cb_Server->currentText()) == -1)
{
cb_Server->addItem(cb_Server->currentText());
cb_Server->setCurrentIndex(cb_Server->findText(cb_Server->currentText()));
}
 
cb_Server->setEnabled(false);
le_Password->setEnabled(false);
 
// Connect über Device
if (cb_Server->currentText().startsWith('/'))
{
o_Input = new Input_TTY();
o_Input->Init();
 
set_Input s_Input;
s_Input.Main = cb_Server->currentText();
 
if (o_Input->Open(s_Input) == true)
{
ac_Connect->setText(tr("Trennen"));
connect(o_Input, SIGNAL(sig_NewData(QString)), this, SLOT(slot_Input_Data(QString)));
 
o_Input->send_Data(HandlerMK::make_Frame('v', 0, c_Data, 0).toLatin1().data(), DATA_VERSION);
}
else
{
cb_Server->setEnabled(true);
le_Password->setEnabled(true);
}
 
}
else // Connect über TCPIP
{
o_Input = new Input_TCP();
o_Input->Init();
 
set_Input s_Input;
 
QStringList Server = cb_Server->currentText().split(":");
 
s_Input.Main = Server[0];
s_Input.Sub = Server[1];
 
if (o_Input->Open(s_Input) == true)
{
connect(o_Input, SIGNAL(sig_Disconnected(int)), this, SLOT(slot_Input_Disconnected(int)));
connect(o_Input, SIGNAL(sig_Connected()), this, SLOT(slot_Input_Connected()));
}
}
}
else
{
cb_Server->setEnabled(true);
le_Password->setEnabled(true);
 
ac_Connect->setText(tr("Verbinden"));
o_Input->Close();
disconnect(o_Input, SIGNAL(sig_NewData(QString)), 0, 0);
if (o_Input->Mode() == TCP)
{
disconnect(o_Input, SIGNAL(sig_Disconnected(int)), 0, 0);
disconnect(o_Input, SIGNAL(sig_Connected()), 0, 0);
}
}
}
 
// Neue Daten empfangen.
void dlg_Main::slot_Input_Data(QString t_Data)
{
if ((t_Data[0] == '#'))
{
if ((HandlerMK::Check_CRC(t_Data.toLatin1().data(), t_Data.length() - 1)) || ((o_Input->Mode() == TTY) && (HandlerMK::Check_CRC(t_Data.toLatin1().data(), t_Data.length()))))
{
parse_MK_Data(t_Data);
}
else
{
qDebug(QString("CRC-Error - " + t_Data).toLatin1().data());
}
}
else if ((o_Input->Mode() == TCP) && (t_Data[0] == '$'))
{
parse_IP_Data(t_Data);
}
}
 
void dlg_Main::slot_Input_Disconnected(int Error)
{
cb_Server->setEnabled(true);
le_Password->setEnabled(true);
 
disconnect(o_Input, SIGNAL(sig_NewData(QString)), 0, 0);
disconnect(o_Input, SIGNAL(sig_Disconnected(int)), 0, 0);
disconnect(o_Input, SIGNAL(sig_Connected()), 0, 0);
 
ac_Connect->setChecked(false);
ac_Connect->setText(tr("Verbinden"));
 
switch (Error)
{
case REMOTECLOSED :
{
// lb_Status->setText(tr("Verbindung vom Server beendet."));
QMessageBox::warning(this, QA_NAME,tr("QMK-Datenserver: Verbindung wurde vom Server beendet."), QMessageBox::Ok);
}
break;
case REFUSED :
{
// lb_Status->setText(tr("Server nicht gefunden."));
QMessageBox::warning(this, QA_NAME,tr("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,tr("QMK-Datenserver: Loginname oder Password falsch."), QMessageBox::Ok);
}
break;
default :
{
// lb_Status->setText(tr("Getrennt vom QMK-Datenserver."));
}
break;
}
 
}
 
void dlg_Main::slot_Input_Connected()
{
connect(o_Input, SIGNAL(sig_NewData(QString)), this, SLOT(slot_Input_Data(QString)));
 
// o_Input->send_Data(HandlerIP::make_Frame(ID_SCOPE, 101, QA_NAME + " " + QA_VERSION));
o_Input->send_Data(HandlerMK::make_Frame('v', 0, c_Data, 0).toLatin1().data(), DATA_VERSION);
ac_Connect->setText(tr("Trennen"));
}
 
// Programm Ende
dlg_Main::~dlg_Main()
{
617,21 → 341,5
o_Settings->GUI.Size = size();
o_Settings->GUI.Point = pos();
 
o_Settings->DATA.Debug_Intervall = sb_Intervall->value();
 
o_Settings->SERVER.Password = le_Password->text();
o_Settings->SERVER.IP_MAX = cb_Server->count();
o_Settings->SERVER.IP_ID = cb_Server->currentIndex();
 
for (int z = 0; z < cb_Server->count(); z++)
{
if (z < 10)
{
o_Settings->SERVER.IP[z] = cb_Server->itemText(z);
}
}
 
o_Settings->write_Settings();
 
// qDebug("Ende.");
}
/QMK-Groundstation/trunk/QMK-Scope/Dialogs/dlg_Main.h
28,7 → 28,6
#include <QTcpServer>
#include <QTcpSocket>
 
 
#include <qwt_plot_curve.h>
#include <qwt_plot_grid.h>
#include <qwt_legend.h>
41,13 → 40,6
 
#include "../Classes/cSettings.h"
 
#include "../../Global/Kopter.h"
#include "../../Global/Class_Input/Input.h"
#include "../../Global/Class_Input/Input_TCP.h"
#include "../../Global/Class_Input/Input_TTY.h"
#include "../../Global/Class_HandlerIP/HandlerIP.h"
#include "../../Global/Class_HandlerMK/HandlerMK.h"
 
class dlg_Main : public QMainWindow, public Ui::dlg_Main_UI
{
Q_OBJECT
57,9 → 49,6
~dlg_Main();
 
private:
// Input Device.
Input *o_Input;
 
// Settings-Object
cSettings *o_Settings;
 
69,12 → 58,12
QFont Font_1;
 
// Info über die Hardware
s_Hardware VersionInfo;
s_Hardware gs_Version;
 
// Datenspeicher zum Senden.
char c_Data[150];
 
bool get_Analoglabels;
s_MK_Debug gs_Debug;
 
int Debug_Data[MAX_DebugData];
 
94,14 → 83,13
void update_Plotter();
void config_Plotter();
 
// Einkommende Datenpackete zerlegen.
void parse_MK_Data(QString t_Data);
void parse_IP_Data(QString t_Data);
 
private slots:
void slot_ac_About();
 
void slot_ac_Connect();
void slot_ConnectionStatus(int li_Status);
void slot_MK_Version(s_Hardware ls_Version);
void slot_MK_Debug(s_MK_Debug ls_Debug);
void slot_MK_DebugLabels(s_MK_DebugLabels MK_DebugLabels);
 
void slot_ac_Plotter();
void slot_ac_Debug();
111,18 → 99,8
 
void slot_btn_ChoseOK();
 
void slot_rb_Hardware();
 
void slot_Plotter_Start();
void slot_Plotter_Scroll(int Position);
 
void slot_sb_Intervall(int t_Intervall);
 
// Einkommende Datenpackete.
void slot_Input_Data(QString t_Data);
 
void slot_Input_Disconnected(int Error);
void slot_Input_Connected();
};
 
#endif // DLG_MAIN_H
/QMK-Groundstation/trunk/QMK-Scope/Dialogs/dlg_Main.ui
6,8 → 6,8
<rect>
<x>0</x>
<y>0</y>
<width>726</width>
<height>343</height>
<width>719</width>
<height>314</height>
</rect>
</property>
<property name="windowTitle">
25,150 → 25,6
<property name="spacing">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>4</number>
</property>
<property name="margin">
<number>4</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Server:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="cb_Server">
<property name="minimumSize">
<size>
<width>120</width>
<height>0</height>
</size>
</property>
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>PW:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="le_Password">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>120</width>
<height>0</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rb_FC">
<property name="text">
<string>FC</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rb_NC">
<property name="text">
<string>NC</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rb_MK3MAG">
<property name="text">
<string>MK3MAG</string>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Intervall:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="sb_Intervall">
<property name="minimumSize">
<size>
<width>80</width>
<height>0</height>
</size>
</property>
<property name="suffix">
<string> ms</string>
</property>
<property name="maximum">
<number>5000</number>
</property>
<property name="singleStep">
<number>50</number>
</property>
<property name="value">
<number>500</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>35</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QStackedWidget" name="wg_Pages">
<property name="currentIndex">
317,6 → 173,9
</widget>
</widget>
</item>
<item row="0" column="0">
<widget class="wgt_Connection" name="wg_Connection" native="true"/>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menuBar">
324,7 → 183,7
<rect>
<x>0</x>
<y>0</y>
<width>726</width>
<width>719</width>
<height>21</height>
</rect>
</property>
352,6 → 211,12
<addaction name="menu_Help"/>
</widget>
<widget class="QToolBar" name="ToolBar">
<property name="minimumSize">
<size>
<width>80</width>
<height>0</height>
</size>
</property>
<property name="windowTitle">
<string>toolBar</string>
</property>
466,6 → 331,12
<extends>QFrame</extends>
<header>qwt_plot.h</header>
</customwidget>
<customwidget>
<class>wgt_Connection</class>
<extends>QWidget</extends>
<header>wgt_Connection.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="../QMK-Scope.qrc"/>
/QMK-Groundstation/trunk/QMK-Scope/QMK-Scope.pro
2,8 → 2,7
# Project created by QtCreator 2009-07-20T20:04:00
# -------------------------------------------------
 
DEFINES += _TTY_POSIX_
include(../Global/Class_SerialPort.pri)
include(../Global/Widget_Connection.pri)
 
QT += network
TARGET = QMK-Scope
42,21 → 41,10
RESOURCES += QMK-Scope.qrc
 
SOURCES += main.cpp \
../Global/Class_Input/Input.cpp \
../Global/Class_Input/Input_TCP.cpp \
../Global/Class_Input/Input_TTY.cpp \
../Global/Class_HandlerMK/HandlerMK.cpp \
../Global/Class_HandlerIP/HandlerIP.cpp \
Dialogs/dlg_Main.cpp \
Classes/cSettings.cpp
HEADERS += Defines.h \
../Global/Kopter.h \
../Global/Global.h \
../Global/Class_Input/Input.h \
../Global/Class_Input/Input_TCP.h \
../Global/Class_Input/Input_TTY.h \
../Global/Class_HandlerMK/HandlerMK.h \
../Global/Class_HandlerIP/HandlerIP.h \
Dialogs/dlg_Main.h \
Classes/cSettings.h \
TypeDefs.h