Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 750 → Rev 749

/QMK-Groundstation/trunk/Global/Widget_Connection/wgt_Connection.h
File deleted
/QMK-Groundstation/trunk/Global/Widget_Connection/wgt_Connection.ui
File deleted
/QMK-Groundstation/trunk/Global/Widget_Connection/wgt_Connection.cpp
File deleted
/QMK-Groundstation/trunk/Global/Widget_Connection.pri
File deleted
/QMK-Groundstation/trunk/Global/Kopter.h
24,9 → 24,9
#include <stdint.h>
 
#ifdef _BETA_
static const QString QA_HWVERSION = "FlightCtrl v0.78f & NaviCtrl v0.18c";
static const QString QA_HWVERSION = "FlightCtrl v0.76e & NaviCtrl v0.17e";
#else
static const QString QA_HWVERSION = "FlightCtrl v0.78f & NaviCtrl v0.18c";
static const QString QA_HWVERSION = "FlightCtrl v0.76e & NaviCtrl v0.17e";
#endif
 
// Datenfeld-ID's
/QMK-Groundstation/trunk/Global/MK_Datatypes.h
22,18 → 22,18
#include <stdint.h>
 
#ifdef _BETA_
static const int MK_VERSION_SETTINGS = 82; // wird angepasst, wenn sich die EEPROM-Daten ge�ndert haben
static const int MK_VERSION_SETTINGS = 80; // wird angepasst, wenn sich die EEPROM-Daten ge�ndert haben
#else
static const int MK_VERSION_SETTINGS = 82; // wird angepasst, wenn sich die EEPROM-Daten ge�ndert haben
static const int MK_VERSION_SETTINGS = 80; // wird angepasst, wenn sich die EEPROM-Daten ge�ndert haben
#endif
 
static const int MK_VERSION_NAVI = 3; // wird angepasst, wenn sich die Navi-Daten ge�ndert haben
static const int MK_VERSION_NAVI = 2; // wird angepasst, wenn sich die Mixer-Daten ge�ndert haben
 
static const int MK_VERSION_MIXER = 1; // wird angepasst, wenn sich die Mixer-Daten ge�ndert haben
static const int MK_MAX_MOTOR = 16; // Maximale Anzahl der Motoren im Mixer
 
// Version des Seriellen Protokoll
static const int VERSION_SERIAL_MAJOR = 11;
static const int VERSION_SERIAL_MAJOR = 10;
static const int VERSION_SERIAL_MINOR = 0;
 
// Basis-Addressen der verschiedenen Hardware
71,26 → 71,6
#define CFG2_VARIO_BEEP 0x02
#define CFG_SENSITIVE_RC 0x04
 
struct s_MK_Debug
{
unsigned char Digital[2];
int16_t Analog[32]; // Debugwerte
};
 
struct s_MK_DebugLabels
{
int Position;
QString Text;
};
 
//typedef int16_t s_MK_PPM_Data[26];
 
struct s_MK_PPM_Data
{
int16_t Data[26];
};
 
 
struct s_MK_Settings
{
// Die ersten beiden Bytes nicht an den MK senden.
97,7 → 77,7
unsigned char Index;
unsigned char Version;
 
unsigned char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3
unsigned char GlobalConfig; // 0x01=H�henregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv
unsigned char Hoehe_MinGas; // Wert : 0-100
unsigned char Luftdruck_D; // Wert : 0-250
118,12 → 98,12
unsigned char Gyro_P; // Wert : 10-250
unsigned char Gyro_I; // Wert : 0-250
unsigned char Gyro_D; // Wert : 0-250
unsigned char Gyro_Gier_P; // Wert : 10-250
unsigned char Gyro_Gier_I; // Wert : 0-250
unsigned char Gyro_Gier_P; // Wert : 10-250
unsigned char Gyro_Gier_I; // Wert : 0-250
unsigned char UnterspannungsWarnung; // Wert : 0-250
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Emp�ngsverlust
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen
unsigned char Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D
unsigned char UfoAusrichtung; // X oder + Formation
unsigned char I_Faktor; // Wert : 0-250
unsigned char UserParam1; // Wert : 0-250
unsigned char UserParam2; // Wert : 0-250
139,10 → 119,7
unsigned char ServoRollMin; // Wert : 0-250
unsigned char ServoRollMax; // Wert : 0-250
//---
unsigned char ServoNickRefresh; // Speed of the Servo
unsigned char Servo3; // Value or mapping of the Servo Output
unsigned char Servo4; // Value or mapping of the Servo Output
unsigned char Servo5; // Value or mapping of the Servo Output
unsigned char ServoNickRefresh; //
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas w�hrend Looping
unsigned char LoopThreshold; // Wert: 0-250 Schwelle f�r Stickausschlag
unsigned char LoopHysterese; // Wert: 0-250 Hysterese f�r Stickausschlag
190,7 → 167,6
unsigned char ServoCompInvert; // // 0x01 = Nick, 0x02 = Roll 0 oder 1 // WICHTIG!!! am Ende lassen
unsigned char ExtraConfig; // bitcodiert
char Name[12];
 
};
 
struct s_MK_Mixer
261,9 → 237,6
uint8_t RC_RSSI; // Receiver signal strength (since version 2 added)
int16_t SetpointAltitude; // setpoint for altitude
uint8_t Gas; // for future use
uint16_t Current; // actual current in 0.1A steps
uint16_t UsedCapacity; // used capacity in mAh
 
} __attribute__((packed)) s_MK_NaviData;
 
typedef struct
/QMK-Groundstation/trunk/QMK-Communicator/Classes/cSettings.cpp
42,13 → 42,6
SERVER.Password = Setting.value("Password", QString("")).toString();
Setting.endGroup();
 
Setting.beginGroup("LIVEDATA");
LIVEDATA.Server = Setting.value("Server", QString("")).toString();
LIVEDATA.Port = Setting.value("Port", QString("64410")).toString();
LIVEDATA.User = Setting.value("User", QString("")).toString();
LIVEDATA.Password = Setting.value("Password", QString("")).toString();
Setting.endGroup();
 
Setting.beginGroup("CLIENT");
CLIENT.TTY_MAX = Setting.value("TTY_MAX", 1).toInt();
CLIENT.TTY_ID = Setting.value("TTY_ID", 0).toInt();
72,16 → 65,6
GUI.Size = Setting.value("Size", QSize(500, 350)).toSize();
GUI.Point = Setting.value("Point",QPoint(1,1)).toPoint();
Setting.endGroup();
 
Setting.beginGroup("TERMINAL");
TERMINAL.isMax = Setting.value("IsMax",false).toBool();
TERMINAL.Size = Setting.value("Size", QSize(500, 350)).toSize();
TERMINAL.Point = Setting.value("Point",QPoint(1,1)).toPoint();
DATA.Data = Setting.value("Data",false).toBool();
DATA.Info = Setting.value("Info",false).toBool();
DATA.Send = Setting.value("Send",false).toBool();
DATA.TCP = Setting.value("TCP",false).toBool();
Setting.endGroup();
}
 
void cSettings::write_Settings()
98,16 → 81,9
Setting.setValue("Password", SERVER.Password);
Setting.endGroup();
 
Setting.beginGroup("LIVEDATA");
Setting.setValue("Server", LIVEDATA.Server);
Setting.setValue("Port", LIVEDATA.Port);
Setting.setValue("User", LIVEDATA.User);
Setting.setValue("Password", LIVEDATA.Password);
Setting.endGroup();
 
Setting.beginGroup("CLIENT");
Setting.setValue("TTY_MAX", CLIENT.TTY_MAX);
Setting.setValue("TTY_ID", CLIENT.TTY_ID);
Setting.setValue("TTY_MAX", CLIENT.TTY_MAX);
Setting.setValue("TTY_ID", CLIENT.TTY_ID);
Setting.setValue("Password", CLIENT.TCP_Password);
 
for (int z = 0; z < CLIENT.TTY_MAX; z++)
126,17 → 102,8
 
Setting.beginGroup("GUI");
Setting.setValue("IsMax", GUI.isMax);
Setting.setValue("Size", GUI.Size);
Setting.setValue("Size", GUI.Size);
Setting.setValue("Point", GUI.Point);
Setting.endGroup();
 
Setting.beginGroup("TERMINAL");
Setting.setValue("IsMax", TERMINAL.isMax);
Setting.setValue("Size", TERMINAL.Size);
Setting.setValue("Point", TERMINAL.Point);
Setting.setValue("Data", DATA.Data);
Setting.setValue("Send", DATA.Send);
Setting.setValue("Info", DATA.Info);
Setting.setValue("TCP", DATA.TCP);
Setting.endGroup();
}
/QMK-Groundstation/trunk/QMK-Communicator/Classes/cSettings.h
32,14 → 32,6
QString Password;
};
 
struct set_LIVEDATA
{
QString Server;
QString Port;
QString User;
QString Password;
};
 
struct set_CLIENT
{
QString TTY_DEVICES[10];
59,14 → 51,6
QPoint Point;
};
 
struct set_DATA
{
bool Send;
bool Data;
bool Info;
bool TCP;
};
 
class cSettings
{
public:
76,12 → 60,9
 
int Settings_ID;
 
set_DATA DATA;
set_GUI GUI;
set_GUI TERMINAL;
set_SERVER SERVER;
set_CLIENT CLIENT;
set_LIVEDATA LIVEDATA;
};
 
#endif // CSETTINGS_H
/QMK-Groundstation/trunk/QMK-Communicator/Defines.h
24,7 → 24,7
#include "../Global/Kopter.h"
 
static const QString QA_NAME = "QMK-Communicator";
static const QString QA_VERSION_NR = "1.2.0";
static const QString QA_VERSION_NR = "1.1.5";
 
#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 = "28.03.2010";
static const QString QA_YEAR = "2008-2010";
static const QString QA_DATE = "02.12.2009";
static const QString QA_YEAR = "2008-2009";
 
static const QString QA_ABOUT =
"<HTML>"
52,6 → 52,4
static const int DEV_IP_PORT = 64400;
static const int DEV_IP_MAX = 21;
 
static const QString Base64Hash = "IypzZUNyRXQhQC0qJQ==";
 
#endif // DEFINES_H
/QMK-Groundstation/trunk/QMK-Communicator/Dialogs/dlg_Main.cpp
57,14 → 57,6
resize(o_Settings->GUI.Size);
move(o_Settings->GUI.Point);
 
f_Terminal->resize(o_Settings->TERMINAL.Size);
f_Terminal->move(o_Settings->TERMINAL.Point);
 
f_Terminal->cb_Data->setChecked(o_Settings->DATA.Data);
f_Terminal->cb_Info->setChecked(o_Settings->DATA.Info);
f_Terminal->cb_Send->setChecked(o_Settings->DATA.Send);
f_Terminal->cb_TCP->setChecked(o_Settings->DATA.TCP);
 
if (o_Settings->GUI.isMax)
{
showMaximized();
104,8 → 96,6
// Password für IP-Verbindung.
le_Password->setText(o_Settings->CLIENT.TCP_Password);
 
btn_Debug->setVisible(false);
btn_ConnectServer->setVisible(false);
}
 
// Signale mit Slots verbinden
124,12 → 114,6
connect(btn_Terminal, SIGNAL(clicked()), this, SLOT(slot_btn_Terminal()));
connect(btn_ConnectServer, SIGNAL(clicked()), this, SLOT(slot_btn_ConnectServer()));
 
connect(btn_Debug, SIGNAL(clicked()), this, SLOT(slot_btn_Debug()));
 
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()));
 
// About QMK-Kernel & About-QT Dialog einfügen
connect(ac_About, SIGNAL(triggered()), this, SLOT(slot_ac_About()));
connect(ac_Server, SIGNAL(triggered()), this, SLOT(slot_ac_Server()));
167,7 → 151,7
////////////////////////////
void dlg_Main::parse_Input_Data(QString t_Data)
{
unsigned char OutData[180];
unsigned char OutData[150];
char *InData = t_Data.toLatin1().data();
 
if (HandlerMK::Decode_64(InData, t_Data.length(), OutData) != 0)
354,7 → 338,7
}
}
 
// IP-Output-Daten verarbeiten. (Live-Data)
// IP-Input-Daten verarbeiten.
void dlg_Main::parse_TCP_Output_Data(QString t_Data)
{
QStringList Data;
388,11 → 372,11
QString s_MD5PW;
QByteArray a_MD5PW;
 
a_MD5PW = QCryptographicHash::hash(QString(QByteArray::fromBase64(Base64Hash.toLatin1()) + o_Settings->LIVEDATA.Password).toAscii(),QCryptographicHash::Md5);
a_MD5PW = QCryptographicHash::hash(QString("madlen").toAscii(),QCryptographicHash::Md5);
 
s_MD5PW = QString(a_MD5PW.toHex().data());
 
o_Output->send_Data(HandlerIP::make_Frame(ID_COMMUNICATOR, 104, o_Settings->LIVEDATA.User + ";" + s_MD5PW));
o_Output->send_Data(HandlerIP::make_Frame(ID_COMMUNICATOR, 104, "keyoz@c64-power.net;" + s_MD5PW));
}
break;
}
521,8 → 505,8
{
Con_Output = Con_Server[0];
 
s_Output.Main = o_Settings->LIVEDATA.Server;//Server[0];
s_Output.Sub = o_Settings->LIVEDATA.Port;//Server[1];
s_Output.Main = "127.0.0.1";//Server[0];
s_Output.Sub = "64410";//Server[1];
 
o_Output = new Input_TCP();
o_Output->Init();
549,41 → 533,11
}
}
 
void dlg_Main::slot_btn_Debug()
void dlg_Main::slot_Output_Disconnected(int Error)
{
if (o_Output->IsOpen())
{
o_Output->send_Data("#cO=M======wWMrSCuD==A===============================================A=GM======[M=====@==@|p==O=CM=========kN");
}
}
// cb_Server->setEnabled(true);
// le_Password->setEnabled(true);
 
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);
}
 
void dlg_Main::slot_Output_Disconnected(int Error)
{
disconnect(o_Output, SIGNAL(sig_NewData(QString)), 0, 0);
if (o_Output->Mode() == TCP)
{
626,6 → 580,10
void dlg_Main::slot_Output_Connected()
{
connect(o_Output, SIGNAL(sig_NewData(QString)), this, SLOT(slot_Output_Data(QString)));
 
// o_Output->send_Data(HandlerIP::make_Frame(ID_COMMUNICATOR, 101, QA_NAME + " " + QA_VERSION));
// o_Input->send_Data(HandlerMK::make_Frame('v', 0, c_Data, 0).toLatin1().data(), DATA_VERSION);
// btn_Connect->setText(tr("Trennen"));
}
 
void dlg_Main::slot_Output_Data(QString t_Data)
635,7 → 593,7
}
else if (o_Output->Mode() == TCP)
{
show_Terminal(6, "IP:" + t_Data);
show_Terminal(6, t_Data);
parse_TCP_Output_Data(t_Data);
}
}
896,11 → 854,9
ID = ID;
 
// QString t_Data = QString(TCP_Socket->readLine(TCP_Socket->bytesAvailable())).remove(QChar('\n'));
QString t_Data = s_Buffer + QString(Socket->readAll()).remove(QChar('\n'));
QString t_Data = s_Buffer + QString(Socket->readAll());
s_Buffer = "";
 
t_Data = t_Data.replace('\r', "\r\n");
 
QStringList l_Data = t_Data.split('\n');
 
for (int z = 0; z < l_Data.count(); z++)
923,11 → 879,9
}
}
else
{ if (l_Data[z].length() > 1)
{
qDebug(QString("Ohne Ende: " + l_Data[z]).toLatin1().data());
s_Buffer = s_Buffer + l_Data[z];
}
{
qDebug("Ohne Ende");
s_Buffer = s_Buffer + l_Data[z];
}
 
}
987,10 → 941,6
o_Settings->GUI.Size = size();
o_Settings->GUI.Point = pos();
 
// o_Settings->GUI.isMax = isMaximized();
o_Settings->TERMINAL.Size = f_Terminal->size();
o_Settings->TERMINAL.Point = f_Terminal->pos();
 
o_Settings->CLIENT.TTY_MAX = cb_Device->count();
o_Settings->CLIENT.TTY_ID = cb_Device->currentIndex();
 
1013,11 → 963,6
}
}
 
o_Settings->DATA.Data = f_Terminal->cb_Data->isChecked();
o_Settings->DATA.Info = f_Terminal->cb_Info->isChecked();
o_Settings->DATA.Send = f_Terminal->cb_Send->isChecked();
o_Settings->DATA.TCP = f_Terminal->cb_TCP->isChecked();
 
o_Settings->write_Settings();
 
// qDebug("Ende.");
/QMK-Groundstation/trunk/QMK-Communicator/Dialogs/dlg_Main.h
130,10 → 130,7
 
void slot_btn_Terminal();
void slot_btn_ConnectServer();
void slot_btn_Debug();
 
void slot_rb_Hardware();
 
// Einkommende Datenpackete.
void slot_Input_Data(QString t_Data);
void slot_Input_Disconnected(int Error);
/QMK-Groundstation/trunk/QMK-Communicator/Dialogs/dlg_Main.ui
6,7 → 6,7
<rect>
<x>0</x>
<y>0</y>
<width>519</width>
<width>447</width>
<height>372</height>
</rect>
</property>
139,6 → 139,9
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QRadioButton" name="rb_FC">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>FlightCtrl</string>
</property>
146,6 → 149,9
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="rb_NC">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>NaviCtrl</string>
</property>
153,6 → 159,9
</item>
<item row="0" column="2">
<widget class="QRadioButton" name="rb_MK3MAG">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>MK3MAG</string>
</property>
272,18 → 281,6
</item>
<item row="0" column="1" rowspan="2">
<widget class="QGroupBox" name="groupBox_3">
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>150</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>Clients</string>
</property>
423,13 → 420,6
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QPushButton" name="btn_Debug">
<property name="text">
<string>Debug-Button</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
440,7 → 430,7
<rect>
<x>0</x>
<y>0</y>
<width>519</width>
<width>447</width>
<height>21</height>
</rect>
</property>
448,10 → 438,14
<property name="title">
<string>Programm</string>
</property>
<addaction name="ac_Server"/>
<addaction name="separator"/>
<addaction name="ac_Quit"/>
</widget>
<widget class="QMenu" name="menu_Preferences">
<property name="title">
<string>Einstellungen</string>
</property>
<addaction name="ac_Server"/>
</widget>
<widget class="QMenu" name="menu_Help">
<property name="title">
<string>Hilfe</string>
459,6 → 453,7
<addaction name="ac_About"/>
</widget>
<addaction name="menu_Program"/>
<addaction name="menu_Preferences"/>
<addaction name="menu_Help"/>
</widget>
<action name="ac_Quit">
485,7 → 480,7
<normaloff>:/Icon/Global/Images/Icons/QMK-Communicator.png</normaloff>:/Icon/Global/Images/Icons/QMK-Communicator.png</iconset>
</property>
<property name="text">
<string>Einstellungen</string>
<string>Server</string>
</property>
</action>
</widget>
/QMK-Groundstation/trunk/QMK-Communicator/Dialogs/dlg_Preferences.cpp
30,11 → 30,6
le_TCP_Port->setText(QString("%1").arg(o_Settings->SERVER.TCP_PORT));
le_UDP_Port->setText(QString("%1").arg(o_Settings->SERVER.UDP_PORT));
le_Password->setText(o_Settings->SERVER.Password);
 
le_LiveServer->setText(o_Settings->LIVEDATA.Server);
le_LivePort->setText(o_Settings->LIVEDATA.Port);
le_LiveUser->setText(o_Settings->LIVEDATA.User);
le_LivePassword->setText(o_Settings->LIVEDATA.Password);
}
 
cSettings *dlg_Preferences::get_Settings()
43,10 → 38,5
o_Settings->SERVER.TCP_PORT = le_TCP_Port->text().toInt();
o_Settings->SERVER.UDP_PORT = le_UDP_Port->text().toInt();
 
o_Settings->LIVEDATA.Server = le_LiveServer->text();
o_Settings->LIVEDATA.Port = le_LivePort->text();
o_Settings->LIVEDATA.User = le_LiveUser->text();
o_Settings->LIVEDATA.Password = le_LivePassword->text();
 
return o_Settings;
}
/QMK-Groundstation/trunk/QMK-Communicator/Dialogs/dlg_Preferences.ui
6,202 → 6,98
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>192</height>
<width>251</width>
<height>160</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>400</width>
<height>0</height>
</size>
</property>
<property name="windowTitle">
<string>Server-Einstellungen</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Communicator</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QCheckBox" name="checkBox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>TCP</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label">
<property name="text">
<string>Port:</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLineEdit" name="le_TCP_Port"/>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="checkBox_2">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>UDP</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_2">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Port:</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLineEdit" name="le_UDP_Port">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="2" column="0" colspan="3">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Password:</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLineEdit" name="le_Password">
<property name="text">
<string>qwertz</string>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
<item row="4" column="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Live-Daten senden</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Server:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="le_LiveServer">
<property name="text">
<string>127.0.0.1</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Login:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="le_LiveUser">
<property name="text">
<string>KeyOz</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Password:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="le_LivePassword">
<property name="text">
<string>qwertz</string>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Port:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="le_LivePort">
<property name="text">
<string>64410</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string/>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QCheckBox" name="checkBox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>TCP</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label">
<property name="text">
<string>Port:</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLineEdit" name="le_TCP_Port"/>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="checkBox_2">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>UDP</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_2">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Port:</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLineEdit" name="le_UDP_Port">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="2" column="0" colspan="3">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Password:</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLineEdit" name="le_Password">
<property name="text">
<string>qwertz</string>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
213,17 → 109,6
</item>
</layout>
</widget>
<tabstops>
<tabstop>checkBox</tabstop>
<tabstop>le_TCP_Port</tabstop>
<tabstop>le_Password</tabstop>
<tabstop>le_LiveServer</tabstop>
<tabstop>le_LiveUser</tabstop>
<tabstop>le_LivePassword</tabstop>
<tabstop>buttonBox</tabstop>
<tabstop>checkBox_2</tabstop>
<tabstop>le_UDP_Port</tabstop>
</tabstops>
<resources/>
<connections>
<connection>
/QMK-Groundstation/trunk/QMK-Maps/Classes/cSettings.cpp
43,6 → 43,21
GUI.Toolbar = Setting.value("Toolbar",true).toBool();
Setting.endGroup();
 
Setting.beginGroup("Data");
DATA.Intervall = Setting.value("Intervall", 500).toInt();
Setting.endGroup();
 
Setting.beginGroup("SERVER");
SERVER.Password = Setting.value("Password", QString("")).toString();
SERVER.IP_MAX = Setting.value("IP_MAX", 1).toInt();
SERVER.IP_ID = Setting.value("IP_ID", 0).toInt();
 
for (int z = 0; z < SERVER.IP_MAX; z++)
{
SERVER.IP[z] = Setting.value("IP_" + QString("%1").arg(z), QString("127.0.0.1:64400")).toString();
}
Setting.endGroup();
 
Setting.beginGroup("CONFIG");
CONFIG.cb_CenterPos = Setting.value("cb_CenterPos",true).toBool();
CONFIG.cb_ShowRoute = Setting.value("cb_ShowRoute",true).toBool();
72,6 → 87,21
Setting.setValue("Toolbar", GUI.Toolbar);
Setting.endGroup();
 
Setting.beginGroup("DATA");
Setting.setValue("Intervall", DATA.Intervall);
Setting.endGroup();
 
Setting.beginGroup("SERVER");
Setting.setValue("Password", SERVER.Password);
Setting.setValue("IP_MAX", SERVER.IP_MAX);
Setting.setValue("IP_ID", SERVER.IP_ID);
 
for (int z = 0; z < SERVER.IP_MAX; z++)
{
Setting.setValue("IP_" + QString("%1").arg(z), SERVER.IP[z]);
}
Setting.endGroup();
 
Setting.beginGroup("CONFIG");
Setting.setValue("cb_CenterPos", CONFIG.cb_CenterPos);
Setting.setValue("cb_ShowRoute", CONFIG.cb_ShowRoute);
/QMK-Groundstation/trunk/QMK-Maps/Classes/cSettings.h
33,6 → 33,19
bool Toolbar;
};
 
struct set_DATA
{
int Intervall;
};
 
struct set_SERVER
{
int IP_MAX;
int IP_ID;
QString IP[10];
QString Password;
};
 
struct set_CONFIG
{
bool cb_Goto;
58,6 → 71,8
int Settings_ID;
 
set_GUI GUI;
set_DATA DATA;
set_SERVER SERVER;
set_CONFIG CONFIG;
set_NAVI NAVI;
};
/QMK-Groundstation/trunk/QMK-Maps/Defines.h
24,7 → 24,7
#include "../Global/Kopter.h"
 
static const QString QA_NAME = "QMK-Maps";
static const QString QA_VERSION_NR = "1.2.0";
static const QString QA_VERSION_NR = "1.1.4";
 
#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 = "28.03.2010";
static const QString QA_YEAR = "2008-2010";
static const QString QA_DATE = "30.11.2009";
static const QString QA_YEAR = "2008-2009";
 
static const QString QA_ABOUT =
"<HTML>"
/QMK-Groundstation/trunk/QMK-Maps/Dialogs/dlg_Main.cpp
32,7 → 32,7
 
o_Settings = new cSettings();
 
wg_Connection->set_Client(ID_MAPS, QA_NAME + " " + QA_VERSION, DataFields);
o_Input = new Input();
 
o_Map = new MapControl(QSize(25,25));
l_RouteWP = new LineString();
54,14 → 54,26
showMaximized();
}
 
wg_Connection->set_SelectVisible(false);
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]);
}
}
 
cb_Server->setCurrentIndex(o_Settings->SERVER.IP_ID);
 
le_Password->setText(o_Settings->SERVER.Password);
 
sb_Intervall->setValue(o_Settings->DATA.Intervall);
 
cb_CenterPos->setChecked(o_Settings->CONFIG.cb_CenterPos);
cb_ShowRoute->setChecked(o_Settings->CONFIG.cb_ShowRoute);
cb_ShowWPs->setChecked(o_Settings->CONFIG.cb_ShowWPs);
cb_Goto->setChecked(o_Settings->CONFIG.cb_Goto);
 
tb_More->addWidget(cb_Maps);
// tb_More->addWidget(cb_Maps);
cb_Maps->setVisible(false);
 
ac_Toolbar->setChecked(o_Settings->GUI.Toolbar);
68,7 → 80,7
 
if (ac_Toolbar->isChecked())
{
wg_Connection->set_ButtonVisible(false);
btn_Connect->setVisible(false);
}
else
{
80,9 → 92,11
// Signale mit Slots verbinden
void dlg_Main::init_Connections()
{
connect(ac_Connect, SIGNAL(triggered()), wg_Connection, SLOT(slot_btn_Connect()));
connect(ac_Connect, SIGNAL(triggered()), this, SLOT(slot_ac_Connect()));
connect(ac_Toolbar, SIGNAL(triggered()), this, SLOT(slot_ac_Toolbar()));
 
connect(sb_Intervall, SIGNAL(valueChanged(int)), this, SLOT(slot_sb_Intervall(int)));
 
connect(sl_Zoom, SIGNAL(valueChanged(int)), this, SLOT(slot_Zoom(int)));
connect(cb_Maps, SIGNAL(currentIndexChanged(int)), this, SLOT(slot_ChangeMap(int)));
 
102,11 → 116,6
// 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_NaviData(s_MK_NaviData)), this, SLOT(slot_MK_NaviData(s_MK_NaviData)));
connect(wg_Connection, SIGNAL(sig_MK_WayPoint(int)), this, SLOT(slot_MK_WayPoint(int)));
}
 
void dlg_Main::init_Directorys()
144,6 → 153,117
}
}
 
void dlg_Main::parse_IP_Data(QString t_Data)
{
QStringList Data;
Data = t_Data.split(":");
 
if (Data.count() > 1)
{
int CMD = Data[2].toInt();
 
switch(CMD)
{
case 101 :
{
o_Input->send_Data(HandlerIP::make_Frame(ID_MAPS, 101, QA_NAME + " " + QA_VERSION));
}
break;
case 502 :
{
switch (Data[3].toInt())
{
case 105 :
{
QString s_MD5PW;
QByteArray a_MD5PW;
 
a_MD5PW = QCryptographicHash::hash(le_Password->text().toAscii(),QCryptographicHash::Md5);
 
s_MD5PW = QString(a_MD5PW.toHex().data());
 
o_Input->send_Data(HandlerIP::make_Frame(ID_MAPS, 105, s_MD5PW));
}
break;
case 106 :
{
o_Input->send_Data(HandlerIP::make_Frame(ID_MAPS, 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;
}
}
}
 
// Eingangsdaten verarbeiten
void dlg_Main::parse_MK_Data(QString t_Data)
{
unsigned char OutData[150];
char *InData = t_Data.toLatin1().data();
 
if (HandlerMK::Decode_64(InData, t_Data.length(), OutData) != 0)
{
 
switch(InData[2])
{
case 'V' : // 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_NC)
{
c_Data[0] = sb_Intervall->value() / 10;
o_Input->send_Data(HandlerMK::make_Frame('o', ADDRESS_ALL, c_Data, 1).toLatin1().data());
}
else // TODO: Befehl wenden zum Wechseln auf Navi.
{
}
}
break;
case 'O' : // Navi-OSD-Data
{
if (InData[1] - 'a' == ADDRESS_NC)
{
s_MK_NaviData MK_NaviData;
 
memcpy((unsigned char *)&MK_NaviData, (unsigned char *)&OutData, sizeof(MK_NaviData));
if (MK_NaviData.Version == MK_VERSION_NAVI)
{
show_Data(MK_NaviData);
add_Position(MK_NaviData);
}
}
}
break;
case 'W' : // WayPoints
{
o_Input->stop_Resend(DATA_WRITE_WAYPOINT);
 
if (OutData[0] < l_WayPoints.count())
{
send_WayPoints(l_WayPoints, OutData[0] + 1);
}
}
break;
}
}
}
 
///////////////////////////////////////////////////////////////////
// QMK-Maps //
///////////////////////////////////////////////////////////////////
362,6 → 482,25
f_MKW->close();
}
 
void dlg_Main::show_Data(s_MK_NaviData t_NaviData)
{
QString Mode = "NC-Flags : ";
if (t_NaviData.NCFlags & 0x08) {le_Mode->setText(tr("Range Limit")); Mode += "R";}
if (t_NaviData.NCFlags & 0x10) {le_Mode->setText(tr("Serial Error")); Mode += "S";}
if (t_NaviData.NCFlags & 0x20) {le_Mode->setText(tr("Target reached")); Mode += "T";}
if (t_NaviData.NCFlags & 0x40) {le_Mode->setText(tr("Manual Control")); Mode += "M";}
if (t_NaviData.NCFlags & 0x01) {le_Mode->setText(tr("Free")); Mode += "F";}
if (t_NaviData.NCFlags & 0x02) {le_Mode->setText(tr("Position Hold")); Mode += "P";}
if (t_NaviData.NCFlags & 0x04) {le_Mode->setText(tr("Coming Home")); Mode += "C";}
 
//qDebug(Mode.toLatin1().data());
 
le_WP->setText(QString("%1/").arg(t_NaviData.WaypointIndex) + QString("%1").arg(t_NaviData.WaypointNumber));
le_WPTime->setText(QString("%1:").arg(t_NaviData.TargetHoldTime / 60) + (QString("%1").arg(t_NaviData.TargetHoldTime % 60)).rightJustified(2, '0'));
le_WPDist->setText(QString("%1m").arg(t_NaviData.TargetPositionDeviation.Distance / 10));
le_HomeDist->setText(QString("%1m").arg(t_NaviData.HomePositionDeviation.Distance / 10));
}
 
// Aktuelle MK-Position hinzufügen
void dlg_Main::add_Position(s_MK_NaviData t_NaviData)
{
438,7 → 577,7
s_WayPoint.reserve[3] = 0;
 
memcpy((unsigned char *)&c_Data, (unsigned char *)&s_WayPoint, sizeof(s_WayPoint));
wg_Connection->send_Data(HandlerMK::make_Frame('s', ADDRESS_NC, c_Data, sizeof(s_WayPoint)).toLatin1().data());
o_Input->send_Data(HandlerMK::make_Frame('s', ADDRESS_NC, c_Data, sizeof(s_WayPoint)).toLatin1().data());
}
else
{
457,7 → 596,7
s_WayPoint.Position.Status = INVALID;
 
memcpy((unsigned char *)&c_Data, (unsigned char *)&s_WayPoint, sizeof(s_WayPoint));
wg_Connection->send_Data(HandlerMK::make_Frame('w', ADDRESS_NC, c_Data, sizeof(s_WayPoint)).toLatin1().data(), DATA_WRITE_WAYPOINT);
o_Input->send_Data(HandlerMK::make_Frame('w', ADDRESS_NC, c_Data, sizeof(s_WayPoint)).toLatin1().data(), DATA_WRITE_WAYPOINT);
}
else
{
486,7 → 625,7
s_WayPoint.reserve[3] = 0; // reserve
 
memcpy((unsigned char *)&c_Data, (unsigned char *)&s_WayPoint, sizeof(s_WayPoint));
wg_Connection->send_Data(HandlerMK::make_Frame('w', ADDRESS_NC, c_Data, sizeof(s_WayPoint)).toLatin1().data(), DATA_WRITE_WAYPOINT);
o_Input->send_Data(HandlerMK::make_Frame('w', ADDRESS_NC, c_Data, sizeof(s_WayPoint)).toLatin1().data(), DATA_WRITE_WAYPOINT);
}
}
 
504,64 → 643,176
{
if (ac_Toolbar->isChecked())
{
wg_Connection->set_ButtonVisible(false);
btn_Connect->setVisible(false);
ToolBar->setVisible(true);
tb_More->setVisible(true);
}
else
{
wg_Connection->set_ButtonVisible(true);
btn_Connect->setVisible(true);
ToolBar->setVisible(false);
tb_More->setVisible(false);
}
}
 
void dlg_Main::slot_ConnectionStatus(int li_Status)
 
// Datenintervall geändert.
void dlg_Main::slot_sb_Intervall(int t_Intervall)
{
if (li_Status)
if (t_Intervall == 0)
{
ac_Connect->setChecked(true);
ac_Connect->setText(tr("Trennen"));
c_Data[0] = 0;
}
else
{
ac_Connect->setChecked(false);
c_Data[0] = t_Intervall / 10;
}
o_Input->send_Data(HandlerMK::make_Frame('o', ADDRESS_ALL, c_Data, 1).toLatin1().data());
}
 
// Verbindung zum Server auf f_Settings = new wdg_Settings( this );bauen
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);
 
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);
}
}
}
 
void dlg_Main::slot_MK_Version(s_Hardware ls_Version)
// Neue Daten empfangen.
void dlg_Main::slot_Input_Data(QString t_Data)
{
gs_Version = ls_Version;
setWindowTitle(QA_NAME + " " + QA_VERSION + " - " + ls_Version.Hardware + " " + ls_Version.Version);
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_MK_NaviData(s_MK_NaviData ps_MK_NaviData)
// Serververbindung beendet
void dlg_Main::slot_Input_Disconnected(int Error)
{
QString Mode = "NC-Flags : ";
if (ps_MK_NaviData.NCFlags & 0x08) {le_Mode->setText(tr("Range Limit")); Mode += "R";}
if (ps_MK_NaviData.NCFlags & 0x10) {le_Mode->setText(tr("Serial Error")); Mode += "S";}
if (ps_MK_NaviData.NCFlags & 0x20) {le_Mode->setText(tr("Target reached")); Mode += "T";}
if (ps_MK_NaviData.NCFlags & 0x40) {le_Mode->setText(tr("Manual Control")); Mode += "M";}
if (ps_MK_NaviData.NCFlags & 0x01) {le_Mode->setText(tr("Free")); Mode += "F";}
if (ps_MK_NaviData.NCFlags & 0x02) {le_Mode->setText(tr("Position Hold")); Mode += "P";}
if (ps_MK_NaviData.NCFlags & 0x04) {le_Mode->setText(tr("Coming Home")); Mode += "C";}
cb_Server->setEnabled(true);
le_Password->setEnabled(true);
 
le_WP->setText(QString("%1/").arg(ps_MK_NaviData.WaypointIndex) + QString("%1").arg(ps_MK_NaviData.WaypointNumber));
le_WPTime->setText(QString("%1:").arg(ps_MK_NaviData.TargetHoldTime / 60) + (QString("%1").arg(ps_MK_NaviData.TargetHoldTime % 60)).rightJustified(2, '0'));
le_WPDist->setText(QString("%1m").arg(ps_MK_NaviData.TargetPositionDeviation.Distance / 10));
le_HomeDist->setText(QString("%1m").arg(ps_MK_NaviData.HomePositionDeviation.Distance / 10));
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);
 
add_Position(ps_MK_NaviData);
}
ac_Connect->setChecked(false);
ac_Connect->setText(tr("Verbinden"));
btn_Connect->setChecked(false);
 
void dlg_Main::slot_MK_WayPoint(int pi_WayPointID)
{
if (pi_WayPointID < l_WayPoints.count())
switch (Error)
{
send_WayPoints(l_WayPoints, pi_WayPointID + 1);
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;
}
 
}
 
// Serververbindung hergestellt
void dlg_Main::slot_Input_Connected()
{
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);
ac_Connect->setText(tr("Trennen"));
}
 
///////////////////////////////////////////////////////////////////
// QMK-Maps //
///////////////////////////////////////////////////////////////////
892,6 → 1143,20
o_Settings->GUI.Point = pos();
o_Settings->GUI.Toolbar = ac_Toolbar->isChecked();
 
o_Settings->DATA.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->CONFIG.cb_CenterPos = cb_CenterPos->isChecked();
o_Settings->CONFIG.cb_ShowRoute = cb_ShowRoute->isChecked();
o_Settings->CONFIG.cb_ShowWPs = cb_ShowWPs->isChecked();
/QMK-Groundstation/trunk/QMK-Maps/Dialogs/dlg_Main.h
20,6 → 20,8
#define DLG_MAIN_H
 
#include <QtGui/QMainWindow>
//#include <QTcpServer>
//#include <QTcpSocket>
#include <QFile>
 
#include "ui_dlg_Main.h"
29,8 → 31,16
 
#include "../Classes/cSettings.h"
 
#include "../../Global/Kopter.h"
#include "../../Global/MK_Datatypes.h"
 
#include "../../Global/Class_QMapControl.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"
#include "../../Global/Class_HandlerKML/HandlerKML.h"
 
using namespace qmapcontrol;
45,9 → 55,11
void create_Map();
 
private:
// Input Device.
Input *o_Input;
 
// Info über die Hardware
s_Hardware gs_Version;
s_Hardware VersionInfo;
 
// Settings-Object
cSettings *o_Settings;
61,6 → 73,10
void init_Directorys();
s_Directorys s_Dir;
 
// Einkommende Datenpackete zerlegen.
void parse_MK_Data(QString t_Data);
void parse_IP_Data(QString t_Data);
 
// QMK-Maps
QFile *o_Record;
 
102,7 → 118,7
void save_WayPointsMKW(QString s_File);
 
void add_Position(s_MK_NaviData t_NaviData);
// void show_Data(s_MK_NaviData t_NaviData);
void show_Data(s_MK_NaviData t_NaviData);
void send_Target(Point *t_Target);
void send_WayPoints(QList<sWayPoint> l_WayPoints, int t_Pos = 0);
 
110,11 → 126,14
void slot_ac_About();
void slot_ac_Toolbar();
 
void slot_ConnectionStatus(int li_Status);
void slot_MK_Version(s_Hardware ls_Version);
void slot_MK_NaviData(s_MK_NaviData ps_MK_NaviData);
void slot_MK_WayPoint(int pi_WayPointID);
void slot_ac_Connect();
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();
 
// QMK-Maps
void slot_Zoom(int t_Zoom);
void slot_ChangeMap(int);
130,6 → 149,9
void slot_ac_LoadMapPic();
void slot_ac_Record();
 
// void slot_GotoTarget();
// void slot_Close();
 
void slot_ac_LoadWayPoints();
void slot_ac_SaveRoute();
 
/QMK-Groundstation/trunk/QMK-Maps/Dialogs/dlg_Main.ui
7,7 → 7,7
<x>0</x>
<y>0</y>
<width>711</width>
<height>336</height>
<height>404</height>
</rect>
</property>
<property name="windowTitle">
18,9 → 18,140
<normaloff>:/Icon/Global/Images/Icons/QMK-Maps.png</normaloff>:/Icon/Global/Images/Icons/QMK-Maps.png</iconset>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QGridLayout" name="gridLayout_5">
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="1" colspan="2">
<widget class="wgt_Connection" name="wg_Connection" native="true"/>
<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" stretch="0,0,0,0,0,0,0,0,0">
<property name="spacing">
<number>2</number>
</property>
<property name="margin">
<number>2</number>
</property>
<item>
<widget class="QToolButton" name="btn_Connect">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../QMK-Maps.qrc">
<normaloff>:/Actions/Global/Images/Actions/Connection-NO.png</normaloff>
<normalon>:/Actions/Global/Images/Actions/Connection-OK.png</normalon>:/Actions/Global/Images/Actions/Connection-NO.png</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<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_4">
<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="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="1">
<widget class="QFrame" name="frame_3">
353,7 → 484,7
</layout>
</widget>
</item>
<item row="3" column="0" rowspan="2" colspan="2">
<item row="3" column="0" colspan="2">
<spacer name="AAA2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
499,12 → 630,6
<addaction name="menu_Help"/>
</widget>
<widget class="QToolBar" name="ToolBar">
<property name="minimumSize">
<size>
<width>0</width>
<height>80</height>
</size>
</property>
<property name="windowTitle">
<string>toolBar</string>
</property>
651,14 → 776,6
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>
<customwidget>
<class>wgt_Connection</class>
<extends>QWidget</extends>
<header>wgt_Connection.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="../QMK-Maps.qrc"/>
</resources>
679,5 → 796,37
</hint>
</hints>
</connection>
<connection>
<sender>ac_Connect</sender>
<signal>triggered(bool)</signal>
<receiver>btn_Connect</receiver>
<slot>setChecked(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>133</x>
<y>51</y>
</hint>
</hints>
</connection>
<connection>
<sender>btn_Connect</sender>
<signal>clicked()</signal>
<receiver>ac_Connect</receiver>
<slot>trigger()</slot>
<hints>
<hint type="sourcelabel">
<x>133</x>
<y>51</y>
</hint>
<hint type="destinationlabel">
<x>-1</x>
<y>-1</y>
</hint>
</hints>
</connection>
</connections>
</ui>
/QMK-Groundstation/trunk/QMK-Maps/QMK-Maps.pro
2,8 → 2,9
# Project created by QtCreator 2009-07-20T20:04:00
# -------------------------------------------------
 
DEFINES += _TTY_POSIX_
include(../Global/Class_QMapControl.pri)
include(../Global/Widget_Connection.pri)
include(../Global/Class_SerialPort.pri)
 
QT += network \
xml
17,13 → 18,25
RCC_DIR = ../Binary/.build/QMK-Maps
RESOURCES += QMK-Maps.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 \
Dialogs/dlg_MapPos.cpp \
Classes/cSettings.cpp \
../Global/Class_HandlerKML/HandlerKML.cpp
HEADERS += Defines.h \
../Global/Kopter.h \
../Global/MK_Datatypes.h \
../Global/Global.h \
../Global/Class_QMapControl.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 \
Dialogs/dlg_MapPos.h \
Classes/cSettings.h \
/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,7 → 96,6
SERVER.IP[z] = Setting.value("IP_" + QString("%1").arg(z), QString("127.0.0.1:64400")).toString();
}
Setting.endGroup();
*/
}
 
void cSettings::write_Settings()
109,7 → 108,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");
117,7 → 116,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);
128,7 → 127,6
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.2.0";
static const QString QA_VERSION_NR = "1.1.4";
 
#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 = "28.03.2010";
static const QString QA_YEAR = "2008-2010";
static const QString QA_DATE = "30.11.2009";
static const QString QA_YEAR = "2008-2009";
 
static const QString QA_ABOUT =
"<HTML>"
/QMK-Groundstation/trunk/QMK-Scope/Dialogs/dlg_Main.cpp
27,12 → 27,11
{
setupUi(this);
 
 
o_Settings = new cSettings();
 
o_Settings->read_DebugLabels(0);
 
wg_Connection->set_Client(ID_SCOPE, QA_NAME + " " + QA_VERSION, DataFields);
o_Input = new Input();
 
init_GUI();
init_Connections();
52,9 → 51,20
showMaximized();
}
 
wg_Connection->set_SelectVisible(false);
wg_Connection->set_ButtonVisible(false);
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]);
}
}
 
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);
88,8 → 98,9
// Signale mit Slots verbinden
void dlg_Main::init_Connections()
{
connect(ac_Connect, SIGNAL(triggered()), wg_Connection, SLOT(slot_btn_Connect()));
connect(sb_Intervall, SIGNAL(valueChanged(int)), this, SLOT(slot_sb_Intervall(int)));
 
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()));
96,6 → 107,10
 
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()));
104,11 → 119,6
// 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()
188,95 → 198,171
qwt_Plotter->replot();
}
 
///////////
// Slots //
///////////
 
// About-Dialog
void dlg_Main::slot_ac_About()
// IP-Input-Daten verarbeiten.
void dlg_Main::parse_IP_Data(QString t_Data)
{
QMessageBox::about(this, trUtf8(("Über ")) + QA_NAME, QA_ABOUT);
}
QStringList Data;
Data = t_Data.split(":");
 
void dlg_Main::slot_ConnectionStatus(int li_Status)
{
if (li_Status)
if (Data.count() > 1)
{
ac_Connect->setChecked(true);
ac_Connect->setText(tr("Trennen"));
}
else
{
ac_Connect->setChecked(false);
ac_Connect->setText(tr("Verbinden"));
}
}
int CMD = Data[2].toInt();
 
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);
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;
 
o_Settings->read_DebugLabels(gs_Version.ID);
a_MD5PW = QCryptographicHash::hash(le_Password->text().toAscii(),QCryptographicHash::Md5);
 
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);
s_MD5PW = QString(a_MD5PW.toHex().data());
 
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]);
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;
}
config_Plotter();
}
}
 
void dlg_Main::slot_MK_Debug(s_MK_Debug ls_Debug)
// MK-Eingangsdaten verarbeiten
void dlg_Main::parse_MK_Data(QString t_Data)
{
gs_Debug = ls_Debug;
unsigned char OutData[150];
char *InData = t_Data.toLatin1().data();
 
for (int z = 0; z < MAX_DebugData; z++)
if (HandlerMK::Decode_64(InData, t_Data.length(), OutData) != 0)
{
Debug_Data[z] = ls_Debug.Analog[z];
if (ac_Debug->isChecked())
switch(InData[2])
{
le_Debug[z]->setText(QString("%1").arg(Debug_Data[z]));
}
}
if (btn_Start->isChecked())
{
update_Plotter();
}
}
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]);
 
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);
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;
}
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 (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())
296,11 → 382,12
o_Settings->DebugData.Show_Plotter[z] = cb_Debug[z]->isChecked();
}
config_Plotter();
o_Settings->write_DebugLabels(gs_Version.ID);
o_Settings->write_DebugLabels(VersionInfo.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]);
330,10 → 417,199
 
void dlg_Main::slot_ac_ReadLabels()
{
get_Analoglabels = true;
c_Data[0] = 0;
wg_Connection->send_Data(HandlerMK::make_Frame('a', ADDRESS_ALL, c_Data, 1).toLatin1().data(), DATA_READ_LABEL);
o_Input->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()
{
341,5 → 617,21
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,6 → 28,7
#include <QTcpServer>
#include <QTcpSocket>
 
 
#include <qwt_plot_curve.h>
#include <qwt_plot_grid.h>
#include <qwt_legend.h>
40,6 → 41,13
 
#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
49,6 → 57,9
~dlg_Main();
 
private:
// Input Device.
Input *o_Input;
 
// Settings-Object
cSettings *o_Settings;
 
58,12 → 69,12
QFont Font_1;
 
// Info über die Hardware
s_Hardware gs_Version;
s_Hardware VersionInfo;
 
// Datenspeicher zum Senden.
char c_Data[150];
 
s_MK_Debug gs_Debug;
bool get_Analoglabels;
 
int Debug_Data[MAX_DebugData];
 
83,13 → 94,14
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_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_Connect();
 
void slot_ac_Plotter();
void slot_ac_Debug();
99,8 → 111,18
 
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>719</width>
<height>314</height>
<width>726</width>
<height>343</height>
</rect>
</property>
<property name="windowTitle">
25,6 → 25,150
<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">
173,9 → 317,6
</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">
183,7 → 324,7
<rect>
<x>0</x>
<y>0</y>
<width>719</width>
<width>726</width>
<height>21</height>
</rect>
</property>
211,12 → 352,6
<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>
331,12 → 466,6
<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,7 → 2,8
# Project created by QtCreator 2009-07-20T20:04:00
# -------------------------------------------------
 
include(../Global/Widget_Connection.pri)
DEFINES += _TTY_POSIX_
include(../Global/Class_SerialPort.pri)
 
QT += network
TARGET = QMK-Scope
41,10 → 42,21
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
/QMK-Groundstation/trunk/QMK-Settings/Classes/cSettings.cpp
40,8 → 40,18
GUI.isMax = Setting.value("IsMax",false).toBool();
GUI.Size = Setting.value("Size", QSize(500, 350)).toSize();
GUI.Point = Setting.value("Point",QPoint(1,1)).toPoint();
GUI.Toolbar = Setting.value("Toolbar",true).toBool();
Setting.endGroup();
 
Setting.beginGroup("SERVER");
SERVER.Password = Setting.value("Password", QString("")).toString();
SERVER.IP_MAX = Setting.value("IP_MAX", 1).toInt();
SERVER.IP_ID = Setting.value("IP_ID", 0).toInt();
 
for (int z = 0; z < SERVER.IP_MAX; z++)
{
SERVER.IP[z] = Setting.value("IP_" + QString("%1").arg(z), QString("127.0.0.1:64400")).toString();
}
Setting.endGroup();
}
 
void cSettings::write_Settings()
56,6 → 66,16
Setting.setValue("IsMax", GUI.isMax);
Setting.setValue("Size", GUI.Size);
Setting.setValue("Point", GUI.Point);
Setting.setValue("Toolbar", GUI.Toolbar);
Setting.endGroup();
 
Setting.beginGroup("SERVER");
Setting.setValue("Password", SERVER.Password);
Setting.setValue("IP_MAX", SERVER.IP_MAX);
Setting.setValue("IP_ID", SERVER.IP_ID);
 
for (int z = 0; z < SERVER.IP_MAX; z++)
{
Setting.setValue("IP_" + QString("%1").arg(z), SERVER.IP[z]);
}
Setting.endGroup();
}
/QMK-Groundstation/trunk/QMK-Settings/Classes/cSettings.h
30,9 → 30,16
bool isMax;
QSize Size;
QPoint Point;
bool Toolbar;
};
 
struct set_SERVER
{
int IP_MAX;
int IP_ID;
QString IP[10];
QString Password;
};
 
class cSettings
{
public:
43,6 → 50,7
int Settings_ID;
 
set_GUI GUI;
set_SERVER SERVER;
};
 
#endif // CSETTINGS_H
/QMK-Groundstation/trunk/QMK-Settings/Defines.h
24,7 → 24,7
#include "../Global/Kopter.h"
 
static const QString QA_NAME = "QMK-Settings";
static const QString QA_VERSION_NR = "1.2.3";
static const QString QA_VERSION_NR = "1.1.4";
 
#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 = "28.03.2010";
static const QString QA_YEAR = "2008-2010";
static const QString QA_DATE = "30.11.2009";
static const QString QA_YEAR = "2008-2009";
 
static const QString QA_ABOUT =
"<HTML>"
/QMK-Groundstation/trunk/QMK-Settings/Dialogs/dlg_MotorTest.ui
File deleted
/QMK-Groundstation/trunk/QMK-Settings/Dialogs/dlg_MotorTest.cpp
File deleted
/QMK-Groundstation/trunk/QMK-Settings/Dialogs/dlg_MotorTest.h
File deleted
/QMK-Groundstation/trunk/QMK-Settings/Dialogs/dlg_Main.cpp
31,13 → 31,12
 
o_Settings = new cSettings();
 
wg_Connection->set_Client(ID_SETTINGS, QA_NAME + " " + QA_VERSION, DataFields);
o_Input = new Input();
 
o_Timer = new QTimer();
o_Timer->setInterval(500);
 
f_MotorMixer = new dlg_MotorMixer(this);
f_MotorTest = new dlg_MotorTest(this);
 
init_Directorys();
init_GUI();
57,19 → 56,17
showMaximized();
}
 
wg_Connection->set_SelectVisible(false);
wg_Connection->set_IntervalVisible(false);
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]);
}
}
 
ac_Toolbar->setChecked(o_Settings->GUI.Toolbar);
cb_Server->setCurrentIndex(o_Settings->SERVER.IP_ID);
 
if (ac_Toolbar->isChecked())
{
wg_Connection->set_ButtonVisible(false);
}
else
{
ToolBar->setVisible(false);
}
le_Password->setText(o_Settings->SERVER.Password);
}
 
// Signale mit Slots verbinden
77,8 → 74,7
{
connect(o_Timer, SIGNAL(timeout()), this, SLOT(slot_Timer()));
 
connect(ac_Connect, SIGNAL(triggered()), wg_Connection, SLOT(slot_btn_Connect()));
connect(ac_Toolbar, SIGNAL(triggered()), this, SLOT(slot_ac_Toolbar()));
connect(ac_Connect, SIGNAL(triggered()), this, SLOT(slot_ac_Connect()));
 
connect(ac_Write, SIGNAL(triggered()), this, SLOT(slot_ac_Write()));
connect(ac_Read, SIGNAL(triggered()), this, SLOT(slot_ac_Read()));
86,23 → 82,11
connect(ac_Load, SIGNAL(triggered()), this, SLOT(slot_ac_Load()));
 
connect(ac_MotorMixer, SIGNAL(triggered()), this, SLOT(slot_ac_MotorMixer()));
connect(ac_MotorTest, SIGNAL(triggered()), this, SLOT(slot_ac_MotorTest()));
 
connect(f_MotorMixer, SIGNAL(sig_SendData(QString,int)), wg_Connection, SLOT(slot_send_Data(QString,int)));
connect(f_MotorTest, SIGNAL(sig_SendData(QString,int)), wg_Connection, SLOT(slot_send_Data(QString,int)));
 
// About QMK-Settings & 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_ReadSettings(s_MK_Settings)), this, SLOT(slot_MK_ReadSettings(s_MK_Settings)));
connect(wg_Connection, SIGNAL(sig_MK_WriteSettings(int)), this, SLOT(slot_MK_WriteSettings(int)));
connect(wg_Connection, SIGNAL(sig_MK_ReadMotorMixer(s_MK_Mixer)), this, SLOT(slot_MK_ReadMotorMixer(s_MK_Mixer)));
connect(wg_Connection, SIGNAL(sig_MK_WriteMotorMixer(int)), this, SLOT(slot_MK_WriteMotorMixer(int)));
connect(wg_Connection, SIGNAL(sig_MK_PPMData(s_MK_PPM_Data)), this, SLOT(slot_MK_PPMData(s_MK_PPM_Data)));
 
connect(listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(slot_PageChange(int)));
 
// Settings - LED's J16
173,6 → 157,157
}
}
 
void dlg_Main::parse_IP_Data(QString t_Data)
{
QStringList Data;
Data = t_Data.split(":");
 
if (Data.count() > 1)
{
int CMD = Data[2].toInt();
 
switch(CMD)
{
case 101 :
{
o_Input->send_Data(HandlerIP::make_Frame(ID_SETTINGS, 101, QA_NAME + " " + QA_VERSION));
}
break;
case 502 :
{
switch (Data[3].toInt())
{
case 105 :
{
QString s_MD5PW;
QByteArray a_MD5PW;
 
a_MD5PW = QCryptographicHash::hash(le_Password->text().toAscii(),QCryptographicHash::Md5);
 
s_MD5PW = QString(a_MD5PW.toHex().data());
 
o_Input->send_Data(HandlerIP::make_Frame(ID_SETTINGS, 105, s_MD5PW));
}
break;
case 106 :
{
o_Input->send_Data(HandlerIP::make_Frame(ID_SETTINGS, 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;
}
}
}
 
// Eingangsdaten verarbeiten
void dlg_Main::parse_MK_Data(QString t_Data)
{
unsigned char OutData[150];
char *InData = t_Data.toLatin1().data();
 
if (HandlerMK::Decode_64(InData, t_Data.length(), OutData) != 0)
{
switch(InData[2])
{
case 'V' : // 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)
{
// qDebug("get FC-Settings");
c_Data[0] = 0xff;
o_Input->send_Data(HandlerMK::make_Frame('q', ADDRESS_FC, c_Data, 1).toLatin1().data(), DATA_READ_SETTINGS);
}
}
break;
case 'Q' : // Settings lesen
{
o_Input->stop_Resend(DATA_READ_SETTINGS);
if (OutData[1] == MK_VERSION_SETTINGS)
{
s_MK_Settings MK_Set;
 
memcpy((unsigned char *)&MK_Set, (unsigned char *)&OutData, sizeof(MK_Set));
// qDebug(MK_Set.Name);
show_MK_Settings(MK_Set);
}
else
{
QMessageBox::warning(this, QA_NAME, tr("Versionen inkompatibel. \nParameterbearbeitung nicht moeglich."), QMessageBox::Ok);
ac_Read->setEnabled(false);
ac_Write->setEnabled(false);
}
}
break;
case 'S' : // Settings geschrieben
{
o_Input->stop_Resend(DATA_WRITE_SETTINGS);
if (OutData[0] == 0)
{
QMessageBox::warning(this, QA_NAME, tr("Fehler beim Settings-Schreiben."), QMessageBox::Ok);
}
}
break;
case 'P' : // RC-Kanäle
{
int PPM_in[11];
 
memcpy((unsigned char *)&PPM_in, (unsigned char *)&OutData, sizeof(PPM_in));
pb_K1->setValue(PPM_in[0]);
pb_K2->setValue(PPM_in[1]);
pb_K3->setValue(PPM_in[2]);
pb_K4->setValue(PPM_in[3]);
pb_K5->setValue(PPM_in[4]);
pb_K6->setValue(PPM_in[5]);
pb_K7->setValue(PPM_in[6]);
pb_K8->setValue(PPM_in[7]);
}
break;
case 'N' : // MotorMixer lesen
{
o_Input->stop_Resend(DATA_READ_MIXER);
 
s_MK_Mixer MK_Mixer;
 
memcpy((unsigned char *)&MK_Mixer, (unsigned char *)&OutData, sizeof(MK_Mixer));
 
if (MK_Mixer.Revision == MK_VERSION_MIXER)
{
f_MotorMixer->set_MotorConfig(MK_Mixer);
}
}
break;
case 'M' : // MotorMixer geschrieben
{
o_Input->stop_Resend(DATA_WRITE_MIXER);
 
if (OutData[0] == 0)
{
QMessageBox::warning(this, QA_NAME, tr("Fehler beim MotorMixer-Schreiben."), QMessageBox::Ok);
}
}
break;
 
}
}
}
 
///////////
// Slots //
///////////
183,124 → 318,144
QMessageBox::about(this, trUtf8(("Über ")) + QA_NAME, QA_ABOUT);
}
 
void dlg_Main::slot_ac_Toolbar()
// Verbindung zum Server aufbauen
void dlg_Main::slot_ac_Connect()
{
if (ac_Toolbar->isChecked())
if (!o_Input->IsOpen())
{
wg_Connection->set_ButtonVisible(false);
ToolBar->setVisible(true);
}
else
{
wg_Connection->set_ButtonVisible(true);
ToolBar->setVisible(false);
}
}
if (cb_Server->findText(cb_Server->currentText()) == -1)
{
cb_Server->addItem(cb_Server->currentText());
cb_Server->setCurrentIndex(cb_Server->findText(cb_Server->currentText()));
}
 
void dlg_Main::slot_ConnectionStatus(int li_Status)
{
if (li_Status)
{
ac_Connect->setChecked(true);
ac_Connect->setText(tr("Trennen"));
}
else
{
ac_Connect->setChecked(false);
ac_Connect->setText(tr("Verbinden"));
}
}
cb_Server->setEnabled(false);
le_Password->setEnabled(false);
 
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);
if (cb_Server->currentText().startsWith('/'))
{
o_Input = new Input_TTY();
o_Input->Init();
 
if (gs_Version.ID == ADDRESS_FC)
{
c_Data[0] = 0xff;
wg_Connection->send_Data(HandlerMK::make_Frame('q', ADDRESS_FC, c_Data, 1).toLatin1().data(), DATA_READ_SETTINGS);
}
}
set_Input s_Input;
s_Input.Main = cb_Server->currentText();
 
void dlg_Main::slot_MK_ReadSettings(s_MK_Settings ps_MK_Settings)
{
if (ps_MK_Settings.Version == MK_VERSION_SETTINGS)
{
show_MK_Settings(ps_MK_Settings);
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
{
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
{
QMessageBox::warning(this, QA_NAME, tr("Versionen inkompatibel. \nParameterbearbeitung nicht moeglich."), QMessageBox::Ok);
ac_Read->setEnabled(false);
ac_Write->setEnabled(false);
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);
}
}
}
 
void dlg_Main::slot_MK_WriteSettings(int pi_ID)
// Neue Daten empfangen.
void dlg_Main::slot_Input_Data(QString t_Data)
{
if (pi_ID == 0)
if ((t_Data[0] == '#'))
{
QMessageBox::warning(this, QA_NAME, tr("Fehler beim Settings-Schreiben."), QMessageBox::Ok);
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
else if (o_Input->Mode() == TCP)
{
QMessageBox::information(this, QA_NAME, tr("Setting geschrieben."), QMessageBox::Ok);
parse_IP_Data(t_Data);
}
 
}
 
void dlg_Main::slot_MK_ReadMotorMixer(s_MK_Mixer ps_MK_MotorMixer)
void dlg_Main::slot_Input_Disconnected(int Error)
{
if (ps_MK_MotorMixer.Revision == MK_VERSION_MIXER)
{
f_MotorMixer->set_MotorConfig(ps_MK_MotorMixer);
}
}
cb_Server->setEnabled(true);
le_Password->setEnabled(true);
 
void dlg_Main::slot_MK_WriteMotorMixer(int pi_ID)
{
if (pi_ID == 0)
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)
{
QMessageBox::warning(this, QA_NAME, tr("Fehler beim MotorMixer-Schreiben."), QMessageBox::Ok);
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;
}
else
{
QMessageBox::information(this, QA_NAME, tr("MotorMixer geschrieben."), QMessageBox::Ok);
}
 
}
 
void dlg_Main::slot_MK_PPMData(s_MK_PPM_Data ps_PPMData)
void dlg_Main::slot_Input_Connected()
{
qDebug("PPM-Data");
connect(o_Input, SIGNAL(sig_NewData(QString)), this, SLOT(slot_Input_Data(QString)));
 
// qDebug() << ps_PPMData.Data[1] << ", " << ps_PPMData.Data[2] << ", " << ps_PPMData.Data[3] << ", " << ps_PPMData.Data[4];
 
pb_K1->setValue(ps_PPMData.Data[1]);
pb_K2->setValue(ps_PPMData.Data[2]);
pb_K3->setValue(ps_PPMData.Data[3]);
pb_K4->setValue(ps_PPMData.Data[4]);
pb_K5->setValue(ps_PPMData.Data[5]);
pb_K6->setValue(ps_PPMData.Data[6]);
pb_K7->setValue(ps_PPMData.Data[7]);
pb_K8->setValue(ps_PPMData.Data[8]);
pb_K9->setValue(ps_PPMData.Data[9]);
pb_K10->setValue(ps_PPMData.Data[10]);
pb_K11->setValue(ps_PPMData.Data[11]);
pb_K12->setValue(ps_PPMData.Data[12]);
pb_K1_2->setValue(ps_PPMData.Data[13]);
pb_K2_2->setValue(ps_PPMData.Data[14]);
pb_K3_2->setValue(ps_PPMData.Data[15]);
pb_K4_2->setValue(ps_PPMData.Data[16]);
pb_K5_2->setValue(ps_PPMData.Data[17]);
pb_K6_2->setValue(ps_PPMData.Data[18]);
pb_K7_2->setValue(ps_PPMData.Data[19]);
pb_K8_2->setValue(ps_PPMData.Data[20]);
pb_K9_2->setValue(ps_PPMData.Data[21]);
pb_K10_2->setValue(ps_PPMData.Data[22]);
pb_K11_2->setValue(ps_PPMData.Data[23]);
pb_K12_2->setValue(ps_PPMData.Data[24]);
o_Input->send_Data(HandlerMK::make_Frame('v', ADDRESS_ALL, c_Data, 0).toLatin1().data(), DATA_VERSION);
ac_Connect->setText(tr("Trennen"));
}
 
///////////////////////////////////////////////////////////////////
307,7 → 462,6
// QMK-Settings //
///////////////////////////////////////////////////////////////////
 
 
void dlg_Main::slot_PageChange(int Page)
{
if (Page == 1)
318,12 → 472,12
 
void dlg_Main::slot_Timer()
{
wg_Connection->send_Data(HandlerMK::make_Frame('p', ADDRESS_FC, c_Data, 0).toLatin1().data(), 0);
o_Input->send_Data(HandlerMK::make_Frame('p', ADDRESS_FC, c_Data, 0).toLatin1().data(), 0);
}
 
void dlg_Main::slot_ac_MotorMixer()
{
f_MotorMixer->set_Objects(o_Settings, s_Dir);
f_MotorMixer->set_Objects(o_Input, o_Settings, s_Dir);
f_MotorMixer->read_Mixer();
 
if (f_MotorMixer->exec()==QDialog::Accepted)
331,18 → 485,6
}
}
 
void dlg_Main::slot_ac_MotorTest()
{
// f_MotorMixer->set_Objects(wg_Connection->o_Input, o_Settings, s_Dir);
// f_MotorMixer->read_Mixer();
 
if (f_MotorTest->exec()==QDialog::Accepted)
{
}
 
f_MotorTest->Stop();
}
 
// Settings-Funktionen
void dlg_Main::slot_ac_Write()
{
352,18 → 494,18
 
memcpy((unsigned char *)&c_Data, (unsigned char *)&t_Set, sizeof(t_Set));
 
wg_Connection->send_Data(HandlerMK::make_Frame('s', ADDRESS_FC, c_Data, sizeof(t_Set)).toLatin1().data(), DATA_WRITE_SETTINGS);
o_Input->send_Data(HandlerMK::make_Frame('s', ADDRESS_FC, c_Data, sizeof(t_Set)).toLatin1().data(), DATA_WRITE_SETTINGS);
}
 
void dlg_Main::slot_ac_Read()
{
c_Data[0] = sb_Set->value();
wg_Connection->send_Data(HandlerMK::make_Frame('q', ADDRESS_FC, c_Data, 1).toLatin1().data(), DATA_READ_SETTINGS);
o_Input->send_Data(HandlerMK::make_Frame('q', ADDRESS_FC, c_Data, 1).toLatin1().data(), DATA_READ_SETTINGS);
}
 
void dlg_Main::slot_ac_Save()
{
QString Filename = QFileDialog::getSaveFileName(this, "Mikrokopter Parameter speichern", s_Dir.Settings + "/" + gs_Version.VersionShort + "_" + le_SetName->text() + ".mkp", "Mikrokopter Parameter(*.mkp);;Alle Dateien (*)");
QString Filename = QFileDialog::getSaveFileName(this, "Mikrokopter Parameter speichern", s_Dir.Settings + "/" + VersionInfo.VersionShort + "_" + le_SetName->text() + ".mkp", "Mikrokopter Parameter(*.mkp);;Alle Dateien (*)");
 
if (!Filename.isEmpty())
{
392,11 → 534,6
Setting.setValue("Poti_2", t_Set.Kanalbelegung[5]);
Setting.setValue("Poti_3", t_Set.Kanalbelegung[6]);
Setting.setValue("Poti_4", t_Set.Kanalbelegung[7]);
Setting.setValue("Poti_5", t_Set.Kanalbelegung[8]);
Setting.setValue("Poti_6", t_Set.Kanalbelegung[9]);
Setting.setValue("Poti_7", t_Set.Kanalbelegung[10]);
Setting.setValue("Poti_8", t_Set.Kanalbelegung[11]);
Setting.setValue("Receiver", t_Set.Receiver);
Setting.endGroup();
 
Setting.beginGroup("Stick");
444,10 → 581,6
 
Setting.setValue("ServoInvert", t_Set.ServoCompInvert);
Setting.setValue("ServoNickRefreshRate", t_Set.ServoNickRefresh);
 
Setting.setValue("Servo3", t_Set.Servo3);
Setting.setValue("Servo4", t_Set.Servo4);
Setting.setValue("Servo5", t_Set.Servo5);
Setting.endGroup();
 
Setting.beginGroup("Others");
545,11 → 678,6
t_Set.Kanalbelegung[5] = Setting.value("Poti_2", 6).toInt();
t_Set.Kanalbelegung[6] = Setting.value("Poti_3", 7).toInt();
t_Set.Kanalbelegung[7] = Setting.value("Poti_4", 8).toInt();
t_Set.Kanalbelegung[8] = Setting.value("Poti_5", 9).toInt();
t_Set.Kanalbelegung[9] = Setting.value("Poti_6", 10).toInt();
t_Set.Kanalbelegung[10] = Setting.value("Poti_7", 11).toInt();
t_Set.Kanalbelegung[11] = Setting.value("Poti_8", 12).toInt();
t_Set.Receiver = Setting.value("Receiver", 0).toInt();
Setting.endGroup();
 
Setting.beginGroup("Stick");
597,10 → 725,6
 
t_Set.ServoCompInvert = Setting.value("ServoInvert", 0).toInt();
t_Set.ServoNickRefresh = Setting.value("ServoNickRefreshRate", 3).toInt();
 
t_Set.Servo3 = Setting.value("Servo3", 0).toInt();
t_Set.Servo4 = Setting.value("Servo4", 0).toInt();
t_Set.Servo5 = Setting.value("Servo5", 0).toInt();
Setting.endGroup();
 
Setting.beginGroup("Others");
688,19 → 812,14
}
// Seite 2
{
cb_2_1->setCurrentIndex(t_Set.Kanalbelegung[2] - 1);
cb_2_2->setCurrentIndex(t_Set.Kanalbelegung[3] - 1);
cb_2_3->setCurrentIndex(t_Set.Kanalbelegung[0] - 1);
cb_2_4->setCurrentIndex(t_Set.Kanalbelegung[1] - 1);
cb_2_5->setCurrentIndex(t_Set.Kanalbelegung[4] - 1);
cb_2_6->setCurrentIndex(t_Set.Kanalbelegung[5] - 1);
cb_2_7->setCurrentIndex(t_Set.Kanalbelegung[6] - 1);
cb_2_8->setCurrentIndex(t_Set.Kanalbelegung[7] - 1);
cb_2_9->setCurrentIndex(t_Set.Kanalbelegung[8] - 1);
cb_2_10->setCurrentIndex(t_Set.Kanalbelegung[9] - 1);
cb_2_11->setCurrentIndex(t_Set.Kanalbelegung[10] - 1);
cb_2_12->setCurrentIndex(t_Set.Kanalbelegung[11] - 1);
s_2_13_cb->setCurrentIndex(t_Set.Receiver);
sb_2_1->setValue(t_Set.Kanalbelegung[2]);
sb_2_2->setValue(t_Set.Kanalbelegung[3]);
sb_2_3->setValue(t_Set.Kanalbelegung[0]);
sb_2_4->setValue(t_Set.Kanalbelegung[1]);
sb_2_5->setValue(t_Set.Kanalbelegung[4]);
sb_2_6->setValue(t_Set.Kanalbelegung[5]);
sb_2_7->setValue(t_Set.Kanalbelegung[6]);
sb_2_8->setValue(t_Set.Kanalbelegung[7]);
}
// Seite 3
{
711,17 → 830,11
}
// Seite 4
{
// s_4_2_rb->setChecked(t_Set.ExtraConfig & CFG2_HEIGHT_LIMIT);
if (t_Set.ExtraConfig & CFG2_HEIGHT_LIMIT)
{
s_4_2_rb->setChecked(true);
if (t_Set.ExtraConfig & CFG2_HEIGHT_LIMIT) {
s_4_2_rb->setChecked(true);
} else {
s_4_3_rb->setChecked(true);
}
else
{
s_4_3_rb->setChecked(true);
}
s_4_5_cb->setChecked(t_Set.ExtraConfig & CFG2_VARIO_BEEP);
s_4_4_cb->setChecked(t_Set.GlobalConfig & CFG_HOEHEN_SCHALTER);
 
764,11 → 877,6
cb_6_9->setChecked(t_Set.ServoCompInvert & 0x02);
 
sb_6_5->setValue(t_Set.ServoNickRefresh);
 
cb_6_12 = setCombo(cb_6_12, t_Set.Servo3);
cb_6_13 = setCombo(cb_6_13, t_Set.Servo4);
cb_6_14 = setCombo(cb_6_14, t_Set.Servo5);
 
}
// Seite 7
{
858,16 → 966,8
sb_11_5->setValue(t_Set.WARN_J16_Bitmask);
sb_11_6->setValue(t_Set.WARN_J17_Bitmask);
cb_11_7->setChecked(t_Set.BitConfig & CFG_MOTOR_BLINK);
 
if (t_Set.WARN_J16_Bitmask != 0)
s_11_7_cb->setChecked(true);
else
s_11_7_cb->setChecked(false);
 
if (t_Set.WARN_J17_Bitmask != 0)
s_11_8_cb->setChecked(true);
else
s_11_8_cb->setChecked(false);
J16_8->setChecked(t_Set.BitConfig & CFG_MOTOR_OFF_LED1);
J17_8->setChecked(t_Set.BitConfig & CFG_MOTOR_OFF_LED2);
}
// Seite 12
{
925,19 → 1025,14
}
// Seite 2
{
t_Set.Kanalbelegung[2] = cb_2_1->currentIndex() + 1;
t_Set.Kanalbelegung[3] = cb_2_2->currentIndex() + 1;
t_Set.Kanalbelegung[0] = cb_2_3->currentIndex() + 1;
t_Set.Kanalbelegung[1] = cb_2_4->currentIndex() + 1;
t_Set.Kanalbelegung[4] = cb_2_5->currentIndex() + 1;
t_Set.Kanalbelegung[5] = cb_2_6->currentIndex() + 1;
t_Set.Kanalbelegung[6] = cb_2_7->currentIndex() + 1;
t_Set.Kanalbelegung[7] = cb_2_8->currentIndex() + 1;
t_Set.Kanalbelegung[8] = cb_2_9->currentIndex() + 1;
t_Set.Kanalbelegung[9] = cb_2_10->currentIndex() + 1;
t_Set.Kanalbelegung[10] = cb_2_11->currentIndex() + 1;
t_Set.Kanalbelegung[11] = cb_2_12->currentIndex() + 1;
t_Set.Receiver = s_2_13_cb->currentIndex();
t_Set.Kanalbelegung[2] = sb_2_1->value();
t_Set.Kanalbelegung[3] = sb_2_2->value();
t_Set.Kanalbelegung[0] = sb_2_3->value();
t_Set.Kanalbelegung[1] = sb_2_4->value();
t_Set.Kanalbelegung[4] = sb_2_5->value();
t_Set.Kanalbelegung[5] = sb_2_6->value();
t_Set.Kanalbelegung[6] = sb_2_7->value();
t_Set.Kanalbelegung[7] = sb_2_8->value();
}
// Seite 3
{
992,10 → 1087,6
 
t_Set.ServoNickRefresh = sb_6_5->value();
 
t_Set.Servo3 = get_Value(cb_6_12);
t_Set.Servo4 = get_Value(cb_6_13);
t_Set.Servo5 = get_Value(cb_6_14);
 
if (cb_6_6->isChecked())
t_Set.ServoCompInvert = t_Set.ServoCompInvert | 0x01;
if (cb_6_9->isChecked())
1057,12 → 1148,10
 
if (cb_11_7->isChecked())
t_Set.BitConfig = t_Set.BitConfig | CFG_MOTOR_BLINK;
 
if (!s_11_7_cb->isChecked())
t_Set.WARN_J16_Bitmask = 0;
if (!s_11_8_cb->isChecked())
t_Set.WARN_J17_Bitmask = 0;
 
if (J16_8->isChecked())
t_Set.BitConfig = t_Set.BitConfig | CFG_MOTOR_OFF_LED1;
if (J17_8->isChecked())
t_Set.BitConfig = t_Set.BitConfig | CFG_MOTOR_OFF_LED2;
}
// Seite 12
{
1093,34 → 1182,26
int dlg_Main::get_Value(QComboBox *Combo)
{
if (Combo->currentText() == QString("Poti 1"))
return 255;
return 251;
if (Combo->currentText() == QString("Poti 2"))
return 254;
return 252;
if (Combo->currentText() == QString("Poti 3"))
return 253;
if (Combo->currentText() == QString("Poti 4"))
return 252;
if (Combo->currentText() == QString("Poti 5"))
return 251;
if (Combo->currentText() == QString("Poti 6"))
return 250;
if (Combo->currentText() == QString("Poti 7"))
return 249;
if (Combo->currentText() == QString("Poti 8"))
return 248;
return 254;
return Combo->currentText().toInt();
}
 
QComboBox *dlg_Main::setCombo(QComboBox *Combo, int Wert)
{
if (Wert <= 245)
if (Wert <= 250)
{
Combo->setItemText(8, QString("%1").arg(Wert));
Combo->setCurrentIndex(8);
Combo->setItemText(4, QString("%1").arg(Wert));
Combo->setCurrentIndex(4);
}
else
{
Combo->setCurrentIndex(255 - Wert);
Combo->setCurrentIndex(Wert - 251);
}
return Combo;
}
1326,8 → 1407,19
o_Settings->GUI.isMax = isMaximized();
o_Settings->GUI.Size = size();
o_Settings->GUI.Point = pos();
o_Settings->GUI.Toolbar = ac_Toolbar->isChecked();
 
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-Settings/Dialogs/dlg_Main.h
29,7 → 29,6
#include "ui_dlg_Main.h"
 
#include "dlg_MotorMixer.h"
#include "dlg_MotorTest.h"
 
#include "../Defines.h"
#include "../TypeDefs.h"
36,6 → 35,14
 
#include "../Classes/cSettings.h"
 
#include "../../Global/Kopter.h"
#include "../../Global/MK_Datatypes.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
47,8 → 54,11
private:
QTimer *o_Timer;
 
// Input Device.
Input *o_Input;
 
// Info über die Hardware
s_Hardware gs_Version;
s_Hardware VersionInfo;
 
// Settings-Object
cSettings *o_Settings;
56,9 → 66,6
// MotorMixer GUI
dlg_MotorMixer *f_MotorMixer;
 
// MotorTest GUI
dlg_MotorTest *f_MotorTest;
 
char c_Data[150];
 
// Programm-Initialisirungen
68,6 → 75,10
void init_Directorys();
s_Directorys s_Dir;
 
// Einkommende Datenpackete zerlegen.
void parse_MK_Data(QString t_Data);
void parse_IP_Data(QString t_Data);
 
void set_LED(QToolButton *ToolButton, bool On = false);
int get_Value(QComboBox *Combo);
QComboBox *setCombo(QComboBox *Combo, int Wert);
79,15 → 90,8
void slot_Timer();
 
void slot_ac_About();
void slot_ac_Toolbar();
 
void slot_ConnectionStatus(int li_Status);
void slot_MK_Version(s_Hardware ls_Version);
void slot_MK_ReadSettings(s_MK_Settings ps_MK_Settings);
void slot_MK_WriteSettings(int pi_ID);
void slot_MK_ReadMotorMixer(s_MK_Mixer ps_MK_MotorMixer);
void slot_MK_WriteMotorMixer(int pi_ID);
void slot_MK_PPMData(s_MK_PPM_Data ps_PPMData);
void slot_ac_Connect();
 
void slot_ac_Write();
void slot_ac_Read();
95,10 → 99,14
void slot_ac_Load();
 
void slot_ac_MotorMixer();
void slot_ac_MotorTest();
 
void slot_PageChange(int Page);
 
// Einkommende Datenpackete.
void slot_Input_Data(QString t_Data);
void slot_Input_Disconnected(int Error);
void slot_Input_Connected();
 
void slot_LEDtoValue();
void slot_ValuetoLED16(int Wert);
void slot_ValuetoLED17(int Wert);
/QMK-Groundstation/trunk/QMK-Settings/Dialogs/dlg_Main.ui
6,8 → 6,8
<rect>
<x>0</x>
<y>0</y>
<width>778</width>
<height>366</height>
<width>764</width>
<height>363</height>
</rect>
</property>
<property name="windowTitle">
18,7 → 18,127
<normaloff>:/Icon/Global/Images/Icons/QMK-Settings.png</normaloff>:/Icon/Global/Images/Icons/QMK-Settings.png</iconset>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QGridLayout" name="gridLayout_25">
<layout class="QGridLayout" name="gridLayout_8">
<item row="0" column="0" colspan="2">
<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_108">
<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="QLabel" name="label_146">
<property name="text">
<string>Parametersatz</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="sb_Set">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>5</number>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="le_SetName">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</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="QListWidget" name="listWidget">
<property name="minimumSize">
237,7 → 357,7
</item>
</widget>
</item>
<item row="1" column="1" colspan="2">
<item row="1" column="1">
<widget class="QStackedWidget" name="stackedWidget">
<property name="frameShape">
<enum>QFrame::Box</enum>
268,15 → 388,15
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600; text-decoration: underline;&quot;&gt;Diese Seite dient der Konfiguration der Hardware bzw. der verschiedenen Funktionen des Mikrokopters.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Höhenregler&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;: Häkchen setzen, wenn der Luftdrucksensor bestückt ist und die Höhenregelung benutzt werden soll. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Höhenfunktion per Schalter&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;: wenn die Fernsteuerung mit einem Kippschalter auf einem freien Kanal erweitert wurde, kann die Funktion „Halten der aktuell geflogenen Höhe“ zugeschaltet werden. Wenn dies nicht angewählt wird, gilt der Setpoint (siehe unten), also z.B. ein Poti. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Heading Hold&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;: In diesem Modus richtet sich der MikroKopter nicht waagerecht aus wenn der Stick in Neutralstellung ist. Diese Funktion ist eher etwas für erfahrenen Piloten, oder Piloten, die an X-3D-Steuerung gewöhnt sind. Mit dieser Einstellung sind alle Arten der Loopings möglich. &lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;&quot;&gt;&lt;li style=&quot; font-size:11pt;&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;--&amp;gt; Achtung: Wer HH fliegen möchte, muss den I-Anteil des Hauptreglers erhöhen (auf 30 z.B.)! &lt;/li&gt;&lt;/ul&gt;
&lt;ul style=&quot;-qt-list-indent: 1;&quot;&gt;&lt;li style=&quot; font-size:11pt;&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;--&amp;gt; Achtung: Wer HH fliegen möchte, muss den I-Anteil des Hauptreglers erhöhen (auf 30 z.B.)! &lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Kompass&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;: Häkchen setzen, wenn das Kompassmodul angeschlossen ist und genutzt werden soll. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Kompass Ausrichtung fest&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;: Der MikroKopter richtet sich dann immer wieder in die Richtung aus, in die er beim Start gestanden hat. Ist das Feld nicht markiert, lässt sich die Richtung mit dem Gier-Stick ändern. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;GPS&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;: alternative Software-Versionen unterstützen ein ublox-GPS-Modul. Damit sind dann GPS-Funktionen wie Position halten, Position anfliegen, coming home und das Abfliegen von Waypoints möglich. Stichwort &amp;quot;Autonomes Fliegen&amp;quot;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;GPS&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;: alternative Software-Versionen unterstützen ein ublox-GPS-Modul. Damit sind dann GPS-Funktionen wie Position halten, Position anfliegen, coming home und das Abfliegen von Waypoints möglich. Stichwort &quot;Autonomes Fliegen&quot;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Achsenkopplung&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;:Hier lässt sich die Achsenkopplung global aktivieren oder deaktivieren. Die Achsenkopplung verhindert, dass der MikroKopter nach einer Kurve schief steht, weil die Winkel intern beim Gieren korrigiert werden. Sollte immer aktiviert sein. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Drehratenbegrenzung&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;: Zusätzliche Begrenzung der Drehrate. Mit dieser Option wird die Kennlinie des Gyros an den Enden angehoben. Dies verhindert schnelle Manöver, da ab einer bestimmten Drehrate stärker gegengeregelt wird. Betrifft nur Nick und Roll. (Nur für Anfänger interessant) &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
306,7 → 426,7
</font>
</property>
<property name="text">
<string>Höhenregelung</string>
<string>Altitude control</string>
</property>
</widget>
</item>
319,7 → 439,7
</font>
</property>
<property name="text">
<string>GPS aktiv</string>
<string>GPS</string>
</property>
</widget>
</item>
332,7 → 452,7
</font>
</property>
<property name="text">
<string>Kompass</string>
<string>Compass</string>
</property>
</widget>
</item>
364,7 → 484,7
</font>
</property>
<property name="text">
<string>Erweiterte Empfangssignalprüfung</string>
<string>Sensitive receiver signal validation</string>
</property>
</widget>
</item>
377,7 → 497,7
</font>
</property>
<property name="text">
<string>Achs-(ent-)kopplung</string>
<string>Axis-(de-)-Coupling</string>
</property>
</widget>
</item>
390,7 → 510,7
</font>
</property>
<property name="text">
<string>Drehratenbegrenzung</string>
<string>Rotationrate limiter</string>
</property>
</widget>
</item>
429,7 → 549,7
</font>
</property>
<property name="text">
<string>Feste Ausrichtung</string>
<string>Orientation fixed</string>
</property>
</widget>
</item>
439,7 → 559,7
</layout>
</widget>
<widget class="QWidget" name="Seite_2">
<layout class="QGridLayout" name="gridLayout_21">
<layout class="QGridLayout" name="gridLayout_18">
<item row="0" column="0">
<widget class="QFrame" name="frame_2">
<property name="frameShape">
462,72 → 582,18
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="cb_2_1">
<item>
<property name="text">
<string>RC 1</string>
</property>
</item>
<item>
<property name="text">
<string>RC 2</string>
</property>
</item>
<item>
<property name="text">
<string>RC 3</string>
</property>
</item>
<item>
<property name="text">
<string>RC 4</string>
</property>
</item>
<item>
<property name="text">
<string>RC 5</string>
</property>
</item>
<item>
<property name="text">
<string>RC 6</string>
</property>
</item>
<item>
<property name="text">
<string>RC 7</string>
</property>
</item>
<item>
<property name="text">
<string>RC 8</string>
</property>
</item>
<item>
<property name="text">
<string>RC 9</string>
</property>
</item>
<item>
<property name="text">
<string>RC 10</string>
</property>
</item>
<item>
<property name="text">
<string>RC 11</string>
</property>
</item>
<item>
<property name="text">
<string>RC 12</string>
</property>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="sb_2_1">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>8</number>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLabel" name="label_11">
<item row="1" column="0">
<widget class="QLabel" name="label_6">
<property name="font">
<font>
<weight>75</weight>
535,136 → 601,22
</font>
</property>
<property name="text">
<string>Poti 3:</string>
<string>Gier:</string>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QComboBox" name="cb_2_7">
<item>
<property name="text">
<string>RC 1</string>
</property>
</item>
<item>
<property name="text">
<string>RC 2</string>
</property>
</item>
<item>
<property name="text">
<string>RC 3</string>
</property>
</item>
<item>
<property name="text">
<string>RC 4</string>
</property>
</item>
<item>
<property name="text">
<string>RC 5</string>
</property>
</item>
<item>
<property name="text">
<string>RC 6</string>
</property>
</item>
<item>
<property name="text">
<string>RC 7</string>
</property>
</item>
<item>
<property name="text">
<string>RC 8</string>
</property>
</item>
<item>
<property name="text">
<string>RC 9</string>
</property>
</item>
<item>
<property name="text">
<string>RC 10</string>
</property>
</item>
<item>
<property name="text">
<string>RC 11</string>
</property>
</item>
<item>
<property name="text">
<string>RC 12</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 1</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 2</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 3</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 4</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 5</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 6</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 7</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 8</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 9</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 10</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 11</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 12</string>
</property>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="sb_2_2">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>8</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_6">
<item row="2" column="0">
<widget class="QLabel" name="label_7">
<property name="font">
<font>
<weight>75</weight>
672,76 → 624,22
</font>
</property>
<property name="text">
<string>Gier:</string>
<string>Nick:</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QComboBox" name="cb_2_2">
<item>
<property name="text">
<string>RC 1</string>
</property>
</item>
<item>
<property name="text">
<string>RC 2</string>
</property>
</item>
<item>
<property name="text">
<string>RC 3</string>
</property>
</item>
<item>
<property name="text">
<string>RC 4</string>
</property>
</item>
<item>
<property name="text">
<string>RC 5</string>
</property>
</item>
<item>
<property name="text">
<string>RC 6</string>
</property>
</item>
<item>
<property name="text">
<string>RC 7</string>
</property>
</item>
<item>
<property name="text">
<string>RC 8</string>
</property>
</item>
<item>
<property name="text">
<string>RC 9</string>
</property>
</item>
<item>
<property name="text">
<string>RC 10</string>
</property>
</item>
<item>
<property name="text">
<string>RC 11</string>
</property>
</item>
<item>
<property name="text">
<string>RC 12</string>
</property>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="sb_2_3">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>8</number>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLabel" name="label_12">
<item row="3" column="0">
<widget class="QLabel" name="label_8">
<property name="font">
<font>
<weight>75</weight>
749,136 → 647,22
</font>
</property>
<property name="text">
<string>Poti 4:</string>
<string>Roll:</string>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QComboBox" name="cb_2_8">
<item>
<property name="text">
<string>RC 1</string>
</property>
</item>
<item>
<property name="text">
<string>RC 2</string>
</property>
</item>
<item>
<property name="text">
<string>RC 3</string>
</property>
</item>
<item>
<property name="text">
<string>RC 4</string>
</property>
</item>
<item>
<property name="text">
<string>RC 5</string>
</property>
</item>
<item>
<property name="text">
<string>RC 6</string>
</property>
</item>
<item>
<property name="text">
<string>RC 7</string>
</property>
</item>
<item>
<property name="text">
<string>RC 8</string>
</property>
</item>
<item>
<property name="text">
<string>RC 9</string>
</property>
</item>
<item>
<property name="text">
<string>RC 10</string>
</property>
</item>
<item>
<property name="text">
<string>RC 11</string>
</property>
</item>
<item>
<property name="text">
<string>RC 12</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 1</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 2</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 3</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 4</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 5</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 6</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 7</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 8</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 9</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 10</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 11</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 12</string>
</property>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="sb_2_4">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>8</number>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_7">
<item row="4" column="0">
<widget class="QLabel" name="label_9">
<property name="font">
<font>
<weight>75</weight>
886,76 → 670,22
</font>
</property>
<property name="text">
<string>Nick:</string>
<string>Poti 1:</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QComboBox" name="cb_2_3">
<item>
<property name="text">
<string>RC 1</string>
</property>
</item>
<item>
<property name="text">
<string>RC 2</string>
</property>
</item>
<item>
<property name="text">
<string>RC 3</string>
</property>
</item>
<item>
<property name="text">
<string>RC 4</string>
</property>
</item>
<item>
<property name="text">
<string>RC 5</string>
</property>
</item>
<item>
<property name="text">
<string>RC 6</string>
</property>
</item>
<item>
<property name="text">
<string>RC 7</string>
</property>
</item>
<item>
<property name="text">
<string>RC 8</string>
</property>
</item>
<item>
<property name="text">
<string>RC 9</string>
</property>
</item>
<item>
<property name="text">
<string>RC 10</string>
</property>
</item>
<item>
<property name="text">
<string>RC 11</string>
</property>
</item>
<item>
<property name="text">
<string>RC 12</string>
</property>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="sb_2_5">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>8</number>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QLabel" name="label_32">
<item row="5" column="0">
<widget class="QLabel" name="label_10">
<property name="font">
<font>
<weight>75</weight>
963,136 → 693,22
</font>
</property>
<property name="text">
<string>Poti 5:</string>
<string>Poti 2:</string>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QComboBox" name="cb_2_9">
<item>
<property name="text">
<string>RC 1</string>
</property>
</item>
<item>
<property name="text">
<string>RC 2</string>
</property>
</item>
<item>
<property name="text">
<string>RC 3</string>
</property>
</item>
<item>
<property name="text">
<string>RC 4</string>
</property>
</item>
<item>
<property name="text">
<string>RC 5</string>
</property>
</item>
<item>
<property name="text">
<string>RC 6</string>
</property>
</item>
<item>
<property name="text">
<string>RC 7</string>
</property>
</item>
<item>
<property name="text">
<string>RC 8</string>
</property>
</item>
<item>
<property name="text">
<string>RC 9</string>
</property>
</item>
<item>
<property name="text">
<string>RC 10</string>
</property>
</item>
<item>
<property name="text">
<string>RC 11</string>
</property>
</item>
<item>
<property name="text">
<string>RC 12</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 1</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 2</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 3</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 4</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 5</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 6</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 7</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 8</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 9</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 10</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 11</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 12</string>
</property>
</item>
<item row="5" column="1">
<widget class="QSpinBox" name="sb_2_6">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>8</number>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_8">
<item row="6" column="0">
<widget class="QLabel" name="label_11">
<property name="font">
<font>
<weight>75</weight>
1100,76 → 716,22
</font>
</property>
<property name="text">
<string>Roll:</string>
<string>Poti 3:</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QComboBox" name="cb_2_4">
<item>
<property name="text">
<string>RC 1</string>
</property>
</item>
<item>
<property name="text">
<string>RC 2</string>
</property>
</item>
<item>
<property name="text">
<string>RC 3</string>
</property>
</item>
<item>
<property name="text">
<string>RC 4</string>
</property>
</item>
<item>
<property name="text">
<string>RC 5</string>
</property>
</item>
<item>
<property name="text">
<string>RC 6</string>
</property>
</item>
<item>
<property name="text">
<string>RC 7</string>
</property>
</item>
<item>
<property name="text">
<string>RC 8</string>
</property>
</item>
<item>
<property name="text">
<string>RC 9</string>
</property>
</item>
<item>
<property name="text">
<string>RC 10</string>
</property>
</item>
<item>
<property name="text">
<string>RC 11</string>
</property>
</item>
<item>
<property name="text">
<string>RC 12</string>
</property>
</item>
<item row="6" column="1">
<widget class="QSpinBox" name="sb_2_7">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>8</number>
</property>
</widget>
</item>
<item row="3" column="3">
<widget class="QLabel" name="label_34">
<item row="7" column="0">
<widget class="QLabel" name="label_12">
<property name="font">
<font>
<weight>75</weight>
1177,547 → 739,274
</font>
</property>
<property name="text">
<string>Poti 6:</string>
<string>Poti 4:</string>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QComboBox" name="cb_2_10">
<item>
<property name="text">
<string>RC 1</string>
</property>
</item>
<item>
<property name="text">
<string>RC 2</string>
</property>
</item>
<item>
<property name="text">
<string>RC 3</string>
</property>
</item>
<item>
<property name="text">
<string>RC 4</string>
</property>
</item>
<item>
<property name="text">
<string>RC 5</string>
</property>
</item>
<item>
<property name="text">
<string>RC 6</string>
</property>
</item>
<item>
<property name="text">
<string>RC 7</string>
</property>
</item>
<item>
<property name="text">
<string>RC 8</string>
</property>
</item>
<item>
<property name="text">
<string>RC 9</string>
</property>
</item>
<item>
<property name="text">
<string>RC 10</string>
</property>
</item>
<item>
<property name="text">
<string>RC 11</string>
</property>
</item>
<item>
<property name="text">
<string>RC 12</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 1</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 2</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 3</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 4</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 5</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 6</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 7</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 8</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 9</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 10</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 11</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 12</string>
</property>
</item>
<item row="7" column="1">
<widget class="QSpinBox" name="sb_2_8">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>8</number>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_9">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
<item row="8" column="1">
<spacer name="verticalSpacer_21">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="0" column="1">
<widget class="QFrame" name="frame_3">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="1" column="1">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Poti 1:</string>
<string>1</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QComboBox" name="cb_2_5">
<item>
<property name="text">
<string>RC 1</string>
</property>
</item>
<item>
<property name="text">
<string>RC 2</string>
</property>
</item>
<item>
<property name="text">
<string>RC 3</string>
</property>
</item>
<item>
<property name="text">
<string>RC 4</string>
</property>
</item>
<item>
<property name="text">
<string>RC 5</string>
</property>
</item>
<item>
<property name="text">
<string>RC 6</string>
</property>
</item>
<item>
<property name="text">
<string>RC 7</string>
</property>
</item>
<item>
<property name="text">
<string>RC 8</string>
</property>
</item>
<item>
<property name="text">
<string>RC 9</string>
</property>
</item>
<item>
<property name="text">
<string>RC 10</string>
</property>
</item>
<item>
<property name="text">
<string>RC 11</string>
</property>
</item>
<item>
<property name="text">
<string>RC 12</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 1</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 2</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 3</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 4</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 5</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 6</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 7</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 8</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 9</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 10</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 11</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 12</string>
</property>
</item>
<item row="1" column="2">
<widget class="QLabel" name="label_4">
<property name="text">
<string>2</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="QLabel" name="label_33">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
<item row="1" column="3">
<widget class="QLabel" name="label_13">
<property name="text">
<string>3</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Poti 7:</string>
<string>4</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="4" column="4">
<widget class="QComboBox" name="cb_2_11">
<item>
<property name="text">
<string>RC 1</string>
</property>
</item>
<item>
<property name="text">
<string>RC 2</string>
</property>
</item>
<item>
<property name="text">
<string>RC 3</string>
</property>
</item>
<item>
<property name="text">
<string>RC 4</string>
</property>
</item>
<item>
<property name="text">
<string>RC 5</string>
</property>
</item>
<item>
<property name="text">
<string>RC 6</string>
</property>
</item>
<item>
<property name="text">
<string>RC 7</string>
</property>
</item>
<item>
<property name="text">
<string>RC 8</string>
</property>
</item>
<item>
<property name="text">
<string>RC 9</string>
</property>
</item>
<item>
<property name="text">
<string>RC 10</string>
</property>
</item>
<item>
<property name="text">
<string>RC 11</string>
</property>
</item>
<item>
<property name="text">
<string>RC 12</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 1</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 2</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 3</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 4</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 5</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 6</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 7</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 8</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 9</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 10</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 11</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 12</string>
</property>
</item>
<item row="1" column="5">
<widget class="QLabel" name="label_15">
<property name="text">
<string>5</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_10">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
<item row="1" column="6">
<widget class="QLabel" name="label_16">
<property name="text">
<string>6</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="7">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Poti 2:</string>
<string>7</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QComboBox" name="cb_2_6">
<item>
<property name="text">
<string>RC 1</string>
</property>
</item>
<item>
<property name="text">
<string>RC 2</string>
</property>
</item>
<item>
<property name="text">
<string>RC 3</string>
</property>
</item>
<item>
<property name="text">
<string>RC 4</string>
</property>
</item>
<item>
<property name="text">
<string>RC 5</string>
</property>
</item>
<item>
<property name="text">
<string>RC 6</string>
</property>
</item>
<item>
<property name="text">
<string>RC 7</string>
</property>
</item>
<item>
<property name="text">
<string>RC 8</string>
</property>
</item>
<item>
<property name="text">
<string>RC 9</string>
</property>
</item>
<item>
<property name="text">
<string>RC 10</string>
</property>
</item>
<item>
<property name="text">
<string>RC 11</string>
</property>
</item>
<item>
<property name="text">
<string>RC 12</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 1</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 2</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 3</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 4</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 5</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 6</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 7</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 8</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 9</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 10</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 11</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 12</string>
</property>
</item>
<item row="2" column="1">
<widget class="QProgressBar" name="pb_K1">
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="5" column="3">
<widget class="QLabel" name="label_35">
<item row="2" column="2">
<widget class="QProgressBar" name="pb_K2">
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QProgressBar" name="pb_K3">
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QProgressBar" name="pb_K4">
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="2" column="5">
<widget class="QProgressBar" name="pb_K5">
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="2" column="6">
<widget class="QProgressBar" name="pb_K6">
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="2" column="7">
<widget class="QProgressBar" name="pb_K7">
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="8">
<widget class="QLabel" name="label_128">
<property name="font">
<font>
<weight>75</weight>
1725,1219 → 1014,74
</font>
</property>
<property name="text">
<string>Poti 8:</string>
<string>Kanäle der Fernsteuerung</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="5" column="4">
<widget class="QComboBox" name="cb_2_12">
<item>
<property name="text">
<string>RC 1</string>
</property>
</item>
<item>
<property name="text">
<string>RC 2</string>
</property>
</item>
<item>
<property name="text">
<string>RC 3</string>
</property>
</item>
<item>
<property name="text">
<string>RC 4</string>
</property>
</item>
<item>
<property name="text">
<string>RC 5</string>
</property>
</item>
<item>
<property name="text">
<string>RC 6</string>
</property>
</item>
<item>
<property name="text">
<string>RC 7</string>
</property>
</item>
<item>
<property name="text">
<string>RC 8</string>
</property>
</item>
<item>
<property name="text">
<string>RC 9</string>
</property>
</item>
<item>
<property name="text">
<string>RC 10</string>
</property>
</item>
<item>
<property name="text">
<string>RC 11</string>
</property>
</item>
<item>
<property name="text">
<string>RC 12</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 1</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 2</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 3</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 4</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 5</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 6</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 7</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 8</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 9</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 10</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 11</string>
</property>
</item>
<item>
<property name="text">
<string>Ser 12</string>
</property>
</item>
<item row="1" column="8">
<widget class="QLabel" name="label_18">
<property name="text">
<string>8</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="6" column="2">
<spacer name="verticalSpacer_21">
<item row="2" column="8">
<widget class="QProgressBar" name="pb_K8">
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="2" column="9">
<spacer name="horizontalSpacer_12">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>1</height>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="8" column="0" colspan="5">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="label_155">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Empfänger wählen:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="s_2_13_cb">
<item>
<property name="text">
<string>Multisignal (PPM)</string>
</property>
</item>
<item>
<property name="text">
<string>Spectrum Satellit</string>
</property>
</item>
<item>
<property name="text">
<string>Spectrum Satellit (HiRes)</string>
</property>
</item>
<item>
<property name="text">
<string>Spectrum Satellit (LowRes)</string>
</property>
</item>
<item>
<property name="text">
<string>Jeti Satellit</string>
</property>
</item>
<item>
<property name="text">
<string>ACT DSL</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item row="7" column="0" colspan="5">
<widget class="Line" name="line_5">
<item row="2" column="0">
<spacer name="horizontalSpacer_13">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="0" column="1">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab_3">
<attribute name="title">
<string>Fernsteuerung</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_2">
<item row="8" column="2">
<widget class="QProgressBar" name="pb_K7">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QLabel" name="label_17">
<property name="text">
<string>7</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QProgressBar" name="pb_K2">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QLabel" name="label_4">
<property name="text">
<string>2</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QProgressBar" name="pb_K1">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="label_3">
<property name="text">
<string>1</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="8" column="4">
<widget class="QProgressBar" name="pb_K8">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="6" column="4">
<widget class="QLabel" name="label_18">
<property name="text">
<string>8</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="8" column="6">
<widget class="QProgressBar" name="pb_K10">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="6" column="6">
<widget class="QLabel" name="label_36">
<property name="text">
<string>10</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="8" column="7">
<widget class="QProgressBar" name="pb_K11">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="8" column="8">
<widget class="QProgressBar" name="pb_K12">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="6" column="8">
<widget class="QLabel" name="label_47">
<property name="text">
<string>12</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="5">
<widget class="QProgressBar" name="pb_K3">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="2" column="5">
<widget class="QLabel" name="label_13">
<property name="text">
<string>3</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="6">
<widget class="QLabel" name="label_14">
<property name="text">
<string>4</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="6">
<widget class="QProgressBar" name="pb_K4">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="3" column="8">
<widget class="QProgressBar" name="pb_K6">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="3" column="7">
<widget class="QProgressBar" name="pb_K5">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="2" column="7">
<widget class="QLabel" name="label_15">
<property name="text">
<string>5</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="8">
<widget class="QLabel" name="label_16">
<property name="text">
<string>6</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="8" column="5">
<widget class="QProgressBar" name="pb_K9">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="6" column="5">
<widget class="QLabel" name="label_49">
<property name="text">
<string>9</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="6" column="7">
<widget class="QLabel" name="label_46">
<property name="text">
<string>11</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_4">
<attribute name="title">
<string>Seriell</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_18">
<item row="0" column="0">
<widget class="QLabel" name="label_132">
<property name="text">
<string>1</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_78">
<property name="text">
<string>2</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_76">
<property name="text">
<string>3</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLabel" name="label_136">
<property name="text">
<string>4</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QLabel" name="label_133">
<property name="text">
<string>5</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="5">
<widget class="QLabel" name="label_154">
<property name="text">
<string>6</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QProgressBar" name="pb_K1_2">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QProgressBar" name="pb_K2_2">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QProgressBar" name="pb_K3_2">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QProgressBar" name="pb_K4_2">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QProgressBar" name="pb_K5_2">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="1" column="5">
<widget class="QProgressBar" name="pb_K6_2">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_117">
<property name="text">
<string>7</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="label_50">
<property name="text">
<string>8</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="label_111">
<property name="text">
<string>9</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QLabel" name="label_128">
<property name="text">
<string>10</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QLabel" name="label_121">
<property name="text">
<string>11</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="5">
<widget class="QLabel" name="label_118">
<property name="text">
<string>12</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QProgressBar" name="pb_K7_2">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QProgressBar" name="pb_K8_2">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QProgressBar" name="pb_K9_2">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="3" column="3">
<widget class="QProgressBar" name="pb_K10_2">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QProgressBar" name="pb_K11_2">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
<item row="3" column="5">
<widget class="QProgressBar" name="pb_K12_2">
<property name="maximumSize">
<size>
<width>15</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-128</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="textDirection">
<enum>QProgressBar::TopToBottom</enum>
</property>
<property name="format">
<string> %v</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item row="0" column="2" rowspan="2">
<widget class="QTextEdit" name="te_Help_2">
<property name="minimumSize">
2959,10 → 1103,10
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600; text-decoration: underline;&quot;&gt;Hier können die vom Sender übertragenen Kanäle den Funktionen des MikroKopters zugeordnet werden. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Port 1-8 sind per Sender frei einstellbare Werte.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Port 1-4 sind per Sender frei einstellbare Werte.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Die Balken zeigen den Ausschlag des jeweiligen Kanals an.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
2977,7 → 1121,7
</font>
</property>
<property name="text">
<string>Erweiterte Empfangssignalprüfung</string>
<string>Sensitive receiver signal validation</string>
</property>
</widget>
</item>
3102,26 → 1246,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
3150,7 → 1274,7
</font>
</property>
<property name="text">
<string>Externe Kontrolle:</string>
<string>External Control:</string>
</property>
</widget>
</item>
3181,26 → 1305,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
3264,7 → 1368,7
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600; text-decoration: underline;&quot;&gt;Diese Parameter dienen zur Einstellung der Stickwirkung.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;P-Anteil:&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; Stick-Verstärkung. Je grösser, desto stärker reagiert der MK auf die Stickbewegungen. &lt;/span&gt;&lt;/p&gt;
3300,7 → 1404,7
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600; text-decoration: underline;&quot;&gt;Hier kann der Höhenregler parametriert werden.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt; font-weight:600; text-decoration: underline;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Soll-Höhe:&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; Gibt die maximale Höhe an. Normalerweise wird hier ein Poti als Kanal der Funke eingetragen. Kleine Werte ermöglichen nur niedrige Maximalhöhen.&lt;/span&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
3337,7 → 1441,7
</font>
</property>
<property name="text">
<string>Höhenregelung aktiv</string>
<string>Enable Altitude control</string>
</property>
</widget>
</item>
3381,7 → 1485,7
</font>
</property>
<property name="text">
<string>Höhenbegrenzung</string>
<string>Height limitation control</string>
</property>
<property name="checked">
<bool>true</bool>
3397,7 → 1501,7
</font>
</property>
<property name="text">
<string>Schalter für Höhe</string>
<string>use switch for setpoint</string>
</property>
</widget>
</item>
3410,7 → 1514,7
</font>
</property>
<property name="text">
<string>Vario-Höhe</string>
<string>Vario altitude control</string>
</property>
</widget>
</item>
3426,7 → 1530,7
</font>
</property>
<property name="text">
<string>akustisches Variometer</string>
<string>enable acoustic vario</string>
</property>
</widget>
</item>
3439,7 → 1543,7
</font>
</property>
<property name="text">
<string>Sollwert:</string>
<string>SollHöhe:</string>
</property>
</widget>
</item>
3470,26 → 1574,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
3555,26 → 1639,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
3620,26 → 1684,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
3672,26 → 1716,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
3738,7 → 1762,7
</font>
</property>
<property name="text">
<string>Verstärkung/Rate:</string>
<string>Verstärkung:</string>
</property>
</widget>
</item>
3761,7 → 1785,7
</font>
</property>
<property name="text">
<string>Schwebe-Gas +/-:</string>
<string>Hover variation:</string>
</property>
</widget>
</item>
3812,26 → 1836,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
3849,7 → 1853,7
</font>
</property>
<property name="text">
<string>Stick Neutral-Punkt:</string>
<string>Stick neutral:</string>
</property>
</widget>
</item>
3869,8 → 1873,8
<bool>false</bool>
</property>
<property name="text">
<string> 0 = automatisch
120 = Mittelposition</string>
<string> 0 = automatic
120 = middle position</string>
</property>
</widget>
</item>
3918,7 → 1922,7
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600; text-decoration: underline;&quot;&gt;Hier werden die Parameter für die Gyroskope eingestellt.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Gyro-P: &lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Einfluss des Gyros auf die Nick- und Rollgeschwindigkeit. Je höher wer Wert, desto träger bewegt sich der MikroKopter. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Gyro&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;-I: Lagestabilisierung. Je höher der Wert, desto stärker der Zusammenhang von Stickwinkel und Lagewinkel. Führt bei zu grossen Werten (gegenüber Gyro-P) zum Schwingen. &lt;/span&gt;&lt;/p&gt;
3986,26 → 1990,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
4051,26 → 2035,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
4136,26 → 2100,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
4201,26 → 2145,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
4273,26 → 2197,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
4338,26 → 2242,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
4372,7 → 2256,7
</font>
</property>
<property name="text">
<string>Dynamische Stabilität:</string>
<string>Dynamic Stability:</string>
</property>
</widget>
</item>
4424,7 → 2308,7
</font>
</property>
<property name="text">
<string>ACC/Gyro-Komp.:</string>
<string>ACC/Gyro-Comp.:</string>
</property>
</widget>
</item>
4486,26 → 2370,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
4531,7 → 2395,7
</widget>
<widget class="QWidget" name="Seite_6">
<layout class="QGridLayout" name="gridLayout_39">
<item row="0" column="5">
<item row="0" column="2">
<widget class="QTextEdit" name="te_Help_6">
<property name="minimumSize">
<size>
4552,7 → 2416,7
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600; text-decoration: underline;&quot;&gt;Einstellungen für das Kamera-Servo an J7 der FlightCtrl.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Servo-Control: &lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Servowert zum Schwenken der Kamera. Entweder fixen Wert, oder Poti eintragen. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Nick-Kompensation: &lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Einfluss des Nickwinkels auf den Servo. &lt;/span&gt;&lt;/p&gt;
4563,7 → 2427,7
</property>
</widget>
</item>
<item row="0" column="4">
<item row="0" column="1">
<widget class="QFrame" name="frame_8">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
4577,277 → 2441,152
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_24">
<item row="0" column="0" rowspan="2">
<layout class="QGridLayout" name="gridLayout_22">
<item row="0" column="1">
<widget class="QLabel" name="label_137">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Nick</string>
</property>
</widget>
<layout class="QGridLayout" name="gridLayout_10">
<item row="0" column="1">
<widget class="QLabel" name="label_137">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Nick</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLabel" name="label_138">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Roll</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="cb_6_1">
<property name="editable">
<bool>true</bool>
</property>
<item>
<property name="text">
<string>Poti 1</string>
</property>
</item>
<item row="0" column="3">
<widget class="QLabel" name="label_138">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Roll</string>
</property>
</widget>
<item>
<property name="text">
<string>Poti 2</string>
</property>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_55">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Servo Ansteuerung:</string>
</property>
</widget>
<item>
<property name="text">
<string>Poti 3</string>
</property>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="cb_6_1">
<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>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
</widget>
<item>
<property name="text">
<string>Poti 4</string>
</property>
</item>
<item row="1" column="3">
<widget class="QComboBox" name="cb_6_7">
<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>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
</widget>
<item>
<property name="text">
<string>0</string>
</property>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_56">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Kompensation:</string>
</property>
</widget>
</widget>
</item>
<item row="1" column="3">
<widget class="QComboBox" name="cb_6_7">
<property name="editable">
<bool>true</bool>
</property>
<item>
<property name="text">
<string>Poti 1</string>
</property>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="sb_6_2">
<property name="maximum">
<number>250</number>
</property>
</widget>
<item>
<property name="text">
<string>Poti 2</string>
</property>
</item>
<item row="2" column="3">
<widget class="QSpinBox" name="sb_6_8">
<property name="maximum">
<number>250</number>
</property>
</widget>
<item>
<property name="text">
<string>Poti 3</string>
</property>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_130">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Richtung umkehren</string>
</property>
</widget>
<item>
<property name="text">
<string>Poti 4</string>
</property>
</item>
<item row="3" column="1">
<widget class="QCheckBox" name="cb_6_6">
<property name="text">
<string/>
</property>
</widget>
<item>
<property name="text">
<string>0</string>
</property>
</item>
<item row="3" column="3">
<widget class="QCheckBox" name="cb_6_9">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_57">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Servo min:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="sb_6_3">
<property name="maximum">
<number>250</number>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="QSpinBox" name="sb_6_10">
<property name="maximum">
<number>250</number>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_58">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Servo max:</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QSpinBox" name="sb_6_4">
<property name="maximum">
<number>250</number>
</property>
</widget>
</item>
<item row="5" column="3">
<widget class="QSpinBox" name="sb_6_11">
<property name="maximum">
<number>250</number>
</property>
</widget>
</item>
<item row="0" column="2" rowspan="6">
<widget class="Line" name="line_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_54">
<item row="5" column="0">
<widget class="QLabel" name="label_130">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Richtung invertieren</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QCheckBox" name="cb_6_6">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="1">
<item row="5" column="3">
<widget class="QCheckBox" name="cb_6_9">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_57">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Servo min:</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QSpinBox" name="sb_6_3">
<property name="maximum">
<number>250</number>
</property>
</widget>
</item>
<item row="6" column="3">
<widget class="QSpinBox" name="sb_6_10">
<property name="maximum">
<number>250</number>
</property>
</widget>
</item>
<item row="6" column="4">
<widget class="QLabel" name="label_61">
<property name="text">
<string/>
4854,57 → 2593,34
</property>
</widget>
</item>
<item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer_10">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_59">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Ansteuergeschwindigkeit</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="sb_6_5">
<property name="maximum">
<number>250</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_11">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
<item row="7" column="0">
<widget class="QLabel" name="label_58">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Servo max:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<item row="7" column="1">
<widget class="QSpinBox" name="sb_6_4">
<property name="maximum">
<number>250</number>
</property>
</widget>
</item>
<item row="7" column="3">
<widget class="QSpinBox" name="sb_6_11">
<property name="maximum">
<number>250</number>
</property>
</widget>
</item>
<item row="7" column="4">
<widget class="QLabel" name="label_62">
<property name="text">
<string/>
4911,243 → 2627,94
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="Line" name="line_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<item row="10" column="0">
<widget class="QLabel" name="label_59">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Servo refresh rate:</string>
</property>
</widget>
</item>
<item row="5" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_10">
<item row="0" column="0">
<widget class="QLabel" name="label_156">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Servo 3:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="cb_6_12">
<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>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_157">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Servo 4:</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QComboBox" name="cb_6_13">
<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>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_158">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Servo 5:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="cb_6_14">
<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>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="horizontalSpacer_9">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
<item row="10" column="4">
<widget class="QLabel" name="label_63">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="3" column="0">
<item row="2" column="3">
<widget class="QSpinBox" name="sb_6_8">
<property name="maximum">
<number>250</number>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="sb_6_2">
<property name="maximum">
<number>250</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_55">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Servo Control:</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_56">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Kompensation:</string>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QLabel" name="label_54">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="10" column="1" colspan="3">
<widget class="QSpinBox" name="sb_6_5">
<property name="maximum">
<number>250</number>
</property>
</widget>
</item>
<item row="11" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="8" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
5155,11 → 2722,18
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>1</height>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2" rowspan="8">
<widget class="Line" name="line_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
5276,26 → 2850,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
5476,7 → 3030,7
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Bei Empfangsverlust: Geht der Funkempfang verloren (außer Reichweite oder Sender aus), tritt die Not-Gas-Regelung in Kraft um dem Piloten Zeit für Gegenmaßnahmen zu geben. Die gesamte Not-Gas-Regelung wird allerdings erst aktiv, wenn ein Gas-Wert von 40 für mindestens 4 Sekunden überschritten war (d.h. der Kopter wahrscheinlich fliegt)! &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:1; text-indent:1px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Min.Gas &lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Minimaler Gaswert, der an die Motoren geht &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:1; text-indent:1px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Max.Gas &lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Maximaler Gaswert, der an die Motoren geht. &lt;/span&gt;&lt;/p&gt;
5515,7 → 3069,7
</font>
</property>
<property name="text">
<string>Achs-(ent-)kopplung</string>
<string>Axis-(de-)-Coupling</string>
</property>
</widget>
</item>
5540,7 → 3094,7
</font>
</property>
<property name="text">
<string>Gier pos. Rückkopplung:</string>
<string>Gier-Feedback:</string>
</property>
</widget>
</item>
5571,26 → 3125,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
5605,7 → 3139,7
</font>
</property>
<property name="text">
<string>Nick/Roll Rückkopplung:</string>
<string>Nick/Roll-Feedback:</string>
</property>
</widget>
</item>
5636,26 → 3170,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
5670,7 → 3184,7
</font>
</property>
<property name="text">
<string>Gier-Korrektur:</string>
<string>Gier-Korrektion:</string>
</property>
</widget>
</item>
5701,26 → 3215,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
5766,7 → 3260,7
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600; text-decoration: underline;&quot;&gt;Achskopplung&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Eine Gierbewegung verkoppelt jetzt Nick und Roll. Das bedeutet, dass der MK jetzt eine Kurve fliegt, wenn man z.B. nickt und gleichzeitig giert. Es verhindert, dass dem MK nach Kurven schwindelig wird &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:1px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Gier-Feedback &lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;: Der Grad der Achsenkopplung. Ist der Wert zu klein, hängt der MK bei (und nach) einer Linkskurve nach rechts &lt;/span&gt;&lt;/p&gt;
6086,26 → 3580,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
6228,7 → 3702,7
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Pfeile:&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; Der Looping wird in diese entsprechende Richtung zugelassen. Dabei zeigt der Pfeil den entsprechenden Stickanschlag an &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Gas Limit:&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; Auf diesen Wert wird das Gas während des Loopings begrenzt &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Ansprechschwelle:&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; Ab diesen Stickwert wird aus der Lageregelung eine Drehratenregelung, um den Looping durchzuführen &lt;/span&gt;&lt;/p&gt;
6235,7 → 3709,7
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Hysteresis:&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; Stick-Hysterese für die Ansprechschwelle. In der Regel immer niedriger, als die Ansprechschwelle &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;TurnOver Nick: &lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;100 bedeutet 100% einer 360° Drehung. Wenn nach dem Looping der MK zu weit dreht, muss der Wert verringert werden. Dreht er nicht weit genug, muss der Wert vergrößert werden. Also entspricht 1 einem Winkel von 3,6° &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;TurnOver Roll:&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; analog &lt;/span&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;TurnOver Nick&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Wichtig:&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; Ansprechschwelle - Hysteresis sollte etwa bei 20-40 liegen, da sonst der Kopter beim verlassen der Loopingfunktion versucht, sehr schnell die Schräglage, die man mit dem Stick vorgibt, einzunehmen. Dies kann gerade bei sehr flotten Settings dazu führen, das der Kopter bei der Drehung &amp;quot;springt&amp;quot; und einige Gerade der Winkelbewegung nicht mitbekommt, was dazu führt, das sich der Kopter sehr schräg steht. &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Wichtig:&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; Ansprechschwelle - Hysteresis sollte etwa bei 20-40 liegen, da sonst der Kopter beim verlassen der Loopingfunktion versucht, sehr schnell die Schräglage, die man mit dem Stick vorgibt, einzunehmen. Dies kann gerade bei sehr flotten Settings dazu führen, das der Kopter bei der Drehung &quot;springt&quot; und einige Gerade der Winkelbewegung nicht mitbekommt, was dazu führt, das sich der Kopter sehr schräg steht. &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
6298,26 → 3772,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
6370,26 → 3824,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
6442,26 → 3876,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
6514,26 → 3928,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
6586,26 → 3980,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
6658,26 → 4032,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
6730,26 → 4084,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
6802,26 → 4136,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
6871,7 → 4185,7
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600; text-decoration: underline;&quot;&gt;Frei definierbare Parameter für eigene Erweiterungen im Quellcode. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Die Werte sind für Softwareentwickler zur freien Verfügung &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
6902,7 → 4216,7
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600; text-decoration: underline;&quot;&gt;Einstellungen für die Ausgänge J16 und J17.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Blinkmuster&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;Man kann ein Blinkmuster (von links nach rechts) und das Timing dafür im Koptertool einstellen. Automatisches Schalten von 10ms bis 20sek ist damit möglich&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Schaltfunktion&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;Wenn man als Timing einen Schalter auf der Funke belegt, kann man auch den Ausgang damit schalten. Dann nimmt der Ausgang den Pegel des obersten Bits (in der Darstellung links) an. Wenn damit etwas geschaltet werden soll (z.B. Kameraauslöser usw.), ist es besser, kein Blinkmuster einzugeben, sondern dann alle Bits entweder ein- oder auszuschalten. Ansonsten könnte das Blinkmuster während des Umschaltens einmal kurz durchlaufen.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
7183,6 → 4497,30
</item>
</layout>
</item>
<item row="0" column="3">
<widget class="QToolButton" name="J16_8">
<property name="maximumSize">
<size>
<width>15</width>
<height>15</height>
</size>
</property>
<property name="text">
<string>00</string>
</property>
<property name="icon">
<iconset resource="../QMK-Settings.qrc">
<normaloff>:/Flags/Global/Images/Actions/LED_Off.png</normaloff>
<normalon>:/Flags/Global/Images/Actions/LED_Green.png</normalon>:/Flags/Global/Images/Actions/LED_Off.png</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_107">
<property name="font">
7223,26 → 4561,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
7514,6 → 4832,36
</item>
</layout>
</item>
<item row="2" column="3">
<widget class="QToolButton" name="J17_8">
<property name="maximumSize">
<size>
<width>15</width>
<height>15</height>
</size>
</property>
<property name="toolTip">
<string>1</string>
</property>
<property name="text">
<string>00</string>
</property>
<property name="icon">
<iconset resource="../QMK-Settings.qrc">
<normaloff>:/Flags/Global/Images/Actions/LED_Off.png</normaloff>
<normalon>:/Flags/Global/Images/Actions/LED_Green.png</normalon>:/Flags/Global/Images/Actions/LED_Off.png</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_112">
<property name="font">
7554,26 → 4902,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
7586,7 → 4914,7
</property>
</widget>
</item>
<item row="4" column="0" colspan="4">
<item row="4" column="0" colspan="3">
<widget class="QCheckBox" name="cb_11_7">
<property name="font">
<font>
8140,7 → 5468,7
</item>
</layout>
</item>
<item row="10" column="1">
<item row="9" column="1">
<spacer name="verticalSpacer_16">
<property name="orientation">
<enum>Qt::Vertical</enum>
8153,44 → 5481,21
</property>
</spacer>
</item>
<item row="9" column="1" colspan="2">
<widget class="QLabel" name="label_63">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>festes Timing 0.1s</string>
</property>
</widget>
</item>
<item row="7" column="3">
<widget class="QCheckBox" name="s_11_7_cb">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="text">
<string>aktiv</string>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
</widget>
</item>
<item row="8" column="3">
<widget class="QCheckBox" name="s_11_8_cb">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
<property name="sizeHint" stdset="0">
<size>
<width>30</width>
<height>20</height>
</size>
</property>
<property name="text">
<string>aktiv</string>
</property>
</widget>
</spacer>
</item>
</layout>
</widget>
8223,7 → 5528,7
</font>
</property>
<property name="text">
<string>GPS aktiv</string>
<string>Enable GPS</string>
</property>
</widget>
</item>
8248,7 → 5553,7
</font>
</property>
<property name="text">
<string>GPS Modus Steuerung:</string>
<string>GPS Mode Control:</string>
</property>
</widget>
</item>
8279,26 → 5584,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
8313,7 → 5598,7
</font>
</property>
<property name="text">
<string>GPS Verstärkung</string>
<string>GPS Gain:</string>
</property>
</widget>
</item>
8344,26 → 5629,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
8385,7 → 5650,7
</font>
</property>
<property name="text">
<string>GPS Stick Schwelle:</string>
<string>GPS Stick Threshold:</string>
</property>
</widget>
</item>
8456,26 → 5721,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
8521,26 → 5766,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
8586,26 → 5811,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
8651,26 → 5856,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
8716,26 → 5901,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
8781,26 → 5946,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
8846,26 → 5991,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
8882,7 → 6007,7
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>1</height>
<height>40</height>
</size>
</property>
</spacer>
8911,7 → 6036,7
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600; text-decoration: underline;&quot;&gt;Einstellungen für das Navi-Ctrl.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;GPS Mode Control:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;0 = Free, 100 = Position Hold, 200 = Coming Home&lt;/span&gt;&lt;/p&gt;
8948,7 → 6073,7
</font>
</property>
<property name="text">
<string>GPS aktiv</string>
<string>Enable GPS</string>
</property>
</widget>
</item>
8973,7 → 6098,7
</font>
</property>
<property name="text">
<string>GPS Windkorrektur:</string>
<string>GPS Wind Correction:</string>
</property>
</widget>
</item>
9004,26 → 6129,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
9045,7 → 6150,7
</font>
</property>
<property name="text">
<string>Bremswirkung:</string>
<string>Speed Compensation:</string>
</property>
</widget>
</item>
9076,26 → 6181,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
9148,26 → 6233,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
9220,26 → 6285,6
</item>
<item>
<property name="text">
<string>Poti 5</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 6</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 7</string>
</property>
</item>
<item>
<property name="text">
<string>Poti 8</string>
</property>
</item>
<item>
<property name="text">
<string>0</string>
</property>
</item>
9261,7 → 6306,7
</font>
</property>
<property name="text">
<string>Position Hold Login-Zeit:</string>
<string>Position Hold Login Time:</string>
</property>
</widget>
</item>
9319,7 → 6364,7
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600; text-decoration: underline;&quot;&gt;Einstellungen für das Navi-Ctrl (Seite 2).&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt; font-weight:600; text-decoration: underline;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;GPS-Wind-Correction: &lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;soll den MK bei Coming-Home direkter zurückfliegen und die Drift durch Wind kompensieren&lt;/span&gt;&lt;/p&gt;
9335,72 → 6380,11
</item>
</layout>
</widget>
<widget class="QWidget" name="Seite"/>
<widget class="QWidget" name="Seite">
<layout class="QGridLayout" name="gridLayout_29"/>
</widget>
</widget>
</item>
<item row="0" column="2">
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_27">
<property name="margin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QWidget" name="wg_Set" native="true">
<layout class="QGridLayout" name="gridLayout_8">
<property name="topMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_146">
<property name="text">
<string>Parametersatz</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="sb_Set">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>5</number>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLineEdit" name="le_SetName">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="wgt_Connection" name="wg_Connection" native="true"/>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menuBar">
9408,8 → 6392,8
<rect>
<x>0</x>
<y>0</y>
<width>778</width>
<height>19</height>
<width>764</width>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="menu_Program">
9425,33 → 6409,13
</property>
<addaction name="ac_About"/>
</widget>
<widget class="QMenu" name="menuKonfiguration">
<property name="title">
<string>Konfiguration</string>
</property>
<addaction name="ac_Read"/>
<addaction name="ac_Write"/>
<addaction name="separator"/>
<addaction name="ac_Load"/>
<addaction name="ac_Save"/>
</widget>
<widget class="QMenu" name="menuA_nsicht">
<property name="title">
<string>Ansicht</string>
</property>
<addaction name="ac_Toolbar"/>
<addaction name="ac_SmallIcons"/>
</widget>
<widget class="QMenu" name="menuExtras">
<property name="title">
<string>Extras</string>
</property>
<addaction name="ac_MotorMixer"/>
<addaction name="ac_MotorTest"/>
</widget>
<addaction name="menu_Program"/>
<addaction name="menuA_nsicht"/>
<addaction name="menuKonfiguration"/>
<addaction name="menuExtras"/>
<addaction name="menu_Help"/>
</widget>
9572,43 → 6536,10
<string>Motor-Mixer</string>
</property>
</action>
<action name="ac_Toolbar">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>Toolbar anzeigen</string>
</property>
</action>
<action name="ac_SmallIcons">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>nur kleine Icons</string>
</property>
</action>
<action name="ac_MotorTest">
<property name="text">
<string>Motor-Test</string>
</property>
</action>
</widget>
<layoutdefault spacing="4" margin="11"/>
<customwidgets>
<customwidget>
<class>wgt_Connection</class>
<extends>QWidget</extends>
<header>wgt_Connection.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="../QMK-Settings.qrc"/>
<include location="../../QMK-Maps/QMK-Maps.qrc"/>
</resources>
<connections>
<connection>
9650,12 → 6581,12
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>279</x>
<y>97</y>
<x>214</x>
<y>112</y>
</hint>
<hint type="destinationlabel">
<x>279</x>
<y>97</y>
<x>393</x>
<y>111</y>
</hint>
</hints>
</connection>
9666,12 → 6597,12
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>279</x>
<y>97</y>
<x>214</x>
<y>139</y>
</hint>
<hint type="destinationlabel">
<x>279</x>
<y>97</y>
<x>393</x>
<y>138</y>
</hint>
</hints>
</connection>
9814,8 → 6745,8
<y>80</y>
</hint>
<hint type="destinationlabel">
<x>279</x>
<y>97</y>
<x>221</x>
<y>107</y>
</hint>
</hints>
</connection>
9874,8 → 6805,8
<slot>setChecked(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>279</x>
<y>97</y>
<x>377</x>
<y>342</y>
</hint>
<hint type="destinationlabel">
<x>367</x>
9894,8 → 6825,8
<y>199</y>
</hint>
<hint type="destinationlabel">
<x>279</x>
<y>97</y>
<x>377</x>
<y>342</y>
</hint>
</hints>
</connection>
9906,12 → 6837,12
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>279</x>
<y>97</y>
<x>337</x>
<y>114</y>
</hint>
<hint type="destinationlabel">
<x>279</x>
<y>97</y>
<x>451</x>
<y>191</y>
</hint>
</hints>
</connection>
9922,12 → 6853,12
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>279</x>
<y>97</y>
<x>295</x>
<y>122</y>
</hint>
<hint type="destinationlabel">
<x>279</x>
<y>97</y>
<x>515</x>
<y>193</y>
</hint>
</hints>
</connection>
9938,12 → 6869,12
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>279</x>
<y>97</y>
<x>290</x>
<y>120</y>
</hint>
<hint type="destinationlabel">
<x>279</x>
<y>97</y>
<x>424</x>
<y>274</y>
</hint>
</hints>
</connection>
9954,12 → 6885,12
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>279</x>
<y>97</y>
<x>259</x>
<y>121</y>
</hint>
<hint type="destinationlabel">
<x>279</x>
<y>97</y>
<x>509</x>
<y>271</y>
</hint>
</hints>
</connection>
9970,12 → 6901,12
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>279</x>
<y>97</y>
<x>280</x>
<y>120</y>
</hint>
<hint type="destinationlabel">
<x>279</x>
<y>97</y>
<x>446</x>
<y>311</y>
</hint>
</hints>
</connection>
9986,12 → 6917,12
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>279</x>
<y>97</y>
<x>331</x>
<y>90</y>
</hint>
<hint type="destinationlabel">
<x>279</x>
<y>97</y>
<x>335</x>
<y>111</y>
</hint>
</hints>
</connection>
10002,8 → 6933,8
<slot>setChecked(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>279</x>
<y>97</y>
<x>377</x>
<y>91</y>
</hint>
<hint type="destinationlabel">
<x>367</x>
10022,10 → 6953,42
<y>226</y>
</hint>
<hint type="destinationlabel">
<x>279</x>
<y>97</y>
<x>377</x>
<y>91</y>
</hint>
</hints>
</connection>
<connection>
<sender>cb_11_7</sender>
<signal>toggled(bool)</signal>
<receiver>J17_8</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>383</x>
<y>205</y>
</hint>
<hint type="destinationlabel">
<x>555</x>
<y>152</y>
</hint>
</hints>
</connection>
<connection>
<sender>cb_11_7</sender>
<signal>toggled(bool)</signal>
<receiver>J16_8</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>402</x>
<y>201</y>
</hint>
<hint type="destinationlabel">
<x>553</x>
<y>93</y>
</hint>
</hints>
</connection>
</connections>
</ui>
/QMK-Groundstation/trunk/QMK-Settings/Dialogs/dlg_MotorMixer.cpp
68,8 → 68,9
}
 
// Connection-Object übergeben.
void dlg_MotorMixer::set_Objects(cSettings *t_Settings, s_Directorys t_Dir)
void dlg_MotorMixer::set_Objects(Input *t_Input, cSettings *t_Settings, s_Directorys t_Dir)
{
o_Input = t_Input;
o_Settings = t_Settings;
s_Dir = t_Dir;
}
244,8 → 245,7
void dlg_MotorMixer::read_Mixer()
{
c_Data[0] = 0;
// o_Input->send_Data(HandlerMK::make_Frame('n', ADDRESS_FC, c_Data, 0).toLatin1().data(), DATA_READ_MIXER);
emit sig_SendData(HandlerMK::make_Frame('n', ADDRESS_FC, c_Data, 0).toLatin1().data(), DATA_READ_MIXER);
o_Input->send_Data(HandlerMK::make_Frame('n', ADDRESS_FC, c_Data, 0).toLatin1().data(), DATA_READ_MIXER);
}
 
// Button-Slots
260,8 → 260,7
 
memcpy((unsigned char *)&c_Data, (unsigned char *)&MK_Mixer, sizeof(MK_Mixer));
 
// o_Input->send_Data(HandlerMK::make_Frame('m', ADDRESS_FC, c_Data, sizeof(MK_Mixer)).toLatin1().data(), DATA_WRITE_MIXER);
emit sig_SendData(HandlerMK::make_Frame('m', ADDRESS_FC, c_Data, sizeof(MK_Mixer)).toLatin1().data(), DATA_WRITE_MIXER);
o_Input->send_Data(HandlerMK::make_Frame('m', ADDRESS_FC, c_Data, sizeof(MK_Mixer)).toLatin1().data(), DATA_WRITE_MIXER);
}
 
void dlg_MotorMixer::slot_pb_LOAD()
/QMK-Groundstation/trunk/QMK-Settings/Dialogs/dlg_MotorMixer.h
30,6 → 30,8
#include "../../Global/Kopter.h"
#include "../../Global/Global.h"
#include "../../Global/MK_Datatypes.h"
#include "../../Global/Class_Input/Input.h"
#include "../../Global/Class_Input/Input_TCP.h"
#include "../../Global/Class_HandlerMK/HandlerMK.h"
 
class dlg_MotorMixer : public QDialog, public Ui::dlg_MotorMixer_UI
38,10 → 40,13
 
public:
dlg_MotorMixer(QWidget *parent = 0);
void set_Objects(cSettings *t_Settings, s_Directorys t_Dir);
void set_Objects(Input *t_Input, cSettings *t_Settings, s_Directorys t_Dir);
void set_MotorConfig(s_MK_Mixer t_Mixer);
void read_Mixer();
private:
// Object für Kopter-Verbindung
Input *o_Input;
 
cSettings *o_Settings;
 
s_MK_Mixer MK_Mixer;
59,10 → 64,6
void slot_pb_LOAD();
void slot_pb_SAVE();
void slot_CheckValue(int Wert);
 
signals:
void sig_SendData(QString ,int);
 
};
 
#endif // DLG_MOTORMIXER_H
/QMK-Groundstation/trunk/QMK-Settings/QMK-Settings.pro
2,7 → 2,8
# Project created by QtCreator 2009-07-20T20:04:00
# -------------------------------------------------
 
include(../Global/Widget_Connection.pri)
DEFINES += _TTY_POSIX_
include(../Global/Class_SerialPort.pri)
 
QT += network
TARGET = QMK-Settings
19,17 → 20,26
RCC_DIR = ../Binary/.build/QMK-Settings
RESOURCES += QMK-Settings.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 \
Dialogs/dlg_MotorMixer.cpp \
Dialogs/dlg_MotorTest.cpp \
Classes/cSettings.cpp
HEADERS += Defines.h \
../Global/Kopter.h \
../Global/MK_Datatypes.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 \
Dialogs/dlg_MotorMixer.h \
Dialogs/dlg_MotorTest.h \
Classes/cSettings.h \
TypeDefs.h
FORMS += Dialogs/dlg_Main.ui \
Dialogs/dlg_MotorMixer.ui \
Dialogs/dlg_MotorTest.ui
Dialogs/dlg_MotorMixer.ui
/QMK-Groundstation/trunk/build-debian.sh
18,6 → 18,10
${QMAKE} QMK-Communicator.pro ${CONFIG}
make ${MAKEOPT}
cd ..
cd ./QMK-Scope
${QMAKE} QMK-Scope.pro CONFIG+=Debian ${CONFIG}
make ${MAKEOPT}
cd ..
cd ./QMK-Settings
${QMAKE} QMK-Settings.pro ${CONFIG}
make ${MAKEOPT}
34,11 → 38,3
#qmake QMK-Logger.pro ${CONFIG}
#make ${MAKEOPT}
#cd ..
#cd ./QMK-Control
#${QMAKE} QMK-Control.pro CONFIG+=Debian ${CONFIG}
#make ${MAKEOPT}
#cd ..
cd ./QMK-Scope
${QMAKE} QMK-Scope.pro CONFIG+=Debian ${CONFIG}
make ${MAKEOPT}
cd ..
/QMK-Groundstation/trunk/build-gentoo.sh
18,6 → 18,10
${QMAKE} QMK-Communicator.pro ${CONFIG}
make ${MAKEOPT}
cd ..
cd ./QMK-Scope
${QMAKE} QMK-Scope.pro CONFIG+=Gentoo ${CONFIG}
make ${MAKEOPT}
cd ..
cd ./QMK-Settings
${QMAKE} QMK-Settings.pro ${CONFIG}
make ${MAKEOPT}
34,11 → 38,3
#qmake QMK-Logger.pro ${CONFIG}
#make ${MAKEOPT}
#cd ..
#cd ./QMK-Control
#${QMAKE} QMK-Control.pro CONFIG+=Gentoo ${CONFIG}
#make ${MAKEOPT}
#cd ..
cd ./QMK-Scope
${QMAKE} QMK-Scope.pro CONFIG+=Gentoo ${CONFIG}
make ${MAKEOPT}
cd ..
/QMK-Groundstation/trunk/build-opensuse.sh
19,6 → 19,10
${QMAKE} QMK-Communicator.pro ${CONFIG}
make ${MAKEOPT}
cd ..
cd ./QMK-Scope
${QMAKE} QMK-Scope.pro CONFIG+=Suse ${CONFIG}
make ${MAKEOPT}
cd ..
cd ./QMK-Settings
${QMAKE} QMK-Settings.pro ${CONFIG}
make ${MAKEOPT}
35,11 → 39,3
#${QMAKE} QMK-Logger.pro ${CONFIG}
#make ${MAKEOPT}
#cd ..
#cd ./QMK-Control
#${QMAKE} QMK-Control.pro CONFIG+=Suse ${CONFIG}
#make ${MAKEOPT}
#cd ..
cd ./QMK-Scope
${QMAKE} QMK-Scope.pro CONFIG+=Suse ${CONFIG}
make ${MAKEOPT}
cd ..
/QMK-Groundstation/trunk/build-osx.sh
18,6 → 18,10
${QMAKE} QMK-Communicator.pro ${CONFIG}
make ${MAKEOPT}
cd ..
cd ./QMK-Scope
${QMAKE} QMK-Scope.pro CONFIG+=OSX ${CONFIG}
make ${MAKEOPT}
cd ..
cd ./QMK-Settings
${QMAKE} QMK-Settings.pro ${CONFIG}
make ${MAKEOPT}
34,11 → 38,3
#${QMAKE} QMK-Logger.pro ${CONFIG}
#make ${MAKEOPT}
#cd ..
#cd ./QMK-Control
#${QMAKE} QMK-Control.pro CONFIG+=OSX ${CONFIG}
#make ${MAKEOPT}
#cd ..
cd ./QMK-Scope
${QMAKE} QMK-Scope.pro CONFIG+=OSX ${CONFIG}
make ${MAKEOPT}
cd ..