/QMK-Groundstation/tags/V1.0.1/Classes/cConnection.cpp |
---|
0,0 → 1,264 |
/*************************************************************************** |
* Copyright (C) 2009 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#include "cConnection.h" |
cConnection::cConnection() |
{ |
i_Type = 0; |
TTY = new ManageSerialPort(); |
o_Timer = new QTimer(this); |
connect(o_Timer, SIGNAL(timeout()), SLOT(slot_Timer())); |
TTY->setBaudRate(BAUD57600); //BaudRate |
TTY->setDataBits(DATA_8); //DataBits |
TTY->setParity(PAR_NONE); //Parity |
TTY->setStopBits(STOP_1); //StopBits |
TTY->setFlowControl(FLOW_OFF); //FlowControl |
TTY->setTimeout(0, 10); |
TTY->enableSending(); |
TTY->enableReceiving(); |
b_isOpen = false; |
} |
void cConnection::new_Data(QString Data) |
{ |
Data = Data; |
while ((RxData.String.length() > 1) && (RxData.String.at(1) == '#')) |
{ |
RxData.String.remove(0,1); |
} |
if (ToolBox::check_CRC(RxData.String)) |
{ |
RxData.Input = RxData.String.toLatin1().data(); |
emit(newData(RxData)); |
} |
else |
{ |
emit(showTerminal(2, RxData.String)); |
} |
} |
void cConnection::slot_newDataReceived(const QByteArray &dataReceived) |
{ |
const char *RXt; |
RXt = dataReceived.data(); |
int a = 0; |
while (RXt[a] != '\0') |
{ |
if (RXt[a] == '\r') |
{ |
new_Data(QString("")); |
RxData.String = QString(""); |
} |
else |
{ |
RxData.String = RxData.String + QString(RXt[a]); |
} |
a++; |
} |
} |
bool cConnection::isOpen() |
{ |
return b_isOpen; |
} |
bool cConnection::Close() |
{ |
switch(i_Type) |
{ |
case C_TTY : |
{ |
TTY->close(); |
disconnect(TTY, SIGNAL(newDataReceived(const QByteArray &)), this, 0); |
b_isOpen = false; |
} |
break; |
case C_IP : |
{ |
TcpSocket->disconnectFromHost(); |
disconnect(TcpSocket, SIGNAL(connected()), 0, 0); |
disconnect(TcpSocket, SIGNAL(readyRead()), 0, 0); |
disconnect(TcpSocket, SIGNAL(disconnected()), 0, 0); |
b_isOpen = false; |
} |
break; |
} |
return b_isOpen; |
} |
bool cConnection::Open(int Typ, QString Address) |
{ |
switch(Typ) |
{ |
case C_TTY : |
{ |
TTY->setPort(Address); //Port |
TTY->open(); |
ToolBox::Wait(1000); |
if (TTY->isOpen()) |
{ |
connect(TTY, SIGNAL(newDataReceived(const QByteArray &)), this, SLOT(slot_newDataReceived(const QByteArray &))); |
TTY->receiveData(); |
b_isOpen = true; |
i_Type = C_TTY; |
} |
} |
break; |
case C_IP : |
{ |
QStringList Host = Address.split(":"); |
TcpSocket = new(QTcpSocket); |
TcpSocket->connectToHost (Host[1], Host[2].toInt()); |
connect(TcpSocket, SIGNAL(connected()), this, SLOT(slot_IP_Connected()) ); |
// connect(TcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(slot_Error(QAbstractSocket::SocketError))); |
b_isOpen = true; |
i_Type = C_IP; |
} |
break; |
} |
return b_isOpen; |
} |
void cConnection::slot_IP_Connected() |
{ |
connect(TcpSocket, SIGNAL(readyRead()), SLOT(slot_IP_ReadLine())); |
connect(TcpSocket, SIGNAL(disconnected()),TcpSocket, SLOT(deleteLater())); |
connect(TcpSocket, SIGNAL(disconnected()),this, SLOT(slot_IP_Disconnect())); |
// emit sig_Connected(); |
} |
void cConnection::slot_IP_Disconnect() |
{ |
disconnect(TcpSocket, SIGNAL(disconnected()), 0, 0); |
disconnect(TcpSocket, SIGNAL(readyRead()), 0, 0); |
// emit sig_Disconnected(1); |
} |
void cConnection::slot_IP_ReadLine() |
{ |
QString Input = QString(TcpSocket->readLine(TcpSocket->bytesAvailable())).remove(QChar(' ')); |
int Len = Input.length(); |
for (int z = 0; z < Len; z++) |
{ |
if (Input[z] == '\r') |
{ |
new_Data(QString("")); |
RxData.String = QString(""); |
} |
else |
{ |
RxData.String = RxData.String + Input[z]; |
} |
} |
} |
bool cConnection::send_Cmd(char CMD, int Address, char Data[150],unsigned int Length, bool Resend) |
{ |
if (b_isOpen) |
{ |
QByteArray Temp; |
QString TX_Data; |
if (CMD != '#') |
{ |
TX_Data = ToolBox::Encode64(Data, Length); |
TX_Data = QString("#") + (QString('a' + Address)) + QString(CMD) + TX_Data; |
TX_Data = ToolBox::add_CRC(TX_Data) + '\r'; |
Temp = QByteArray(TX_Data.toUtf8()); |
if (Resend) |
{ |
o_Timer->start(TICKER); |
s_ReSend = Temp; |
} |
} |
else |
{ |
for (unsigned int a = 0; a < Length; a++) |
{ |
Temp[a] = Data[a]; |
} |
} |
switch(i_Type) |
{ |
case C_TTY : |
{ |
TTY->sendData(Temp); |
} |
break; |
case C_IP : |
{ |
TcpSocket->write(Temp); |
} |
break; |
} |
emit(showTerminal(3, TX_Data)); |
} |
return true; |
} |
void cConnection::stop_ReSend() |
{ |
o_Timer->stop(); |
} |
void cConnection::slot_Timer() |
{ |
switch(i_Type) |
{ |
case C_TTY : |
{ |
TTY->sendData(s_ReSend); |
} |
break; |
case C_IP : |
{ |
TcpSocket->write(s_ReSend); |
} |
break; |
} |
emit(showTerminal(3, QString(s_ReSend))); |
} |
/QMK-Groundstation/tags/V1.0.1/Classes/cConnection.h |
---|
0,0 → 1,72 |
/*************************************************************************** |
* Copyright (C) 2009 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#ifndef CCONNECTION_H |
#define CCONNECTION_H |
#include <QObject> |
#include <QTcpSocket> |
#include <QTimer> |
#include "ToolBox.h" |
#include "../global.h" |
#include "../SerialPort/ManageSerialPort.h" |
#define C_TTY 1 |
#define C_IP 2 |
class cConnection : public QObject |
{ |
Q_OBJECT |
public: |
cConnection(); |
bool isOpen(); |
bool Open(int Typ, QString Address); |
bool Close(); |
bool send_Cmd(char CMD, int Address, char Data[150],unsigned int Length, bool Resend = true); |
void stop_ReSend(); |
private: |
ManageSerialPort *TTY; |
QTcpSocket *TcpSocket; |
QTimer *o_Timer; |
QByteArray s_ReSend; |
bool b_isOpen; |
int i_Type; |
sRxData RxData; |
void new_Data(QString Data); |
private slots: |
void slot_newDataReceived(const QByteArray &dataReceived); |
void slot_IP_Connected(); |
void slot_IP_Disconnect(); |
void slot_IP_ReadLine(); |
void slot_Timer(); |
// void slot_Error(QAbstractSocket::SocketError Error); |
signals: |
void newData(sRxData RxData); |
void showTerminal(int Typ, QString Text); |
}; |
#endif // CCONNECTION_H |
/QMK-Groundstation/tags/V1.0.1/Classes/cKML_Server.cpp |
---|
0,0 → 1,136 |
/*************************************************************************** |
* Copyright (C) 2008 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#include <QStringList> |
#include "cKML_Server.h" |
cKML_Server::cKML_Server() |
{ |
NaviCount = 0; |
} |
void cKML_Server::start_Server(int Port, cSettings *Set) |
{ |
Settings = Set; |
TcpServer = new QTcpServer(); |
if (!TcpServer->listen(QHostAddress::Any, qint16(Port))) |
{ |
qDebug("Kann Serversocket nicht Einrichten..!!"); |
} |
else |
{ |
connect(TcpServer, SIGNAL(newConnection()), this, SLOT(slot_NewConnection())); |
} |
} |
void cKML_Server::stop_Server() |
{ |
delete TcpServer; |
} |
void cKML_Server::store_NaviString(sNaviString Navi) |
{ |
Route[NaviCount] = Navi; |
NaviCount++; |
} |
void cKML_Server::slot_ReadData() |
{ |
if (TcpSocket->canReadLine()) |
{ |
QStringList tokens = QString(TcpSocket->readLine()).split(QRegExp("[ \r\n][ \r\n]*")); |
qDebug() << "QStringList ---------"; |
for (QList<QString>::iterator i = tokens.begin(); i != tokens.end(); ++i) |
qDebug() << (*i); |
} |
TcpSocket->close(); |
} |
void cKML_Server::slot_NewConnection() |
{ |
TcpSocket = TcpServer->nextPendingConnection(); |
connect(TcpSocket, SIGNAL(readyRead ()),this, SLOT(slot_ReadData())); |
QByteArray block; |
block = "HTTP/1.0 200 OK\nContent-Type: application/vnd.google-earth.kml+xml; charset=iso-8859-1\nConnection: close\n\n"; |
// block = "HTTP/1.0 200 OK\nContent-Type: text/xml; charset=utf-8\nConnection: close\n\n"; |
TcpSocket->write(block); |
TcpSocket->write(get_KML()); |
TcpSocket->close(); |
} |
QByteArray cKML_Server::get_KML() |
{ |
QByteArray block; |
block = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" |
"<kml xmlns=\"http://earth.google.com/kml/2.2\">\n" |
" <Document>\n" |
" <name>Online Mikrokopter GPS Position</name>\n" |
" <Style id=\"MK_gps-style\">\n" |
" <LineStyle>\n" |
" <color>ff0000ff</color>\n" |
" <width>2</width>\n" |
" </LineStyle>\n" |
" </Style>\n" |
" <Placemark>\n" |
" <LookAt>\n" |
" <range>400</range>\n" |
" <tilt>45</tilt>\n" |
" </LookAt>\n" |
" <name>Flight</name>\n" |
" <styleUrl>#MK_gps-style</styleUrl>\n" |
" <LineString>\n"; |
if (Settings->Server.ToGround) |
{ |
block = block + " <extrude>1</extrude>\n"; |
} |
block = block + |
" <tessellate>1</tessellate>\n" |
" <altitudeMode>relativeToGround</altitudeMode>\n" |
" <coordinates>\n"; |
for (int a = 0; a < NaviCount; a++) |
{ |
block = block + Route[a].Longitude.toLatin1() + "," + Route[a].Latitude.toLatin1() + "," + Route[a].Altitude.toLatin1() + " " ; |
block = block + "\n"; |
} |
block = block + |
" </coordinates>\n" |
" </LineString>\n" |
" </Placemark>\n" |
" </Document>\n" |
" </kml>\n"; |
return block; |
} |
cKML_Server::~cKML_Server() |
{ |
} |
/QMK-Groundstation/tags/V1.0.1/Classes/cSettings.cpp |
---|
0,0 → 1,303 |
/*************************************************************************** |
* Copyright (C) 2008 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#include <QCoreApplication> |
#include <QSettings> |
#include <QDir> |
#include "cSettings.h" |
cSettings::cSettings() |
{ |
read_SettingsID(); |
if (Settings_ID < 3) |
{ |
QBitArray Def_TabViews; |
Def_TabViews.fill(true, 6); |
qDebug("Konvertiere Einstellungen Version 1+2 -> 3"); |
QSettings Setting("KeyOz-Net", "QMK-Groundstation"); |
Setting.beginGroup("GUI"); |
GUI.TabViews = Setting.value("TabViews", QBitArray(Def_TabViews)).value<QBitArray>(); |
GUI.TabViews.resize(10); |
GUI.TabViews[6] = true; |
Setting.setValue("TabViews", QBitArray(GUI.TabViews)); |
Setting.endGroup(); |
} |
read_Settings(); |
Analog1.LogView.resize(MaxAnalog); |
Analog1.PlotView.resize(MaxAnalog); |
// Alte Settingsstruktur Löschen. |
if (Settings_ID < 2) |
{ |
qDebug("Konvertiere Einstellungen Version 1 -> 2"); |
QSettings Setting("KeyOz-Net", "QMK-Groundstation"); |
Setting.beginGroup("AnalogWerte"); |
for (int a = 0; a < MaxAnalog; a++) |
{ |
Analog1.LogView.setBit(a, Setting.value(("Analog_" + QString("%1").arg(a) + "_Log"), Def_Log[a]).toBool()); |
Analog1.PlotView.setBit(a, Setting.value(("Analog_" + QString("%1").arg(a) + "_Plot"), Def_Plot_Show[a]).toBool()); |
Analog1.Label[a] = Setting.value(("Analog_" + QString("%1").arg(a)), Def_AnalogNames[a]).toString(); |
} |
Setting.endGroup(); |
Setting.remove("AnalogWerte-FC"); |
Setting.remove("AnalogWerte"); |
write_Settings_Analog(); |
write_Settings_AnalogLabels(); |
} |
else |
{ |
read_Settings_Analog(); |
read_Settings_AnalogLabels(); |
} |
Settings_ID = 3; |
} |
// Config der Analogwert-Anzeige (Plotter / CVS) |
void cSettings::write_Settings_Analog(int ID) |
{ |
QString Hardware = HardwareType[ID]; |
QSettings Setting("KeyOz-Net", "QMK-Groundstation"); |
Setting.beginGroup("Analog-Werte"); |
Setting.setValue(Hardware + "-LogView", QBitArray(Analog1.LogView)); |
Setting.setValue(Hardware + "-PlotView", QBitArray(Analog1.PlotView)); |
Setting.endGroup(); |
} |
void cSettings::read_Settings_Analog(int ID) |
{ |
QBitArray Def_View; |
Def_View.fill(true,MaxAnalog); |
QString Hardware = HardwareType[ID]; |
QSettings Setting("KeyOz-Net", "QMK-Groundstation"); |
Setting.beginGroup("Analog-Werte"); |
Analog1.LogView = Setting.value(Hardware + "-LogView", QBitArray(Def_View)).value<QBitArray>(); |
Analog1.PlotView = Setting.value(Hardware + "-PlotView", QBitArray(Def_View)).value<QBitArray>(); |
Setting.endGroup(); |
} |
// Labels der Analogwerte. |
void cSettings::write_Settings_AnalogLabels(int ID) |
{ |
QString Hardware = HardwareType[ID]; |
QSettings Setting("KeyOz-Net", "QMK-Groundstation-Labels"); |
Setting.beginGroup("Analog-Labels-" + Hardware); |
Setting.setValue("Version", Analog1.Version); |
for (int a=0; a<MaxAnalog; a++) |
{ |
Setting.setValue("Label_" + QString("%1").arg(a), Analog1.Label[a]); |
} |
Setting.endGroup(); |
} |
void cSettings::read_Settings_AnalogLabels(int ID) |
{ |
QString Hardware = HardwareType[ID]; |
QSettings Setting("KeyOz-Net", "QMK-Groundstation-Labels"); |
Setting.beginGroup("Analog-Labels-" + Hardware); |
Analog1.Version = Setting.value(("Version"), "0").toString(); |
for (int a=0; a<MaxAnalog; a++) |
{ |
Analog1.Label[a] = Setting.value(("Label_" + QString("%1").arg(a)), Def_AnalogNames[a]).toString(); |
} |
Setting.endGroup(); |
} |
// Programmeinstellungen |
void cSettings::read_SettingsID() |
{ |
QSettings Setting("KeyOz-Net", "QMK-Groundstation"); |
Setting.beginGroup("Global"); |
Settings_ID = Setting.value("Settings ID", 1).toInt(); |
Setting.endGroup(); |
} |
// Programmeinstellungen |
void cSettings::read_Settings() |
{ |
QBitArray Def_BitArray; |
Def_BitArray.fill(true, 10); |
QDir Dir; |
QString HomeDir = (QString(Dir.homePath() + "/")); |
QSettings Setting("KeyOz-Net", "QMK-Groundstation"); |
Setting.beginGroup("Global"); |
Settings_ID = Setting.value("Settings ID", 1).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("Port"); |
TTY.Port = Setting.value("TTY", QString(OS_PORT)).toString(); |
TTY.MaxPorts = Setting.value("TTY_MAX", 1).toInt(); |
TTY.PortID = Setting.value("TTY_ID", 0).toInt(); |
for (int z = 0; z < TTY.MaxPorts; z++) |
{ |
TTY.Ports[z] = Setting.value("TTY_" + QString("%1").arg(z), QString(OS_PORT)).toString(); |
} |
Setting.endGroup(); |
Setting.beginGroup("GUI"); |
GUI.isMax = Setting.value("IsMax",false).toBool(); |
GUI.Size = Setting.value("Size", QSize(700, 300)).toSize(); |
GUI.Point = Setting.value("Point",QPoint(1,1)).toPoint(); |
GUI.TabViews = Setting.value("TabViews", QBitArray(Def_BitArray)).value<QBitArray>(); |
GUI.ToolViews = Setting.value("ToolViews", QBitArray(Def_BitArray)).value<QBitArray>(); |
GUI.Term_Info = Setting.value("Terminal_Info",false).toBool(); |
GUI.Term_Data = Setting.value("Terminal_Data",true).toBool(); |
GUI.Term_Always = Setting.value("Terminal_Always",false).toBool(); |
GUI.Term_Send = Setting.value("Terminal_Send",true).toBool(); |
Setting.endGroup(); |
Setting.beginGroup("Map"); |
Map.GotoPosition = Setting.value("Goto_Position",true).toBool(); |
Map.ShowTrack = Setting.value("Show_Track",true).toBool(); |
Map.LastLatitude = Setting.value("Last_Latitude",13.5).toDouble(); |
Map.LastLongitude = Setting.value("Last_Longitude",52.5).toDouble(); |
Setting.endGroup(); |
Setting.beginGroup("Dirs"); |
DIR.Logging = Setting.value("LogDir", HomeDir).toString(); |
DIR.Parameter = Setting.value("ParDir", HomeDir).toString(); |
DIR.Cache = Setting.value("Dir_MapCache", HomeDir + ".QMK-Cache").toString(); |
DIR.AVRDUDE = Setting.value("Path_AVRDUDE", "avrdude").toString(); |
Setting.endGroup(); |
Setting.beginGroup("MKData"); |
Data.Plotter_Count = Setting.value("Plotter_Count", 100).toInt(); |
Data.Debug_Fast = Setting.value("Debug_Fast", 100).toInt(); |
Data.Debug_Slow = Setting.value("Debug_Slow", 500).toInt(); |
Data.Debug_Off = Setting.value("Debug_Off", 1000).toInt(); |
Data.Navi_Fast = Setting.value("Navi_Fast", 100).toInt(); |
Data.Navi_Slow = Setting.value("Navi_Slow", 500).toInt(); |
Data.Navi_Off = Setting.value("Navi_Off", 1000).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("GoogleEarth-Server"); |
Server.Port = Setting.value("Port", 10664).toString(); |
Server.StartServer = Setting.value("StartServer", false).toBool(); |
Server.ToGround = Setting.value("ToGround", false).toBool(); |
Setting.endGroup(); |
Setting.beginGroup("QMK-Server"); |
Server.QMKS_Login = Setting.value("Login", "").toString(); |
Server.QMKS_Password = Setting.value("Password", "").toString(); |
Server.QMKS_Host = Setting.value("Host", "nimari.de").toString(); |
Server.QMKS_Port = Setting.value("Port", "16441").toString(); |
Setting.endGroup(); |
} |
void cSettings::write_Settings() |
{ |
QSettings Setting("KeyOz-Net", "QMK-Groundstation"); |
Setting.beginGroup("Global"); |
Setting.setValue("Settings ID", Settings_ID); |
Setting.endGroup(); |
Setting.beginGroup("Port"); |
Setting.setValue("TTY", TTY.Port); |
Setting.setValue("TTY_MAX", TTY.MaxPorts); |
Setting.setValue("TTY_ID", TTY.PortID); |
for (int z = 0; z < TTY.MaxPorts; z++) |
{ |
Setting.setValue("TTY_" + QString("%1").arg(z), TTY.Ports[z]); |
} |
Setting.endGroup(); |
Setting.beginGroup("Dirs"); |
Setting.setValue("LogDir", DIR.Logging); |
Setting.setValue("ParDir", DIR.Parameter); |
Setting.setValue("Dir_MapCache", DIR.Cache); |
Setting.setValue("Path_AVRDUDE", DIR.AVRDUDE); |
Setting.endGroup(); |
Setting.beginGroup("GUI"); |
Setting.setValue("IsMax", GUI.isMax); |
Setting.setValue("Size", GUI.Size); |
Setting.setValue("Point", GUI.Point); |
Setting.setValue("TabViews", QBitArray(GUI.TabViews)); |
Setting.setValue("ToolViews", QBitArray(GUI.ToolViews)); |
Setting.setValue("Terminal_Info", GUI.Term_Info); |
Setting.setValue("Terminal_Data", GUI.Term_Data); |
Setting.setValue("Terminal_Always", GUI.Term_Always); |
Setting.setValue("Terminal_Send", GUI.Term_Send); |
Setting.endGroup(); |
Setting.beginGroup("Map"); |
Setting.setValue("Goto_Position", Map.GotoPosition); |
Setting.setValue("Show_Track", Map.ShowTrack); |
Setting.setValue("Last_Latitude", Map.LastLatitude); |
Setting.setValue("Last_Longitude", Map.LastLongitude); |
Setting.endGroup(); |
Setting.beginGroup("MKData"); |
Setting.setValue("Plotter_Count", Data.Plotter_Count); |
Setting.setValue("Debug_Fast", Data.Debug_Fast); |
Setting.setValue("Debug_Slow", Data.Debug_Slow); |
Setting.setValue("Debug_Off", Data.Debug_Off); |
Setting.setValue("Navi_Fast", Data.Navi_Fast); |
Setting.setValue("Navi_Slow", Data.Navi_Slow); |
Setting.setValue("Navi_Off", Data.Navi_Off); |
Setting.endGroup(); |
Setting.beginGroup("GoogleEarth-Server"); |
Setting.setValue("Port", Server.Port); |
Setting.setValue("StartServer", Server.StartServer); |
Setting.setValue("ToGround", Server.ToGround); |
Setting.endGroup(); |
Setting.beginGroup("QMK-Server"); |
Setting.setValue("Login", Server.QMKS_Login); |
Setting.setValue("Password", Server.QMKS_Password); |
Setting.setValue("Host", Server.QMKS_Host); |
Setting.setValue("Port", Server.QMKS_Port); |
Setting.endGroup(); |
} |
cSettings::~cSettings() |
{ |
} |
/QMK-Groundstation/tags/V1.0.1/Classes/cSettings.h |
---|
0,0 → 1,117 |
/*************************************************************************** |
* Copyright (C) 2008 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#ifndef CSETTINGS_H |
#define CSETTINGS_H |
#include "../global.h" |
struct set_TTY |
{ |
QString Port; |
int MaxPorts; |
int PortID; |
QString Ports[10]; |
}; |
struct set_GUI |
{ |
bool isMax; |
QSize Size; |
QPoint Point; |
QBitArray TabViews; |
QBitArray ToolViews; |
bool Term_Info; |
bool Term_Data; |
bool Term_Always; |
bool Term_Send; |
}; |
struct set_Map |
{ |
bool GotoPosition; |
bool ShowTrack; |
double LastLatitude; |
double LastLongitude; |
}; |
struct set_Data |
{ |
int Plotter_Count; |
int Debug_Fast; |
int Debug_Slow; |
int Debug_Off; |
int Navi_Fast; |
int Navi_Slow; |
int Navi_Off; |
}; |
struct set_DIR |
{ |
QString Logging; |
QString Parameter; |
QString Cache; |
QString AVRDUDE; |
}; |
struct set_Server |
{ |
QString Port; |
bool StartServer; |
bool ToGround; |
QString QMKS_Login; |
QString QMKS_Password; |
QString QMKS_Host; |
QString QMKS_Port; |
}; |
struct set_Analog |
{ |
QString Version; |
QString Label[MaxAnalog]; |
QBitArray PlotView; |
QBitArray LogView; |
}; |
class cSettings |
{ |
public: |
cSettings(); |
~cSettings(); |
int Settings_ID; |
set_GUI GUI; |
set_DIR DIR; |
set_TTY TTY; |
set_Analog Analog1; |
set_Data Data; |
set_Server Server; |
set_Map Map; |
void read_Settings(); |
void read_SettingsID(); |
void write_Settings(); |
void write_Settings_Analog(int ID = 0); |
void read_Settings_Analog(int ID = 0); |
void write_Settings_AnalogLabels(int ID = 0); |
void read_Settings_AnalogLabels(int ID = 0); |
}; |
#endif |
/QMK-Groundstation/tags/V1.0.1/Classes/cSpeedMeter.cpp |
---|
0,0 → 1,44 |
#include <qpainter.h> |
#include <qwt_dial_needle.h> |
#include "cSpeedMeter.h" |
cSpeedMeter::cSpeedMeter(QWidget *parent): QwtDial(parent), d_label("m/s") |
{ |
setWrapping(false); |
setReadOnly(true); |
setOrigin(125.0); |
setScaleArc(0.0, 270.0); |
scaleDraw()->setSpacing(8); |
QwtDialSimpleNeedle *needle = new QwtDialSimpleNeedle(QwtDialSimpleNeedle::Arrow, true, Qt::red, QColor(Qt::gray).light(130)); |
setNeedle(needle); |
setScaleOptions(ScaleTicks | ScaleLabel); |
setScaleTicks(0, 4, 8); |
} |
void cSpeedMeter::setLabel(const QString &label) |
{ |
d_label = label; |
update(); |
} |
QString cSpeedMeter::label() const |
{ |
return d_label; |
} |
void cSpeedMeter::drawScaleContents(QPainter *painter, const QPoint ¢er, int radius) const |
{ |
QRect rect(0, 0, 2 * radius, 2 * radius - 10); |
rect.moveCenter(center); |
const QColor color = |
palette().color(QPalette::Text); |
painter->setPen(color); |
const int flags = Qt::AlignBottom | Qt::AlignHCenter; |
painter->drawText(rect, flags, d_label); |
} |
/QMK-Groundstation/tags/V1.0.1/Classes/cSpeedMeter.h |
---|
0,0 → 1,17 |
#include <qstring.h> |
#include <qwt_dial.h> |
class cSpeedMeter: public QwtDial |
{ |
public: |
cSpeedMeter(QWidget *parent = NULL); |
void setLabel(const QString &); |
QString label() const; |
protected: |
virtual void drawScaleContents(QPainter *painter, const QPoint ¢er, int radius) const; |
private: |
QString d_label; |
}; |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_Config.cpp |
---|
0,0 → 1,127 |
/*************************************************************************** |
* Copyright (C) 2008 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#include "dlg_Config.h" |
dlg_Config::dlg_Config(QWidget *parent) : QDialog(parent) |
{ |
setupUi(this); |
cb_Plot[0] = cb_Plot_0; |
cb_Plot[1] = cb_Plot_1; |
cb_Plot[2] = cb_Plot_2; |
cb_Plot[3] = cb_Plot_3; |
cb_Plot[4] = cb_Plot_4; |
cb_Plot[5] = cb_Plot_5; |
cb_Plot[6] = cb_Plot_6; |
cb_Plot[7] = cb_Plot_7; |
cb_Plot[8] = cb_Plot_8; |
cb_Plot[9] = cb_Plot_9; |
cb_Plot[10] = cb_Plot_10; |
cb_Plot[11] = cb_Plot_11; |
cb_Plot[12] = cb_Plot_12; |
cb_Plot[13] = cb_Plot_13; |
cb_Plot[14] = cb_Plot_14; |
cb_Plot[15] = cb_Plot_15; |
cb_Plot[16] = cb_Plot_16; |
cb_Plot[17] = cb_Plot_17; |
cb_Plot[18] = cb_Plot_18; |
cb_Plot[19] = cb_Plot_19; |
cb_Plot[20] = cb_Plot_20; |
cb_Plot[21] = cb_Plot_21; |
cb_Plot[22] = cb_Plot_22; |
cb_Plot[23] = cb_Plot_23; |
cb_Plot[24] = cb_Plot_24; |
cb_Plot[25] = cb_Plot_25; |
cb_Plot[26] = cb_Plot_26; |
cb_Plot[27] = cb_Plot_27; |
cb_Plot[28] = cb_Plot_28; |
cb_Plot[29] = cb_Plot_29; |
cb_Plot[30] = cb_Plot_30; |
cb_Plot[31] = cb_Plot_31; |
cb_Log[0] = cb_Log_0; |
cb_Log[1] = cb_Log_1; |
cb_Log[2] = cb_Log_2; |
cb_Log[3] = cb_Log_3; |
cb_Log[4] = cb_Log_4; |
cb_Log[5] = cb_Log_5; |
cb_Log[6] = cb_Log_6; |
cb_Log[7] = cb_Log_7; |
cb_Log[8] = cb_Log_8; |
cb_Log[9] = cb_Log_9; |
cb_Log[10] = cb_Log_10; |
cb_Log[11] = cb_Log_11; |
cb_Log[12] = cb_Log_12; |
cb_Log[13] = cb_Log_13; |
cb_Log[14] = cb_Log_14; |
cb_Log[15] = cb_Log_15; |
cb_Log[16] = cb_Log_16; |
cb_Log[17] = cb_Log_17; |
cb_Log[18] = cb_Log_18; |
cb_Log[19] = cb_Log_19; |
cb_Log[20] = cb_Log_20; |
cb_Log[21] = cb_Log_21; |
cb_Log[22] = cb_Log_22; |
cb_Log[23] = cb_Log_23; |
cb_Log[24] = cb_Log_24; |
cb_Log[25] = cb_Log_25; |
cb_Log[26] = cb_Log_26; |
cb_Log[27] = cb_Log_27; |
cb_Log[28] = cb_Log_28; |
cb_Log[29] = cb_Log_29; |
cb_Log[30] = cb_Log_30; |
cb_Log[31] = cb_Log_31; |
} |
void dlg_Config::set_Settings(cSettings *Set, int ID) |
{ |
Settings = Set; |
lb_Hardware->setText(HardwareType[ID]); |
for (int a = 0; a < MaxAnalog; a++) |
{ |
cb_Plot[a]->setText(Settings->Analog1.Label[a]); |
cb_Plot[a]->setChecked(Settings->Analog1.PlotView[a]); |
cb_Log[a]->setText(Settings->Analog1.Label[a]); |
cb_Log[a]->setChecked(Settings->Analog1.LogView[a]); |
} |
} |
cSettings *dlg_Config::get_Settings() |
{ |
for (int a = 0; a < MaxAnalog; a++) |
{ |
Settings->Analog1.PlotView.setBit(a,cb_Plot[a]->isChecked()); |
} |
for (int a = 0; a < MaxAnalog; a++) |
{ |
Settings->Analog1.LogView.setBit(a,cb_Log[a]->isChecked()); |
} |
return Settings; |
} |
dlg_Config::~dlg_Config() |
{ |
} |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_Config.h |
---|
0,0 → 1,45 |
/*************************************************************************** |
* Copyright (C) 2008 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#ifndef DLG_CONFIG_H |
#define DLG_CONFIG_H |
#include <QCheckBox> |
#include "ui_dlg_Config.h" |
#include "../Classes/cSettings.h" |
//#include "../global.h" |
class dlg_Config : public QDialog, public Ui::dlg_Config_UI |
{ |
public: |
dlg_Config(QWidget *parent = 0); |
~dlg_Config(); |
void set_Settings(cSettings *Set, int ID = 0); |
cSettings *get_Settings(); |
private: |
cSettings *Settings; |
QCheckBox *cb_Plot[MaxAnalog]; |
QCheckBox *cb_Log[MaxAnalog]; |
}; |
#endif |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_Config.ui |
---|
0,0 → 1,690 |
<ui version="4.0" > |
<class>dlg_Config_UI</class> |
<widget class="QDialog" name="dlg_Config_UI" > |
<property name="geometry" > |
<rect> |
<x>0</x> |
<y>0</y> |
<width>528</width> |
<height>335</height> |
</rect> |
</property> |
<property name="windowTitle" > |
<string>Auswahl Datenfelder</string> |
</property> |
<layout class="QGridLayout" name="gridLayout" > |
<item row="1" column="0" > |
<layout class="QHBoxLayout" > |
<property name="spacing" > |
<number>6</number> |
</property> |
<property name="margin" > |
<number>0</number> |
</property> |
<item> |
<widget class="QLabel" name="label_3" > |
<property name="text" > |
<string>Datenfelder fĂĽr: </string> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QLabel" name="lb_Hardware" > |
<property name="font" > |
<font> |
<pointsize>12</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text" > |
<string>Default</string> |
</property> |
</widget> |
</item> |
<item> |
<spacer> |
<property name="orientation" > |
<enum>Qt::Horizontal</enum> |
</property> |
<property name="sizeHint" stdset="0" > |
<size> |
<width>131</width> |
<height>31</height> |
</size> |
</property> |
</spacer> |
</item> |
<item> |
<widget class="QPushButton" name="okButton" > |
<property name="text" > |
<string>OK</string> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QPushButton" name="cancelButton" > |
<property name="text" > |
<string>Cancel</string> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
<item row="0" column="0" > |
<widget class="QTabWidget" name="tabWidget" > |
<property name="currentIndex" > |
<number>0</number> |
</property> |
<widget class="QWidget" name="ct_3" > |
<attribute name="title" > |
<string>Auswahl Plotter </string> |
</attribute> |
<layout class="QGridLayout" name="gridLayout_6" > |
<item row="1" 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="QGridLayout" name="gridLayout_2" > |
<item row="0" column="0" > |
<widget class="QCheckBox" name="cb_Plot_0" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0" > |
<widget class="QCheckBox" name="cb_Plot_1" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="2" column="0" > |
<widget class="QCheckBox" name="cb_Plot_2" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="3" column="0" > |
<widget class="QCheckBox" name="cb_Plot_3" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="4" column="0" > |
<widget class="QCheckBox" name="cb_Plot_4" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="5" column="0" > |
<widget class="QCheckBox" name="cb_Plot_5" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="6" column="0" > |
<widget class="QCheckBox" name="cb_Plot_6" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="7" column="0" > |
<widget class="QCheckBox" name="cb_Plot_7" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="1" column="1" > |
<widget class="QFrame" name="frame_2" > |
<property name="frameShape" > |
<enum>QFrame::StyledPanel</enum> |
</property> |
<property name="frameShadow" > |
<enum>QFrame::Raised</enum> |
</property> |
<layout class="QGridLayout" name="gridLayout_3" > |
<item row="0" column="0" > |
<widget class="QCheckBox" name="cb_Plot_8" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0" > |
<widget class="QCheckBox" name="cb_Plot_9" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="2" column="0" > |
<widget class="QCheckBox" name="cb_Plot_10" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="3" column="0" > |
<widget class="QCheckBox" name="cb_Plot_11" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="4" column="0" > |
<widget class="QCheckBox" name="cb_Plot_12" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="5" column="0" > |
<widget class="QCheckBox" name="cb_Plot_13" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="6" column="0" > |
<widget class="QCheckBox" name="cb_Plot_14" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="7" column="0" > |
<widget class="QCheckBox" name="cb_Plot_15" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="1" column="2" > |
<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_4" > |
<item row="0" column="0" > |
<widget class="QCheckBox" name="cb_Plot_16" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0" > |
<widget class="QCheckBox" name="cb_Plot_17" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="2" column="0" > |
<widget class="QCheckBox" name="cb_Plot_18" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="3" column="0" > |
<widget class="QCheckBox" name="cb_Plot_19" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="4" column="0" > |
<widget class="QCheckBox" name="cb_Plot_20" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="5" column="0" > |
<widget class="QCheckBox" name="cb_Plot_21" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="6" column="0" > |
<widget class="QCheckBox" name="cb_Plot_22" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="7" column="0" > |
<widget class="QCheckBox" name="cb_Plot_23" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="1" column="3" > |
<widget class="QFrame" name="frame_4" > |
<property name="frameShape" > |
<enum>QFrame::StyledPanel</enum> |
</property> |
<property name="frameShadow" > |
<enum>QFrame::Raised</enum> |
</property> |
<layout class="QGridLayout" name="gridLayout_5" > |
<item row="0" column="0" > |
<widget class="QCheckBox" name="cb_Plot_24" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0" > |
<widget class="QCheckBox" name="cb_Plot_25" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="2" column="0" > |
<widget class="QCheckBox" name="cb_Plot_26" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="3" column="0" > |
<widget class="QCheckBox" name="cb_Plot_27" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="4" column="0" > |
<widget class="QCheckBox" name="cb_Plot_28" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="5" column="0" > |
<widget class="QCheckBox" name="cb_Plot_29" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="6" column="0" > |
<widget class="QCheckBox" name="cb_Plot_30" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="7" column="0" > |
<widget class="QCheckBox" name="cb_Plot_31" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="0" column="0" colspan="4" > |
<widget class="QLabel" name="label" > |
<property name="text" > |
<string>Auswahl der Analogwerte, die im Plotter angezeigt werden.</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
<widget class="QWidget" name="ct_2" > |
<attribute name="title" > |
<string>Auswahl CSV-Record </string> |
</attribute> |
<layout class="QGridLayout" name="gridLayout_11" > |
<item row="1" column="0" > |
<widget class="QFrame" name="frame_5" > |
<property name="frameShape" > |
<enum>QFrame::StyledPanel</enum> |
</property> |
<property name="frameShadow" > |
<enum>QFrame::Raised</enum> |
</property> |
<layout class="QGridLayout" name="gridLayout_7" > |
<item row="0" column="0" > |
<widget class="QCheckBox" name="cb_Log_0" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0" > |
<widget class="QCheckBox" name="cb_Log_1" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="2" column="0" > |
<widget class="QCheckBox" name="cb_Log_2" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="3" column="0" > |
<widget class="QCheckBox" name="cb_Log_3" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="4" column="0" > |
<widget class="QCheckBox" name="cb_Log_4" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="5" column="0" > |
<widget class="QCheckBox" name="cb_Log_5" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="6" column="0" > |
<widget class="QCheckBox" name="cb_Log_6" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="7" column="0" > |
<widget class="QCheckBox" name="cb_Log_7" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="1" column="1" > |
<widget class="QFrame" name="frame_6" > |
<property name="frameShape" > |
<enum>QFrame::StyledPanel</enum> |
</property> |
<property name="frameShadow" > |
<enum>QFrame::Raised</enum> |
</property> |
<layout class="QGridLayout" name="gridLayout_8" > |
<item row="0" column="0" > |
<widget class="QCheckBox" name="cb_Log_8" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0" > |
<widget class="QCheckBox" name="cb_Log_9" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="2" column="0" > |
<widget class="QCheckBox" name="cb_Log_10" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="3" column="0" > |
<widget class="QCheckBox" name="cb_Log_11" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="4" column="0" > |
<widget class="QCheckBox" name="cb_Log_12" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="5" column="0" > |
<widget class="QCheckBox" name="cb_Log_13" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="6" column="0" > |
<widget class="QCheckBox" name="cb_Log_14" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="7" column="0" > |
<widget class="QCheckBox" name="cb_Log_15" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="1" column="2" > |
<widget class="QFrame" name="frame_7" > |
<property name="frameShape" > |
<enum>QFrame::StyledPanel</enum> |
</property> |
<property name="frameShadow" > |
<enum>QFrame::Raised</enum> |
</property> |
<layout class="QGridLayout" name="gridLayout_9" > |
<item row="0" column="0" > |
<widget class="QCheckBox" name="cb_Log_16" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0" > |
<widget class="QCheckBox" name="cb_Log_17" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="2" column="0" > |
<widget class="QCheckBox" name="cb_Log_18" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="3" column="0" > |
<widget class="QCheckBox" name="cb_Log_19" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="4" column="0" > |
<widget class="QCheckBox" name="cb_Log_20" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="5" column="0" > |
<widget class="QCheckBox" name="cb_Log_21" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="6" column="0" > |
<widget class="QCheckBox" name="cb_Log_22" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="7" column="0" > |
<widget class="QCheckBox" name="cb_Log_23" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="1" column="3" > |
<widget class="QFrame" name="frame_8" > |
<property name="frameShape" > |
<enum>QFrame::StyledPanel</enum> |
</property> |
<property name="frameShadow" > |
<enum>QFrame::Raised</enum> |
</property> |
<layout class="QGridLayout" name="gridLayout_10" > |
<item row="0" column="0" > |
<widget class="QCheckBox" name="cb_Log_24" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0" > |
<widget class="QCheckBox" name="cb_Log_25" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="2" column="0" > |
<widget class="QCheckBox" name="cb_Log_26" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="3" column="0" > |
<widget class="QCheckBox" name="cb_Log_27" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="4" column="0" > |
<widget class="QCheckBox" name="cb_Log_28" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="5" column="0" > |
<widget class="QCheckBox" name="cb_Log_29" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="6" column="0" > |
<widget class="QCheckBox" name="cb_Log_30" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
<item row="7" column="0" > |
<widget class="QCheckBox" name="cb_Log_31" > |
<property name="text" > |
<string>CheckBox</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="0" column="0" colspan="4" > |
<widget class="QLabel" name="label_2" > |
<property name="text" > |
<string>Auswahl der Analogwerte, die ins Log-File geschrieben werden.</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</widget> |
</item> |
</layout> |
</widget> |
<resources/> |
<connections> |
<connection> |
<sender>okButton</sender> |
<signal>clicked()</signal> |
<receiver>dlg_Config_UI</receiver> |
<slot>accept()</slot> |
<hints> |
<hint type="sourcelabel" > |
<x>278</x> |
<y>253</y> |
</hint> |
<hint type="destinationlabel" > |
<x>96</x> |
<y>254</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cancelButton</sender> |
<signal>clicked()</signal> |
<receiver>dlg_Config_UI</receiver> |
<slot>reject()</slot> |
<hints> |
<hint type="sourcelabel" > |
<x>369</x> |
<y>253</y> |
</hint> |
<hint type="destinationlabel" > |
<x>179</x> |
<y>282</y> |
</hint> |
</hints> |
</connection> |
</connections> |
</ui> |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_LCD.cpp |
---|
0,0 → 1,32 |
/*************************************************************************** |
* Copyright (C) 2009 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#include "dlg_LCD.h" |
dlg_LCD::dlg_LCD(QWidget *parent) : QDialog(parent) |
{ |
setupUi(this); |
} |
void dlg_LCD::show_Data(int *Data) |
{ |
le_LCD0->setText(ToolBox::Data2QString(Data,2,22)); |
le_LCD1->setText(ToolBox::Data2QString(Data,22,42)); |
le_LCD2->setText(ToolBox::Data2QString(Data,42,62)); |
le_LCD3->setText(ToolBox::Data2QString(Data,62,82)); |
} |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_LCD.h |
---|
0,0 → 1,36 |
/*************************************************************************** |
* Copyright (C) 2009 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#ifndef DLG_LCD_H |
#define DLG_LCD_H |
#include <QObject> |
#include "ui_dlg_LCD.h" |
#include "../Classes/ToolBox.h" |
class dlg_LCD : public QDialog, public Ui::dlg_LCD_UI |
{ |
Q_OBJECT |
public: |
dlg_LCD(QWidget *parent = 0); |
void show_Data(int *Data); |
}; |
#endif // DLG_LCD_H |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_LCD.ui |
---|
0,0 → 1,208 |
<ui version="4.0" > |
<class>dlg_LCD_UI</class> |
<widget class="QDialog" name="dlg_LCD_UI" > |
<property name="geometry" > |
<rect> |
<x>0</x> |
<y>0</y> |
<width>250</width> |
<height>205</height> |
</rect> |
</property> |
<property name="windowTitle" > |
<string>LCD-Display</string> |
</property> |
<layout class="QGridLayout" name="gridLayout" > |
<item row="0" column="0" > |
<layout class="QGridLayout" name="gridLayout_41" > |
<item row="0" column="0" colspan="3" > |
<widget class="QLineEdit" name="le_LCD0" > |
<property name="sizePolicy" > |
<sizepolicy vsizetype="Minimum" hsizetype="Minimum" > |
<horstretch>0</horstretch> |
<verstretch>0</verstretch> |
</sizepolicy> |
</property> |
<property name="minimumSize" > |
<size> |
<width>240</width> |
<height>0</height> |
</size> |
</property> |
<property name="font" > |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>12</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text" > |
<string/> |
</property> |
<property name="maxLength" > |
<number>22</number> |
</property> |
<property name="alignment" > |
<set>Qt::AlignCenter</set> |
</property> |
<property name="readOnly" > |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="1" column="0" colspan="3" > |
<widget class="QLineEdit" name="le_LCD1" > |
<property name="minimumSize" > |
<size> |
<width>240</width> |
<height>0</height> |
</size> |
</property> |
<property name="font" > |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>12</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text" > |
<string/> |
</property> |
<property name="maxLength" > |
<number>22</number> |
</property> |
<property name="alignment" > |
<set>Qt::AlignCenter</set> |
</property> |
<property name="readOnly" > |
<bool>false</bool> |
</property> |
</widget> |
</item> |
<item row="2" column="0" colspan="3" > |
<widget class="QLineEdit" name="le_LCD2" > |
<property name="minimumSize" > |
<size> |
<width>240</width> |
<height>0</height> |
</size> |
</property> |
<property name="font" > |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>12</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text" > |
<string/> |
</property> |
<property name="maxLength" > |
<number>22</number> |
</property> |
<property name="alignment" > |
<set>Qt::AlignCenter</set> |
</property> |
<property name="readOnly" > |
<bool>false</bool> |
</property> |
</widget> |
</item> |
<item row="3" column="0" colspan="3" > |
<widget class="QLineEdit" name="le_LCD3" > |
<property name="minimumSize" > |
<size> |
<width>240</width> |
<height>0</height> |
</size> |
</property> |
<property name="font" > |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>12</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text" > |
<string/> |
</property> |
<property name="maxLength" > |
<number>22</number> |
</property> |
<property name="alignment" > |
<set>Qt::AlignCenter</set> |
</property> |
<property name="readOnly" > |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="4" column="0" > |
<widget class="QCheckBox" name="cb_LCD" > |
<property name="text" > |
<string>Auto-Refresh </string> |
</property> |
<property name="checked" > |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="4" column="1" > |
<widget class="QPushButton" name="pb_LCDdown" > |
<property name="text" > |
<string/> |
</property> |
<property name="icon" > |
<iconset resource="../MKTool.qrc" > |
<normaloff>:/Arrows/Images/Arrows/Left-1.png</normaloff>:/Arrows/Images/Arrows/Left-1.png</iconset> |
</property> |
</widget> |
</item> |
<item row="4" column="2" > |
<widget class="QPushButton" name="pb_LCDup" > |
<property name="text" > |
<string/> |
</property> |
<property name="icon" > |
<iconset resource="../MKTool.qrc" > |
<normaloff>:/Arrows/Images/Arrows/Right-1.png</normaloff>:/Arrows/Images/Arrows/Right-1.png</iconset> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
<item row="1" column="0" > |
<widget class="QPushButton" name="pushButton" > |
<property name="text" > |
<string>SchlieĂźen</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
<resources> |
<include location="../MKTool.qrc" /> |
</resources> |
<connections> |
<connection> |
<sender>pushButton</sender> |
<signal>clicked()</signal> |
<receiver>dlg_LCD_UI</receiver> |
<slot>close()</slot> |
<hints> |
<hint type="sourcelabel" > |
<x>124</x> |
<y>187</y> |
</hint> |
<hint type="destinationlabel" > |
<x>124</x> |
<y>102</y> |
</hint> |
</hints> |
</connection> |
</connections> |
</ui> |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_Map.cpp |
---|
0,0 → 1,561 |
/*************************************************************************** |
* Copyright (C) 2009 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#include "dlg_Map.h" |
#include "dlg_MapPos.h" |
#include <QDomDocument> |
#include <QFile> |
dlg_Map::dlg_Map(QWidget *parent) : QDialog(parent) |
{ |
setupUi(this); |
// cb_Maps->removeItem(5); |
// cb_Maps->removeItem(4); |
// cb_Maps->removeItem(3); |
// cb_Maps->removeItem(2); |
pb_Add->setEnabled(false); |
pb_Goto->setEnabled(false); |
} |
// Karte erstellen und anzeigen |
void dlg_Map::create_Map(cSettings *t_Settings) |
{ |
o_Settings = t_Settings; |
cb_CenterPos->setChecked(o_Settings->Map.GotoPosition); |
cb_ShowRoute->setChecked(o_Settings->Map.ShowTrack); |
connect(sl_Zoom, SIGNAL(valueChanged(int)), this, SLOT(slot_Zoom(int))); |
connect(pb_Add, SIGNAL(clicked()), this, SLOT(slot_AddWayPoint())); |
connect(pb_Delete, SIGNAL(clicked()), this, SLOT(slot_DeleteWayPoints())); |
connect(pb_Goto, SIGNAL(clicked()), this, SLOT(slot_GotoTarget())); |
connect(pb_SendWaypoints, SIGNAL(clicked()), this, SLOT(slot_SendWayPoints())); |
connect(pb_LoadPic, SIGNAL(clicked()), this, SLOT(slot_LoadMapPic())); |
connect(pb_Load, SIGNAL(clicked()), this, SLOT(slot_LoadWayPoints())); |
connect(pb_Save, SIGNAL(clicked()), this, SLOT(slot_SaveWayPoints())); |
connect(cb_Maps, SIGNAL(currentIndexChanged(int)), this, SLOT(slot_ChangeMap(int))); |
connect(cb_ShowWPs, SIGNAL(toggled(bool)), this, SLOT(slot_ShowWayPoints(bool))); |
connect(this, SIGNAL(rejected()), this, SLOT(slot_Close())); |
o_Map = new MapControl(w_Map->size()); |
o_Map->enablePersistentCache(o_Settings->DIR.Cache); |
o_Map->showScale(true); |
o_Adapter = new OSMMapAdapter(); |
o_Layer = new MapLayer("MapLayer", o_Adapter); |
o_Click = new GeometryLayer("Click", o_Adapter); |
o_Route = new GeometryLayer("Poute", o_Adapter); |
o_Map->addLayer(o_Layer); |
o_Map->addLayer(o_Click); |
o_Map->addLayer(o_Route); |
o_Map->setZoom(17); |
// o_Map->setView(QPointF(13.5,52.5)); |
o_Map->setView(QPointF(o_Settings->Map.LastLongitude,o_Settings->Map.LastLatitude)); |
connect(o_Map, SIGNAL(mouseEventCoordinate(const QMouseEvent*, const QPointF)), this, SLOT(slot_Click(const QMouseEvent*, const QPointF))); |
l_Map->addWidget(o_Map); |
sl_Zoom->setValue(17); |
Pen[0] = new QPen(QColor(0,0,255,255)); |
Pen[0]->setWidth(2); |
Pen[1] = new QPen(QColor(255,0,0,255)); |
Pen[1]->setWidth(2); |
} |
QList<sWayPoint> dlg_Map::parse_WayPointKML(QString s_File) |
{ |
QList<sWayPoint> tmp_WayPoints; |
sWayPoint tmp_WayPoint; |
QFile f_KML(s_File); |
f_KML.open(QIODevice::ReadOnly | QIODevice::Text); |
QByteArray s_KML; |
while (!f_KML.atEnd()) |
{ |
s_KML.append(f_KML.readLine()); |
} |
f_KML.close(); |
QDomDocument *UserXML; |
UserXML = new QDomDocument; |
UserXML->setContent(s_KML); |
QDomElement Root = UserXML->firstChildElement("kml"); |
QDomElement Document = Root.firstChildElement("Document"); |
QDomElement Placemark = Document.firstChildElement("Placemark"); |
QDomElement Linestring = Placemark.firstChildElement("LineString"); |
QString Name = Placemark.firstChildElement("name").toElement().text(); |
QString Route = Linestring.firstChildElement("coordinates").toElement().text(); |
QStringList s_Points = Route.split(" "); |
QStringList Position; |
for (int z = 0; z < s_Points.count() - 1; z++) |
{ |
if (z != 20) |
{ |
Position = s_Points[z].split(","); |
tmp_WayPoint.Longitude = Position[0].toDouble(); |
tmp_WayPoint.Latitude = Position[1].toDouble(); |
tmp_WayPoint.Altitude = Position[2].toDouble(); |
tmp_WayPoint.Time = sb_Time->value(); |
tmp_WayPoints.append(tmp_WayPoint); |
} |
else |
{ |
QMessageBox::warning(this, QA_NAME,trUtf8("Die Wegpunkt-Liste umfasst mehr als 20 Einträge. Es werden nur die ersten 20 Einträge übernommen."), QMessageBox::Ok); |
pb_Add->setEnabled(false); |
z = s_Points.count(); |
} |
} |
return tmp_WayPoints; |
} |
QList<sWayPoint> dlg_Map::parse_WayPointMKW(QString s_File) |
{ |
QList<sWayPoint> tmp_WayPoints; |
sWayPoint tmp_WayPoint; |
QFile f_MKW(s_File); |
f_MKW.open(QIODevice::ReadOnly | QIODevice::Text); |
QString s_MKW; |
while (!f_MKW.atEnd()) |
{ |
s_MKW.append(f_MKW.readLine()); |
} |
f_MKW.close(); |
QStringList s_Points = s_MKW.split(" "); |
QStringList Position; |
for (int z = 0; z < s_Points.count() - 1; z++) |
{ |
if (z != 20) |
{ |
Position = s_Points[z].split(","); |
tmp_WayPoint.Longitude = Position[0].toDouble(); |
tmp_WayPoint.Latitude = Position[1].toDouble(); |
tmp_WayPoint.Altitude = Position[2].toDouble(); |
tmp_WayPoint.Time = Position[3].toInt(); |
tmp_WayPoints.append(tmp_WayPoint); |
} |
else |
{ |
QMessageBox::warning(this, QA_NAME,trUtf8("Die Wegpunkt-Liste umfasst mehr als 20 Einträge. Es werden nur die ersten 20 Einträge übernommen."), QMessageBox::Ok); |
pb_Add->setEnabled(false); |
z = s_Points.count(); |
} |
} |
return tmp_WayPoints; |
} |
void dlg_Map::show_WayPoints(QList<sWayPoint> WayPoints) |
{ |
Point* p_Point; |
o_Route->removeGeometry(l_RouteWP); |
p_RouteWP.clear(); |
l_WayPoints.clear(); |
l_WayPoints = WayPoints; |
for (int z = 0; z < WayPoints.count(); z++) |
{ |
p_Point = new Point(WayPoints[z].Longitude, WayPoints[z].Latitude); |
p_RouteWP.append(p_Point); |
} |
l_RouteWP = new LineString(p_RouteWP, "", Pen[0]); |
o_Route->addGeometry(l_RouteWP); |
o_Map->setView(p_Point); |
o_Map->updateRequestNew(); |
} |
void dlg_Map::save_WayPointsMKW(QString s_File) |
{ |
QFile *f_MKW = new QFile(s_File); |
f_MKW->open(QIODevice::ReadWrite | QIODevice::Text); |
QTextStream out(f_MKW); |
out.setRealNumberPrecision(9); |
for (int z = 0; z < l_WayPoints.count(); z++) |
{ |
out << l_WayPoints[z].Longitude << "," << l_WayPoints[z].Latitude << "," << l_WayPoints[z].Altitude << "," << l_WayPoints[z].Time << " \n"; |
} |
f_MKW->close(); |
} |
void dlg_Map::slot_LoadWayPoints() |
{ |
QString Filename = QFileDialog::getOpenFileName(this, "WayPoint-Route laden", o_Settings->DIR.Logging, "Mikrokopter WayPoints(*.mkw);;KML-Datei(*.kml);;Alle Dateien (*)"); |
if (!Filename.isEmpty()) |
{ |
if (Filename.endsWith(".kml", Qt::CaseInsensitive)) |
{ |
cb_ShowWPs->setChecked(true); |
pb_SendWaypoints->setEnabled(true); |
show_WayPoints(parse_WayPointKML(Filename)); |
} |
if (Filename.endsWith(".mkw", Qt::CaseInsensitive)) |
{ |
cb_ShowWPs->setChecked(true); |
pb_SendWaypoints->setEnabled(true); |
show_WayPoints(parse_WayPointMKW(Filename)); |
} |
} |
} |
void dlg_Map::slot_SaveWayPoints() |
{ |
QString Filename = QFileDialog::getSaveFileName(this, "WayPoint-Route speichern", o_Settings->DIR.Logging, "Mikrokopter WayPoints(*.mkw);;Alle Dateien (*)"); |
if (!Filename.isEmpty()) |
{ |
if (!(Filename.endsWith(".mkw", Qt::CaseInsensitive))) |
{ |
Filename = Filename + QString(".mkw"); |
} |
save_WayPointsMKW(Filename); |
} |
} |
void dlg_Map::slot_ShowWayPoints(bool Show) |
{ |
if (Show == true) |
{ |
qDebug("An"); |
o_Route->addGeometry(l_RouteWP); |
o_Map->updateRequestNew(); |
} |
else |
{ |
qDebug("Aus"); |
o_Route->removeGeometry(l_RouteWP); |
o_Map->updateRequestNew(); |
} |
} |
// Position zum Flug-Track hinzufĂĽgen |
void dlg_Map::add_Position(double x, double y) |
{ |
sWayPoint WayPoint; |
o_Settings->Map.LastLongitude = x; |
o_Settings->Map.LastLatitude = y; |
WayPoint.Longitude = x; |
WayPoint.Latitude = y; |
// WayPoint.Time = sb_Time->value(); |
l_Track.append(WayPoint); |
o_Route->removeGeometry(l_RouteFL); |
p_RouteFL.append(new Point(x,y)); |
o_Click->removeGeometry(LastPos); |
Point* P = new CirclePoint(x, y, "P1", Point::Middle, Pen[0]); |
LastPos = P; |
P->setBaselevel(17); |
o_Click->addGeometry(P); |
if (cb_CenterPos->isChecked()) |
{ |
o_Map->setView(QPointF(x, y)); |
} |
if (cb_ShowRoute->isChecked()) |
{ |
l_RouteFL = new LineString(p_RouteFL, "", Pen[1]); |
o_Route->addGeometry(l_RouteFL); |
} |
o_Map->updateRequestNew(); |
} |
// Zoom der Karte ändern |
void dlg_Map::slot_Zoom(int t_Zoom) |
{ |
o_Map->setZoom(t_Zoom); |
} |
// Waypoint zur Liste hinzufĂĽgen |
void dlg_Map::slot_AddWayPoint() |
{ |
cb_ShowWPs->setChecked(true); |
sWayPoint WayPoint; |
WayPoint.Longitude = LastClick->longitude(); |
WayPoint.Latitude = LastClick->latitude(); |
WayPoint.Time = sb_Time->value(); |
l_WayPoints.append(WayPoint); |
o_Route->removeGeometry(l_RouteWP); |
p_RouteWP.append(LastClick); |
l_RouteWP = new LineString(p_RouteWP, "", Pen[0]); |
o_Route->addGeometry(l_RouteWP); |
o_Map->updateRequestNew(); |
pb_SendWaypoints->setEnabled(true); |
if (l_WayPoints.count() == 20) |
{ |
QMessageBox::warning(this, QA_NAME,trUtf8("Wegpunkt-Liste ist voll. Es können maximal 20 Wegpunkte benutzt werden."), QMessageBox::Ok); |
pb_Add->setEnabled(false); |
} |
} |
// Waypoint-Liste löschen |
void dlg_Map::slot_DeleteWayPoints() |
{ |
o_Route->removeGeometry(l_RouteWP); |
p_RouteWP.clear(); |
l_WayPoints.clear(); |
o_Map->updateRequestNew(); |
pb_Add->setEnabled(pb_Goto->isEnabled()); |
} |
void dlg_Map::slot_SendWayPoints() |
{ |
emit(set_WayPoints(l_WayPoints)); |
} |
// Zum Zielpunkt fliegen |
void dlg_Map::slot_GotoTarget() |
{ |
sWayPoint Target; |
Target.Longitude = LastClick->longitude(); |
Target.Latitude = LastClick->latitude(); |
Target.Time = sb_Time->value(); |
emit(set_Target(Target)); |
} |
// Click in der Karte |
void dlg_Map::slot_Click(const QMouseEvent* Event, const QPointF Coord) |
{ |
if ((Event->type() == QEvent::MouseButtonPress) && ((Event->button() == Qt::RightButton) || (Event->button() == Qt::MidButton))) |
{ |
sl_Zoom->setValue(o_Adapter->adaptedZoom()); |
} |
// Ăśberwachen ob Karte verschoben wird |
if ((Event->type() == QEvent::MouseButtonPress) && (Event->button() == Qt::LeftButton)) |
{ |
MapCenter = o_Map->currentCoordinate(); |
} |
// Nur wenn nicht Verschoben dann einen Punkt setzen |
if ((Event->type() == QEvent::MouseButtonRelease) && (Event->button() == Qt::LeftButton)) |
{ |
if (o_Map->currentCoordinate() == MapCenter) |
{ |
if (l_WayPoints.count() < 20) |
{ |
pb_Add->setEnabled(true); |
} |
pb_Goto->setEnabled(true); |
o_Click->removeGeometry(ClickPoint); |
ClickPoint = new CirclePoint(Coord.x(), Coord.y(), 6, "P1", Point::Middle, Pen[1]); |
LastClick = new Point(Coord.x(), Coord.y()); |
ClickPoint->setBaselevel(o_Adapter->adaptedZoom()); |
o_Click->addGeometry(ClickPoint); |
} |
} |
o_Map->updateRequestNew(); |
// qDebug(QString("%1").arg(Coord.x()).toLatin1().data()); |
// qDebug(QString("%1").arg(Coord.y()).toLatin1().data()); |
} |
void dlg_Map::slot_LoadMapPic() |
{ |
QString Filename = QFileDialog::getOpenFileName(this, "Bild als Karte", o_Settings->DIR.Logging, "Bilddatei(*.jpg *.png *.gif);;Alle Dateien (*)"); |
if (!Filename.isEmpty()) |
{ |
QFile *f_Points = new QFile(Filename + ".pos"); |
if (f_Points->exists()) |
{ |
f_Points->open(QIODevice::ReadOnly | QIODevice::Text); |
QString s_Points; |
while (!f_Points->atEnd()) |
{ |
s_Points.append(f_Points->readLine()); |
} |
f_Points->close(); |
QStringList s_Pos = s_Points.split(","); |
FixedImageOverlay* fip = new FixedImageOverlay(s_Pos[0].toDouble(), s_Pos[1].toDouble(), s_Pos[2].toDouble(), s_Pos[3].toDouble(), Filename); |
o_Layer->addGeometry(fip); |
o_Map->updateRequestNew(); |
} |
else |
{ |
dlg_MapPos *f_MapPos = new dlg_MapPos(this); |
if (f_MapPos->exec()==QDialog::Accepted) |
{ |
QString Data = f_MapPos->get_Data(); |
f_Points->open(QIODevice::ReadWrite | QIODevice::Text); |
QTextStream out(f_Points); |
out.setRealNumberPrecision(9); |
out << Data << "\n"; |
f_Points->close(); |
QStringList s_Pos = Data.split(","); |
FixedImageOverlay* fip = new FixedImageOverlay(s_Pos[0].toDouble(), s_Pos[1].toDouble(), s_Pos[2].toDouble(), s_Pos[3].toDouble(), Filename); |
o_Layer->addGeometry(fip); |
o_Map->updateRequestNew(); |
} |
} |
} |
} |
// auf Veränderung der Fenstergröße reagieren |
void dlg_Map::resizeEvent ( QResizeEvent * event ) |
{ |
event = event; |
o_Map->resize(w_Map->size() - QSize(20,20)); |
} |
// Karte wechseln |
void dlg_Map::slot_ChangeMap(int t_Set) |
{ |
int zoom = o_Adapter->adaptedZoom(); |
QPointF a = o_Map->currentCoordinate(); |
o_Map->setZoom(0); |
switch(t_Set) |
{ |
case 0 : // OpenStreetMap |
{ |
o_Adapter = new OSMMapAdapter(); |
} |
break; |
case 1 : // Yahoo Sat |
{ |
o_Adapter = new TileMapAdapter("tile.openaerialmap.org", "/tiles/1.0.0/openaerialmap-900913/%1/%2/%3.png", 256, 0, 17); |
} |
break; |
case 2 : // Google Maps |
{ |
o_Adapter = new GoogleMapAdapter(); |
} |
break; |
case 3 : // Google Sat |
{ |
o_Adapter = new GoogleSatMapAdapter(); |
} |
break; |
case 4 : // Yahoo Maps |
{ |
o_Adapter = new YahooMapAdapter(); |
} |
break; |
case 5 : // Yahoo Sat |
{ |
o_Adapter = new YahooMapAdapter("us.maps3.yimg.com", "/aerial.maps.yimg.com/png?v=1.7&t=a&s=256&x=%2&y=%3&z=%1"); |
} |
break; |
} |
o_Layer->setMapAdapter(o_Adapter); |
o_Click->setMapAdapter(o_Adapter); |
o_Route->setMapAdapter(o_Adapter); |
o_Map->updateRequestNew(); |
o_Map->setZoom(zoom); |
} |
// Fenster wird geschlossen. |
void dlg_Map::slot_Close() |
{ |
o_Settings->Map.GotoPosition = cb_CenterPos->isChecked(); |
o_Settings->Map.ShowTrack = cb_ShowRoute->isChecked(); |
emit set_Settings(o_Settings); |
} |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_Map.h |
---|
0,0 → 1,105 |
/*************************************************************************** |
* Copyright (C) 2009 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#ifndef DLG_MAP_H |
#define DLG_MAP_H |
#include <QDialog> |
#include <QList> |
#include "ui_dlg_Map.h" |
#include "../Classes/cSettings.h" |
#include "../qmapcontrol.h" |
#include "../global.h" |
using namespace qmapcontrol; |
class dlg_Map : public QDialog, public Ui::dlg_Map_UI |
{ |
Q_OBJECT |
public: |
dlg_Map(QWidget *parent = 0); |
void add_Position(double x, double y); |
void create_Map(cSettings *t_Settings); |
private: |
QPen* Pen[3]; |
cSettings *o_Settings; |
MapControl *o_Map; |
MapAdapter *o_Adapter; |
Layer *o_Layer; |
Layer *o_Click; |
Layer *o_Route; |
QList<Point*> p_RouteWP; |
LineString* l_RouteWP; |
QList<Point*> p_RouteFL; |
LineString* l_RouteFL; |
Point* LastPos; |
// Point* LastPoint; |
Point* LastClick; |
Point *ClickPoint; |
QPointF MapCenter; |
QList<sWayPoint> l_WayPoints; |
QList<sWayPoint> l_Track; |
QList<sWayPoint> parse_WayPointKML(QString s_File); |
QList<sWayPoint> parse_WayPointMKW(QString s_File); |
void show_WayPoints(QList<sWayPoint> WayPoints); |
void save_WayPointsMKW(QString s_File); |
private slots: |
void slot_Zoom(int t_Zoom); |
void slot_ChangeMap(int); |
void slot_Click(const QMouseEvent*, const QPointF); |
void slot_AddWayPoint(); |
void slot_DeleteWayPoints(); |
void slot_SendWayPoints(); |
void slot_ShowWayPoints(bool); |
void slot_LoadMapPic(); |
void slot_GotoTarget(); |
void slot_Close(); |
void slot_LoadWayPoints(); |
void slot_SaveWayPoints(); |
protected: |
virtual void resizeEvent ( QResizeEvent * event ); |
signals: |
void set_Target(sWayPoint Target); |
void set_WayPoints(QList<sWayPoint>); |
void set_Settings(cSettings *t_Settings); |
}; |
#endif // DLG_MAP_H |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_Map.ui |
---|
0,0 → 1,343 |
<?xml version="1.0" encoding="UTF-8"?> |
<ui version="4.0"> |
<class>dlg_Map_UI</class> |
<widget class="QDialog" name="dlg_Map_UI"> |
<property name="geometry"> |
<rect> |
<x>0</x> |
<y>0</y> |
<width>600</width> |
<height>345</height> |
</rect> |
</property> |
<property name="minimumSize"> |
<size> |
<width>600</width> |
<height>0</height> |
</size> |
</property> |
<property name="windowTitle"> |
<string>Flug-Karte</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_3"> |
<item row="0" column="1"> |
<widget class="QFrame" name="w_Map"> |
<property name="frameShape"> |
<enum>QFrame::StyledPanel</enum> |
</property> |
<property name="frameShadow"> |
<enum>QFrame::Raised</enum> |
</property> |
<layout class="QGridLayout" name="gridLayout_4"> |
<item row="0" column="1"> |
<layout class="QHBoxLayout" name="l_Map"/> |
</item> |
</layout> |
</widget> |
</item> |
<item row="0" column="2"> |
<spacer name="verticalSpacer_2"> |
<property name="orientation"> |
<enum>Qt::Vertical</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>2</width> |
<height>40</height> |
</size> |
</property> |
</spacer> |
</item> |
<item row="0" column="3" rowspan="6"> |
<layout class="QVBoxLayout" name="verticalLayout"> |
<item> |
<widget class="QGroupBox" name="groupBox"> |
<property name="title"> |
<string>Route</string> |
</property> |
<layout class="QGridLayout" name="gridLayout"> |
<item row="2" column="0"> |
<layout class="QHBoxLayout" name="horizontalLayout_3"> |
<item> |
<widget class="QSpinBox" name="sb_Time"> |
<property name="maximum"> |
<number>300</number> |
</property> |
<property name="value"> |
<number>60</number> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QLabel" name="label"> |
<property name="text"> |
<string>Sek.</string> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
<item row="3" column="0"> |
<widget class="QPushButton" name="pb_Add"> |
<property name="text"> |
<string>hinzufĂĽgen</string> |
</property> |
</widget> |
</item> |
<item row="4" column="0"> |
<widget class="QPushButton" name="pb_SendWaypoints"> |
<property name="enabled"> |
<bool>false</bool> |
</property> |
<property name="text"> |
<string>abfliegen</string> |
</property> |
</widget> |
</item> |
<item row="5" column="0"> |
<widget class="QPushButton" name="pb_Delete"> |
<property name="text"> |
<string>löschen</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="label_2"> |
<property name="text"> |
<string>Verweilzeit</string> |
</property> |
</widget> |
</item> |
<item row="7" column="0"> |
<widget class="QPushButton" name="pb_Load"> |
<property name="text"> |
<string>Route laden</string> |
</property> |
</widget> |
</item> |
<item row="8" column="0"> |
<widget class="QPushButton" name="pb_Save"> |
<property name="text"> |
<string>Route speichern</string> |
</property> |
</widget> |
</item> |
<item row="6" column="0"> |
<widget class="Line" name="line"> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item> |
<widget class="QGroupBox" name="groupBox_2"> |
<property name="title"> |
<string>Position</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_2"> |
<item row="0" column="0"> |
<widget class="QPushButton" name="pb_Goto"> |
<property name="text"> |
<string>Anfliegen</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item> |
<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> |
<item> |
<widget class="QPushButton" name="pb_Close"> |
<property name="text"> |
<string>SchlieĂźen</string> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
<item row="3" column="1"> |
<widget class="QFrame" name="More"> |
<property name="frameShape"> |
<enum>QFrame::StyledPanel</enum> |
</property> |
<property name="frameShadow"> |
<enum>QFrame::Raised</enum> |
</property> |
<layout class="QGridLayout" name="gridLayout_5"> |
<item row="0" column="3"> |
<spacer name="horizontalSpacer_2"> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>428</width> |
<height>20</height> |
</size> |
</property> |
</spacer> |
</item> |
<item row="0" column="0"> |
<widget class="QCheckBox" name="cb_ShowRoute"> |
<property name="text"> |
<string>geflogene |
Route anzeigen</string> |
</property> |
<property name="checked"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="0" column="2"> |
<widget class="QCheckBox" name="cb_ShowWPs"> |
<property name="text"> |
<string>ausgewählte |
Route anzeigen</string> |
</property> |
<property name="checked"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="0" column="4"> |
<widget class="QCheckBox" name="cb_CenterPos"> |
<property name="text"> |
<string>auf IST-Position |
zentrieren</string> |
</property> |
<property name="checked"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="5" column="1"> |
<layout class="QHBoxLayout" name="horizontalLayout"> |
<item> |
<widget class="QLabel" name="label_3"> |
<property name="text"> |
<string>Zoom:</string> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QSlider" name="sl_Zoom"> |
<property name="maximum"> |
<number>18</number> |
</property> |
<property name="pageStep"> |
<number>1</number> |
</property> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
<property name="tickPosition"> |
<enum>QSlider::NoTicks</enum> |
</property> |
</widget> |
</item> |
<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> |
<widget class="QLabel" name="lb_Maps"> |
<property name="text"> |
<string>Karten:</string> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QComboBox" name="cb_Maps"> |
<property name="enabled"> |
<bool>true</bool> |
</property> |
<item> |
<property name="text"> |
<string>OpenStreetMap</string> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>OpenAerialMap</string> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>Google: Map</string> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>Google: Satellit</string> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>Yahoo: Map </string> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>Yahoo: Satellit</string> |
</property> |
</item> |
</widget> |
</item> |
<item> |
<widget class="QPushButton" name="pb_LoadPic"> |
<property name="text"> |
<string>Bild laden</string> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
</layout> |
</widget> |
<resources/> |
<connections> |
<connection> |
<sender>pb_Close</sender> |
<signal>clicked()</signal> |
<receiver>dlg_Map_UI</receiver> |
<slot>close()</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>529</x> |
<y>328</y> |
</hint> |
<hint type="destinationlabel"> |
<x>299</x> |
<y>174</y> |
</hint> |
</hints> |
</connection> |
</connections> |
</ui> |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_MapPos.cpp |
---|
0,0 → 1,29 |
/*************************************************************************** |
* Copyright (C) 2009 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#include "dlg_MapPos.h" |
dlg_MapPos::dlg_MapPos(QWidget *parent) : QDialog(parent) |
{ |
setupUi(this); |
} |
QString dlg_MapPos::get_Data() |
{ |
return QString(le_Links->text().replace(",", ".") + ", " + le_Oben->text().replace(",", ".") + ", " + le_Rechts->text().replace(",", ".") + ", " + le_Unten->text().replace(",", ".")); |
} |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_MapPos.h |
---|
0,0 → 1,38 |
/*************************************************************************** |
* Copyright (C) 2009 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#ifndef DLG_MAPPOS_H |
#define DLG_MAPPOS_H |
#include <QDialog> |
#include "ui_dlg_MapPos.h" |
#include "../Classes/cSettings.h" |
#include "../global.h" |
class dlg_MapPos : public QDialog, public Ui::dlg_MapPos_UI |
{ |
Q_OBJECT |
public: |
dlg_MapPos(QWidget *parent = 0); |
QString get_Data(); |
}; |
#endif // DLG_MAPPOS_H |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_MapPos.ui |
---|
0,0 → 1,162 |
<?xml version="1.0" encoding="UTF-8"?> |
<ui version="4.0"> |
<class>dlg_MapPos_UI</class> |
<widget class="QDialog" name="dlg_MapPos_UI"> |
<property name="geometry"> |
<rect> |
<x>0</x> |
<y>0</y> |
<width>376</width> |
<height>129</height> |
</rect> |
</property> |
<property name="windowTitle"> |
<string>Karten-Positionen</string> |
</property> |
<layout class="QGridLayout" name="gridLayout"> |
<item row="0" column="0"> |
<spacer name="horizontalSpacer_2"> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>116</width> |
<height>20</height> |
</size> |
</property> |
</spacer> |
</item> |
<item row="0" column="1"> |
<widget class="QLineEdit" name="le_Oben"/> |
</item> |
<item row="0" column="3"> |
<spacer name="horizontalSpacer_3"> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>116</width> |
<height>20</height> |
</size> |
</property> |
</spacer> |
</item> |
<item row="1" column="0"> |
<widget class="QLineEdit" name="le_Links"/> |
</item> |
<item row="1" column="1"> |
<spacer name="horizontalSpacer_6"> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>115</width> |
<height>20</height> |
</size> |
</property> |
</spacer> |
</item> |
<item row="1" column="2" colspan="2"> |
<widget class="QLineEdit" name="le_Rechts"/> |
</item> |
<item row="2" column="0"> |
<spacer name="horizontalSpacer_4"> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>116</width> |
<height>20</height> |
</size> |
</property> |
</spacer> |
</item> |
<item row="2" column="1" colspan="2"> |
<widget class="QLineEdit" name="le_Unten"/> |
</item> |
<item row="2" column="3"> |
<spacer name="horizontalSpacer_5"> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>116</width> |
<height>20</height> |
</size> |
</property> |
</spacer> |
</item> |
<item row="3" column="0" colspan="4"> |
<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> |
<widget class="QPushButton" name="pb_Save"> |
<property name="text"> |
<string>Speichern</string> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QPushButton" name="pushButton"> |
<property name="text"> |
<string>Abbrechen</string> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
</layout> |
</widget> |
<resources/> |
<connections> |
<connection> |
<sender>pb_Save</sender> |
<signal>clicked()</signal> |
<receiver>dlg_MapPos_UI</receiver> |
<slot>accept()</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>227</x> |
<y>109</y> |
</hint> |
<hint type="destinationlabel"> |
<x>108</x> |
<y>100</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>pushButton</sender> |
<signal>clicked()</signal> |
<receiver>dlg_MapPos_UI</receiver> |
<slot>reject()</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>340</x> |
<y>112</y> |
</hint> |
<hint type="destinationlabel"> |
<x>339</x> |
<y>65</y> |
</hint> |
</hints> |
</connection> |
</connections> |
</ui> |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_MotorMixer.cpp |
---|
0,0 → 1,406 |
/*************************************************************************** |
* Copyright (C) 2009 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#include "dlg_MotorMixer.h" |
dlg_MotorMixer::dlg_MotorMixer(QWidget *parent) : QDialog(parent) |
{ |
setupUi(this); |
connect(pb_READ, SIGNAL(clicked()), this, SLOT(slot_pb_READ())); |
connect(pb_LOAD, SIGNAL(clicked()), this, SLOT(slot_pb_LOAD())); |
connect(pb_SAVE, SIGNAL(clicked()), this, SLOT(slot_pb_SAVE())); |
connect(pb_WRITE, SIGNAL(clicked()), this, SLOT(slot_pb_WRITE())); |
connect(sb_NICK_1, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_NICK_2, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_NICK_3, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_NICK_4, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_NICK_5, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_NICK_6, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_NICK_7, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_NICK_8, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_NICK_9, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_NICK_10, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_NICK_11, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_NICK_12, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_ROLL_1, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_ROLL_2, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_ROLL_3, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_ROLL_4, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_ROLL_5, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_ROLL_6, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_ROLL_7, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_ROLL_8, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_ROLL_9, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_ROLL_10, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_ROLL_11, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_ROLL_12, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_GIER_1, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_GIER_2, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_GIER_3, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_GIER_4, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_GIER_5, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_GIER_6, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_GIER_7, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_GIER_8, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_GIER_9, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_GIER_10, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_GIER_11, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
connect(sb_GIER_12, SIGNAL(valueChanged(int)), this, SLOT(slot_CheckValue(int))); |
} |
// Connection-Object ĂĽbergeben. |
void dlg_MotorMixer::set_Objects(cConnection *t_Connection, cSettings *t_Settings) |
{ |
o_Connection = t_Connection; |
o_Settings = t_Settings; |
} |
// Motordaten ĂĽbernehmen. |
void dlg_MotorMixer::set_MotorConfig(sRxData RX) |
{ |
int Pos = 0; |
MixerName = ToolBox::Data2QString(RX.Decode, 1, 12); |
Pos = 13; |
for (int z = 0; z < 16; z++) |
{ |
for (int y = 0; y < 4; y++) |
{ |
Motor[z][y] = ToolBox::Data2Char(RX.Decode,Pos); |
Pos++; |
} |
} |
set_MotorData(); |
} |
// Motordaten aus GUI ĂĽbernehmen |
void dlg_MotorMixer::get_MotorData() |
{ |
MixerName = le_NAME->text(); |
Motor[0][0] = sb_GAS_1->value(); |
Motor[1][0] = sb_GAS_2->value(); |
Motor[2][0] = sb_GAS_3->value(); |
Motor[3][0] = sb_GAS_4->value(); |
Motor[4][0] = sb_GAS_5->value(); |
Motor[5][0] = sb_GAS_6->value(); |
Motor[6][0] = sb_GAS_7->value(); |
Motor[7][0] = sb_GAS_8->value(); |
Motor[8][0] = sb_GAS_9->value(); |
Motor[9][0] = sb_GAS_10->value(); |
Motor[10][0] = sb_GAS_11->value(); |
Motor[11][0] = sb_GAS_12->value(); |
Motor[0][1] = sb_NICK_1->value(); |
Motor[1][1] = sb_NICK_2->value(); |
Motor[2][1] = sb_NICK_3->value(); |
Motor[3][1] = sb_NICK_4->value(); |
Motor[4][1] = sb_NICK_5->value(); |
Motor[5][1] = sb_NICK_6->value(); |
Motor[6][1] = sb_NICK_7->value(); |
Motor[7][1] = sb_NICK_8->value(); |
Motor[8][1] = sb_NICK_9->value(); |
Motor[9][1] = sb_NICK_10->value(); |
Motor[10][1] = sb_NICK_11->value(); |
Motor[11][1] = sb_NICK_12->value(); |
Motor[0][2] = sb_ROLL_1->value(); |
Motor[1][2] = sb_ROLL_2->value(); |
Motor[2][2] = sb_ROLL_3->value(); |
Motor[3][2] = sb_ROLL_4->value(); |
Motor[4][2] = sb_ROLL_5->value(); |
Motor[5][2] = sb_ROLL_6->value(); |
Motor[6][2] = sb_ROLL_7->value(); |
Motor[7][2] = sb_ROLL_8->value(); |
Motor[8][2] = sb_ROLL_9->value(); |
Motor[9][2] = sb_ROLL_10->value(); |
Motor[10][2] = sb_ROLL_11->value(); |
Motor[11][2] = sb_ROLL_12->value(); |
Motor[0][3] = sb_GIER_1->value(); |
Motor[1][3] = sb_GIER_2->value(); |
Motor[2][3] = sb_GIER_3->value(); |
Motor[3][3] = sb_GIER_4->value(); |
Motor[4][3] = sb_GIER_5->value(); |
Motor[5][3] = sb_GIER_6->value(); |
Motor[6][3] = sb_GIER_7->value(); |
Motor[7][3] = sb_GIER_8->value(); |
Motor[8][3] = sb_GIER_9->value(); |
Motor[9][3] = sb_GIER_10->value(); |
Motor[10][3] = sb_GIER_11->value(); |
Motor[11][3] = sb_GIER_12->value(); |
} |
// Motordaten anzeigen |
void dlg_MotorMixer::set_MotorData() |
{ |
le_NAME->setText(MixerName); |
sb_GAS_1->setValue(Motor[0][0]); |
sb_GAS_2->setValue(Motor[1][0]); |
sb_GAS_3->setValue(Motor[2][0]); |
sb_GAS_4->setValue(Motor[3][0]); |
sb_GAS_5->setValue(Motor[4][0]); |
sb_GAS_6->setValue(Motor[5][0]); |
sb_GAS_7->setValue(Motor[6][0]); |
sb_GAS_8->setValue(Motor[7][0]); |
sb_GAS_9->setValue(Motor[8][0]); |
sb_GAS_10->setValue(Motor[9][0]); |
sb_GAS_11->setValue(Motor[10][0]); |
sb_GAS_12->setValue(Motor[11][0]); |
sb_NICK_1->setValue(Motor[0][1]); |
sb_NICK_2->setValue(Motor[1][1]); |
sb_NICK_3->setValue(Motor[2][1]); |
sb_NICK_4->setValue(Motor[3][1]); |
sb_NICK_5->setValue(Motor[4][1]); |
sb_NICK_6->setValue(Motor[5][1]); |
sb_NICK_7->setValue(Motor[6][1]); |
sb_NICK_8->setValue(Motor[7][1]); |
sb_NICK_9->setValue(Motor[8][1]); |
sb_NICK_10->setValue(Motor[9][1]); |
sb_NICK_11->setValue(Motor[10][1]); |
sb_NICK_12->setValue(Motor[11][1]); |
sb_ROLL_1->setValue(Motor[0][2]); |
sb_ROLL_2->setValue(Motor[1][2]); |
sb_ROLL_3->setValue(Motor[2][2]); |
sb_ROLL_4->setValue(Motor[3][2]); |
sb_ROLL_5->setValue(Motor[4][2]); |
sb_ROLL_6->setValue(Motor[5][2]); |
sb_ROLL_7->setValue(Motor[6][2]); |
sb_ROLL_8->setValue(Motor[7][2]); |
sb_ROLL_9->setValue(Motor[8][2]); |
sb_ROLL_10->setValue(Motor[9][2]); |
sb_ROLL_11->setValue(Motor[10][2]); |
sb_ROLL_12->setValue(Motor[11][2]); |
sb_GIER_1->setValue(Motor[0][3]); |
sb_GIER_2->setValue(Motor[1][3]); |
sb_GIER_3->setValue(Motor[2][3]); |
sb_GIER_4->setValue(Motor[3][3]); |
sb_GIER_5->setValue(Motor[4][3]); |
sb_GIER_6->setValue(Motor[5][3]); |
sb_GIER_7->setValue(Motor[6][3]); |
sb_GIER_8->setValue(Motor[7][3]); |
sb_GIER_9->setValue(Motor[8][3]); |
sb_GIER_10->setValue(Motor[9][3]); |
sb_GIER_11->setValue(Motor[10][3]); |
sb_GIER_12->setValue(Motor[11][3]); |
} |
// Prüfen auf vollstaändigkeit |
void dlg_MotorMixer::slot_CheckValue(int Wert) |
{ |
Wert = Wert; |
int NICK = sb_NICK_1->value() + sb_NICK_2->value() + sb_NICK_3->value() + sb_NICK_4->value() + sb_NICK_5->value() + sb_NICK_6->value() + |
sb_NICK_7->value() + sb_NICK_8->value() + sb_NICK_9->value() + sb_NICK_10->value() + sb_NICK_11->value() + sb_NICK_12->value(); |
int ROLL = sb_ROLL_1->value() + sb_ROLL_2->value() + sb_ROLL_3->value() + sb_ROLL_4->value() + sb_ROLL_5->value() + sb_ROLL_6->value() + |
sb_ROLL_7->value() + sb_ROLL_8->value() + sb_ROLL_9->value() + sb_ROLL_10->value() + sb_ROLL_11->value() + sb_ROLL_12->value(); |
int GIER = sb_GIER_1->value() + sb_GIER_2->value() + sb_GIER_3->value() + sb_GIER_4->value() + sb_GIER_5->value() + sb_GIER_6->value() + |
sb_GIER_7->value() + sb_GIER_8->value() + sb_GIER_9->value() + sb_GIER_10->value() + sb_GIER_11->value() + sb_GIER_12->value(); |
if (NICK == 0) |
{ |
lb_NICK->setEnabled(true); |
} |
else |
{ |
lb_NICK->setEnabled(false); |
} |
if (ROLL == 0) |
{ |
lb_ROLL->setEnabled(true); |
} |
else |
{ |
lb_ROLL->setEnabled(false); |
} |
if (GIER == 0) |
{ |
lb_GIER->setEnabled(true); |
} |
else |
{ |
lb_GIER->setEnabled(false); |
} |
} |
int dlg_MotorMixer::get_MotorConfig() |
{ |
get_MotorData(); |
TX_Data[0] = VERSION_MIXER; |
char *Name = MixerName.toLatin1().data(); |
int a; |
for (a = 0; a < MixerName.length(); a++) |
{ |
TX_Data[1+a] = Name[a]; |
} |
while(a < 12) |
{ |
TX_Data[1+a] = 0; |
a++; |
} |
int Pos = 13; |
for (int z = 0; z < 16; z++) |
{ |
for (int y = 0; y < 4; y++) |
{ |
TX_Data[Pos] = ToolBox::Char2Data(Motor[z][y]); |
Pos++; |
} |
} |
return Pos - 1; |
} |
void dlg_MotorMixer::read_Mixer() |
{ |
TX_Data[0] = 0; |
o_Connection->send_Cmd('n', ADDRESS_FC, TX_Data, 1, true); |
} |
// Motordaten auslesen |
void dlg_MotorMixer::slot_pb_READ() |
{ |
TX_Data[0] = 0; |
o_Connection->send_Cmd('n', ADDRESS_FC, TX_Data, 1, true); |
} |
void dlg_MotorMixer::slot_pb_WRITE() |
{ |
int Length = get_MotorConfig(); |
o_Connection->send_Cmd('m', ADDRESS_FC, TX_Data, Length, true); |
} |
void dlg_MotorMixer::slot_pb_LOAD() |
{ |
QString Filename = QFileDialog::getOpenFileName(this, tr("Mikrokopter MotorMixer laden"), o_Settings->DIR.Parameter + "", tr("MK MotorMixer(*.mkm);;Alle Dateien (*)")); |
if (!Filename.isEmpty()) |
{ |
QSettings Setting(Filename, QSettings::IniFormat); |
Setting.beginGroup("Info"); |
MixerName = Setting.value("Name", QString("--noname--")).toString(); |
MixerVersion = Setting.value("Version", 0).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("Gas"); |
for (int z = 0; z < MAXMOTOR; z++) |
{ |
Motor[z][0] = Setting.value(QString("Motor%1").arg(z+1), 0).toInt(); |
} |
Setting.endGroup(); |
Setting.beginGroup("Nick"); |
for (int z = 0; z < MAXMOTOR; z++) |
{ |
Motor[z][1] = Setting.value(QString("Motor%1").arg(z+1), 0).toInt(); |
} |
Setting.endGroup(); |
Setting.beginGroup("Roll"); |
for (int z = 0; z < MAXMOTOR; z++) |
{ |
Motor[z][2] = Setting.value(QString("Motor%1").arg(z+1), 0).toInt(); |
} |
Setting.endGroup(); |
Setting.beginGroup("Yaw"); |
for (int z = 0; z < MAXMOTOR; z++) |
{ |
Motor[z][3] = Setting.value(QString("Motor%1").arg(z+1), 0).toInt(); |
} |
Setting.endGroup(); |
if (MixerVersion == VERSION_MIXER) |
{ |
set_MotorData(); |
} |
} |
} |
void dlg_MotorMixer::slot_pb_SAVE() |
{ |
QString Filename = QFileDialog::getSaveFileName(this, tr("Mikrokopter MotorMixer speichern"), o_Settings->DIR.Parameter + "/" + le_NAME->text(), tr("MK MotorMixer(*.mkm);;Alle Dateien (*)")); |
if (!Filename.isEmpty()) |
{ |
if (!(Filename.endsWith(".mkm", Qt::CaseInsensitive))) |
{ |
Filename = Filename + QString(".mkm"); |
} |
get_MotorData(); |
QSettings Setting(Filename, QSettings::IniFormat); |
Setting.beginGroup("Info"); |
Setting.setValue("Name", MixerName); |
Setting.setValue("Version", VERSION_MIXER); |
Setting.endGroup(); |
Setting.beginGroup("Gas"); |
for (int z = 0; z < MAXMOTOR; z++) |
{ |
Setting.setValue(QString("Motor%1").arg(z+1), Motor[z][0]); |
} |
Setting.endGroup(); |
Setting.beginGroup("Nick"); |
for (int z = 0; z < MAXMOTOR; z++) |
{ |
Setting.setValue(QString("Motor%1").arg(z+1), Motor[z][1]); |
} |
Setting.endGroup(); |
Setting.beginGroup("Roll"); |
for (int z = 0; z < MAXMOTOR; z++) |
{ |
Setting.setValue(QString("Motor%1").arg(z+1), Motor[z][2]); |
} |
Setting.endGroup(); |
Setting.beginGroup("Yaw"); |
for (int z = 0; z < MAXMOTOR; z++) |
{ |
Setting.setValue(QString("Motor%1").arg(z+1), Motor[z][3]); |
} |
Setting.endGroup(); |
} |
} |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_MotorMixer.h |
---|
0,0 → 1,67 |
/*************************************************************************** |
* Copyright (C) 2009 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#ifndef DLG_MOTORMIXER_H |
#define DLG_MOTORMIXER_H |
#include <QObject> |
#include <QFileDialog> |
#include <QSettings> |
#include "ui_dlg_MotorMixer.h" |
#include "../Classes/cSettings.h" |
#include "../Classes/cConnection.h" |
#include "../typedefs.h" |
#include "../Classes/ToolBox.h" |
#include "../global.h" |
class dlg_MotorMixer : public QDialog, public Ui::dlg_MotorMixer_UI |
{ |
Q_OBJECT |
public: |
dlg_MotorMixer(QWidget *parent = 0); |
void set_Objects(cConnection *t_Connection, cSettings *t_Settings); |
void set_MotorConfig(sRxData RX); |
void read_Mixer(); |
private: |
// Object fĂĽr Kopter-Verbindung |
cConnection *o_Connection; |
cSettings *o_Settings; |
char TX_Data[150]; |
int Motor[16][4]; |
QString MixerName; |
int MixerVersion; |
void set_MotorData(); |
void get_MotorData(); |
int get_MotorConfig(); |
private slots: |
void slot_pb_READ(); |
void slot_pb_WRITE(); |
void slot_pb_LOAD(); |
void slot_pb_SAVE(); |
void slot_CheckValue(int Wert); |
}; |
#endif // DLG_MOTORMIXER_H |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_MotorMixer.ui |
---|
0,0 → 1,1733 |
<?xml version="1.0" encoding="UTF-8"?> |
<ui version="4.0"> |
<class>dlg_MotorMixer_UI</class> |
<widget class="QDialog" name="dlg_MotorMixer_UI"> |
<property name="geometry"> |
<rect> |
<x>0</x> |
<y>0</y> |
<width>470</width> |
<height>414</height> |
</rect> |
</property> |
<property name="windowTitle"> |
<string>MotorMixer-Einstellungen</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_3"> |
<item row="0" column="0"> |
<widget class="QWidget" name="widget" native="true"> |
<layout class="QGridLayout" name="gridLayout"> |
<property name="margin"> |
<number>2</number> |
</property> |
<item row="2" column="0"> |
<widget class="QLabel" name="label"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Motor 1:</string> |
</property> |
</widget> |
</item> |
<item row="2" column="1" colspan="2"> |
<widget class="QSpinBox" name="sb_GAS_1"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="2" column="3" colspan="2"> |
<widget class="QSpinBox" name="sb_NICK_1"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="2" column="5"> |
<widget class="QSpinBox" name="sb_ROLL_1"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="2" column="6"> |
<widget class="QSpinBox" name="sb_GIER_1"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="3" column="0"> |
<widget class="QLabel" name="label_2"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Motor 2:</string> |
</property> |
</widget> |
</item> |
<item row="3" column="1" colspan="2"> |
<widget class="QSpinBox" name="sb_GAS_2"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="3" column="3" colspan="2"> |
<widget class="QSpinBox" name="sb_NICK_2"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="3" column="5"> |
<widget class="QSpinBox" name="sb_ROLL_2"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="3" column="6"> |
<widget class="QSpinBox" name="sb_GIER_2"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="4" column="0"> |
<widget class="QLabel" name="label_3"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Motor 3:</string> |
</property> |
</widget> |
</item> |
<item row="4" column="1" colspan="2"> |
<widget class="QSpinBox" name="sb_GAS_3"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="4" column="3" colspan="2"> |
<widget class="QSpinBox" name="sb_NICK_3"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="4" column="5"> |
<widget class="QSpinBox" name="sb_ROLL_3"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="4" column="6"> |
<widget class="QSpinBox" name="sb_GIER_3"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="5" column="0"> |
<widget class="QLabel" name="label_4"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Motor 4:</string> |
</property> |
</widget> |
</item> |
<item row="5" column="1" colspan="2"> |
<widget class="QSpinBox" name="sb_GAS_4"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="5" column="3" colspan="2"> |
<widget class="QSpinBox" name="sb_NICK_4"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="5" column="5"> |
<widget class="QSpinBox" name="sb_ROLL_4"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="5" column="6"> |
<widget class="QSpinBox" name="sb_GIER_4"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="6" column="0"> |
<widget class="QLabel" name="label_5"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Motor 5:</string> |
</property> |
</widget> |
</item> |
<item row="6" column="1" colspan="2"> |
<widget class="QSpinBox" name="sb_GAS_5"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="6" column="3" colspan="2"> |
<widget class="QSpinBox" name="sb_NICK_5"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="6" column="5"> |
<widget class="QSpinBox" name="sb_ROLL_5"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="6" column="6"> |
<widget class="QSpinBox" name="sb_GIER_5"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="7" column="0"> |
<widget class="QLabel" name="label_6"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Motor 6:</string> |
</property> |
</widget> |
</item> |
<item row="7" column="1" colspan="2"> |
<widget class="QSpinBox" name="sb_GAS_6"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="7" column="3" colspan="2"> |
<widget class="QSpinBox" name="sb_NICK_6"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="7" column="5"> |
<widget class="QSpinBox" name="sb_ROLL_6"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="7" column="6"> |
<widget class="QSpinBox" name="sb_GIER_6"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="8" column="0"> |
<widget class="QLabel" name="label_7"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Motor 7:</string> |
</property> |
</widget> |
</item> |
<item row="8" column="1" colspan="2"> |
<widget class="QSpinBox" name="sb_GAS_7"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="8" column="3" colspan="2"> |
<widget class="QSpinBox" name="sb_NICK_7"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="8" column="5"> |
<widget class="QSpinBox" name="sb_ROLL_7"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="8" column="6"> |
<widget class="QSpinBox" name="sb_GIER_7"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="9" column="0"> |
<widget class="QLabel" name="label_8"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Motor 8:</string> |
</property> |
</widget> |
</item> |
<item row="9" column="1" colspan="2"> |
<widget class="QSpinBox" name="sb_GAS_8"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="9" column="3" colspan="2"> |
<widget class="QSpinBox" name="sb_NICK_8"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="9" column="5"> |
<widget class="QSpinBox" name="sb_ROLL_8"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="9" column="6"> |
<widget class="QSpinBox" name="sb_GIER_8"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="10" column="0"> |
<widget class="QLabel" name="label_9"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Motor 9:</string> |
</property> |
</widget> |
</item> |
<item row="10" column="1" colspan="2"> |
<widget class="QSpinBox" name="sb_GAS_9"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="10" column="3" colspan="2"> |
<widget class="QSpinBox" name="sb_NICK_9"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="10" column="5"> |
<widget class="QSpinBox" name="sb_ROLL_9"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="10" column="6"> |
<widget class="QSpinBox" name="sb_GIER_9"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="11" column="0"> |
<widget class="QLabel" name="label_10"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Motor 10:</string> |
</property> |
</widget> |
</item> |
<item row="11" column="1" colspan="2"> |
<widget class="QSpinBox" name="sb_GAS_10"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="11" column="3" colspan="2"> |
<widget class="QSpinBox" name="sb_NICK_10"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="11" column="5"> |
<widget class="QSpinBox" name="sb_ROLL_10"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="11" column="6"> |
<widget class="QSpinBox" name="sb_GIER_10"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="12" column="0"> |
<widget class="QLabel" name="label_11"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Motor 11:</string> |
</property> |
</widget> |
</item> |
<item row="12" column="1" colspan="2"> |
<widget class="QSpinBox" name="sb_GAS_11"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="12" column="3" colspan="2"> |
<widget class="QSpinBox" name="sb_NICK_11"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="12" column="5"> |
<widget class="QSpinBox" name="sb_ROLL_11"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="12" column="6"> |
<widget class="QSpinBox" name="sb_GIER_11"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="13" column="0"> |
<widget class="QLabel" name="label_12"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Motor 12:</string> |
</property> |
</widget> |
</item> |
<item row="13" column="1" colspan="2"> |
<widget class="QSpinBox" name="sb_GAS_12"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="13" column="3" colspan="2"> |
<widget class="QSpinBox" name="sb_NICK_12"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="13" column="5"> |
<widget class="QSpinBox" name="sb_ROLL_12"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="13" column="6"> |
<widget class="QSpinBox" name="sb_GIER_12"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="minimum"> |
<number>-128</number> |
</property> |
<property name="maximum"> |
<number>128</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
</widget> |
</item> |
<item row="1" column="5"> |
<widget class="QLabel" name="lb_ROLL"> |
<property name="palette"> |
<palette> |
<active> |
<colorrole role="WindowText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>62</red> |
<green>207</green> |
<blue>0</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Dark"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Text"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>20</red> |
<green>19</green> |
<blue>18</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="ButtonText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>20</red> |
<green>19</green> |
<blue>18</blue> |
</color> |
</brush> |
</colorrole> |
</active> |
<inactive> |
<colorrole role="WindowText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>62</red> |
<green>207</green> |
<blue>0</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Dark"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Text"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>20</red> |
<green>19</green> |
<blue>18</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="ButtonText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>20</red> |
<green>19</green> |
<blue>18</blue> |
</color> |
</brush> |
</colorrole> |
</inactive> |
<disabled> |
<colorrole role="WindowText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Dark"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Text"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="ButtonText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
</disabled> |
</palette> |
</property> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>ROLL</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignCenter</set> |
</property> |
</widget> |
</item> |
<item row="1" column="1" colspan="2"> |
<widget class="QLabel" name="label_13"> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>GAS</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignCenter</set> |
</property> |
</widget> |
</item> |
<item row="1" column="6"> |
<widget class="QLabel" name="lb_GIER"> |
<property name="palette"> |
<palette> |
<active> |
<colorrole role="WindowText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>62</red> |
<green>207</green> |
<blue>0</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Dark"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Text"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>20</red> |
<green>19</green> |
<blue>18</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="ButtonText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>20</red> |
<green>19</green> |
<blue>18</blue> |
</color> |
</brush> |
</colorrole> |
</active> |
<inactive> |
<colorrole role="WindowText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>62</red> |
<green>207</green> |
<blue>0</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Dark"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Text"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>20</red> |
<green>19</green> |
<blue>18</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="ButtonText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>20</red> |
<green>19</green> |
<blue>18</blue> |
</color> |
</brush> |
</colorrole> |
</inactive> |
<disabled> |
<colorrole role="WindowText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Dark"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Text"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="ButtonText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
</disabled> |
</palette> |
</property> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>GIER</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignCenter</set> |
</property> |
</widget> |
</item> |
<item row="1" column="3" colspan="2"> |
<widget class="QLabel" name="lb_NICK"> |
<property name="palette"> |
<palette> |
<active> |
<colorrole role="WindowText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>62</red> |
<green>207</green> |
<blue>0</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Dark"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Text"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>20</red> |
<green>19</green> |
<blue>18</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="ButtonText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>20</red> |
<green>19</green> |
<blue>18</blue> |
</color> |
</brush> |
</colorrole> |
</active> |
<inactive> |
<colorrole role="WindowText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>62</red> |
<green>207</green> |
<blue>0</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Dark"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Text"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>20</red> |
<green>19</green> |
<blue>18</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="ButtonText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>20</red> |
<green>19</green> |
<blue>18</blue> |
</color> |
</brush> |
</colorrole> |
</inactive> |
<disabled> |
<colorrole role="WindowText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Dark"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="Text"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
<colorrole role="ButtonText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>179</red> |
<green>14</green> |
<blue>17</blue> |
</color> |
</brush> |
</colorrole> |
</disabled> |
</palette> |
</property> |
<property name="font"> |
<font> |
<family>Courier 10 Pitch</family> |
<pointsize>11</pointsize> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>NICK</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignCenter</set> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="0" column="1"> |
<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_2"> |
<item row="2" column="0"> |
<widget class="QLineEdit" name="le_NAME"/> |
</item> |
<item row="3" column="0"> |
<widget class="QPushButton" name="pb_READ"> |
<property name="text"> |
<string>Lesen</string> |
</property> |
</widget> |
</item> |
<item row="4" column="0"> |
<widget class="QPushButton" name="pb_WRITE"> |
<property name="text"> |
<string>Schreiben</string> |
</property> |
</widget> |
</item> |
<item row="5" column="0"> |
<widget class="QPushButton" name="pb_LOAD"> |
<property name="text"> |
<string>Laden</string> |
</property> |
</widget> |
</item> |
<item row="6" column="0"> |
<widget class="QPushButton" name="pb_SAVE"> |
<property name="text"> |
<string>Speichern</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="label_17"> |
<property name="text"> |
<string>Name:</string> |
</property> |
</widget> |
</item> |
<item row="7" column="0"> |
<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> |
<item row="8" column="0"> |
<widget class="QPushButton" name="pb_Close"> |
<property name="text"> |
<string>SchlieĂźen</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
</layout> |
</widget> |
<resources> |
<include location="../MKTool.qrc"/> |
</resources> |
<connections> |
<connection> |
<sender>pb_Close</sender> |
<signal>clicked()</signal> |
<receiver>dlg_MotorMixer_UI</receiver> |
<slot>close()</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>414</x> |
<y>390</y> |
</hint> |
<hint type="destinationlabel"> |
<x>234</x> |
<y>206</y> |
</hint> |
</hints> |
</connection> |
</connections> |
</ui> |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_Motortest.cpp |
---|
0,0 → 1,68 |
/*************************************************************************** |
* Copyright (C) 2008 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#include "dlg_Motortest.h" |
dlg_Motortest::dlg_Motortest(QWidget *parent) : QDialog(parent) |
{ |
setupUi(this); |
connect(sl_Speed, SIGNAL(valueChanged(int)), this, SLOT(slot_Motortest(int))); |
} |
void dlg_Motortest::slot_Motortest(int Wert) |
{ |
sMotor Motor; |
for (int z = 0; z < 12; z++) |
{ |
Motor.Speed[z] = 0; |
} |
if (cb_1->isChecked()) |
Motor.Speed[0] = Wert; |
if (cb_2->isChecked()) |
Motor.Speed[1] = Wert; |
if (cb_3->isChecked()) |
Motor.Speed[2] = Wert; |
if (cb_4->isChecked()) |
Motor.Speed[3] = Wert; |
if (cb_5->isChecked()) |
Motor.Speed[4] = Wert; |
if (cb_6->isChecked()) |
Motor.Speed[5] = Wert; |
if (cb_7->isChecked()) |
Motor.Speed[6] = Wert; |
if (cb_8->isChecked()) |
Motor.Speed[7] = Wert; |
if (cb_9->isChecked()) |
Motor.Speed[8] = Wert; |
if (cb_10->isChecked()) |
Motor.Speed[9] = Wert; |
if (cb_11->isChecked()) |
Motor.Speed[10] = Wert; |
if (cb_12->isChecked()) |
Motor.Speed[11] = Wert; |
emit updateMotor(Motor); |
} |
dlg_Motortest::~dlg_Motortest() |
{ |
} |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_Motortest.h |
---|
0,0 → 1,42 |
/*************************************************************************** |
* Copyright (C) 2008 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#ifndef DLG_MOTORTEST_H |
#define DLG_MOTORTEST_H |
#include <QObject> |
#include "ui_dlg_Motortest.h" |
#include "../global.h" |
class dlg_Motortest : public QDialog, public Ui::dlg_Motortest_UI |
{ |
Q_OBJECT |
public: |
dlg_Motortest(QWidget *parent = 0); |
~dlg_Motortest(); |
private slots: |
void slot_Motortest(int Wert); |
signals: |
void updateMotor(sMotor Motor); |
}; |
#endif |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_Motortest.ui |
---|
0,0 → 1,350 |
<?xml version="1.0" encoding="UTF-8"?> |
<ui version="4.0"> |
<class>dlg_Motortest_UI</class> |
<widget class="QDialog" name="dlg_Motortest_UI"> |
<property name="geometry"> |
<rect> |
<x>0</x> |
<y>0</y> |
<width>194</width> |
<height>208</height> |
</rect> |
</property> |
<property name="windowTitle"> |
<string>Motortest</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_2"> |
<item row="0" column="0"> |
<widget class="QGroupBox" name="groupBox"> |
<property name="title"> |
<string>Motoren</string> |
</property> |
<layout class="QGridLayout" name="gridLayout"> |
<item row="0" column="0"> |
<widget class="QCheckBox" name="cb_1"> |
<property name="text"> |
<string>1</string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QCheckBox" name="cb_2"> |
<property name="text"> |
<string>2</string> |
</property> |
</widget> |
</item> |
<item row="0" column="2"> |
<widget class="QCheckBox" name="cb_3"> |
<property name="text"> |
<string>3</string> |
</property> |
</widget> |
</item> |
<item row="0" column="3"> |
<widget class="QCheckBox" name="cb_4"> |
<property name="text"> |
<string>4</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QCheckBox" name="cb_5"> |
<property name="text"> |
<string>5</string> |
</property> |
</widget> |
</item> |
<item row="1" column="1"> |
<widget class="QCheckBox" name="cb_6"> |
<property name="text"> |
<string>6</string> |
</property> |
</widget> |
</item> |
<item row="1" column="2"> |
<widget class="QCheckBox" name="cb_7"> |
<property name="text"> |
<string>7</string> |
</property> |
</widget> |
</item> |
<item row="1" column="3"> |
<widget class="QCheckBox" name="cb_8"> |
<property name="text"> |
<string>8</string> |
</property> |
</widget> |
</item> |
<item row="2" column="0"> |
<widget class="QCheckBox" name="cb_9"> |
<property name="text"> |
<string>9</string> |
</property> |
</widget> |
</item> |
<item row="2" column="1"> |
<widget class="QCheckBox" name="cb_10"> |
<property name="text"> |
<string>10</string> |
</property> |
</widget> |
</item> |
<item row="2" column="2"> |
<widget class="QCheckBox" name="cb_11"> |
<property name="text"> |
<string>11</string> |
</property> |
</widget> |
</item> |
<item row="2" column="3"> |
<widget class="QCheckBox" name="cb_12"> |
<property name="text"> |
<string>12</string> |
</property> |
</widget> |
</item> |
<item row="3" column="0" colspan="4"> |
<widget class="QCheckBox" name="cb_ALL"> |
<property name="text"> |
<string>Alle auswählen</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QSlider" name="sl_Speed"> |
<property name="maximum"> |
<number>255</number> |
</property> |
<property name="pageStep"> |
<number>1</number> |
</property> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
</widget> |
</item> |
<item row="2" column="0"> |
<widget class="QPushButton" name="pb_OK"> |
<property name="text"> |
<string>OK</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
<resources/> |
<connections> |
<connection> |
<sender>pb_OK</sender> |
<signal>clicked()</signal> |
<receiver>dlg_Motortest_UI</receiver> |
<slot>accept()</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>63</x> |
<y>174</y> |
</hint> |
<hint type="destinationlabel"> |
<x>29</x> |
<y>177</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cb_ALL</sender> |
<signal>toggled(bool)</signal> |
<receiver>cb_1</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>96</x> |
<y>128</y> |
</hint> |
<hint type="destinationlabel"> |
<x>29</x> |
<y>47</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cb_ALL</sender> |
<signal>toggled(bool)</signal> |
<receiver>cb_2</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>96</x> |
<y>128</y> |
</hint> |
<hint type="destinationlabel"> |
<x>71</x> |
<y>47</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cb_ALL</sender> |
<signal>toggled(bool)</signal> |
<receiver>cb_3</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>96</x> |
<y>128</y> |
</hint> |
<hint type="destinationlabel"> |
<x>115</x> |
<y>47</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cb_ALL</sender> |
<signal>toggled(bool)</signal> |
<receiver>cb_4</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>96</x> |
<y>128</y> |
</hint> |
<hint type="destinationlabel"> |
<x>160</x> |
<y>47</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cb_ALL</sender> |
<signal>toggled(bool)</signal> |
<receiver>cb_5</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>96</x> |
<y>128</y> |
</hint> |
<hint type="destinationlabel"> |
<x>29</x> |
<y>74</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cb_ALL</sender> |
<signal>toggled(bool)</signal> |
<receiver>cb_6</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>96</x> |
<y>128</y> |
</hint> |
<hint type="destinationlabel"> |
<x>71</x> |
<y>74</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cb_ALL</sender> |
<signal>toggled(bool)</signal> |
<receiver>cb_7</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>96</x> |
<y>128</y> |
</hint> |
<hint type="destinationlabel"> |
<x>115</x> |
<y>74</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cb_ALL</sender> |
<signal>toggled(bool)</signal> |
<receiver>cb_8</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>96</x> |
<y>128</y> |
</hint> |
<hint type="destinationlabel"> |
<x>160</x> |
<y>74</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cb_ALL</sender> |
<signal>toggled(bool)</signal> |
<receiver>cb_9</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>96</x> |
<y>128</y> |
</hint> |
<hint type="destinationlabel"> |
<x>29</x> |
<y>101</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cb_ALL</sender> |
<signal>toggled(bool)</signal> |
<receiver>cb_10</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>96</x> |
<y>128</y> |
</hint> |
<hint type="destinationlabel"> |
<x>71</x> |
<y>101</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cb_ALL</sender> |
<signal>toggled(bool)</signal> |
<receiver>cb_11</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>96</x> |
<y>128</y> |
</hint> |
<hint type="destinationlabel"> |
<x>115</x> |
<y>101</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cb_ALL</sender> |
<signal>toggled(bool)</signal> |
<receiver>cb_12</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>96</x> |
<y>128</y> |
</hint> |
<hint type="destinationlabel"> |
<x>160</x> |
<y>101</y> |
</hint> |
</hints> |
</connection> |
</connections> |
</ui> |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_Preferences.cpp |
---|
0,0 → 1,127 |
/*************************************************************************** |
* Copyright (C) 2008 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#include "dlg_Preferences.h" |
dlg_Preferences::dlg_Preferences(QWidget *parent) : QDialog(parent) |
{ |
setupUi(this); |
connect(pb_DIR_CVS, SIGNAL(clicked()), this, SLOT(slot_DIR_CVS())); |
connect(pb_DIR_SET, SIGNAL(clicked()), this, SLOT(slot_DIR_SET())); |
connect(pb_DIR_CACHE, SIGNAL(clicked()), this, SLOT(slot_DIR_CACHE())); |
connect(pb_PATH_AVRDUDE, SIGNAL(clicked()), this, SLOT(slot_PATH_AVRDUDE())); |
} |
void dlg_Preferences::set_Settings(cSettings *Set) |
{ |
Settings = Set; |
le_DIR_CVS->setText(Settings->DIR.Logging); |
le_DIR_SET->setText(Settings->DIR.Parameter); |
le_DIR_CACHE->setText(Settings->DIR.Cache); |
le_PATH_AVRDUDE->setText(Settings->DIR.AVRDUDE); |
le_TTY->setText(Settings->TTY.Port); |
sp_Plotter_Count->setValue(Settings->Data.Plotter_Count); |
sp_Debug_Fast->setValue(Settings->Data.Debug_Fast); |
sp_Debug_Slow->setValue(Settings->Data.Debug_Slow); |
sp_Debug_Off->setValue(Settings->Data.Debug_Off); |
sp_Navi_Fast->setValue(Settings->Data.Navi_Fast); |
sp_Navi_Slow->setValue(Settings->Data.Navi_Slow); |
sp_Navi_Off->setValue(Settings->Data.Navi_Off); |
le_ServerPort->setText(Settings->Server.Port); |
cb_StartServer->setChecked(Settings->Server.StartServer); |
cb_ToGround->setChecked(Settings->Server.ToGround); |
le_Login->setText(Settings->Server.QMKS_Login); |
le_Password->setText(Settings->Server.QMKS_Password); |
le_QMKS_Host->setText(Settings->Server.QMKS_Host); |
le_QMKS_Port->setText(Settings->Server.QMKS_Port); |
} |
cSettings *dlg_Preferences::get_Settings() |
{ |
Settings->TTY.Port = le_TTY->text(); |
Settings->Data.Plotter_Count = sp_Plotter_Count->value(); |
Settings->Data.Debug_Fast = sp_Debug_Fast->value(); |
Settings->Data.Debug_Slow = sp_Debug_Slow->value(); |
Settings->Data.Debug_Off = sp_Debug_Off->value(); |
Settings->Data.Navi_Fast = sp_Navi_Fast->value(); |
Settings->Data.Navi_Slow = sp_Navi_Slow->value(); |
Settings->Data.Navi_Off = sp_Navi_Off->value(); |
Settings->Server.Port = le_ServerPort->text(); |
Settings->Server.StartServer = cb_StartServer->isChecked(); |
Settings->Server.ToGround = cb_ToGround->isChecked(); |
Settings->Server.QMKS_Login = le_Login->text(); |
Settings->Server.QMKS_Password = le_Password->text(); |
Settings->Server.QMKS_Host = le_QMKS_Host->text(); |
Settings->Server.QMKS_Port = le_QMKS_Port->text(); |
return Settings; |
} |
// Configuration -> Verzeichnisse |
///////////////////////////////// |
void dlg_Preferences::slot_DIR_CVS() |
{ |
QString directory = QFileDialog::getExistingDirectory(this, trUtf8("Verzeichniss fĂĽr Daten"), Settings->DIR.Logging, QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly); |
if ((!directory.isEmpty()) && (Settings->DIR.Logging != directory)) |
{ |
Settings->DIR.Logging = directory; |
le_DIR_CVS->setText(Settings->DIR.Logging); |
} |
} |
void dlg_Preferences::slot_DIR_SET() |
{ |
QString directory = QFileDialog::getExistingDirectory(this, trUtf8("Verzeichniss fĂĽr Settings-Dateien"), Settings->DIR.Parameter, QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly); |
if ((!directory.isEmpty()) && (Settings->DIR.Parameter != directory)) |
{ |
Settings->DIR.Parameter = directory; |
le_DIR_SET->setText(Settings->DIR.Parameter); |
} |
} |
void dlg_Preferences::slot_DIR_CACHE() |
{ |
QString directory = QFileDialog::getExistingDirectory(this, trUtf8("Verzeichniss fĂĽr Karten-Cache"), Settings->DIR.Cache, QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly); |
if ((!directory.isEmpty()) && (Settings->DIR.Cache != directory)) |
{ |
Settings->DIR.Cache = directory; |
le_DIR_CACHE->setText(Settings->DIR.Cache); |
} |
} |
void dlg_Preferences::slot_PATH_AVRDUDE() |
{ |
QString directory = QFileDialog::getOpenFileName(this, trUtf8("Pfad zu AVRDUDE"), Settings->DIR.AVRDUDE, tr("AVRDUDE (*)")); |
if ((!directory.isEmpty()) && (Settings->DIR.AVRDUDE != directory)) |
{ |
Settings->DIR.AVRDUDE = directory; |
le_PATH_AVRDUDE->setText(Settings->DIR.AVRDUDE); |
} |
} |
dlg_Preferences::~dlg_Preferences() |
{ |
} |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_Preferences.h |
---|
0,0 → 1,51 |
/*************************************************************************** |
* Copyright (C) 2008 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#ifndef DLG_PREFERENCES_H |
#define DLG_PREFERENCES_H |
#include <QCheckBox> |
#include <QFileDialog> |
#include "ui_dlg_Preferences.h" |
#include "../Classes/cSettings.h" |
//#include "../global.h" |
class dlg_Preferences : public QDialog, public Ui::dlg_Preferences_UI |
{ |
Q_OBJECT |
public: |
dlg_Preferences(QWidget *parent = 0); |
~dlg_Preferences(); |
void set_Settings(cSettings *Set); |
cSettings *get_Settings(); |
private: |
cSettings *Settings; |
private slots: |
void slot_DIR_CVS(); |
void slot_DIR_SET(); |
void slot_DIR_CACHE(); |
void slot_PATH_AVRDUDE(); |
}; |
#endif |
/QMK-Groundstation/tags/V1.0.1/Forms/dlg_Preferences.ui |
---|
0,0 → 1,973 |
<?xml version="1.0" encoding="UTF-8"?> |
<ui version="4.0"> |
<class>dlg_Preferences_UI</class> |
<widget class="QDialog" name="dlg_Preferences_UI"> |
<property name="geometry"> |
<rect> |
<x>0</x> |
<y>0</y> |
<width>589</width> |
<height>287</height> |
</rect> |
</property> |
<property name="windowTitle"> |
<string>Einstellungen</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_16"> |
<item row="0" column="0"> |
<widget class="QListWidget" name="listWidget"> |
<property name="minimumSize"> |
<size> |
<width>150</width> |
<height>0</height> |
</size> |
</property> |
<property name="maximumSize"> |
<size> |
<width>150</width> |
<height>16777215</height> |
</size> |
</property> |
<item> |
<property name="text"> |
<string>Verbindung</string> |
</property> |
<property name="flags"> |
<set>ItemIsSelectable|ItemIsUserCheckable|ItemIsEnabled</set> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>Debug-Daten</string> |
</property> |
<property name="flags"> |
<set>ItemIsSelectable|ItemIsUserCheckable|ItemIsEnabled</set> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>Navi-Daten</string> |
</property> |
<property name="flags"> |
<set>ItemIsSelectable|ItemIsUserCheckable|ItemIsEnabled</set> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>Plotter</string> |
</property> |
<property name="flags"> |
<set>ItemIsSelectable|ItemIsUserCheckable|ItemIsEnabled</set> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>Verzeichnisse</string> |
</property> |
<property name="flags"> |
<set>ItemIsSelectable|ItemIsUserCheckable|ItemIsEnabled</set> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>KML-Server</string> |
</property> |
<property name="flags"> |
<set>ItemIsSelectable|ItemIsUserCheckable|ItemIsEnabled</set> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>QMK-Datenserver</string> |
</property> |
<property name="flags"> |
<set>ItemIsSelectable|ItemIsUserCheckable|ItemIsEnabled</set> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>Flash & Update</string> |
</property> |
<property name="flags"> |
<set>ItemIsSelectable|ItemIsUserCheckable|ItemIsEnabled</set> |
</property> |
</item> |
</widget> |
</item> |
<item row="1" column="0" colspan="3"> |
<layout class="QHBoxLayout" name="horizontalLayout"> |
<item> |
<spacer> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>131</width> |
<height>31</height> |
</size> |
</property> |
</spacer> |
</item> |
<item> |
<widget class="QPushButton" name="okButton"> |
<property name="text"> |
<string>OK</string> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QPushButton" name="cancelButton"> |
<property name="text"> |
<string>Cancel</string> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
<item row="0" column="1"> |
<widget class="QStackedWidget" name="stackedWidget"> |
<property name="frameShape"> |
<enum>QFrame::Box</enum> |
</property> |
<property name="currentIndex"> |
<number>4</number> |
</property> |
<widget class="QWidget" name="page"> |
<layout class="QGridLayout" name="gridLayout_4"> |
<item row="1" column="0"> |
<widget class="QGroupBox" name="groupBox_5"> |
<property name="title"> |
<string>Serieller Port fĂĽr Verbindung zum MK.</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_6"> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_6"> |
<property name="text"> |
<string>Device: </string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QLineEdit" name="le_TTY"> |
<property name="text"> |
<string>/dev/ttyS0</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="2" column="0"> |
<spacer name="verticalSpacer_6"> |
<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="0" column="0"> |
<widget class="QLabel" name="label_16"> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Verbindung zum Kopter</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
<widget class="QWidget" name="page_2"> |
<layout class="QGridLayout" name="gridLayout_3"> |
<item row="1" column="0"> |
<widget class="QGroupBox" name="groupBox"> |
<property name="title"> |
<string>Debug-Daten intervall</string> |
</property> |
<layout class="QGridLayout" name="gridLayout"> |
<item row="1" column="0"> |
<widget class="QLabel" name="label"> |
<property name="text"> |
<string>Intervall langsam :</string> |
</property> |
</widget> |
</item> |
<item row="1" column="3"> |
<widget class="QSpinBox" name="sp_Debug_Slow"> |
<property name="suffix"> |
<string> ms</string> |
</property> |
<property name="minimum"> |
<number>10</number> |
</property> |
<property name="maximum"> |
<number>2550</number> |
</property> |
<property name="singleStep"> |
<number>10</number> |
</property> |
<property name="value"> |
<number>500</number> |
</property> |
</widget> |
</item> |
<item row="2" column="0" rowspan="2"> |
<widget class="QLabel" name="label_2"> |
<property name="text"> |
<string>Intervall schnell :</string> |
</property> |
</widget> |
</item> |
<item row="2" column="3" rowspan="2"> |
<widget class="QSpinBox" name="sp_Debug_Fast"> |
<property name="suffix"> |
<string> ms</string> |
</property> |
<property name="prefix"> |
<string/> |
</property> |
<property name="minimum"> |
<number>10</number> |
</property> |
<property name="maximum"> |
<number>2550</number> |
</property> |
<property name="singleStep"> |
<number>10</number> |
</property> |
<property name="value"> |
<number>100</number> |
</property> |
</widget> |
</item> |
<item row="4" column="0"> |
<widget class="QLabel" name="label_10"> |
<property name="text"> |
<string>Intervall offline :</string> |
</property> |
</widget> |
</item> |
<item row="4" column="3"> |
<widget class="QSpinBox" name="sp_Debug_Off"> |
<property name="suffix"> |
<string> ms</string> |
</property> |
<property name="prefix"> |
<string/> |
</property> |
<property name="minimum"> |
<number>10</number> |
</property> |
<property name="maximum"> |
<number>2550</number> |
</property> |
<property name="singleStep"> |
<number>10</number> |
</property> |
<property name="value"> |
<number>1000</number> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="2" column="0"> |
<spacer name="verticalSpacer_7"> |
<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="0" column="0"> |
<widget class="QLabel" name="label_17"> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Debug-Daten</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
<widget class="QWidget" name="Seite_3"> |
<layout class="QGridLayout" name="gridLayout_7"> |
<item row="1" column="0"> |
<widget class="QGroupBox" name="groupBox_9"> |
<property name="title"> |
<string>Navi-Daten Intervall</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_10"> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_8"> |
<property name="text"> |
<string>Intervall langsam :</string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QSpinBox" name="sp_Navi_Slow"> |
<property name="suffix"> |
<string> ms</string> |
</property> |
<property name="minimum"> |
<number>10</number> |
</property> |
<property name="maximum"> |
<number>2550</number> |
</property> |
<property name="singleStep"> |
<number>10</number> |
</property> |
<property name="value"> |
<number>500</number> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="label_9"> |
<property name="text"> |
<string>Intervall schnell :</string> |
</property> |
</widget> |
</item> |
<item row="1" column="1"> |
<widget class="QSpinBox" name="sp_Navi_Fast"> |
<property name="suffix"> |
<string> ms</string> |
</property> |
<property name="prefix"> |
<string/> |
</property> |
<property name="minimum"> |
<number>10</number> |
</property> |
<property name="maximum"> |
<number>2550</number> |
</property> |
<property name="singleStep"> |
<number>10</number> |
</property> |
<property name="value"> |
<number>100</number> |
</property> |
</widget> |
</item> |
<item row="2" column="0"> |
<widget class="QLabel" name="label_11"> |
<property name="text"> |
<string>Intervall offline :</string> |
</property> |
</widget> |
</item> |
<item row="2" column="1"> |
<widget class="QSpinBox" name="sp_Navi_Off"> |
<property name="suffix"> |
<string> ms</string> |
</property> |
<property name="prefix"> |
<string/> |
</property> |
<property name="minimum"> |
<number>10</number> |
</property> |
<property name="maximum"> |
<number>2550</number> |
</property> |
<property name="singleStep"> |
<number>10</number> |
</property> |
<property name="value"> |
<number>250</number> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="2" column="0"> |
<spacer name="verticalSpacer_8"> |
<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="0" column="0"> |
<widget class="QLabel" name="label_18"> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Navigations-Daten</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
<widget class="QWidget" name="Seite_4"> |
<layout class="QGridLayout" name="gridLayout_15"> |
<item row="1" column="0"> |
<widget class="QGroupBox" name="groupBox_2"> |
<property name="title"> |
<string>Plotter</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_2"> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_3"> |
<property name="text"> |
<string>Angezeigte Datensätze :</string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QSpinBox" name="sp_Plotter_Count"> |
<property name="minimum"> |
<number>50</number> |
</property> |
<property name="maximum"> |
<number>250</number> |
</property> |
<property name="singleStep"> |
<number>5</number> |
</property> |
<property name="value"> |
<number>100</number> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="2" column="0"> |
<spacer name="verticalSpacer_9"> |
<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="0" column="0"> |
<widget class="QLabel" name="label_19"> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Plotter-Einstellungen</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
<widget class="QWidget" name="Seite_5"> |
<layout class="QGridLayout" name="gridLayout_14"> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_23"> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Verzeichnisse</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QGroupBox" name="groupBox_12"> |
<property name="title"> |
<string/> |
</property> |
<layout class="QGridLayout" name="gridLayout_11"> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_24"> |
<property name="text"> |
<string>Verzeichniss fĂĽr Dateien (Datenrecorder, WayPoints ect.)</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<layout class="QHBoxLayout" name="horizontalLayout_2"> |
<item> |
<widget class="QPushButton" name="pb_DIR_CVS"> |
<property name="text"> |
<string/> |
</property> |
<property name="icon"> |
<iconset> |
<normaloff>:/Actions/Images/Actions/Folder-Open.png</normaloff>:/Actions/Images/Actions/Folder-Open.png</iconset> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QLineEdit" name="le_DIR_CVS"/> |
</item> |
</layout> |
</item> |
<item row="2" column="0"> |
<widget class="QLabel" name="label_25"> |
<property name="text"> |
<string>Verzeichniss fĂĽr Setting-Dateien</string> |
</property> |
</widget> |
</item> |
<item row="3" column="0"> |
<layout class="QHBoxLayout" name="horizontalLayout_3"> |
<item> |
<widget class="QPushButton" name="pb_DIR_SET"> |
<property name="text"> |
<string/> |
</property> |
<property name="icon"> |
<iconset> |
<normaloff>:/Actions/Images/Actions/Folder-Open.png</normaloff>:/Actions/Images/Actions/Folder-Open.png</iconset> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QLineEdit" name="le_DIR_SET"/> |
</item> |
</layout> |
</item> |
<item row="4" column="0"> |
<widget class="QLabel" name="label_26"> |
<property name="text"> |
<string>Verzeichniss fĂĽr Karten-Cache</string> |
</property> |
</widget> |
</item> |
<item row="5" column="0"> |
<layout class="QHBoxLayout" name="horizontalLayout_4"> |
<item> |
<widget class="QPushButton" name="pb_DIR_CACHE"> |
<property name="text"> |
<string/> |
</property> |
<property name="icon"> |
<iconset> |
<normaloff>:/Actions/Images/Actions/Folder-Open.png</normaloff>:/Actions/Images/Actions/Folder-Open.png</iconset> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QLineEdit" name="le_DIR_CACHE"/> |
</item> |
</layout> |
</item> |
</layout> |
</widget> |
</item> |
<item row="2" column="0"> |
<spacer name="verticalSpacer_2"> |
<property name="orientation"> |
<enum>Qt::Vertical</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>20</width> |
<height>40</height> |
</size> |
</property> |
</spacer> |
</item> |
</layout> |
</widget> |
<widget class="QWidget" name="Seite_6"> |
<layout class="QGridLayout" name="gridLayout_18"> |
<item row="1" column="0"> |
<widget class="QGroupBox" name="groupBox_7"> |
<property name="title"> |
<string>Server</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_8"> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_7"> |
<property name="text"> |
<string>Serverport: </string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QLineEdit" name="le_ServerPort"> |
<property name="text"> |
<string>10664</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0" colspan="2"> |
<widget class="QCheckBox" name="cb_StartServer"> |
<property name="text"> |
<string>KML-Server automatisch starten</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="2" column="0"> |
<widget class="QGroupBox" name="groupBox_8"> |
<property name="title"> |
<string>Datenanzeige</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_9"> |
<item row="0" column="0"> |
<widget class="QCheckBox" name="cb_ToGround"> |
<property name="text"> |
<string>Höhe bis zum Boden verlängern</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="3" column="0"> |
<spacer name="verticalSpacer_11"> |
<property name="orientation"> |
<enum>Qt::Vertical</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>290</width> |
<height>54</height> |
</size> |
</property> |
</spacer> |
</item> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_22"> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>KML-Datenserver</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
<widget class="QWidget" name="Seite_7"> |
<layout class="QGridLayout" name="gridLayout_17"> |
<item row="1" column="0"> |
<widget class="QGroupBox" name="groupBox_10"> |
<property name="enabled"> |
<bool>true</bool> |
</property> |
<property name="title"> |
<string>Server</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_12"> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_12"> |
<property name="text"> |
<string>Server:</string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QLineEdit" name="le_QMKS_Host"> |
<property name="text"> |
<string/> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="label_13"> |
<property name="text"> |
<string>Port:</string> |
</property> |
</widget> |
</item> |
<item row="1" column="1"> |
<widget class="QLineEdit" name="le_QMKS_Port"> |
<property name="text"> |
<string/> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="2" column="0"> |
<widget class="QGroupBox" name="groupBox_11"> |
<property name="enabled"> |
<bool>true</bool> |
</property> |
<property name="title"> |
<string>Logindaten</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_13"> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_14"> |
<property name="text"> |
<string>Loginname:</string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QLineEdit" name="le_Login"/> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="label_15"> |
<property name="text"> |
<string>Password:</string> |
</property> |
</widget> |
</item> |
<item row="1" column="1"> |
<widget class="QLineEdit" name="le_Password"> |
<property name="echoMode"> |
<enum>QLineEdit::Password</enum> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="3" column="0"> |
<spacer name="verticalSpacer_12"> |
<property name="orientation"> |
<enum>Qt::Vertical</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>290</width> |
<height>21</height> |
</size> |
</property> |
</spacer> |
</item> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_21"> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>QMK-Datenserver Verbindung & Login</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
<widget class="QWidget" name="Seite_8"> |
<layout class="QGridLayout" name="gridLayout_20"> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_20"> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>Firmware Flash & Update</string> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QGroupBox" name="groupBox_3"> |
<property name="title"> |
<string>Pfad zu AVRDUDE </string> |
</property> |
<layout class="QGridLayout" name="gridLayout_19"> |
<item row="0" column="0"> |
<widget class="QPushButton" name="pb_PATH_AVRDUDE"> |
<property name="text"> |
<string/> |
</property> |
<property name="icon"> |
<iconset> |
<normaloff>:/Actions/Images/Actions/Folder-Open.png</normaloff>:/Actions/Images/Actions/Folder-Open.png</iconset> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QLineEdit" name="le_PATH_AVRDUDE"/> |
</item> |
</layout> |
</widget> |
</item> |
<item row="2" column="0"> |
<widget class="QGroupBox" name="groupBox_6"> |
<property name="enabled"> |
<bool>false</bool> |
</property> |
<property name="title"> |
<string>ISP-Adapter (Flash AVR)</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_5"> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_4"> |
<property name="text"> |
<string>ISP-Adapter: </string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QComboBox" name="comboBox"> |
<item> |
<property name="text"> |
<string>Sercon</string> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>STK200</string> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>USBProg</string> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>Atmel AVR ISP (STK500)</string> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>Atmel AVR ISP mkII (STK500v1)</string> |
</property> |
</item> |
<item> |
<property name="text"> |
<string>Atmel AVR ISP mkII (STK500v2)</string> |
</property> |
</item> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="label_5"> |
<property name="text"> |
<string>Device: </string> |
</property> |
</widget> |
</item> |
<item row="1" column="1"> |
<widget class="QLineEdit" name="lineEdit_2"/> |
</item> |
<item row="2" column="0" colspan="2"> |
<widget class="QCheckBox" name="checkBox_2"> |
<property name="text"> |
<string>Serielle Firmeware-Updates mit AVRDUDE</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="3" column="0"> |
<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> |
</widget> |
</item> |
</layout> |
</widget> |
<resources> |
<include location="../MKTool.qrc"/> |
</resources> |
<connections> |
<connection> |
<sender>okButton</sender> |
<signal>clicked()</signal> |
<receiver>dlg_Preferences_UI</receiver> |
<slot>accept()</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>278</x> |
<y>253</y> |
</hint> |
<hint type="destinationlabel"> |
<x>96</x> |
<y>254</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>cancelButton</sender> |
<signal>clicked()</signal> |
<receiver>dlg_Preferences_UI</receiver> |
<slot>reject()</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>369</x> |
<y>253</y> |
</hint> |
<hint type="destinationlabel"> |
<x>179</x> |
<y>282</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>listWidget</sender> |
<signal>currentRowChanged(int)</signal> |
<receiver>stackedWidget</receiver> |
<slot>setCurrentIndex(int)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>90</x> |
<y>265</y> |
</hint> |
<hint type="destinationlabel"> |
<x>439</x> |
<y>369</y> |
</hint> |
</hints> |
</connection> |
</connections> |
</ui> |
/QMK-Groundstation/tags/V1.0.1/Forms/mktool.cpp |
---|
0,0 → 1,1863 |
/*************************************************************************** |
* Copyright (C) 2008 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
// TODO: Wiederholungssenden wieder einbauen |
#include <QtGui> |
#include <QLineEdit> |
#include <QString> |
#include <QTimer> |
#include <QIcon> |
#include <QToolButton> |
#include <QSpinBox> |
#include <QAction> |
#include <QPalette> |
#include "mktool.h" |
#include "dlg_Config.h" |
#include "dlg_Motortest.h" |
#include "dlg_Preferences.h" |
#include "../global.h" |
#include "../Classes/ToolBox.h" |
#include <stdlib.h> |
MKTool::MKTool() |
{ |
setupUi(this); |
Settings = new cSettings; |
init_Arrays(); |
init_GUI(); |
init_Cockpit(); |
init_Objects(); |
init_Connections(); |
init_Plot(); |
} |
void MKTool::init_GUI() |
{ |
setWindowTitle(QA_NAME + " v" + QA_VERSION); |
// Tab mit Debug-Elementen verbergen |
tab_Main->removeTab(6); |
// Develop - Nicht gebrauchte sachen abschalten. |
pb_SettingsReset->hide(); |
pb_Flash->hide(); |
rb_NC->hide(); |
// Beta-Sachen einschalten. |
#ifdef _BETA_ |
ac_QMKServer->setEnabled(true); |
#endif |
// Settings-Tab hinzufĂĽgen. |
f_Settings = new wdg_Settings( this ); |
f_Settings->set_Config(Settings); |
tab_Main->insertTab ( 2, f_Settings, ac_View2->icon(), tr("FC-Settings")); |
tab_Main->widget(2)->setObjectName("Tab_2"); |
// Zusätzliche Widgets in die Toolbar. |
tb_TTY->addWidget(lb_Port); |
tb_TTY->addWidget(cb_Port); |
// tb_TTY->addWidget(le_Port); |
tb_Hardware->addWidget(rb_SelFC); |
tb_Hardware->addWidget(rb_SelNC); |
tb_Hardware->addWidget(rb_SelMag); |
tb_Allgemein->setVisible(Settings->GUI.ToolViews[0]); |
tb_Werkzeuge->setVisible(Settings->GUI.ToolViews[1]); |
tb_Debug->setVisible(Settings->GUI.ToolViews[2]); |
tb_TTY->setVisible(Settings->GUI.ToolViews[3]); |
tb_Hardware->setVisible(Settings->GUI.ToolViews[4]); |
#ifdef _EEEPC_ |
lb_Status->hide(); |
#endif |
lb_Status->setText(tr("Hallo bei QMK-Groundstation...!!!")); |
resize(Settings->GUI.Size); |
move(Settings->GUI.Point); |
if (Settings->GUI.isMax) |
{ |
showMaximized(); |
} |
// Analoglabels anzeigen |
for (int a = 0; a < MaxAnalog; a++) |
{ |
lb_Analog[a]->setText(Settings->Analog1.Label[a]); |
} |
// Kopie der Tabs anlegen |
for (int b = 0; b < 7; b++) |
{ |
TabWidgets[b] = tab_Main->widget(b); |
} |
// Ausgeblendete Tabs ausblenden |
for (int c = 0; c < 7; c++) |
{ |
if (Settings->GUI.TabViews[c] == false) |
{ |
QString TabName = QString("Tab_%1").arg(c); |
for (int d = 0; d < tab_Main->count(); d++) |
{ |
if (tab_Main->widget(d)->objectName() == TabName) |
{ |
tab_Main->removeTab(d); |
} |
} |
} |
} |
ac_View0->setChecked(Settings->GUI.TabViews[0]); |
ac_View1->setChecked(Settings->GUI.TabViews[1]); |
ac_View2->setChecked(Settings->GUI.TabViews[2]); |
ac_View3->setChecked(Settings->GUI.TabViews[3]); |
ac_View4->setChecked(Settings->GUI.TabViews[4]); |
ac_View5->setChecked(Settings->GUI.TabViews[5]); |
ac_View6->setChecked(Settings->GUI.TabViews[6]); |
// le_Port->setText(Settings->TTY.Port); |
for(int z = 0; z < Settings->TTY.MaxPorts; z++) |
{ |
cb_Port->addItem(Settings->TTY.Ports[z]); |
} |
cb_Port->setCurrentIndex(Settings->TTY.PortID); |
cb_ShowMSG->setChecked(Settings->GUI.Term_Info); |
cb_ShowData->setChecked(Settings->GUI.Term_Data); |
cb_ShowAlways->setChecked(Settings->GUI.Term_Always); |
} |
void MKTool::init_Cockpit() |
{ |
// Cockpit-Elemente |
QPalette newPalette; |
newPalette.setColor(QPalette::Base, Qt::darkBlue); |
newPalette.setColor(QPalette::Foreground, QColor(Qt::darkBlue).dark(120)); |
newPalette.setColor(QPalette::Text, Qt::white); |
Compass->setScaleOptions(QwtDial::ScaleTicks | QwtDial::ScaleLabel); |
Compass->setScaleTicks(0, 0, 3); |
Compass->setScale(36, 5, 0); |
Compass->setNeedle(new QwtDialSimpleNeedle(QwtDialSimpleNeedle::Arrow, true, Qt::red, QColor(Qt::gray).light(130))); |
Compass->setPalette(newPalette); |
Compass->setMaximumSize(QSize(MeterSize, MeterSize)); |
Compass->setMinimumSize(QSize(MeterSize, MeterSize)); |
QPalette newPalette1; |
newPalette1.setColor(QPalette::Base, Qt::darkBlue); |
newPalette1.setColor(QPalette::Foreground, QColor(255,128,0).dark(120)); |
newPalette1.setColor(QPalette::Text, Qt::white); |
Attitude = new AttitudeIndicator(this); |
Attitude->setMaximumSize(QSize(MeterSize, MeterSize)); |
Attitude->setMinimumSize(QSize(MeterSize, MeterSize)); |
Attitude->setPalette(newPalette1); |
verticalLayout->addWidget(Attitude); |
qwt_Rate->setRange(-10.0, 10.0, 0.1, 0); |
newPalette1.setColor(QPalette::Foreground, QColor(Qt::darkBlue).dark(120)); |
SpeedMeter = new cSpeedMeter(this); |
SpeedMeter->setMaximumSize(QSize(MeterSize, MeterSize)); |
SpeedMeter->setMinimumSize(QSize(MeterSize, MeterSize)); |
SpeedMeter->setPalette(newPalette1); |
SpeedMeter->setRange(0.0, 5.0); |
SpeedMeter->setScale(1, 2, 0.5); |
SpeedMeter->setProperty("END", 5); |
LayOut_Speed->addWidget(SpeedMeter); |
} |
void MKTool::init_Objects() |
{ |
// QTimer-Instanzen |
Ticker = new QTimer(this); |
// Verbindungsobject |
o_Connection = new cConnection(); |
// neuer Logger |
logger = new Logger(Settings, &Mode); |
// LCD-Dialog |
f_LCD = new dlg_LCD(this); |
// LCD-Dialog |
f_MotorMixer = new dlg_MotorMixer(this); |
// LCD-Dialog |
f_Map = new dlg_Map(this); |
f_Map->create_Map(Settings); |
KML_Server = new cKML_Server(); |
QMK_Server = new cQMK_Server(); |
QMK_Server->setProperty("Connect", false); |
if (Settings->Server.StartServer) |
{ |
ac_StartServer->setChecked(true); |
KML_Server->start_Server(Settings->Server.Port.toInt(), Settings); |
} |
} |
void MKTool::init_Connections() |
{ |
// connect(Dec, SIGNAL(clicked()), this, SLOT(slot_Test())); |
// Daten Senden / Empfangen |
connect(o_Connection, SIGNAL(newData(sRxData)), this, SLOT(slot_newData(sRxData))); |
connect(o_Connection, SIGNAL(showTerminal(int, QString)), this, SLOT(slot_showTerminal(int, QString))); |
// Serielle Verbundung öffnen / schließen |
connect(ac_ConnectTTY, SIGNAL(triggered()), this, SLOT(slot_OpenPort())); |
// TCP-Connection verbinden / trennen |
connect(ac_QMKServer, SIGNAL(triggered()), this, SLOT(slot_QMKS_Connect())); |
// Buttons Settings lesen / schreiben |
connect(f_Settings->pb_Read, SIGNAL(clicked()), this, SLOT(slot_GetFCSettings())); |
connect(f_Settings->pb_Write, SIGNAL(clicked()), this, SLOT(slot_SetFCSettings())); |
// Actions |
connect(ac_Config, SIGNAL(triggered()), this, SLOT(slot_ac_Config())); |
connect(ac_Preferences, SIGNAL(triggered()), this, SLOT(slot_ac_Preferences())); |
connect(ac_Motortest, SIGNAL(triggered()), this, SLOT(slot_ac_Motortest())); |
connect(ac_MotorMixer, SIGNAL(triggered()), this, SLOT(slot_ac_MotorMixer())); |
connect(ac_LCD, SIGNAL(triggered()), this, SLOT(slot_ac_LCD())); |
connect(ac_Map, SIGNAL(triggered()), this, SLOT(slot_ac_Map())); |
connect(ac_FastDebug, SIGNAL(triggered()), this, SLOT(slot_ac_FastDebug())); |
connect(ac_NoDebug, SIGNAL(triggered()), this, SLOT(slot_ac_NoDebug())); |
connect(ac_FastNavi, SIGNAL(triggered()), this, SLOT(slot_ac_FastNavi())); |
connect(ac_NoNavi, SIGNAL(triggered()), this, SLOT(slot_ac_NoNavi())); |
connect(ac_GetLabels, SIGNAL(triggered()), this, SLOT(slot_ac_GetLabels())); |
// Plotter starten / scrollen |
connect(scroll_plot, SIGNAL(valueChanged(int)), this, SLOT(slot_ScrollPlot(int))); |
connect(ac_StartPlotter, SIGNAL(triggered()), this, SLOT(slot_ac_StartPlotter())); |
connect(ac_StartServer, SIGNAL(triggered()), this, SLOT(slot_ac_StartServer())); |
// Tabs ein & ausblenden |
connect(ac_View0, SIGNAL(triggered()), this, SLOT(slot_ac_View())); |
connect(ac_View1, SIGNAL(triggered()), this, SLOT(slot_ac_View())); |
connect(ac_View2, SIGNAL(triggered()), this, SLOT(slot_ac_View())); |
connect(ac_View3, SIGNAL(triggered()), this, SLOT(slot_ac_View())); |
connect(ac_View4, SIGNAL(triggered()), this, SLOT(slot_ac_View())); |
connect(ac_View5, SIGNAL(triggered()), this, SLOT(slot_ac_View())); |
connect(ac_View6, SIGNAL(triggered()), this, SLOT(slot_ac_View())); |
connect(ac_SelNC, SIGNAL(triggered()), this, SLOT(slot_ac_Hardware())); |
connect(ac_SelFC, SIGNAL(triggered()), this, SLOT(slot_ac_Hardware())); |
connect(ac_SelMag, SIGNAL(triggered()), this, SLOT(slot_ac_Hardware())); |
connect(rb_SelNC, SIGNAL(clicked()), this, SLOT(slot_rb_Hardware())); |
connect(rb_SelFC, SIGNAL(clicked()), this, SLOT(slot_rb_Hardware())); |
connect(rb_SelMag, SIGNAL(clicked()), this, SLOT(slot_rb_Hardware())); |
// firmeware Updateen / flashen |
connect(pb_Update, SIGNAL(clicked()), this, SLOT(slot_pb_Update())); |
connect(pb_HexFile, SIGNAL(clicked()), this, SLOT(slot_pb_HexFile())); |
// Wegpunkt-Befehl |
connect(pb_FlyTo, SIGNAL(clicked()), this, SLOT(slot_pb_SendTarget())); |
// CVS-Record starten / stoppen |
connect(ac_RecordCSV, SIGNAL(triggered()), this, SLOT(slot_RecordLog())); |
// Timer-Events |
connect(Ticker, SIGNAL(timeout()), SLOT(slot_Ticker())); |
// Seitenwechsel |
connect(tab_Main, SIGNAL(currentChanged(int)), this, SLOT(slot_TabChanged(int))); |
// connect(f_Settings->tab_Par, SIGNAL(currentChanged(int)), this, SLOT(slot_TabChanged(int))); |
connect(f_Settings->listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(slot_TabChanged(int))); |
// About QMK & About-QT Dialog einfĂĽgen |
connect(ac_About, SIGNAL(triggered()), this, SLOT(slot_ac_About())); |
menu_Help->addAction(trUtf8("Ăśber &Qt"), qApp, SLOT(aboutQt())); |
} |
void MKTool::init_Arrays() |
{ |
lb_Analog[0] = lb_A_0; |
lb_Analog[1] = lb_A_1; |
lb_Analog[2] = lb_A_2; |
lb_Analog[3] = lb_A_3; |
lb_Analog[4] = lb_A_4; |
lb_Analog[5] = lb_A_5; |
lb_Analog[6] = lb_A_6; |
lb_Analog[7] = lb_A_7; |
lb_Analog[8] = lb_A_8; |
lb_Analog[9] = lb_A_9; |
lb_Analog[10] = lb_A_10; |
lb_Analog[11] = lb_A_11; |
lb_Analog[12] = lb_A_12; |
lb_Analog[13] = lb_A_13; |
lb_Analog[14] = lb_A_14; |
lb_Analog[15] = lb_A_15; |
lb_Analog[16] = lb_A_16; |
lb_Analog[17] = lb_A_17; |
lb_Analog[18] = lb_A_18; |
lb_Analog[19] = lb_A_19; |
lb_Analog[20] = lb_A_20; |
lb_Analog[21] = lb_A_21; |
lb_Analog[22] = lb_A_22; |
lb_Analog[23] = lb_A_23; |
lb_Analog[24] = lb_A_24; |
lb_Analog[25] = lb_A_25; |
lb_Analog[26] = lb_A_26; |
lb_Analog[27] = lb_A_27; |
lb_Analog[28] = lb_A_28; |
lb_Analog[29] = lb_A_29; |
lb_Analog[30] = lb_A_30; |
lb_Analog[31] = lb_A_31; |
} |
void MKTool::init_Plot() |
{ |
NextPlot = 0; |
qwtPlot->setCanvasBackground(QColor(QRgb(0x00000000))); |
qwtPlot->insertLegend(new QwtLegend(), QwtPlot::RightLegend); |
QwtPlotGrid *Grid = new QwtPlotGrid(); |
Grid->setMajPen(QPen(Qt::gray, 0, Qt::DotLine)); |
Grid->attach(qwtPlot); |
qwtPlot->setAxisScale(QwtPlot::xBottom,0,Settings->Data.Plotter_Count,0); |
for (int a = 0; a < MaxAnalog; a++) |
{ |
Plot[a] = new QwtPlotCurve(Settings->Analog1.Label[a]); |
Plot[a]->setPen(QPen(QColor(Def_Colors[a]))); |
// Plot[a]->setRenderHint(QwtPlotItem::RenderAntialiased); |
if (Settings->Analog1.PlotView[a]) |
Plot[a]->attach(qwtPlot); |
} |
qwtPlot->replot(); |
} |
void MKTool::slot_set_Settings(cSettings *t_Settings) |
{ |
Settings = t_Settings; |
} |
void MKTool::slot_Test() |
{ |
sRxData RX; |
RX.String = IN->text(); |
RX.Input = RX.String.toLatin1().data(); |
slot_newData(RX); |
} |
// KML-Datei nach Wegpunkt parsen |
// TODO: Richtigen KML-Parser bauen |
void MKTool::parse_TargetKML() |
{ |
QString Tmp = te_KML->toPlainText().simplified(); |
QStringList List; |
if ((Tmp.contains("<kml xmlns=\"http://earth.google.com/kml/2.2\">")) && (Tmp.contains("<coordinates>"))) |
{ |
List = Tmp.split("<coordinates>"); |
List = List[1].split(","); |
le_TarLong->setText(ToolBox::get_Float((List[0].toDouble() * 10000000), 7)); |
le_TarLat->setText(ToolBox::get_Float((List[1].toDouble() * 10000000), 7)); |
} |
} |
// Waypoint zur NC Senden. |
void MKTool::slot_pb_SendTarget() |
{ |
if ((Navi.Current.Longitude == 0) && (Navi.Current.Latitude == 0)) |
{ |
QMessageBox msgB; |
QString msg; |
msgB.setText(tr("Fehler: Es konnten keine GPS-Daten vom Mikrokopter empfangen werden")); |
msgB.exec(); |
return; |
} |
//erstelle einen Wegpunkt, den die NaviCtrl auswerten kann |
Waypoint_t desired_pos; |
bool ok_lat, ok_lon; |
//eingegebene Daten holen |
double desired_long, desired_lat; |
desired_long = le_TarLong->text().toDouble(&ok_lon); |
desired_lat = le_TarLat->text().toDouble(&ok_lat); |
if (ok_lon && desired_long < 100) |
desired_long *= 10000000+0.5; |
if (ok_lat && desired_lat < 100) |
desired_lat *= 10000000+0.5; |
//fĂĽlle Wegpunkt-Daten |
desired_pos.Position.Altitude = 0; |
desired_pos.Position.Longitude = int32_t(desired_long); |
desired_pos.Position.Latitude = int32_t(desired_lat); |
desired_pos.Position.Status = NEWDATA; |
desired_pos.Heading = -1; |
desired_pos.ToleranceRadius = 5; |
desired_pos.HoldTime = sb_TarTime->value(); |
desired_pos.Event_Flag = 0; |
desired_pos.reserve[0] = 0; // reserve |
desired_pos.reserve[1] = 0; // reserve |
desired_pos.reserve[2] = 0; // reserve |
desired_pos.reserve[3] = 0; // reserve |
//...und sende ihn an die NaviCtrl |
int max_radius = 10000; |
if (ok_lat && ok_lon && |
abs(Navi.Current.Longitude - desired_pos.Position.Longitude) < max_radius && |
abs(Navi.Current.Latitude - desired_pos.Position.Latitude) < max_radius) |
{ |
o_Connection->send_Cmd('s', ADDRESS_NC, (char *)&desired_pos, sizeof(desired_pos), false); |
} |
else |
{ |
QMessageBox msgB; |
QString msg; |
msg += tr("Bitte die Eingabe ueberpruefen!\n"); |
msg += tr("Die Werte muessen sich in der Naehe der aktuellen Koordinaten befinden\n"); |
msg += "(Lon: "; |
msg += ToolBox::get_Float(Navi.Current.Longitude,7); |
msg += ", "; |
msg += "Lat: "; |
msg += ToolBox::get_Float(Navi.Current.Latitude,7); |
msg += ")"; |
msgB.setText(msg); |
msgB.exec(); |
} |
} |
// Hardware-Auswahl im MenĂĽ |
void MKTool::slot_ac_Hardware() |
{ |
QAction *Action = (QAction*)sender(); |
if (Action->isChecked() == false) |
{ |
Action->setChecked(true); |
} |
slot_rb_Hardware(); |
} |
// Hardware Auswahl und umschalten |
void MKTool::slot_rb_Hardware() |
{ |
if ((rb_SelNC->isChecked() == false) && (Mode.ID != ADDRESS_NC)) |
{ |
lb_Status->setText(tr("Schalte um auf NaviCtrl.")); |
TX_Data[0] = 0x1B; |
TX_Data[1] = 0x1B; |
TX_Data[2] = 0x55; |
TX_Data[3] = 0xAA; |
TX_Data[4] = 0x00; |
TX_Data[5] = '\r'; |
o_Connection->send_Cmd('#', ADDRESS_NC, TX_Data, 6, false); |
ToolBox::Wait(SLEEP); |
} |
if (rb_SelFC->isChecked()) |
{ |
lb_Status->setText(tr("Schalte um auf FlightCtrl.")); |
TX_Data[0] = 0; |
o_Connection->send_Cmd('u', ADDRESS_NC, TX_Data, 1, false); |
} |
else |
if (rb_SelMag->isChecked()) |
{ |
lb_Status->setText(tr("Schalte um auf MK3MAG.")); |
TX_Data[0] = 1; |
o_Connection->send_Cmd('u', ADDRESS_NC, TX_Data, 1, false); |
} |
else |
if (rb_SelNC->isChecked()) |
{ |
lb_Status->setText(tr("Schalte um auf NaviCtrl.")); |
TX_Data[0] = 0x1B; |
TX_Data[1] = 0x1B; |
TX_Data[2] = 0x55; |
TX_Data[3] = 0xAA; |
TX_Data[4] = 0x00; |
TX_Data[5] = '\r'; |
o_Connection->send_Cmd('#', ADDRESS_NC, TX_Data, 6, false); |
} |
ToolBox::Wait(SLEEP); |
// qDebug("Select RB Hardware"); |
o_Connection->send_Cmd('v', ADDRESS_ALL, TX_Data, 0, true); |
} |
// Ticker-Event |
/////////////// |
void MKTool::slot_Ticker() |
{ |
if (TickerDiv) |
TickerDiv = false; |
else |
TickerDiv = true; |
for (int a = 0; a < MaxTickerEvents; a++) |
{ |
if (TickerEvent[a] == true) |
{ |
switch(a) |
{ |
case 0 : |
{ |
} |
break; |
case 1 : |
TX_Data[0] = 0; |
o_Connection->send_Cmd('p', ADDRESS_FC, TX_Data, 0, false); |
break; |
case 2 : |
if (f_LCD->cb_LCD->isChecked()) |
{ |
if (!f_LCD->isVisible()) |
{ |
Ticker->setInterval(TICKER); |
TickerEvent[2] = false; |
} |
TX_Data[0] = LCD_Page; |
TX_Data[1] = 0; |
o_Connection->send_Cmd('l', ADDRESS_ALL, TX_Data, 1, true); |
} |
break; |
case 3 : |
if (ac_FastDebug->isChecked()) |
{ |
TX_Data[0] = Settings->Data.Debug_Fast / 10; |
o_Connection->send_Cmd('d', ADDRESS_ALL, TX_Data, 1, false); |
} |
else |
{ |
TX_Data[0] = Settings->Data.Debug_Slow / 10; |
o_Connection->send_Cmd('d', ADDRESS_ALL, TX_Data, 1, false); |
} |
break; |
case 4 : |
{ |
for (int z = 0; z<12; z++) |
{ |
TX_Data[z] = Motor.Speed[z]; |
} |
o_Connection->send_Cmd('t', ADDRESS_FC, TX_Data, 12, false); |
} |
} |
} |
} |
} |
// Zum QMK-Datenserver verbinden |
void MKTool::slot_QMKS_Connect() |
{ |
if (ac_QMKServer->isChecked()) |
{ |
lb_Status->setText(tr("Verbinde zum QMK-Datenserver.")); |
QMK_Server->Connect(Settings->Server.QMKS_Host, Settings->Server.QMKS_Port.toInt(), Settings->Server.QMKS_Login, Settings->Server.QMKS_Password); |
connect(QMK_Server, SIGNAL(sig_Connected()), this, SLOT(slot_QMKS_Connected())); |
connect(QMK_Server, SIGNAL(sig_Disconnected(int)), this, SLOT(slot_QMKS_Disconnected(int))); |
} |
else |
{ |
if ((QMK_Server->property("Connect")) == true) |
{ |
disconnect(QMK_Server, SIGNAL(sig_Disconnected(int)), 0, 0); |
lb_Status->setText(tr("Trenne vom QMK-Datenserver.")); |
QMK_Server->Disconnect(); |
QMK_Server->setProperty("Connect", false); |
ac_QMKServer->setText(tr("QMK-Server Verbinden")); |
} |
} |
} |
// Verbindung zum QMK-Server hergestellt. |
void MKTool::slot_QMKS_Connected() |
{ |
QMK_Server->setProperty("Connect", true); |
ac_QMKServer->setText(tr("QMK-Server Trennnen")); |
lb_Status->setText(tr("Verbunden mit QMK-Datenserver.")); |
} |
// QMK-Serververbindung getrennt |
void MKTool::slot_QMKS_Disconnected(int Error) |
{ |
QMK_Server->setProperty("Connect", false); |
ac_QMKServer->setText(tr("QMK-Server Verbinden")); |
ac_QMKServer->setChecked(false); |
disconnect(QMK_Server, SIGNAL(sig_Disconnected(int)), 0, 0); |
switch (Error) |
{ |
case 1 : |
{ |
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 2 : |
{ |
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; |
} |
} |
// Slots der Actions (MenĂĽpunkte, Buttons) |
////////////////////////////////////////// |
void MKTool::slot_ac_Motortest() |
{ |
dlg_Motortest *f_Motortest = new dlg_Motortest(this); |
// connect(f_Motortest, SIGNAL(updateMotor(int, int, int, int)), this, SLOT(slot_Motortest(int, int, int, int))); |
connect(f_Motortest, SIGNAL(updateMotor(sMotor)), this, SLOT(slot_Motortest(sMotor))); |
Ticker->setInterval(500); |
TickerEvent[4] = true; |
if (f_Motortest->exec()==QDialog::Accepted) |
{ |
} |
disconnect(f_Motortest, 0,0,0); |
for (int z = 0; z<12; z++) |
{ |
Motor.Speed[z] = 0; |
} |
slot_Motortest(Motor); |
Ticker->setInterval(TICKER); |
TickerEvent[4] = false; |
} |
void MKTool::slot_Motortest(sMotor p_Motor) |
{ |
Motor = p_Motor; |
for (int z = 0; z<12; z++) |
{ |
TX_Data[z] = Motor.Speed[z]; |
} |
o_Connection->send_Cmd('t', ADDRESS_FC, TX_Data, 12, false); |
} |
// Motormixer-Einstellungen anzeigen |
void MKTool::slot_ac_MotorMixer() |
{ |
f_MotorMixer->set_Objects(o_Connection, Settings); |
f_MotorMixer->read_Mixer(); |
if (f_MotorMixer->exec()==QDialog::Accepted) |
{ |
} |
} |
// LCD Anzeigen |
void MKTool::slot_ac_LCD() |
{ |
if (!f_LCD->isVisible()) |
{ |
delete f_LCD; |
f_LCD = new dlg_LCD(this); |
// LCD auf / ab |
connect(f_LCD->pb_LCDup, SIGNAL(clicked()), this, SLOT(slot_LCD_UP())); |
connect(f_LCD->pb_LCDdown, SIGNAL(clicked()), this, SLOT(slot_LCD_DOWN())); |
f_LCD->show(); |
TX_Data[0] = 0; |
TX_Data[1] = 0; |
o_Connection->send_Cmd('l', ADDRESS_ALL, TX_Data, 1, true); |
Ticker->setInterval(500); |
TickerEvent[2] = true; |
} |
} |
// Map-Fenster anzeigen |
void MKTool::slot_ac_Map() |
{ |
if (!f_Map->isVisible()) |
{ |
// Waypoints ĂĽbergeben |
connect(f_Map, SIGNAL(set_Target(sWayPoint)), this , SLOT(slot_MAP_SetTarget(sWayPoint))); |
connect(f_Map, SIGNAL(set_WayPoints(QList<sWayPoint>)), this , SLOT(slot_MAP_SetWayPoints(QList<sWayPoint>))); |
f_Map->show(); |
} |
} |
void MKTool::slot_MAP_SetWayPoints(QList<sWayPoint> l_WayPoints) |
{ |
Waypoint_t WayPoint; |
double Longitude, Latitude; |
// Waypoint-Liste löschen |
WayPoint.Position.Status = INVALID; |
o_Connection->send_Cmd('w', ADDRESS_NC, (char *)&WayPoint, sizeof(WayPoint), false); |
ToolBox::Wait(SLEEP); |
for (int z = 0; z < l_WayPoints.count(); z++) |
{ |
Longitude = l_WayPoints[z].Longitude; |
Latitude = l_WayPoints[z].Latitude; |
if (Longitude < 100) |
Longitude *= 10000000+0.5; |
if (Latitude < 100) |
Latitude *= 10000000+0.5; |
//fĂĽlle Wegpunkt-Daten |
WayPoint.Position.Altitude = 0; |
WayPoint.Position.Longitude = int32_t(Longitude); |
WayPoint.Position.Latitude = int32_t(Latitude); |
WayPoint.Position.Status = NEWDATA; |
WayPoint.Heading = -1; |
WayPoint.ToleranceRadius = 5; |
WayPoint.HoldTime = l_WayPoints[z].Time; |
WayPoint.Event_Flag = 0; |
WayPoint.reserve[0] = 0; // reserve |
WayPoint.reserve[1] = 0; // reserve |
WayPoint.reserve[2] = 0; // reserve |
WayPoint.reserve[3] = 0; // reserve |
o_Connection->send_Cmd('w', ADDRESS_NC, (char *)&WayPoint, sizeof(WayPoint), false); |
// ToolBox::Wait(SLEEP); |
} |
} |
void MKTool::slot_MAP_SetTarget(sWayPoint Target) |
{ |
QString s_Lon, s_Lat; |
QTextStream t_Lon(&s_Lon); |
QTextStream t_Lat(&s_Lat); |
t_Lon.setRealNumberPrecision(9); |
t_Lat.setRealNumberPrecision(9); |
t_Lon << Target.Longitude; |
t_Lat << Target.Latitude; |
le_TarLong->setText(s_Lon); |
le_TarLat->setText(s_Lat); |
sb_TarTime->setValue(Target.Time); |
slot_pb_SendTarget(); |
} |
void MKTool::slot_ac_Config() |
{ |
set_Analog Old_Analog1; |
Old_Analog1 = Settings->Analog1; |
dlg_Config *f_Config = new dlg_Config(this); |
f_Config->set_Settings(Settings, Mode.ID); |
if (f_Config->exec()==QDialog::Accepted) |
{ |
Settings = f_Config->get_Settings(); |
Settings->write_Settings_Analog(Mode.ID); |
// Plotter neu einrichten |
if (Old_Analog1.PlotView != Settings->Analog1.PlotView) |
{ |
config_Plot(); |
} |
// CVS-Datei neu anlegen. |
if ((logger->is_active()) && (Old_Analog1.LogView != Settings->Analog1.LogView)) |
{ |
logger->close(); |
logger->start_Log(); |
} |
} |
} |
//aktualisiere Logging-Status |
void MKTool::update_Log() |
{ |
if (logger->is_active()) |
{ |
ac_RecordCSV->setText(tr("Log Stop")); |
lb_Status->setText(tr("Log-Record gestartet.")); |
} |
else |
{ |
ac_RecordCSV->setText(tr("Log Aufzeichnen")); |
lb_Status->setText(tr("Log-Record gestopt.")); |
} |
} |
//starte/stoppe Logging, wenn auf den entsprechenden Button gedrĂĽckt wurde |
void MKTool::slot_RecordLog() |
{ |
if (!logger->is_active()) |
logger->start_Log(); |
else |
logger->close(); |
update_Log(); |
} |
void MKTool::slot_ac_Preferences() |
{ |
dlg_Preferences *f_Preferences = new dlg_Preferences(this); |
// Settings->TTY.Port = le_Port->text(); |
Settings->TTY.Port = cb_Port->itemText(cb_Port->currentIndex()); |
f_Preferences->set_Settings(Settings); |
if (f_Preferences->exec()==QDialog::Accepted) |
{ |
Settings = f_Preferences->get_Settings(); |
Settings->write_Settings(); |
cb_Port->addItem(Settings->TTY.Port); |
config_Plot(); |
} |
} |
void MKTool::slot_ac_StartPlotter() |
{ |
if (ac_StartPlotter->isChecked()) |
{ |
lb_Status->setText(tr("Datenplotter gestartet.")); |
ac_StartPlotter->setText(tr("Stop Plotter")); |
pb_StartPlotter->setText(tr("Stop Plotter")); |
} |
else |
{ |
lb_Status->setText(tr("Datenplotter gestopt.")); |
ac_StartPlotter->setText(tr("Start Plotter")); |
pb_StartPlotter->setText(tr("Start Plotter")); |
} |
} |
void MKTool::slot_ac_View() |
{ |
int Aktive = -1; |
QAction *Action = (QAction*)sender(); |
if (Action->objectName() == QString("ac_View0")) |
Aktive = 0; |
if (Action->objectName() == QString("ac_View1")) |
Aktive = 1; |
if (Action->objectName() == QString("ac_View2")) |
Aktive = 2; |
if (Action->objectName() == QString("ac_View3")) |
Aktive = 3; |
if (Action->objectName() == QString("ac_View4")) |
Aktive = 4; |
if (Action->objectName() == QString("ac_View5")) |
Aktive = 5; |
if (Action->objectName() == QString("ac_View6")) |
Aktive = 6; |
QString TabName = QString("Tab_%1").arg(Aktive); |
if (!Action->isChecked()) |
{ |
for (int a = 0; a < tab_Main->count(); a++) |
{ |
if (tab_Main->widget(a)->objectName() == TabName) |
{ |
tab_Main->removeTab(a); |
} |
} |
} |
else |
{ |
tab_Main->insertTab(Aktive, TabWidgets[Aktive], Action->icon(), Action->text()); |
} |
} |
void MKTool::slot_ac_FastNavi() // DONE NC 0.12i |
{ |
if (!ac_NoNavi->isChecked()) |
{ |
if (ac_FastNavi->isChecked()) |
{ |
lb_Status->setText(tr("Fordere schnelle NaviDaten an.")); |
TX_Data[0] = Settings->Data.Navi_Fast / 10; |
} |
else |
{ |
lb_Status->setText(tr("Fordere langsame NaviDaten an.")); |
TX_Data[0] = Settings->Data.Navi_Slow / 10; |
} |
o_Connection->send_Cmd('o', ADDRESS_NC, TX_Data, 1, false); |
} |
} |
void MKTool::slot_ac_NoNavi() // DONE NC 0.12i |
{ |
if (ac_NoNavi->isChecked()) |
{ |
lb_Status->setText(tr("NaviDaten abstellen.")); |
TX_Data[0] = 0; |
} |
else |
{ |
if (ac_FastNavi->isChecked()) |
{ |
lb_Status->setText(tr("Fordere schnelle NaviDaten an.")); |
TX_Data[0] = Settings->Data.Navi_Fast / 10; |
} |
else |
{ |
lb_Status->setText(tr("Fordere langsame NaviDaten an.")); |
TX_Data[0] = Settings->Data.Navi_Slow / 10; |
} |
} |
o_Connection->send_Cmd('o', ADDRESS_NC, TX_Data, 1, false); |
} |
void MKTool::slot_ac_FastDebug() // DONE 0.71g |
{ |
if (!ac_NoDebug->isChecked()) |
{ |
if (ac_FastDebug->isChecked()) |
{ |
lb_Status->setText(tr("Fordere schnelle DebugDaten an.")); |
TX_Data[0] = Settings->Data.Debug_Fast / 10; |
} |
else |
{ |
lb_Status->setText(tr("Fordere langsame DebugDaten an.")); |
TX_Data[0] = Settings->Data.Debug_Slow / 10; |
} |
o_Connection->send_Cmd('d', ADDRESS_ALL, TX_Data, 1, false); |
} |
} |
void MKTool::slot_ac_NoDebug() // DONE 0.71g |
{ |
if (ac_NoDebug->isChecked()) |
{ |
lb_Status->setText(tr("DebugDaten abstellen.")); |
TickerEvent[3] = false; |
TX_Data[0] = 0; |
} |
else |
{ |
// Wenn MK3MAG dann andauernd Daten neu anfragen. |
if (Mode.ID == ADDRESS_MK3MAG) |
TickerEvent[3] = true; |
if (ac_FastDebug->isChecked()) |
{ |
lb_Status->setText(tr("Fordere schnelle DebugDaten an.")); |
TX_Data[0] = Settings->Data.Debug_Fast / 10; |
} |
else |
{ |
lb_Status->setText(tr("Fordere langsame DebugDaten an.")); |
TX_Data[0] = Settings->Data.Debug_Slow / 10; |
} |
} |
o_Connection->send_Cmd('d', ADDRESS_ALL, TX_Data, 1, false); |
} |
void MKTool::slot_ac_About() |
{ |
QMessageBox::about(this, trUtf8(("Ăśber ")) + QA_NAME, QA_ABOUT); |
} |
void MKTool::slot_ac_GetLabels() // DONE 0.71g |
{ |
lb_Status->setText(tr("Analoglabels auslesen.")); |
TX_Data[0] = 0; |
o_Connection->send_Cmd('a', ADDRESS_ALL, TX_Data, 1, true); |
} |
void MKTool::slot_ac_StartServer() |
{ |
if (ac_StartServer->isChecked()) |
{ |
lb_Status->setText(tr("KML-Server gestartet.")); |
KML_Server->start_Server(Settings->Server.Port.toInt(), Settings); |
} |
else |
{ |
lb_Status->setText(tr("KML-Server gestopt.")); |
KML_Server->stop_Server(); |
} |
} |
// Daten-Plotter |
///////////////// |
void MKTool::update_Plot() |
{ |
for (int a = 0; a < MaxAnalog; a++) |
{ |
Plot[a]->setData(aID,aData[a],NextPlot - 1); |
} |
if ((NextPlot > Settings->Data.Plotter_Count)) |
{ |
scroll_plot->setMaximum(NextPlot - Settings->Data.Plotter_Count); |
} |
if ((scroll_plot->value() == NextPlot - (Settings->Data.Plotter_Count + 1))) |
{ |
qwtPlot->setAxisScale(QwtPlot::xBottom,NextPlot - Settings->Data.Plotter_Count,NextPlot,0); |
scroll_plot->setValue(NextPlot - Settings->Data.Plotter_Count); |
} |
qwtPlot->replot(); |
} |
void MKTool::config_Plot() |
{ |
// qDebug("Plotter rekonfiguriert..!!"); |
qwtPlot->setAxisScale(QwtPlot::xBottom,0,Settings->Data.Plotter_Count,0); |
for (int a = 0; a < MaxAnalog; a++) |
{ |
Plot[a]->detach(); |
Plot[a]->setPen(QPen(QColor(Def_Colors[a]))); |
if (Settings->Analog1.PlotView[a]) |
{ |
Plot[a]->setTitle(Settings->Analog1.Label[a]); |
Plot[a]->attach(qwtPlot); |
} |
} |
qwtPlot->replot(); |
} |
void MKTool::slot_ScrollPlot(int Pos) |
{ |
qwtPlot->setAxisScale(QwtPlot::xBottom,Pos,Pos + Settings->Data.Plotter_Count,0); |
qwtPlot->replot(); |
} |
// Firmeware-Update |
/////////////////// |
void MKTool::slot_pb_Update() |
{ |
QString Device; |
QString Hardware; |
if (rb_FC->isChecked()) |
{ |
Device = "m644"; |
Hardware = "FlightCtrl"; |
} |
else if (rb_MK3MAG->isChecked()) |
{ |
Device = "m168"; |
Hardware = "MK3MAG"; |
} |
else if (rb_BL->isChecked()) |
{ |
Device = "m8"; |
Hardware = "BL-Ctrl"; |
} |
QString Message = trUtf8("Firmeware-Datei \n\n"); |
Message = Message + le_HexFile->text() + "\n\n"; |
Message = Message + trUtf8("an ") + Hardware + trUtf8(" mit AVRDUDE - Seriel & Bootloader ĂĽber ") + cb_Port->currentText() + trUtf8(" ĂĽbertragen?\n"); |
if (le_HexFile->text() == "") |
{ |
QMessageBox::warning(this, QA_NAME, trUtf8("Bitte Firmeware-Datei wählen."), QMessageBox::Ok); |
} |
else if (QMessageBox::warning(this, QA_NAME, Message, QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) |
{ |
QString Programm = Settings->DIR.AVRDUDE; |
QStringList Argumente; |
Update = new QProcess(); |
if (o_Connection->isOpen()) |
{ |
slot_OpenPort(); |
} |
Argumente << "-P"; |
Argumente << cb_Port->currentText(); |
Argumente << "-p"; |
Argumente << Device; |
Argumente << "-c"; |
Argumente << "butterfly"; |
Argumente << "-b"; |
Argumente << "57600"; |
Argumente << "-U"; |
Argumente << "flash:w:" + le_HexFile->text(); |
// QString Programm = "/home/Manuel/bin/avrdude -p m644 -P /dev/ttyS0 -c butterfly -b 57600 -U flash:w:/home/Manuel/Documents/Mikrokopter/Firmeware/FlightCtrl/Flight-Ctrl_MEGA644_V0_71h.hex"; |
te_Shell->setText(""); // Ausgabefenster säubern |
connect(Update, SIGNAL(readyReadStandardOutput()), this, SLOT(slot_UpdateShell()) ); |
connect(Update, SIGNAL(readyReadStandardError()), this, SLOT(slot_UpdateShell()) ); |
Update->start(Programm, Argumente); // Programmaufruf |
} |
} |
void MKTool::slot_UpdateShell() |
{ |
QByteArray Output; |
Output = Update->readAllStandardError(); // Shellausgabe an Variable |
te_Shell->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor); |
te_Shell->insertPlainText(QString::fromUtf8(Output)); |
Output = Update->readAll(); |
te_Shell->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor); |
te_Shell->insertPlainText(QString::fromUtf8(Output)); |
} |
void MKTool::slot_pb_HexFile() |
{ |
QString FileName = QFileDialog::getOpenFileName(this,trUtf8(("Firmeware-Datei wählen")),"", |
tr("Intel Hex(*.hex);;Alle Dateien (*)")); |
if (!FileName.isEmpty()) |
{ |
le_HexFile->setText(FileName); |
} |
} |
// Wechsel der Tabs erkennen |
void MKTool::slot_TabChanged(int Tab) // DONE 0.71g |
{ |
Tab = Tab; |
if (tab_Main->count() != 0) |
{ |
if ((tab_Main->currentWidget()->objectName() == QString("Tab_2")) && (f_Settings->listWidget->currentRow() == 1)) |
{ |
TX_Data[0] = 0; |
o_Connection->send_Cmd('p', ADDRESS_FC, TX_Data, 0, false); |
Ticker->setInterval(500); |
TickerEvent[1] = true; |
} |
else |
{ |
Ticker->setInterval(TICKER); |
TickerEvent[1] = false; |
} |
} |
} |
// LCD-Seiten weiterschalten |
void MKTool::slot_LCD_UP() // DONE 0.71g |
{ |
if (LCD_Page == LCD_MAX_Page) |
TX_Data[0] = 0; |
else |
TX_Data[0] = LCD_Page + 1; |
TX_Data[1] = 0; |
o_Connection->send_Cmd('l', ADDRESS_ALL, TX_Data, 1, true); |
} |
void MKTool::slot_LCD_DOWN() // DONE 0.71g |
{ |
if (LCD_Page == 0) |
TX_Data[0] = LCD_MAX_Page; |
else |
TX_Data[0] = LCD_Page - 1; |
TX_Data[1] = 0; |
o_Connection->send_Cmd('l', ADDRESS_ALL, TX_Data, 1, true); |
} |
// Settings aus MK lesen / in MK schreiben |
void MKTool::slot_GetFCSettings() // DONE 0.71g |
{ |
lb_Status->setText(tr("Lese FlightCtrl-Settings aus.")); |
TX_Data[0] = f_Settings->sb_Set->value(); |
TX_Data[1] = 0; |
o_Connection->send_Cmd('q', ADDRESS_FC, TX_Data, 1, true); |
} |
void MKTool::slot_SetFCSettings() // DONE 0.71g |
{ |
char *TX_Data2 = f_Settings->GetFCSettings(); |
lb_Status->setText(tr("Schreibe FlightCtrl-Settings.")); |
o_Connection->send_Cmd('s', ADDRESS_FC, TX_Data2, MaxParameter + 2, true); |
} |
// Save GUI-Preferences |
/////////////////////// |
void MKTool::set_Preferences() |
{ |
Settings->GUI.TabViews.setBit(0, ac_View0->isChecked()); |
Settings->GUI.TabViews.setBit(1, ac_View1->isChecked()); |
Settings->GUI.TabViews.setBit(2, ac_View2->isChecked()); |
Settings->GUI.TabViews.setBit(3, ac_View3->isChecked()); |
Settings->GUI.TabViews.setBit(4, ac_View4->isChecked()); |
Settings->GUI.TabViews.setBit(5, ac_View5->isChecked()); |
Settings->GUI.TabViews.setBit(6, ac_View6->isChecked()); |
Settings->GUI.ToolViews.setBit(0, tb_Allgemein->isVisibleTo(this)); |
Settings->GUI.ToolViews.setBit(1, tb_Werkzeuge->isVisibleTo(this)); |
Settings->GUI.ToolViews.setBit(2, tb_Debug->isVisibleTo(this)); |
Settings->GUI.ToolViews.setBit(3, tb_TTY->isVisibleTo(this)); |
Settings->GUI.ToolViews.setBit(4, tb_Hardware->isVisibleTo(this)); |
Settings->GUI.Term_Info = cb_ShowMSG->isChecked(); |
Settings->GUI.Term_Data = cb_ShowData->isChecked(); |
Settings->GUI.Term_Always = cb_ShowAlways->isChecked(); |
Settings->GUI.Term_Send = cb_ShowSend->isChecked(); |
Settings->GUI.isMax = isMaximized(); |
Settings->GUI.Size = size(); |
Settings->GUI.Point = pos(); |
// Settings->TTY.Port = le_Port->text(); |
Settings->TTY.Port = cb_Port->currentText(); |
Settings->TTY.MaxPorts = cb_Port->count(); |
Settings->TTY.PortID = cb_Port->currentIndex(); |
for (int z = 0; z < cb_Port->count(); z++) |
{ |
if (z < 10) |
{ |
Settings->TTY.Ports[z] = cb_Port->itemText(z); |
} |
} |
} |
void MKTool::show_DebugData() |
{ |
if (logger->is_active()) |
logger->write(AnalogData); |
if (ac_StartPlotter->isChecked()) |
{ |
aID[NextPlot] = NextPlot; |
for (int a = 0; a < MaxAnalog; a++) |
{ |
aData[a][NextPlot] = AnalogData[a]; |
} |
NextPlot++; |
if ((tab_Main->currentWidget()->objectName() == QString("Tab_1"))) |
update_Plot(); |
} |
if (tab_Main->currentWidget()->objectName() == QString("Tab_0")) |
{ |
le_A_0->setText(QString("%1").arg(AnalogData[0])); |
le_A_1->setText(QString("%1").arg(AnalogData[1])); |
le_A_2->setText(QString("%1").arg(AnalogData[2])); |
le_A_3->setText(QString("%1").arg(AnalogData[3])); |
le_A_4->setText(QString("%1").arg(AnalogData[4])); |
le_A_5->setText(QString("%1").arg(AnalogData[5])); |
le_A_6->setText(QString("%1").arg(AnalogData[6])); |
le_A_7->setText(QString("%1").arg(AnalogData[7])); |
le_A_8->setText(QString("%1").arg(AnalogData[8])); |
le_A_9->setText(QString("%1").arg(AnalogData[9])); |
le_A_10->setText(QString("%1").arg(AnalogData[10])); |
le_A_11->setText(QString("%1").arg(AnalogData[11])); |
le_A_12->setText(QString("%1").arg(AnalogData[12])); |
le_A_13->setText(QString("%1").arg(AnalogData[13])); |
le_A_14->setText(QString("%1").arg(AnalogData[14])); |
le_A_15->setText(QString("%1").arg(AnalogData[15])); |
le_A_16->setText(QString("%1").arg(AnalogData[16])); |
le_A_17->setText(QString("%1").arg(AnalogData[17])); |
le_A_18->setText(QString("%1").arg(AnalogData[18])); |
le_A_19->setText(QString("%1").arg(AnalogData[19])); |
le_A_20->setText(QString("%1").arg(AnalogData[20])); |
le_A_21->setText(QString("%1").arg(AnalogData[21])); |
le_A_22->setText(QString("%1").arg(AnalogData[22])); |
le_A_23->setText(QString("%1").arg(AnalogData[23])); |
le_A_24->setText(QString("%1").arg(AnalogData[24])); |
le_A_25->setText(QString("%1").arg(AnalogData[25])); |
le_A_26->setText(QString("%1").arg(AnalogData[26])); |
le_A_27->setText(QString("%1").arg(AnalogData[27])); |
le_A_28->setText(QString("%1").arg(AnalogData[28])); |
le_A_29->setText(QString("%1").arg(AnalogData[29])); |
le_A_30->setText(QString("%1").arg(AnalogData[30])); |
le_A_31->setText(QString("%1").arg(AnalogData[31])); |
} |
if ((Mode.ID == ADDRESS_FC) && (FCSettings[P_GYRO_ACC_FAKTOR] > 0) && (tab_Main->currentWidget()->objectName() == QString("Tab_4"))) |
{ |
bar_UBAT->setValue(AnalogData[9]); |
bar_RX->setValue(AnalogData[10]); |
Compass->setValue(AnalogData[8]); |
int Roll = (AnalogData[1] * FCSettings[P_GYRO_ACC_FAKTOR]) / 1024; |
int Nick = (AnalogData[0] * FCSettings[P_GYRO_ACC_FAKTOR]) / 1024; |
if (Roll > 128) |
Roll = Roll - 255; |
if (Nick > 128) |
Nick = Nick - 255; |
Attitude->setAngle(Roll); |
Attitude->setGradient(double(double(Nick) / 100.0)); |
} |
} |
void MKTool::new_NaviData(sRxData RX) |
{ |
// qDebug("Navi-Data"); |
if (tab_Main->currentWidget()->objectName() == QString("Tab_4")) |
{ |
switch(RX.Decode[N_NC_FLAGS]) |
{ |
case 0x01 : lb_Mode->setText(tr("Free")); break; |
case 0x02 : lb_Mode->setText(tr("Position Hold")); break; |
case 0x04 : lb_Mode->setText(tr("Coming Home")); break; |
case 0x08 : lb_Mode->setText(tr("Range Limit")); break; |
case 0x10 : lb_Mode->setText(tr("Serial Error")); break; |
case 0x20 : lb_Mode->setText(tr("Target reached")); break; |
case 0x40 : lb_Mode->setText(tr("Manual Control")); break; |
} |
le_CDistance->setText(QString("%1 cm").arg(ToolBox::Data2Int(RX.Decode, N_HOME_DISTANCE))); |
le_CWPA->setText(QString("%1").arg(RX.Decode[N_WP_INDEX])); |
le_CWPT->setText(QString("%1").arg(RX.Decode[N_WP_NUMBER])); |
le_CSats->setText(QString("%1").arg(RX.Decode[N_SATS_IN_USER])); |
qwt_Rate->setValue(double(ToolBox::Data2Int(RX.Decode, N_VARIOMETER, true))); |
le_CTime->setText(QString("%1 sec.").arg(ToolBox::Data2Int(RX.Decode, N_FLYING_TIME))); |
bar_UBAT->setValue(RX.Decode[N_UBAT]); |
double Speed = double((ToolBox::Data2Int(RX.Decode, N_GROUND_SPEED)) / 10.0); |
if ((Speed > 4.5) && SpeedMeter->property("END") == 5) |
{ |
SpeedMeter->setRange(0.0, 10.0); |
SpeedMeter->setScale(1, 2, 1); |
SpeedMeter->setProperty("END", 10); |
} |
if ((Speed > 9) && SpeedMeter->property("END") == 10) |
{ |
SpeedMeter->setRange(0.0, 20.0); |
SpeedMeter->setScale(1, 2, 2); |
SpeedMeter->setProperty("END", 20); |
} |
SpeedMeter->setValue(Speed); |
Compass->setValue(ToolBox::Data2Int(RX.Decode, N_COMAPSS_HEADING)); //(68) |
bar_RX->setValue(RX.Decode[N_RC_QUALITY]); |
int Nick = RX.Decode[N_ANGLE_NICK]; |
int Roll = RX.Decode[N_ANGLE_ROLL]; |
if (Roll > 128) |
Roll = Roll - 255; |
if (Nick > 128) |
Nick = Nick - 255; |
Attitude->setAngle(Roll); |
Attitude->setGradient(double(0.0 - (double(Nick) / 100.0))); |
} |
Navi.Current.Longitude = ToolBox::Data2Long(RX.Decode, N_CUR_LONGITUDE, true); |
Navi.Current.Latitude = ToolBox::Data2Long(RX.Decode, N_CUR_LATITUDE, true); |
Navi.Current.Altitude = ToolBox::Data2Long(RX.Decode, N_CUR_ALTITUDE, true); |
// Navi.Target.Longitude = ToolBox::Data2Long(RX.Decode, N_TAR_LONGITUDE, true); |
// Navi.Target.Latitude = ToolBox::Data2Long(RX.Decode, N_TAR_LATITUDE, true); |
// Navi.Target.Altitude = ToolBox::Data2Long(RX.Decode, N_TAR_ALTITUDE, true); |
sNaviString NaviString; |
NaviString.Longitude = ToolBox::get_Float(Navi.Current.Longitude,7); |
NaviString.Latitude = ToolBox::get_Float(Navi.Current.Latitude,7); |
NaviString.Altitude = ToolBox::get_Float(Navi.Current.Altitude,3); |
le_CurLong->setText(NaviString.Longitude); |
le_CurLat->setText(NaviString.Latitude); |
KML_Server->store_NaviString(NaviString); |
f_Map->add_Position(NaviString.Longitude.toDouble(), NaviString.Latitude.toDouble()); |
if ((QMK_Server->property("Connect")) == true) |
{ |
// qDebug("Send Data to Server..!!"); |
QMK_Server->NewPosition(NaviString); |
} |
} |
// Kopter-Kommunikations-Bereich, Befehle senden und Daten empfangen |
//////////////////////////////////////////////////////////////////// |
// Neues Datenpacket empfangen -> Verarbeiten |
void MKTool::slot_newData(sRxData RX) // DONE 0.71g |
{ |
if (LastSend.length() > 2) |
{ |
} |
int HardwareID = RX.Input[1] - 'a'; |
switch(HardwareID) |
{ |
case ADDRESS_FC : |
switch(RX.Input[2]) |
{ |
// Motor-Mixer |
case 'N' : |
if (ToolBox::Decode64(RX)) |
{ |
o_Connection->stop_ReSend(); |
if (RX.Decode[0] == VERSION_MIXER) |
{ |
f_MotorMixer->set_MotorConfig(RX); |
} |
} |
break; |
// Motor-Mixer Schreib-Bestätigung |
case 'M' : |
if (ToolBox::Decode64(RX)) |
{ |
o_Connection->stop_ReSend(); |
if (RX.Decode[0] == 1) |
{ |
lb_Status->setText(tr("MotorMixer-Daten in FC geschrieben.")); |
} |
} |
break; |
// Stick-Belegung der Fernsteuerung |
case 'P' : // DONE 0.71g |
if (ToolBox::Decode64(RX)) |
{ |
f_Settings->pb_K1->setValue(ToolBox::Data2Int(RX.Decode, 2,true)); |
f_Settings->pb_K2->setValue(ToolBox::Data2Int(RX.Decode, 4,true)); |
f_Settings->pb_K3->setValue(ToolBox::Data2Int(RX.Decode, 6,true)); |
f_Settings->pb_K4->setValue(ToolBox::Data2Int(RX.Decode, 8,true)); |
f_Settings->pb_K5->setValue(ToolBox::Data2Int(RX.Decode, 10 ,true)); |
f_Settings->pb_K6->setValue(ToolBox::Data2Int(RX.Decode, 12,true)); |
f_Settings->pb_K7->setValue(ToolBox::Data2Int(RX.Decode, 14,true)); |
f_Settings->pb_K8->setValue(ToolBox::Data2Int(RX.Decode, 16,true)); |
} |
break; |
// Settings lesen |
case 'Q' : // DONE 0.71g |
if (ToolBox::Decode64(RX)) |
{ |
o_Connection->stop_ReSend(); |
if (RX.Decode[1] == VERSION_SETTINGS) |
{ |
int Settings_ID = RX.Decode[0]; |
for (int a = 0; a < MaxParameter; a++) |
{ |
FCSettings[a] = RX.Decode[a + 2]; |
} |
f_Settings->show_FCSettings(Settings_ID, FCSettings); |
f_Settings->pb_Read->setEnabled(true); |
f_Settings->pb_Write->setEnabled(true); |
} |
else |
{ |
f_Settings->pb_Read->setDisabled(true); |
f_Settings->pb_Write->setDisabled(true); |
QMessageBox::warning(this, QA_NAME, |
tr("Versionen inkompatibel. \nParameterbearbeitung nicht moeglich."), QMessageBox::Ok); |
} |
} |
break; |
// Settings geschrieben |
case 'S' : // DONE 0.71g |
o_Connection->stop_ReSend(); |
break; |
} |
case ADDRESS_NC : |
switch(RX.Input[2]) |
{ |
// Navigationsdaten |
case 'O' : // NOT DONE 0.12h |
if (ToolBox::Decode64(RX)) |
{ |
new_NaviData(RX); |
} |
break; |
} |
// case ADDRESS_MK3MAG : |
default : |
switch(RX.Input[2]) |
{ |
// LCD-Anzeige |
case 'L' : // DONE 0.71g |
if (ToolBox::Decode64(RX)) |
{ |
o_Connection->stop_ReSend(); |
int LCD[150]; |
memcpy(LCD,RX.Decode, sizeof(RX.Decode)); |
f_LCD->show_Data(LCD); |
LCD_Page = RX.Decode[0]; |
LCD_MAX_Page = RX.Decode[1]; |
} |
break; |
// Analoglabels |
case 'A' : // DONE 0.71g |
if (ToolBox::Decode64(RX)) |
{ |
o_Connection->stop_ReSend(); |
int Position = RX.Decode[0]; |
if (Position != 31) |
{ |
Settings->Analog1.Label[Position] = ToolBox::Data2QString(RX.Decode,1,17).trimmed(); |
if (Settings->Analog1.Label[Position] == "") |
{ |
Settings->Analog1.Label[Position] = "A-" + QString("%1").arg(Position); |
} |
Position ++; |
TX_Data[0] = Position; |
o_Connection->send_Cmd('a', ADDRESS_ALL, TX_Data, 1, true); |
} |
if (Position == 31) |
{ |
for (int a = 0; a < MaxAnalog; a++) |
{ |
lb_Analog[a]->setText(Settings->Analog1.Label[a]); |
} |
Settings->Analog1.Version = Mode.Version; |
Settings->write_Settings_AnalogLabels(HardwareID); |
config_Plot(); |
} |
} |
break; |
// Debug-Daten |
case 'D' : // DONE 0.71g |
if (ToolBox::Decode64(RX)) |
{ |
for (int i = 0; i < MaxAnalog; i++) |
{ |
AnalogData[i] = ToolBox::Data2Int(RX.Decode, (i * 2) + 2); |
} |
show_DebugData(); |
} |
break; |
// Version |
case 'V' : // DONE 0.71h |
if (ToolBox::Decode64(RX)) |
{ |
o_Connection->stop_ReSend(); |
Mode.ID = HardwareID; |
Mode.VERSION_MAJOR = RX.Decode[0]; |
Mode.VERSION_MINOR = RX.Decode[1]; |
Mode.VERSION_PATCH = RX.Decode[4]; |
Mode.VERSION_SERIAL_MAJOR = RX.Decode[2]; |
Mode.VERSION_SERIAL_MINOR = RX.Decode[3]; |
Mode.Hardware = HardwareType[Mode.ID]; |
Mode.Version = QString("%1").arg(RX.Decode[0]) + "." + QString("%1").arg(RX.Decode[1]) + QString(RX.Decode[4] + 'a'); |
setWindowTitle(QA_NAME + " v" + QA_VERSION + " - " + Mode.Hardware + " " + Mode.Version); |
if (Mode.VERSION_SERIAL_MAJOR != VERSION_SERIAL_MAJOR) |
{ |
// AllowSend = false; |
QMessageBox::warning(this, QA_NAME, |
tr("Serielles Protokoll Inkompatibel. \nBitte neue Programmversion installieren,"), QMessageBox::Ok); |
} |
if (ac_NoDebug->isChecked()) |
{ |
TX_Data[0] = 0; |
} |
else |
if (ac_FastDebug->isChecked()) |
{ |
TX_Data[0] = Settings->Data.Debug_Fast / 10; |
} |
else |
{ |
TX_Data[0] = Settings->Data.Debug_Slow / 10; |
} |
o_Connection->send_Cmd('d', ADDRESS_ALL, TX_Data, 1, false); |
// Wenn MK3MAG dann andauernd Daten neu anfragen. |
if (Mode.ID == ADDRESS_MK3MAG) |
{ |
TickerEvent[3] = true; |
rb_SelMag->setChecked(true); |
} |
// Wenn NaviCtrl dann hier. |
if (Mode.ID == ADDRESS_NC) |
{ |
rb_SelNC->setChecked(true); |
if (ac_NoNavi->isChecked()) |
{ |
TX_Data[0] = 0; |
} |
else |
if (ac_FastNavi->isChecked()) |
{ |
TX_Data[0] = Settings->Data.Navi_Fast / 10; |
} |
else |
{ |
TX_Data[0] = Settings->Data.Navi_Slow / 10; |
} |
o_Connection->send_Cmd('o', ADDRESS_NC, TX_Data, 1, false); |
} |
// Wenn FlightCtrl dann Settings abfragen. |
if (Mode.ID == ADDRESS_FC) |
{ |
rb_SelFC->setChecked(true); |
{ |
TX_Data[0] = 0xff; |
TX_Data[1] = 0; |
// DEP: Raus wenn Resend implementiert. |
// ToolBox::Wait(SLEEP); |
o_Connection->send_Cmd('q', ADDRESS_FC, TX_Data, 1, true); |
qDebug("FC - Get Settings"); |
} |
} |
// Wenn nicht Lesen und Schreiben der Settings deaktivieren. |
else |
{ |
f_Settings->pb_Read->setDisabled(true); |
f_Settings->pb_Write->setDisabled(true); |
} |
Settings->read_Settings_Analog(HardwareID); |
Settings->read_Settings_AnalogLabels(HardwareID); |
if (Settings->Analog1.Version != Mode.Version) |
{ |
lb_Status->setText(tr("Analoglabel-Version unterschiedlich. Lese Analoglabels neu aus.")); |
slot_ac_GetLabels(); |
} |
else |
for (int a = 0; a < MaxAnalog; a++) |
{ |
lb_Analog[a]->setText(Settings->Analog1.Label[a]); |
} |
config_Plot(); |
// Im Settings-Dialog dieFirmware-Version setzen. |
f_Settings->Version = QString("%1").arg(RX.Decode[0]) + QString("%1").arg(RX.Decode[1]) + QString(RX.Decode[4] + 'a'); |
} |
break; |
} |
} |
// TODO: Roh-Daten senden zum QMK-Server dazu Sendebuffer bauen. |
if ((QMK_Server->property("Connect")) == true) |
{ |
// QMK_Server->send_RawData(RX.String); |
} |
slot_showTerminal(1, RX.String); |
} |
void MKTool::slot_showTerminal(int Typ, QString Text) |
{ |
switch(Typ) |
{ |
case 1 : |
{ |
if ((cb_ShowData->isChecked()) && ((tab_Main->currentWidget()->objectName() == QString("Tab_3")) || (cb_ShowAlways->isChecked()))) |
{ |
te_RX->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor); |
te_RX->insertHtml("<span style=\"color:#00008b;\">" + Text + "<br /></span>"); |
} |
} |
break; |
case 2 : |
{ |
if ((cb_ShowMSG->isChecked()) && ((tab_Main->currentWidget()->objectName() == QString("Tab_3")) || (cb_ShowAlways->isChecked()))) |
{ |
if (Text.length() > 0) |
{ |
te_RX->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor); |
te_RX->insertHtml("<span style=\"color:#008b00;\">" + Text + "</span><br />"); |
} |
} |
} |
break; |
case 3 : |
{ |
if ((cb_ShowSend->isChecked()) && ((tab_Main->currentWidget()->objectName() == QString("Tab_3")) || (cb_ShowAlways->isChecked()))) |
{ |
te_RX->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor); |
te_RX->insertHtml("<span style='color:#8b0000;'>" + Text + "<br /></span>"); |
} |
} |
break; |
} |
} |
// Verbindung zum Kopter herstellen / Trennen |
void MKTool::slot_OpenPort() |
{ |
if (o_Connection->isOpen()) |
{ |
TX_Data[0] = Settings->Data.Debug_Off / 10; |
o_Connection->send_Cmd('d', ADDRESS_ALL, TX_Data, 1, false); |
ToolBox::Wait(SLEEP); |
if (Mode.ID == ADDRESS_NC) |
{ |
TX_Data[0] = Settings->Data.Navi_Off / 10; |
o_Connection->send_Cmd('o', ADDRESS_NC, TX_Data, 1, false); |
ToolBox::Wait(SLEEP); |
} |
if (Mode.ID == ADDRESS_FC) |
{ |
TX_Data[0] = 0; |
TX_Data[1] = 0; |
TX_Data[2] = 0; |
TX_Data[3] = 0; |
o_Connection->send_Cmd('t', ADDRESS_FC, TX_Data, 4, false); |
ToolBox::Wait(SLEEP); |
} |
o_Connection->Close(); |
ac_ConnectTTY->setText(tr("Kopter Verbinden")); |
cb_Port->setEnabled(true); |
Ticker->stop(); |
} |
else |
{ |
int i_Type; |
if (cb_Port->currentText().contains(QString("IP:"))) |
{ |
i_Type = C_IP; |
} |
else |
{ |
i_Type = C_TTY; |
} |
if (o_Connection->Open(i_Type, cb_Port->currentText())) |
{ |
ac_ConnectTTY->setText(tr("Kopter Trennen")); |
cb_Port->setEnabled(false); |
o_Connection->send_Cmd('v', ADDRESS_ALL, TX_Data, 0, true); |
Ticker->start(TICKER); |
} |
} |
} |
// Programm beenden |
/////////////////// |
MKTool::~MKTool() |
{ |
if (o_Connection->isOpen()) |
{ |
o_Connection->Close(); |
} |
set_Preferences(); |
Settings->write_Settings(); |
logger->close(); |
} |
/QMK-Groundstation/tags/V1.0.1/Forms/mktool.h |
---|
0,0 → 1,232 |
/*************************************************************************** |
* Copyright (C) 2008 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#ifndef MKTOOL_H |
#define MKTOOL_H |
#include <QMainWindow> |
#include <QSettings> |
#include <QString> |
#include <QTimer> |
#include <QComboBox> |
#include <QIcon> |
#include <QProcess> |
#include <qwt_plot_curve.h> |
#include <qwt_plot_grid.h> |
#include <qwt_legend.h> |
#include <qwt_plot.h> |
#include <qwt_compass.h> |
#include <qwt_compass_rose.h> |
#include <qwt_dial_needle.h> |
#include "ui_mktool.h" |
#include "wdg_Settings.h" |
#include "dlg_LCD.h" |
#include "dlg_Map.h" |
#include "dlg_MotorMixer.h" |
#include "../Classes/cConnection.h" |
#include "../Classes/cSettings.h" |
#include "../Classes/cKML_Server.h" |
#include "../Classes/cQMK_Server.h" |
#include "../Classes/cAttitude.h" |
#include "../Classes/cSpeedMeter.h" |
#include "../Logger/Logger.h" |
#include "../typedefs.h" |
class QextSerialPort; |
class MKTool : public QMainWindow, public Ui::dlg_mktool_UI |
{ |
Q_OBJECT |
public: |
MKTool(); |
~MKTool(); |
private: |
// Object fĂĽr Kopter-Verbindung |
cConnection *o_Connection; |
// Settings-Object (Programmeinstellungen) |
cSettings *Settings; |
// Settings-Widget (FC-Settings) |
wdg_Settings *f_Settings; |
// HTTP-Server-Object fĂĽr KML-Files |
cKML_Server *KML_Server; |
// QMK-Serverobjekt |
cQMK_Server *QMK_Server; |
// LCD-Dialog |
dlg_LCD *f_LCD; |
// MotorMixer-Dialog |
dlg_MotorMixer *f_MotorMixer; |
// Map-Dialog |
dlg_Map *f_Map; |
//TCP-Socket |
QTcpSocket *TcpSocket; |
// Default-Ticker |
QTimer *Ticker; |
// Kopie der Tabs des Hauptfensters |
QWidget *TabWidgets[7]; |
// Analogwert-Beschreibungen |
QLabel *lb_Analog[MaxAnalog]; |
// Analogwerte |
int AnalogData[MaxAnalog]; |
// Plots fĂĽr die Analogwerte |
QwtPlotCurve *Plot[MaxAnalog]; |
// Datenspeicher fĂĽr die Plots |
double aData[MaxAnalog][MaxPlot]; |
double aID[MaxPlot]; |
int NextPlot; |
AttitudeIndicator *Attitude; |
cSpeedMeter * SpeedMeter; |
// Ticker-Event-Array |
bool TickerEvent[MaxTickerEvents]; |
bool TickerDiv; |
// Aktuelle und Max-Anzahl der LCD-Seiten |
int LCD_Page; |
int LCD_MAX_Page; |
//Logger fĂĽr CVS und andere |
Logger * logger; |
sMode Mode; |
sRxData RxData; |
sNaviData Navi; |
sMotor Motor; |
QString RXS; |
QString LastSend; |
// Softwareupdate |
QProcess *Update; |
// Sendedatenbuffer |
char TX_Data[150]; |
// FC-Settings |
int FCSettings[MaxParameter]; |
// Programm Initialisieren |
void init_GUI(); |
void init_Objects(); |
void init_Connections(); |
void init_Arrays(); |
void init_Plot(); |
void init_Cockpit(); |
// Daten-Plotter |
void update_Plot(); |
void config_Plot(); |
void new_NaviData(sRxData RX); |
void parse_TargetKML(); |
// Debugdaten anzeigen und speichern. |
void show_DebugData(); |
void update_Log(); |
// Programmeinstellungen speichern |
void set_Preferences(); |
private slots: |
void slot_QMKS_Connect(); |
void slot_QMKS_Connected(); |
void slot_QMKS_Disconnected(int Error); |
void slot_set_Settings(cSettings *t_Settings); |
void slot_MAP_SetTarget(sWayPoint Target); |
void slot_MAP_SetWayPoints(QList<sWayPoint> l_WayPoints); |
void slot_showTerminal(int Typ, QString Text); |
void slot_ac_Hardware(); |
void slot_rb_Hardware(); |
void slot_ac_StartServer(); |
void slot_Test(); |
void slot_ac_Config(); |
void slot_ac_Preferences(); |
void slot_ac_StartPlotter(); |
void slot_ac_View(); |
void slot_ac_FastDebug(); |
void slot_ac_NoDebug(); |
void slot_ac_FastNavi(); |
void slot_ac_NoNavi(); |
void slot_ac_About(); |
void slot_ac_GetLabels(); |
void slot_ac_Motortest(); |
void slot_ac_LCD(); |
void slot_ac_Map(); |
void slot_ac_MotorMixer(); |
void slot_pb_HexFile(); |
void slot_pb_SendTarget(); |
// Default-Ticker |
void slot_Ticker(); |
// LCD-Seite vor / zurĂĽck |
void slot_LCD_UP(); |
void slot_LCD_DOWN(); |
void slot_Motortest(sMotor p_Motor); |
// Firmeware-Update |
void slot_pb_Update(); |
void slot_UpdateShell(); |
// Seriell-Port Slots |
void slot_newData(sRxData RX); |
void slot_OpenPort(); |
void slot_TabChanged(int Tab); |
void slot_RecordLog(); |
void slot_ScrollPlot(int Pos); |
// FC-Settings lesen / Schreiben |
void slot_GetFCSettings(); |
void slot_SetFCSettings(); |
}; |
#endif |
/QMK-Groundstation/tags/V1.0.1/Forms/mktool.ui |
---|
0,0 → 1,2722 |
<?xml version="1.0" encoding="UTF-8"?> |
<ui version="4.0"> |
<class>dlg_mktool_UI</class> |
<widget class="QMainWindow" name="dlg_mktool_UI"> |
<property name="geometry"> |
<rect> |
<x>0</x> |
<y>0</y> |
<width>709</width> |
<height>414</height> |
</rect> |
</property> |
<property name="windowTitle"> |
<string>MK-Tool</string> |
</property> |
<property name="windowIcon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Icon/Images/QMK-Groundstation.png</normaloff>:/Icon/Images/QMK-Groundstation.png</iconset> |
</property> |
<property name="toolButtonStyle"> |
<enum>Qt::ToolButtonTextOnly</enum> |
</property> |
<property name="dockOptions"> |
<set>QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks|QMainWindow::ForceTabbedDocks|QMainWindow::VerticalTabs</set> |
</property> |
<widget class="QWidget" name="centralwidget"> |
<layout class="QGridLayout" name="gridLayout_12"> |
<item row="0" column="0"> |
<widget class="Line" name="line_2"> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
</widget> |
</item> |
<item row="2" column="0"> |
<widget class="QLabel" name="lb_Status"> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="frameShape"> |
<enum>QFrame::Box</enum> |
</property> |
<property name="frameShadow"> |
<enum>QFrame::Raised</enum> |
</property> |
<property name="text"> |
<string/> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QTabWidget" name="tab_Main"> |
<property name="toolTip"> |
<string/> |
</property> |
<property name="currentIndex"> |
<number>0</number> |
</property> |
<widget class="QWidget" name="Tab_0"> |
<attribute name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Debug.png</normaloff>:/Actions/Images/Actions/Debug.png</iconset> |
</attribute> |
<attribute name="title"> |
<string>Debug-Daten </string> |
</attribute> |
<layout class="QGridLayout" name="gridLayout_7"> |
<item row="0" column="0"> |
<layout class="QHBoxLayout" name="horizontalLayout"> |
<item> |
<widget class="QFrame" name="frame_15"> |
<property name="frameShape"> |
<enum>QFrame::StyledPanel</enum> |
</property> |
<property name="frameShadow"> |
<enum>QFrame::Raised</enum> |
</property> |
<layout class="QGridLayout" name="gridLayout_5"> |
<item row="0" column="0"> |
<widget class="QLabel" name="lb_A_0"> |
<property name="text"> |
<string>Analog 0</string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QLineEdit" name="le_A_0"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="lb_A_1"> |
<property name="text"> |
<string>Analog 1</string> |
</property> |
</widget> |
</item> |
<item row="1" column="1"> |
<widget class="QLineEdit" name="le_A_1"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="2" column="0"> |
<widget class="QLabel" name="lb_A_2"> |
<property name="text"> |
<string>Analog 2</string> |
</property> |
</widget> |
</item> |
<item row="2" column="1"> |
<widget class="QLineEdit" name="le_A_2"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="3" column="0"> |
<widget class="QLabel" name="lb_A_3"> |
<property name="text"> |
<string>Analog 3</string> |
</property> |
</widget> |
</item> |
<item row="3" column="1"> |
<widget class="QLineEdit" name="le_A_3"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="4" column="0"> |
<widget class="QLabel" name="lb_A_4"> |
<property name="text"> |
<string>Analog 4</string> |
</property> |
</widget> |
</item> |
<item row="4" column="1"> |
<widget class="QLineEdit" name="le_A_4"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="5" column="0"> |
<widget class="QLabel" name="lb_A_5"> |
<property name="text"> |
<string>Analog 5</string> |
</property> |
</widget> |
</item> |
<item row="5" column="1"> |
<widget class="QLineEdit" name="le_A_5"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="6" column="0"> |
<widget class="QLabel" name="lb_A_6"> |
<property name="text"> |
<string>Analog 6</string> |
</property> |
</widget> |
</item> |
<item row="6" column="1"> |
<widget class="QLineEdit" name="le_A_6"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="7" column="0"> |
<widget class="QLabel" name="lb_A_7"> |
<property name="text"> |
<string>Analog 7</string> |
</property> |
</widget> |
</item> |
<item row="7" column="1"> |
<widget class="QLineEdit" name="le_A_7"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item> |
<widget class="QFrame" name="frame_14"> |
<property name="frameShape"> |
<enum>QFrame::StyledPanel</enum> |
</property> |
<property name="frameShadow"> |
<enum>QFrame::Raised</enum> |
</property> |
<layout class="QGridLayout" name="gridLayout_4"> |
<item row="0" column="0"> |
<widget class="QLabel" name="lb_A_8"> |
<property name="text"> |
<string>Analog 8</string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QLineEdit" name="le_A_8"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="lb_A_9"> |
<property name="text"> |
<string>Analog 9</string> |
</property> |
</widget> |
</item> |
<item row="1" column="1"> |
<widget class="QLineEdit" name="le_A_9"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="2" column="0"> |
<widget class="QLabel" name="lb_A_10"> |
<property name="text"> |
<string>Analog 10</string> |
</property> |
</widget> |
</item> |
<item row="2" column="1"> |
<widget class="QLineEdit" name="le_A_10"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="3" column="0"> |
<widget class="QLabel" name="lb_A_11"> |
<property name="text"> |
<string>Analog 11</string> |
</property> |
</widget> |
</item> |
<item row="3" column="1"> |
<widget class="QLineEdit" name="le_A_11"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="4" column="0"> |
<widget class="QLabel" name="lb_A_12"> |
<property name="text"> |
<string>Analog 12</string> |
</property> |
</widget> |
</item> |
<item row="4" column="1"> |
<widget class="QLineEdit" name="le_A_12"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="5" column="0"> |
<widget class="QLabel" name="lb_A_13"> |
<property name="text"> |
<string>Analog 13</string> |
</property> |
</widget> |
</item> |
<item row="5" column="1"> |
<widget class="QLineEdit" name="le_A_13"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="6" column="0"> |
<widget class="QLabel" name="lb_A_14"> |
<property name="text"> |
<string>Analog 14</string> |
</property> |
</widget> |
</item> |
<item row="6" column="1"> |
<widget class="QLineEdit" name="le_A_14"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="7" column="0"> |
<widget class="QLabel" name="lb_A_15"> |
<property name="text"> |
<string>Analog 15</string> |
</property> |
</widget> |
</item> |
<item row="7" column="1"> |
<widget class="QLineEdit" name="le_A_15"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item> |
<widget class="QFrame" name="frame_16"> |
<property name="frameShape"> |
<enum>QFrame::StyledPanel</enum> |
</property> |
<property name="frameShadow"> |
<enum>QFrame::Raised</enum> |
</property> |
<layout class="QGridLayout" name="gridLayout_3"> |
<item row="0" column="0"> |
<widget class="QLabel" name="lb_A_16"> |
<property name="text"> |
<string>Analog 16</string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QLineEdit" name="le_A_16"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="lb_A_17"> |
<property name="text"> |
<string>Analog 17</string> |
</property> |
</widget> |
</item> |
<item row="1" column="1"> |
<widget class="QLineEdit" name="le_A_17"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="2" column="0"> |
<widget class="QLabel" name="lb_A_18"> |
<property name="text"> |
<string>Analog 18</string> |
</property> |
</widget> |
</item> |
<item row="2" column="1"> |
<widget class="QLineEdit" name="le_A_18"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="3" column="0"> |
<widget class="QLabel" name="lb_A_19"> |
<property name="text"> |
<string>Analog 19</string> |
</property> |
</widget> |
</item> |
<item row="3" column="1"> |
<widget class="QLineEdit" name="le_A_19"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="4" column="0"> |
<widget class="QLabel" name="lb_A_20"> |
<property name="text"> |
<string>Analog 20</string> |
</property> |
</widget> |
</item> |
<item row="4" column="1"> |
<widget class="QLineEdit" name="le_A_20"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="5" column="0"> |
<widget class="QLabel" name="lb_A_21"> |
<property name="text"> |
<string>Analog 21</string> |
</property> |
</widget> |
</item> |
<item row="5" column="1"> |
<widget class="QLineEdit" name="le_A_21"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="6" column="0"> |
<widget class="QLabel" name="lb_A_22"> |
<property name="text"> |
<string>Analog 22</string> |
</property> |
</widget> |
</item> |
<item row="6" column="1"> |
<widget class="QLineEdit" name="le_A_22"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="7" column="0"> |
<widget class="QLabel" name="lb_A_23"> |
<property name="text"> |
<string>Analog 23</string> |
</property> |
</widget> |
</item> |
<item row="7" column="1"> |
<widget class="QLineEdit" name="le_A_23"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item> |
<widget class="QFrame" name="frame_17"> |
<property name="frameShape"> |
<enum>QFrame::StyledPanel</enum> |
</property> |
<property name="frameShadow"> |
<enum>QFrame::Raised</enum> |
</property> |
<layout class="QGridLayout" name="gridLayout_6"> |
<item row="0" column="0"> |
<widget class="QLabel" name="lb_A_24"> |
<property name="text"> |
<string>Analog 24</string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QLineEdit" name="le_A_24"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="lb_A_25"> |
<property name="text"> |
<string>Analog 25</string> |
</property> |
</widget> |
</item> |
<item row="1" column="1"> |
<widget class="QLineEdit" name="le_A_25"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="2" column="0"> |
<widget class="QLabel" name="lb_A_26"> |
<property name="text"> |
<string>Analog 26</string> |
</property> |
</widget> |
</item> |
<item row="2" column="1"> |
<widget class="QLineEdit" name="le_A_26"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="3" column="0"> |
<widget class="QLabel" name="lb_A_27"> |
<property name="text"> |
<string>Analog 27</string> |
</property> |
</widget> |
</item> |
<item row="3" column="1"> |
<widget class="QLineEdit" name="le_A_27"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="4" column="0"> |
<widget class="QLabel" name="lb_A_28"> |
<property name="text"> |
<string>Analog 28</string> |
</property> |
</widget> |
</item> |
<item row="4" column="1"> |
<widget class="QLineEdit" name="le_A_28"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="5" column="0"> |
<widget class="QLabel" name="lb_A_29"> |
<property name="text"> |
<string>Analog 29</string> |
</property> |
</widget> |
</item> |
<item row="5" column="1"> |
<widget class="QLineEdit" name="le_A_29"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="6" column="0"> |
<widget class="QLabel" name="lb_A_30"> |
<property name="text"> |
<string>Analog 30</string> |
</property> |
</widget> |
</item> |
<item row="6" column="1"> |
<widget class="QLineEdit" name="le_A_30"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="7" column="0"> |
<widget class="QLabel" name="lb_A_31"> |
<property name="text"> |
<string>Analog 31</string> |
</property> |
</widget> |
</item> |
<item row="7" column="1"> |
<widget class="QLineEdit" name="le_A_31"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string>0</string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
</layout> |
</item> |
</layout> |
</widget> |
<widget class="QWidget" name="Tab_1"> |
<attribute name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Plotter-NO.png</normaloff>:/Actions/Images/Actions/Plotter-NO.png</iconset> |
</attribute> |
<attribute name="title"> |
<string>Plotter</string> |
</attribute> |
<layout class="QGridLayout" name="gridLayout_35"> |
<item row="0" column="0"> |
<widget class="QwtPlot" name="qwtPlot"/> |
</item> |
<item row="1" column="0"> |
<layout class="QHBoxLayout" name="horizontalLayout_2"> |
<item> |
<widget class="QScrollBar" name="scroll_plot"> |
<property name="sizePolicy"> |
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> |
<horstretch>0</horstretch> |
<verstretch>0</verstretch> |
</sizepolicy> |
</property> |
<property name="maximum"> |
<number>0</number> |
</property> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QPushButton" name="pb_StartPlotter"> |
<property name="sizePolicy"> |
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> |
<horstretch>0</horstretch> |
<verstretch>0</verstretch> |
</sizepolicy> |
</property> |
<property name="text"> |
<string>Start Plotter</string> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Plotter-NO.png</normaloff>:/Actions/Images/Actions/Plotter-NO.png</iconset> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
</layout> |
</widget> |
<widget class="QWidget" name="Tab_3"> |
<attribute name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Terminal.png</normaloff>:/Actions/Images/Actions/Terminal.png</iconset> |
</attribute> |
<attribute name="title"> |
<string>Terminal </string> |
</attribute> |
<layout class="QGridLayout" name="gridLayout_2"> |
<item row="0" column="0" colspan="8"> |
<widget class="QTextEdit" name="te_RX"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<pointsize>10</pointsize> |
</font> |
</property> |
<property name="html"> |
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> |
<html><head><meta name="qrichtext" content="1" /><style type="text/css"> |
p, li { white-space: pre-wrap; } |
</style></head><body style=" font-family:'Adobe Courier'; font-size:10pt; font-weight:400; font-style:normal;"> |
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html></string> |
</property> |
</widget> |
</item> |
<item row="1" column="1"> |
<widget class="QCheckBox" name="cb_ShowData"> |
<property name="text"> |
<string>Datenpackete </string> |
</property> |
</widget> |
</item> |
<item row="1" column="2"> |
<widget class="QCheckBox" name="cb_ShowMSG"> |
<property name="text"> |
<string>Meldungen </string> |
</property> |
</widget> |
</item> |
<item row="1" column="6"> |
<spacer name="horizontalSpacer_13"> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>376</width> |
<height>20</height> |
</size> |
</property> |
</spacer> |
</item> |
<item row="1" column="4"> |
<widget class="QCheckBox" name="cb_ShowAlways"> |
<property name="text"> |
<string>auch wenn ausgeblendet </string> |
</property> |
</widget> |
</item> |
<item row="1" column="3"> |
<widget class="QCheckBox" name="cb_ShowSend"> |
<property name="text"> |
<string>gesendete Daten </string> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="label_2"> |
<property name="text"> |
<string>Anzeigen: </string> |
</property> |
</widget> |
</item> |
<item row="1" column="7"> |
<widget class="QPushButton" name="pb_Clear"> |
<property name="text"> |
<string>Löschen</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
<widget class="QWidget" name="Tab_4"> |
<attribute name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Cockpit.png</normaloff>:/Actions/Images/Actions/Cockpit.png</iconset> |
</attribute> |
<attribute name="title"> |
<string>Cockpit</string> |
</attribute> |
<layout class="QGridLayout" name="gridLayout_13"> |
<item row="0" column="0"> |
<widget class="QGroupBox" name="groupBox"> |
<property name="title"> |
<string>Informationen</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_8"> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_14"> |
<property name="text"> |
<string>Modus:</string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QLabel" name="lb_Mode"> |
<property name="palette"> |
<palette> |
<active> |
<colorrole role="WindowText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>71</red> |
<green>164</green> |
<blue>50</blue> |
</color> |
</brush> |
</colorrole> |
</active> |
<inactive> |
<colorrole role="WindowText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>71</red> |
<green>164</green> |
<blue>50</blue> |
</color> |
</brush> |
</colorrole> |
</inactive> |
<disabled> |
<colorrole role="WindowText"> |
<brush brushstyle="SolidPattern"> |
<color alpha="255"> |
<red>126</red> |
<green>125</green> |
<blue>124</blue> |
</color> |
</brush> |
</colorrole> |
</disabled> |
</palette> |
</property> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="frameShape"> |
<enum>QFrame::Box</enum> |
</property> |
<property name="lineWidth"> |
<number>2</number> |
</property> |
<property name="text"> |
<string/> |
</property> |
<property name="alignment"> |
<set>Qt::AlignCenter</set> |
</property> |
</widget> |
</item> |
<item row="6" column="0"> |
<widget class="QLabel" name="label_7"> |
<property name="text"> |
<string>Entfernung:</string> |
</property> |
</widget> |
</item> |
<item row="6" column="1"> |
<widget class="QLineEdit" name="le_CDistance"> |
<property name="minimumSize"> |
<size> |
<width>100</width> |
<height>0</height> |
</size> |
</property> |
<property name="maximumSize"> |
<size> |
<width>100</width> |
<height>16777215</height> |
</size> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="9" column="0"> |
<widget class="QLabel" name="label_5"> |
<property name="text"> |
<string>Aktueller Wegpunkt:</string> |
</property> |
</widget> |
</item> |
<item row="9" column="1"> |
<widget class="QLineEdit" name="le_CWPA"> |
<property name="minimumSize"> |
<size> |
<width>100</width> |
<height>0</height> |
</size> |
</property> |
<property name="maximumSize"> |
<size> |
<width>100</width> |
<height>16777215</height> |
</size> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="3" column="1" rowspan="3"> |
<widget class="QLineEdit" name="le_CSats"> |
<property name="minimumSize"> |
<size> |
<width>100</width> |
<height>0</height> |
</size> |
</property> |
<property name="maximumSize"> |
<size> |
<width>100</width> |
<height>16777215</height> |
</size> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="4" column="0"> |
<widget class="QLabel" name="label_6"> |
<property name="text"> |
<string>Satelliten: </string> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="label_3"> |
<property name="text"> |
<string>Flugzeit:</string> |
</property> |
</widget> |
</item> |
<item row="1" column="1"> |
<widget class="QLineEdit" name="le_CTime"> |
<property name="minimumSize"> |
<size> |
<width>100</width> |
<height>0</height> |
</size> |
</property> |
<property name="maximumSize"> |
<size> |
<width>100</width> |
<height>16777215</height> |
</size> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="7" column="0"> |
<widget class="QLabel" name="label_4"> |
<property name="text"> |
<string>Wegpunkte Total:</string> |
</property> |
</widget> |
</item> |
<item row="7" column="1"> |
<widget class="QLineEdit" name="le_CWPT"> |
<property name="minimumSize"> |
<size> |
<width>100</width> |
<height>0</height> |
</size> |
</property> |
<property name="maximumSize"> |
<size> |
<width>100</width> |
<height>16777215</height> |
</size> |
</property> |
<property name="alignment"> |
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
</property> |
<property name="readOnly"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item row="10" column="1"> |
<spacer name="verticalSpacer_3"> |
<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"> |
<spacer name="horizontalSpacer_14"> |
<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="0" column="2"> |
<widget class="QGroupBox" name="box_Flugdaten"> |
<property name="title"> |
<string>Flugdaten</string> |
</property> |
<layout class="QGridLayout" name="gridLayout"> |
<item row="0" column="0"> |
<layout class="QVBoxLayout" name="LayOut_Speed"> |
<item> |
<widget class="QLabel" name="label_145"> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> |
<html><head><meta name="qrichtext" content="1" /><style type="text/css"> |
p, li { white-space: pre-wrap; } |
</style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:600; font-style:normal;"> |
<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Geschwindigkeit</p> |
<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html></string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignHCenter|Qt::AlignTop</set> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
<item row="0" column="1"> |
<layout class="QVBoxLayout" name="verticalLayout"> |
<item> |
<widget class="QLabel" name="label_143"> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> |
<html><head><meta name="qrichtext" content="1" /><style type="text/css"> |
p, li { white-space: pre-wrap; } |
</style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:600; font-style:normal;"> |
<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ausrichtung</p> |
<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html></string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignHCenter|Qt::AlignTop</set> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
<item row="0" column="2"> |
<layout class="QVBoxLayout" name="verticalLayout_6"> |
<item> |
<widget class="QLabel" name="label_142"> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> |
<html><head><meta name="qrichtext" content="1" /><style type="text/css"> |
p, li { white-space: pre-wrap; } |
</style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:600; font-style:normal;"> |
<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Flugrichtung</p> |
<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html></string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignHCenter|Qt::AlignTop</set> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QwtCompass" name="Compass"> |
<property name="minimumSize"> |
<size> |
<width>125</width> |
<height>125</height> |
</size> |
</property> |
<property name="maximumSize"> |
<size> |
<width>125</width> |
<height>125</height> |
</size> |
</property> |
<property name="lineWidth"> |
<number>4</number> |
</property> |
<property name="frameShadow"> |
<enum>QwtDial::Sunken</enum> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
<item row="0" column="3"> |
<layout class="QVBoxLayout" name="verticalLayout_2"> |
<item> |
<widget class="QLabel" name="label_144"> |
<property name="font"> |
<font> |
<weight>75</weight> |
<bold>true</bold> |
</font> |
</property> |
<property name="text"> |
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> |
<html><head><meta name="qrichtext" content="1" /><style type="text/css"> |
p, li { white-space: pre-wrap; } |
</style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:600; font-style:normal;"> |
<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Höhen-</p> |
<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">änderung</p></body></html></string> |
</property> |
<property name="alignment"> |
<set>Qt::AlignHCenter|Qt::AlignTop</set> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QwtSlider" name="qwt_Rate"> |
<property name="orientation"> |
<enum>Qt::Vertical</enum> |
</property> |
<property name="scalePosition"> |
<enum>QwtSlider::LeftScale</enum> |
</property> |
<property name="bgStyle"> |
<enum>QwtSlider::BgTrough</enum> |
</property> |
<property name="thumbLength"> |
<number>10</number> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
<item row="1" column="1"> |
<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 row="1" column="0" colspan="3"> |
<widget class="QGroupBox" name="box_System"> |
<property name="title"> |
<string>System</string> |
</property> |
<layout class="QHBoxLayout" name="horizontalLayout_12"> |
<item> |
<widget class="QLabel" name="label"> |
<property name="text"> |
<string>Spannung:</string> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QProgressBar" name="bar_UBAT"> |
<property name="maximum"> |
<number>140</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
<property name="format"> |
<string>%v</string> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QLabel" name="label_133"> |
<property name="text"> |
<string>Empfang:</string> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QProgressBar" name="bar_RX"> |
<property name="maximum"> |
<number>255</number> |
</property> |
<property name="value"> |
<number>0</number> |
</property> |
<property name="format"> |
<string>%v</string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
</layout> |
</widget> |
<widget class="QWidget" name="Tab_5"> |
<attribute name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Firmware.png</normaloff>:/Actions/Images/Actions/Firmware.png</iconset> |
</attribute> |
<attribute name="title"> |
<string>Firmware Update </string> |
</attribute> |
<layout class="QGridLayout" name="gridLayout_37"> |
<item row="0" column="0"> |
<widget class="QTextEdit" name="te_Shell"> |
<property name="font"> |
<font> |
<family>Adobe Courier</family> |
<pointsize>10</pointsize> |
</font> |
</property> |
</widget> |
</item> |
<item row="1" column="0"> |
<widget class="QFrame" name="frame_20"> |
<property name="frameShape"> |
<enum>QFrame::StyledPanel</enum> |
</property> |
<property name="frameShadow"> |
<enum>QFrame::Raised</enum> |
</property> |
<layout class="QHBoxLayout" name="horizontalLayout_3"> |
<item> |
<widget class="QPushButton" name="pb_SettingsReset"> |
<property name="enabled"> |
<bool>false</bool> |
</property> |
<property name="text"> |
<string>Settings zurĂĽcksetzen</string> |
</property> |
</widget> |
</item> |
<item> |
<spacer name="horizontalSpacer"> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>178</width> |
<height>17</height> |
</size> |
</property> |
</spacer> |
</item> |
<item> |
<widget class="QRadioButton" name="rb_FC"> |
<property name="text"> |
<string>FlightCtrl </string> |
</property> |
<property name="checked"> |
<bool>true</bool> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QRadioButton" name="rb_MK3MAG"> |
<property name="text"> |
<string>MK3Mag </string> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QRadioButton" name="rb_BL"> |
<property name="enabled"> |
<bool>true</bool> |
</property> |
<property name="text"> |
<string>BL-Ctrl </string> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QRadioButton" name="rb_NC"> |
<property name="enabled"> |
<bool>false</bool> |
</property> |
<property name="text"> |
<string>NaviCtrl </string> |
</property> |
</widget> |
</item> |
</layout> |
</widget> |
</item> |
<item row="2" column="0"> |
<layout class="QHBoxLayout" name="horizontalLayout_11"> |
<item> |
<widget class="QPushButton" name="pb_HexFile"> |
<property name="sizePolicy"> |
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> |
<horstretch>0</horstretch> |
<verstretch>0</verstretch> |
</sizepolicy> |
</property> |
<property name="text"> |
<string>Firmeware-Datei auswählen</string> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QLineEdit" name="le_HexFile"> |
<property name="text"> |
<string/> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QPushButton" name="pb_Update"> |
<property name="sizePolicy"> |
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> |
<horstretch>0</horstretch> |
<verstretch>0</verstretch> |
</sizepolicy> |
</property> |
<property name="text"> |
<string>Updaten</string> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QPushButton" name="pb_Flash"> |
<property name="enabled"> |
<bool>false</bool> |
</property> |
<property name="text"> |
<string>Flashen</string> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
</layout> |
</widget> |
<widget class="QWidget" name="Tab_6"> |
<attribute name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Waypoints.png</normaloff>:/Actions/Images/Actions/Waypoints.png</iconset> |
</attribute> |
<attribute name="title"> |
<string>Wegpunkte</string> |
</attribute> |
<layout class="QGridLayout" name="gridLayout_11"> |
<item row="0" column="0"> |
<layout class="QVBoxLayout" name="verticalLayout_3"> |
<item> |
<widget class="QGroupBox" name="groupBox_3"> |
<property name="title"> |
<string>Aktuelle Position</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_14"> |
<item row="0" column="0"> |
<layout class="QGridLayout" name="gridLayout_15"> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_10"> |
<property name="text"> |
<string>Longitude:</string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QLineEdit" name="le_CurLong"/> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="label_11"> |
<property name="text"> |
<string>Latitude:</string> |
</property> |
</widget> |
</item> |
<item row="1" column="1"> |
<widget class="QLineEdit" name="le_CurLat"/> |
</item> |
</layout> |
</item> |
</layout> |
</widget> |
</item> |
<item> |
<widget class="QGroupBox" name="groupBox_2"> |
<property name="title"> |
<string>Ziel-Position</string> |
</property> |
<layout class="QGridLayout" name="gridLayout_10"> |
<item row="0" column="0"> |
<layout class="QGridLayout" name="gridLayout_9"> |
<item row="0" column="0"> |
<widget class="QLabel" name="label_8"> |
<property name="text"> |
<string>Longitude:</string> |
</property> |
</widget> |
</item> |
<item row="0" column="1"> |
<widget class="QLineEdit" name="le_TarLong"/> |
</item> |
<item row="1" column="0"> |
<widget class="QLabel" name="label_9"> |
<property name="text"> |
<string>Latitude:</string> |
</property> |
</widget> |
</item> |
<item row="1" column="1"> |
<widget class="QLineEdit" name="le_TarLat"/> |
</item> |
<item row="2" column="0"> |
<widget class="QLabel" name="label_12"> |
<property name="text"> |
<string>Verweilzeit:</string> |
</property> |
</widget> |
</item> |
<item row="2" column="1"> |
<layout class="QHBoxLayout" name="horizontalLayout_4"> |
<item> |
<widget class="QSpinBox" name="sb_TarTime"> |
<property name="maximum"> |
<number>300</number> |
</property> |
</widget> |
</item> |
<item> |
<widget class="QLabel" name="label_13"> |
<property name="text"> |
<string>Sek.</string> |
</property> |
</widget> |
</item> |
</layout> |
</item> |
</layout> |
</item> |
</layout> |
</widget> |
</item> |
</layout> |
</item> |
<item row="0" column="2"> |
<spacer name="horizontalSpacer_2"> |
<property name="orientation"> |
<enum>Qt::Horizontal</enum> |
</property> |
<property name="sizeHint" stdset="0"> |
<size> |
<width>337</width> |
<height>228</height> |
</size> |
</property> |
</spacer> |
</item> |
<item row="1" column="0"> |
<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="0" column="1"> |
<spacer name="horizontalSpacer_3"> |
<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> |
</widget> |
<widget class="QWidget" name="Seite"> |
<attribute name="title"> |
<string>Debug</string> |
</attribute> |
<widget class="QLabel" name="lb_Port"> |
<property name="geometry"> |
<rect> |
<x>10</x> |
<y>20</y> |
<width>71</width> |
<height>27</height> |
</rect> |
</property> |
<property name="text"> |
<string>Device: </string> |
</property> |
</widget> |
<widget class="QLineEdit" name="le_Port"> |
<property name="geometry"> |
<rect> |
<x>100</x> |
<y>20</y> |
<width>101</width> |
<height>27</height> |
</rect> |
</property> |
<property name="sizePolicy"> |
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> |
<horstretch>0</horstretch> |
<verstretch>0</verstretch> |
</sizepolicy> |
</property> |
<property name="text"> |
<string>/dev/ttyUSB0</string> |
</property> |
</widget> |
<widget class="QRadioButton" name="rb_SelFC"> |
<property name="geometry"> |
<rect> |
<x>250</x> |
<y>20</y> |
<width>147</width> |
<height>21</height> |
</rect> |
</property> |
<property name="text"> |
<string>FlightCtrl</string> |
</property> |
</widget> |
<widget class="QRadioButton" name="rb_SelNC"> |
<property name="geometry"> |
<rect> |
<x>410</x> |
<y>20</y> |
<width>146</width> |
<height>21</height> |
</rect> |
</property> |
<property name="text"> |
<string>NaviCtrl</string> |
</property> |
</widget> |
<widget class="QRadioButton" name="rb_SelMag"> |
<property name="geometry"> |
<rect> |
<x>570</x> |
<y>20</y> |
<width>147</width> |
<height>21</height> |
</rect> |
</property> |
<property name="text"> |
<string>MK3Mag</string> |
</property> |
</widget> |
<widget class="QPushButton" name="Dec"> |
<property name="geometry"> |
<rect> |
<x>4</x> |
<y>240</y> |
<width>281</width> |
<height>26</height> |
</rect> |
</property> |
<property name="text"> |
<string>Decode</string> |
</property> |
</widget> |
<widget class="QLineEdit" name="IN"> |
<property name="geometry"> |
<rect> |
<x>130</x> |
<y>50</y> |
<width>501</width> |
<height>27</height> |
</rect> |
</property> |
<property name="text"> |
<string/> |
</property> |
</widget> |
<widget class="QTextEdit" name="te_KML"> |
<property name="geometry"> |
<rect> |
<x>340</x> |
<y>110</y> |
<width>251</width> |
<height>81</height> |
</rect> |
</property> |
</widget> |
<widget class="QComboBox" name="cb_device"> |
<property name="geometry"> |
<rect> |
<x>10</x> |
<y>60</y> |
<width>114</width> |
<height>26</height> |
</rect> |
</property> |
<property name="editable"> |
<bool>true</bool> |
</property> |
</widget> |
<widget class="QCheckBox" name="cb_ClipBoard"> |
<property name="geometry"> |
<rect> |
<x>340</x> |
<y>200</y> |
<width>341</width> |
<height>23</height> |
</rect> |
</property> |
<property name="text"> |
<string>ĂĽberwache Zwischenablage</string> |
</property> |
</widget> |
<widget class="QPushButton" name="pb_FlyTo"> |
<property name="geometry"> |
<rect> |
<x>340</x> |
<y>230</y> |
<width>319</width> |
<height>24</height> |
</rect> |
</property> |
<property name="text"> |
<string>Fliege da hin</string> |
</property> |
</widget> |
<widget class="QComboBox" name="cb_Port"> |
<property name="geometry"> |
<rect> |
<x>120</x> |
<y>110</y> |
<width>111</width> |
<height>25</height> |
</rect> |
</property> |
<property name="editable"> |
<bool>true</bool> |
</property> |
</widget> |
</widget> |
</widget> |
</item> |
</layout> |
</widget> |
<widget class="QMenuBar" name="menubar"> |
<property name="geometry"> |
<rect> |
<x>0</x> |
<y>0</y> |
<width>709</width> |
<height>23</height> |
</rect> |
</property> |
<widget class="QMenu" name="menuProgramm"> |
<property name="title"> |
<string>&Programm</string> |
</property> |
<addaction name="ac_ConnectTTY"/> |
<addaction name="ac_QMKServer"/> |
<addaction name="separator"/> |
<addaction name="ac_Quit"/> |
</widget> |
<widget class="QMenu" name="menuEinstellungen"> |
<property name="title"> |
<string>&Einstellungen</string> |
</property> |
<addaction name="ac_MotorMixer"/> |
<addaction name="separator"/> |
<addaction name="ac_Preferences"/> |
<addaction name="ac_Config"/> |
</widget> |
<widget class="QMenu" name="menu_Help"> |
<property name="title"> |
<string>Hilfe</string> |
</property> |
<addaction name="ac_About"/> |
</widget> |
<widget class="QMenu" name="menuDaten"> |
<property name="title"> |
<string>&Debug-Daten</string> |
</property> |
<addaction name="ac_RecordCSV"/> |
<addaction name="ac_StartPlotter"/> |
<addaction name="separator"/> |
<addaction name="ac_FastDebug"/> |
<addaction name="ac_NoDebug"/> |
<addaction name="separator"/> |
<addaction name="ac_GetLabels"/> |
</widget> |
<widget class="QMenu" name="menuAnsicht"> |
<property name="title"> |
<string>&Ansicht</string> |
</property> |
<widget class="QMenu" name="menuBereiche"> |
<property name="title"> |
<string>Bereiche</string> |
</property> |
<addaction name="ac_View0"/> |
<addaction name="ac_View1"/> |
<addaction name="ac_View2"/> |
<addaction name="ac_View3"/> |
<addaction name="ac_View4"/> |
<addaction name="ac_View5"/> |
<addaction name="ac_View6"/> |
</widget> |
<addaction name="menuBereiche"/> |
</widget> |
<widget class="QMenu" name="menuWerkzeuge"> |
<property name="title"> |
<string>Werkzeuge</string> |
</property> |
<addaction name="ac_Motortest"/> |
<addaction name="ac_LCD"/> |
<addaction name="ac_Map"/> |
</widget> |
<widget class="QMenu" name="menuHardware"> |
<property name="title"> |
<string>Hardware</string> |
</property> |
<addaction name="ac_SelFC"/> |
<addaction name="ac_SelNC"/> |
<addaction name="ac_SelMag"/> |
<addaction name="separator"/> |
</widget> |
<widget class="QMenu" name="menu_Navi_Daten"> |
<property name="title"> |
<string>&Navi-Daten</string> |
</property> |
<addaction name="ac_StartServer"/> |
<addaction name="separator"/> |
<addaction name="ac_FastNavi"/> |
<addaction name="ac_NoNavi"/> |
</widget> |
<addaction name="menuProgramm"/> |
<addaction name="menuHardware"/> |
<addaction name="menuAnsicht"/> |
<addaction name="menuDaten"/> |
<addaction name="menu_Navi_Daten"/> |
<addaction name="menuEinstellungen"/> |
<addaction name="menuWerkzeuge"/> |
<addaction name="menu_Help"/> |
</widget> |
<widget class="QToolBar" name="tb_Allgemein"> |
<property name="windowTitle"> |
<string>Allgemein</string> |
</property> |
<property name="iconSize"> |
<size> |
<width>22</width> |
<height>22</height> |
</size> |
</property> |
<property name="toolButtonStyle"> |
<enum>Qt::ToolButtonIconOnly</enum> |
</property> |
<attribute name="toolBarArea"> |
<enum>TopToolBarArea</enum> |
</attribute> |
<attribute name="toolBarBreak"> |
<bool>false</bool> |
</attribute> |
<addaction name="ac_ConnectTTY"/> |
<addaction name="ac_QMKServer"/> |
<addaction name="separator"/> |
<addaction name="ac_StartServer"/> |
<addaction name="ac_Map"/> |
</widget> |
<widget class="QToolBar" name="tb_Werkzeuge"> |
<property name="windowTitle"> |
<string>Werkzeuge</string> |
</property> |
<property name="iconSize"> |
<size> |
<width>22</width> |
<height>22</height> |
</size> |
</property> |
<property name="toolButtonStyle"> |
<enum>Qt::ToolButtonIconOnly</enum> |
</property> |
<attribute name="toolBarArea"> |
<enum>TopToolBarArea</enum> |
</attribute> |
<attribute name="toolBarBreak"> |
<bool>false</bool> |
</attribute> |
<addaction name="ac_Motortest"/> |
<addaction name="ac_LCD"/> |
</widget> |
<widget class="QToolBar" name="tb_Debug"> |
<property name="windowTitle"> |
<string>Debug-Daten</string> |
</property> |
<property name="iconSize"> |
<size> |
<width>22</width> |
<height>22</height> |
</size> |
</property> |
<property name="toolButtonStyle"> |
<enum>Qt::ToolButtonIconOnly</enum> |
</property> |
<attribute name="toolBarArea"> |
<enum>TopToolBarArea</enum> |
</attribute> |
<attribute name="toolBarBreak"> |
<bool>false</bool> |
</attribute> |
<addaction name="ac_StartPlotter"/> |
<addaction name="ac_FastDebug"/> |
<addaction name="ac_RecordCSV"/> |
</widget> |
<widget class="QToolBar" name="tb_TTY"> |
<property name="windowTitle"> |
<string>Schnittstelle</string> |
</property> |
<attribute name="toolBarArea"> |
<enum>TopToolBarArea</enum> |
</attribute> |
<attribute name="toolBarBreak"> |
<bool>false</bool> |
</attribute> |
</widget> |
<widget class="QToolBar" name="tb_Hardware"> |
<property name="windowTitle"> |
<string>Hardware</string> |
</property> |
<attribute name="toolBarArea"> |
<enum>TopToolBarArea</enum> |
</attribute> |
<attribute name="toolBarBreak"> |
<bool>false</bool> |
</attribute> |
</widget> |
<action name="ac_LogDir"> |
<property name="text"> |
<string>Log-Verzeichniss</string> |
</property> |
</action> |
<action name="ac_ParameterDir"> |
<property name="text"> |
<string>Parameter-Verzeichniss</string> |
</property> |
</action> |
<action name="ac_Quit"> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Exit.png</normaloff>:/Actions/Images/Actions/Exit.png</iconset> |
</property> |
<property name="text"> |
<string>&Beenden</string> |
</property> |
</action> |
<action name="ac_About"> |
<property name="text"> |
<string>Ăśber QMK-Groundstation</string> |
</property> |
</action> |
<action name="ac_ConnectTTY"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Seriell-NO.png</normaloff> |
<normalon>:/Actions/Images/Actions/Seriell-OK.png</normalon>:/Actions/Images/Actions/Seriell-NO.png</iconset> |
</property> |
<property name="text"> |
<string>Kopter Verbinden</string> |
</property> |
</action> |
<action name="ac_RecordCSV"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/CVS-Record.png</normaloff> |
<normalon>:/Actions/Images/Actions/CVS-Stop.png</normalon>:/Actions/Images/Actions/CVS-Record.png</iconset> |
</property> |
<property name="text"> |
<string>CSV Aufzeichnen</string> |
</property> |
</action> |
<action name="ac_StartPlotter"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Plotter-NO.png</normaloff> |
<normalon>:/Actions/Images/Actions/Plotter-OK.png</normalon>:/Actions/Images/Actions/Plotter-NO.png</iconset> |
</property> |
<property name="text"> |
<string>Start Plotter</string> |
</property> |
</action> |
<action name="ac_Config"> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Preferences-Data.png</normaloff>:/Actions/Images/Actions/Preferences-Data.png</iconset> |
</property> |
<property name="text"> |
<string>Datenfelder wählen</string> |
</property> |
</action> |
<action name="ac_FastDebug"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Fast-Data.png</normaloff>:/Actions/Images/Actions/Fast-Data.png</iconset> |
</property> |
<property name="text"> |
<string>Schnelle Debugdaten</string> |
</property> |
</action> |
<action name="ac_View0"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="checked"> |
<bool>false</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Debug.png</normaloff>:/Actions/Images/Actions/Debug.png</iconset> |
</property> |
<property name="text"> |
<string>Debug-Daten</string> |
</property> |
</action> |
<action name="ac_View1"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="checked"> |
<bool>false</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Plotter-NO.png</normaloff>:/Actions/Images/Actions/Plotter-NO.png</iconset> |
</property> |
<property name="text"> |
<string>Plotter</string> |
</property> |
</action> |
<action name="ac_View2"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="checked"> |
<bool>false</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/FC-Settings.png</normaloff>:/Actions/Images/Actions/FC-Settings.png</iconset> |
</property> |
<property name="text"> |
<string>FC-Settings</string> |
</property> |
</action> |
<action name="ac_View3"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="checked"> |
<bool>false</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Terminal.png</normaloff>:/Actions/Images/Actions/Terminal.png</iconset> |
</property> |
<property name="text"> |
<string>Terminal</string> |
</property> |
</action> |
<action name="ac_View4"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="checked"> |
<bool>false</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Cockpit.png</normaloff>:/Actions/Images/Actions/Cockpit.png</iconset> |
</property> |
<property name="text"> |
<string>Cockpit</string> |
</property> |
</action> |
<action name="ac_View5"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="checked"> |
<bool>false</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Firmware.png</normaloff>:/Actions/Images/Actions/Firmware.png</iconset> |
</property> |
<property name="text"> |
<string>Firmware Update</string> |
</property> |
</action> |
<action name="ac_GetLabels"> |
<property name="text"> |
<string>Beschreibungen abfragen</string> |
</property> |
</action> |
<action name="ac_Preferences"> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Preferences.png</normaloff>:/Actions/Images/Actions/Preferences.png</iconset> |
</property> |
<property name="text"> |
<string>QMK Einrichten</string> |
</property> |
</action> |
<action name="ac_Motortest"> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Motortest.png</normaloff>:/Actions/Images/Actions/Motortest.png</iconset> |
</property> |
<property name="text"> |
<string>Motortest</string> |
</property> |
</action> |
<action name="ac_SelFC"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="text"> |
<string>FlightCtrl</string> |
</property> |
</action> |
<action name="ac_SelNC"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="text"> |
<string>NaviCtrl</string> |
</property> |
</action> |
<action name="ac_SelMag"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="text"> |
<string>MK3Mag</string> |
</property> |
</action> |
<action name="ac_NoDebug"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="text"> |
<string>Debugdaten abschalten.</string> |
</property> |
</action> |
<action name="ac_StartServer"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Google-NO.png</normaloff> |
<normalon>:/Actions/Images/Actions/Google-OK.png</normalon>:/Actions/Images/Actions/Google-NO.png</iconset> |
</property> |
<property name="text"> |
<string>KML-Server</string> |
</property> |
</action> |
<action name="ac_FastNavi"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Fast-Data.png</normaloff>:/Actions/Images/Actions/Fast-Data.png</iconset> |
</property> |
<property name="text"> |
<string>Schnelle Navi-Daten</string> |
</property> |
</action> |
<action name="ac_NoNavi"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="text"> |
<string>Navidaten abschalten</string> |
</property> |
</action> |
<action name="ac_QMKServer"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="enabled"> |
<bool>false</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Network-NO.png</normaloff> |
<normalon>:/Actions/Images/Actions/Network-OK.png</normalon>:/Actions/Images/Actions/Network-NO.png</iconset> |
</property> |
<property name="text"> |
<string>QMK Server Verbinden</string> |
</property> |
</action> |
<action name="ac_View6"> |
<property name="checkable"> |
<bool>true</bool> |
</property> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Waypoints.png</normaloff>:/Actions/Images/Actions/Waypoints.png</iconset> |
</property> |
<property name="text"> |
<string>Wegpunkte</string> |
</property> |
</action> |
<action name="ac_LCD"> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/LCD.png</normaloff>:/Actions/Images/Actions/LCD.png</iconset> |
</property> |
<property name="text"> |
<string>LCD-Display</string> |
</property> |
</action> |
<action name="ac_Map"> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/Waypoints.png</normaloff>:/Actions/Images/Actions/Waypoints.png</iconset> |
</property> |
<property name="text"> |
<string>Flug-Karte</string> |
</property> |
</action> |
<action name="ac_MotorMixer"> |
<property name="icon"> |
<iconset resource="../MKTool.qrc"> |
<normaloff>:/Actions/Images/Actions/MotorMixer.png</normaloff>:/Actions/Images/Actions/MotorMixer.png</iconset> |
</property> |
<property name="text"> |
<string>Motor-Mixer</string> |
</property> |
</action> |
</widget> |
<customwidgets> |
<customwidget> |
<class>QwtPlot</class> |
<extends>QFrame</extends> |
<header>qwt_plot.h</header> |
<container>1</container> |
</customwidget> |
<customwidget> |
<class>QwtCompass</class> |
<extends>QwtDial</extends> |
<header>qwt_compass.h</header> |
</customwidget> |
<customwidget> |
<class>QwtDial</class> |
<extends>QWidget</extends> |
<header>qwt_dial.h</header> |
</customwidget> |
<customwidget> |
<class>QwtSlider</class> |
<extends>QWidget</extends> |
<header>qwt_slider.h</header> |
</customwidget> |
</customwidgets> |
<resources> |
<include location="../MKTool.qrc"/> |
</resources> |
<connections> |
<connection> |
<sender>ac_Quit</sender> |
<signal>triggered()</signal> |
<receiver>dlg_mktool_UI</receiver> |
<slot>close()</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>-1</x> |
<y>-1</y> |
</hint> |
<hint type="destinationlabel"> |
<x>384</x> |
<y>209</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>pb_StartPlotter</sender> |
<signal>clicked()</signal> |
<receiver>ac_StartPlotter</receiver> |
<slot>trigger()</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>756</x> |
<y>370</y> |
</hint> |
<hint type="destinationlabel"> |
<x>-1</x> |
<y>-1</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>rb_SelFC</sender> |
<signal>toggled(bool)</signal> |
<receiver>ac_SelFC</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>299</x> |
<y>194</y> |
</hint> |
<hint type="destinationlabel"> |
<x>-1</x> |
<y>-1</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>rb_SelMag</sender> |
<signal>toggled(bool)</signal> |
<receiver>ac_SelMag</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>504</x> |
<y>194</y> |
</hint> |
<hint type="destinationlabel"> |
<x>-1</x> |
<y>-1</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>rb_SelNC</sender> |
<signal>toggled(bool)</signal> |
<receiver>ac_SelNC</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>404</x> |
<y>194</y> |
</hint> |
<hint type="destinationlabel"> |
<x>-1</x> |
<y>-1</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>ac_SelFC</sender> |
<signal>triggered(bool)</signal> |
<receiver>rb_SelFC</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>-1</x> |
<y>-1</y> |
</hint> |
<hint type="destinationlabel"> |
<x>299</x> |
<y>194</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>ac_SelMag</sender> |
<signal>triggered(bool)</signal> |
<receiver>rb_SelMag</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>-1</x> |
<y>-1</y> |
</hint> |
<hint type="destinationlabel"> |
<x>504</x> |
<y>194</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>ac_SelNC</sender> |
<signal>triggered(bool)</signal> |
<receiver>rb_SelNC</receiver> |
<slot>setChecked(bool)</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>-1</x> |
<y>-1</y> |
</hint> |
<hint type="destinationlabel"> |
<x>404</x> |
<y>194</y> |
</hint> |
</hints> |
</connection> |
<connection> |
<sender>pb_Clear</sender> |
<signal>clicked()</signal> |
<receiver>te_RX</receiver> |
<slot>clear()</slot> |
<hints> |
<hint type="sourcelabel"> |
<x>736</x> |
<y>372</y> |
</hint> |
<hint type="destinationlabel"> |
<x>392</x> |
<y>225</y> |
</hint> |
</hints> |
</connection> |
</connections> |
</ui> |
/QMK-Groundstation/tags/V1.0.1/Forms/wdg_Settings.cpp |
---|
0,0 → 1,961 |
/*************************************************************************** |
* Copyright (C) 2008 by Manuel Schrape * |
* manuel.schrape@gmx.de * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
***************************************************************************/ |
#include <QFileDialog> |
#include <QSettings> |
#include "wdg_Settings.h" |
#include "../Classes/ToolBox.h" |
wdg_Settings::wdg_Settings(QWidget *parent) : QWidget(parent) |
{ |
setupUi(this); |
listWidget->setCurrentRow(0); |
#ifndef _BETA_ |
#endif |
connect(pb_Load, SIGNAL(clicked()), this, SLOT(slot_LoadParameter())); |
connect(pb_Save, SIGNAL(clicked()), this, SLOT(slot_SaveParameter())); |
// Settings - Looping-Pfeile |
connect(tb_9_6, SIGNAL(clicked()), this, SLOT(slot_tbUp())); |
connect(tb_9_7, SIGNAL(clicked()), this, SLOT(slot_tbDown())); |
connect(tb_9_8, SIGNAL(clicked()), this, SLOT(slot_tbLeft())); |
connect(tb_9_9, SIGNAL(clicked()), this, SLOT(slot_tbRight())); |
// Settings - LED's J16 |
connect(J16_0, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J16_1, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J16_2, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J16_3, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J16_4, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J16_5, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J16_6, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J16_7, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
// Settings - LED's J17 |
connect(J17_0, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J17_1, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J17_2, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J17_3, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J17_4, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J17_5, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J17_6, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(J17_7, SIGNAL(clicked()), this, SLOT(slot_LEDtoValue())); |
connect(sb_11_1, SIGNAL(valueChanged(int)), this, SLOT(slot_ValuetoLED16(int))); |
connect(sb_11_3, SIGNAL(valueChanged(int)), this, SLOT(slot_ValuetoLED17(int))); |
} |
void wdg_Settings::set_Config(cSettings *pConfig) |
{ |
Config = pConfig; |
} |
void wdg_Settings::set_LED(QToolButton *ToolButton, bool On) |
{ |
if (ToolButton->text() == QString("0") && On) |
{ |
ToolButton->setIcon(ToolBox::Icon(0)); |
ToolButton->setText("1"); |
} |
else if (ToolButton->text() == QString("1") && !On) |
{ |
ToolButton->setIcon(ToolBox::Icon(4)); |
ToolButton->setText("0"); |
} |
else if (ToolButton->text() == QString("00") && On) |
{ |
ToolButton->setIcon(ToolBox::Icon(0)); |
ToolButton->setText("11"); |
} |
else if (ToolButton->text() == QString("11") && !On) |
{ |
ToolButton->setIcon(ToolBox::Icon(4)); |
ToolButton->setText("00"); |
} |
} |
void wdg_Settings::slot_LEDtoValue() |
{ |
QToolButton *ToolButton = (QToolButton*)sender(); |
if (ToolButton->text() == QString("0")) |
{ |
set_LED(ToolButton, true); |
sb_11_1->setValue(sb_11_1->value() + ToolButton->toolTip().toInt()); |
} |
else if (ToolButton->text() == QString("1")) |
{ |
set_LED(ToolButton); |
sb_11_1->setValue(sb_11_1->value() - ToolButton->toolTip().toInt()); |
} |
else if (ToolButton->text() == QString("00")) |
{ |
set_LED(ToolButton, true); |
sb_11_3->setValue(sb_11_3->value() + ToolButton->toolTip().toInt()); |
} |
else if (ToolButton->text() == QString("11")) |
{ |
set_LED(ToolButton); |
sb_11_3->setValue(sb_11_3->value() - ToolButton->toolTip().toInt()); |
} |
} |
void wdg_Settings::slot_ValuetoLED16(int Wert) |
{ |
set_LED(J16_0); |
set_LED(J16_1); |
set_LED(J16_2); |
set_LED(J16_3); |
set_LED(J16_4); |
set_LED(J16_5); |
set_LED(J16_6); |
set_LED(J16_7); |
for (int a = 0; a < 8; a++) |
{ |
if (Wert > 127) |
{ |
set_LED(J16_0, true); |
Wert = Wert - 128; |
} |
if (Wert > 63) |
{ |
set_LED(J16_1, true); |
Wert = Wert - 64; |
} |
if (Wert > 31) |
{ |
set_LED(J16_2, true); |
Wert = Wert - 32; |
} |
if (Wert > 15) |
{ |
set_LED(J16_3, true); |
Wert = Wert - 16; |
} |
if (Wert > 7) |
{ |
set_LED(J16_4, true); |
Wert = Wert - 8; |
} |
if (Wert > 3) |
{ |
set_LED(J16_5, true); |
Wert = Wert - 4; |
} |
if (Wert > 1) |
{ |
set_LED(J16_6, true); |
Wert = Wert - 2; |
} |
if (Wert > 0) |
{ |
set_LED(J16_7, true); |
Wert = Wert - 1; |
} |
} |
} |
void wdg_Settings::slot_ValuetoLED17(int Wert) |
{ |
set_LED(J17_0); |
set_LED(J17_1); |
set_LED(J17_2); |
set_LED(J17_3); |
set_LED(J17_4); |
set_LED(J17_5); |
set_LED(J17_6); |
set_LED(J17_7); |
for (int a = 0; a < 8; a++) |
{ |
if (Wert > 127) |
{ |
set_LED(J17_0, true); |
Wert = Wert - 128; |
} |
if (Wert > 63) |
{ |
set_LED(J17_1, true); |
Wert = Wert - 64; |
} |
if (Wert > 31) |
{ |
set_LED(J17_2, true); |
Wert = Wert - 32; |
} |
if (Wert > 15) |
{ |
set_LED(J17_3, true); |
Wert = Wert - 16; |
} |
if (Wert > 7) |
{ |
set_LED(J17_4, true); |
Wert = Wert - 8; |
} |
if (Wert > 3) |
{ |
set_LED(J17_5, true); |
Wert = Wert - 4; |
} |
if (Wert > 1) |
{ |
set_LED(J17_6, true); |
Wert = Wert - 2; |
} |
if (Wert > 0) |
{ |
set_LED(J17_7, true); |
Wert = Wert - 1; |
} |
} |
} |
void wdg_Settings::slot_tbUp() |
{ |
if (tb_9_6->text() == QString("0")) |
{ |
tb_9_6->setText("1"); |
} |
else |
{ |
tb_9_6->setText("0"); |
} |
} |
void wdg_Settings::slot_tbDown() |
{ |
if (tb_9_7->text() == QString("0")) |
{ |
tb_9_7->setText("1"); |
} |
else |
{ |
tb_9_7->setText("0"); |
} |
} |
void wdg_Settings::slot_tbLeft() |
{ |
if (tb_9_8->text() == QString("0")) |
{ |
tb_9_8->setText("1"); |
} |
else |
{ |
tb_9_8->setText("0"); |
} |
} |
void wdg_Settings::slot_tbRight() |
{ |
if (tb_9_9->text() == QString("0")) |
{ |
tb_9_9->setText("1"); |
} |
else |
{ |
tb_9_9->setText("0"); |
} |
} |
void wdg_Settings::slot_LoadParameter() // DONE 0.75a |
{ |
QString Filename = QFileDialog::getOpenFileName(this, "Mikrokopter Parameter laden", Config->DIR.Parameter + "/", "Mikrokopter Parameter(*.mkp);;Alle Dateien (*)"); |
if (!Filename.isEmpty()) |
{ |
int Set = sb_Set->value(); |
QSettings Setting(Filename, QSettings::IniFormat); |
Setting.beginGroup("Setup"); |
QString Name = Setting.value("Name", QString("--noname--")).toString(); |
char *CName = Name.toLatin1().data(); |
int a; |
for (a=0; a < Name.length(); a++) |
{ |
ParameterSet[Set][P_NAME+a] = CName[a]; |
} |
while (a < 12) |
{ |
ParameterSet[Set][P_NAME+a] = 0; |
a++; |
} |
ParameterSet[Set][P_GLOBAL_CONF] = Setting.value("GlobalConfig", 0).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("Channels"); |
ParameterSet[Set][P_KANAL_NICK] = Setting.value("Nick", 1).toInt(); |
ParameterSet[Set][P_KANAL_ROLL] = Setting.value("Roll", 2).toInt(); |
ParameterSet[Set][P_KANAL_GAS] = Setting.value("Gas", 3).toInt(); |
ParameterSet[Set][P_KANAL_GIER] = Setting.value("Gier", 4).toInt(); |
ParameterSet[Set][P_KANAL_POTI1] = Setting.value("Poti_1", 5).toInt(); |
ParameterSet[Set][P_KANAL_POTI2] = Setting.value("Poti_2", 6).toInt(); |
ParameterSet[Set][P_KANAL_POTI3] = Setting.value("Poti_3", 7).toInt(); |
ParameterSet[Set][P_KANAL_POTI4] = Setting.value("Poti_4", 8).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("Stick"); |
ParameterSet[Set][P_STICK_P] = Setting.value("Nick_Roll-P", 4).toInt(); |
ParameterSet[Set][P_STICK_D] = Setting.value("Nick_Roll-D", 8).toInt(); |
ParameterSet[Set][P_GIER_P] = Setting.value("Gier-P", 1).toInt(); |
ParameterSet[Set][P_EXTERNAL] = Setting.value("ExternalControl", 1).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("Altitude"); |
ParameterSet[Set][P_MAXHOEHE] = Setting.value("Setpoint", 251).toInt(); |
ParameterSet[Set][P_MIN_GAS] = Setting.value("MinGas", 30).toInt(); |
ParameterSet[Set][P_HOEHE_P] = Setting.value("P", 10).toInt(); |
ParameterSet[Set][P_DRUCK_D] = Setting.value("Barometric-D", 30).toInt(); |
ParameterSet[Set][P_HOEHE_ACC] = Setting.value("Z-ACC-Effect", 30).toInt(); |
ParameterSet[Set][P_HOEHE_GAIN] = Setting.value("Gain", 3).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("Gyro"); |
ParameterSet[Set][P_GYRO_P] = Setting.value("P", 80).toInt(); |
ParameterSet[Set][P_GYRO_I] = Setting.value("I", 120).toInt(); |
ParameterSet[Set][P_GYRO_D] = Setting.value("D", 0).toInt(); |
ParameterSet[Set][P_DYNAMIC_STAB] = Setting.value("DynamicStability", 75).toInt(); |
ParameterSet[Set][P_GYRO_ACC_FAKTOR] = Setting.value("ACC_Gyro-Factor", 30).toInt(); |
ParameterSet[Set][P_GYRO_ACC_ABGL] = Setting.value("ACC_Gyro-Compensation", 32).toInt(); |
ParameterSet[Set][P_DRIFT_KOMP] = Setting.value("DriftCompensation", 4).toInt(); |
ParameterSet[Set][P_FAKTOR_I] = Setting.value("Main-I", 32).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("Camera"); |
ParameterSet[Set][P_SERVO_NICK_CONT] = Setting.value("ServoNickControl", 100).toInt(); |
ParameterSet[Set][P_SERVO_NICK_COMP] = Setting.value("ServoNickCompensation", 40).toInt(); |
ParameterSet[Set][P_SERVO_NICK_MIN] = Setting.value("ServoNickMin", 50).toInt(); |
ParameterSet[Set][P_SERVO_NICK_MAX] = Setting.value("ServoNickMax", 150).toInt(); |
ParameterSet[Set][P_SERVO_ROLL_CONT] = Setting.value("ServoRollControl", 100).toInt(); |
ParameterSet[Set][P_SERVO_ROLL_COMP] = Setting.value("ServoRollCompensation", 40).toInt(); |
ParameterSet[Set][P_SERVO_ROLL_MIN] = Setting.value("ServoRollMin", 50).toInt(); |
ParameterSet[Set][P_SERVO_ROLL_MAX] = Setting.value("ServoRollMax", 150).toInt(); |
ParameterSet[Set][P_SERVO_COMPI] = Setting.value("ServoInvert", 0).toInt(); |
ParameterSet[Set][P_SERVO_REFR] = Setting.value("ServoNickRefreshRate", 5).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("Others"); |
ParameterSet[Set][P_GAS_MIN] = Setting.value("MinGas", 8).toInt(); |
ParameterSet[Set][P_GAS_MAX] = Setting.value("MaxGas", 230).toInt(); |
ParameterSet[Set][P_KOMPASS_WIRKUNG] = Setting.value("Compass-Effect", 128).toInt(); |
ParameterSet[Set][P_UNTERSPANNUNG] = Setting.value("UnderVoltage", 94).toInt(); |
ParameterSet[Set][P_NOTGAS] = Setting.value("NotGas", 35).toInt(); |
ParameterSet[Set][P_NOTGASZEIT] = Setting.value("NotGasTime", 30).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("Coupling"); |
ParameterSet[Set][P_ACHS_KOPPLUNG1] = Setting.value("YawPosFeedback", 90).toInt(); |
ParameterSet[Set][P_ACHS_KOPPLUNG2] = Setting.value("NickRollFeedback", 90).toInt(); |
ParameterSet[Set][P_ACHS_GKOPPLUNG] = Setting.value("YawCorrection", 5).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("Loop"); |
ParameterSet[Set][P_LOOP_CONFIG] = Setting.value("Config", 0).toInt(); |
ParameterSet[Set][P_LOOP_GAS_LIMIT] = Setting.value("GasLimit", 50).toInt(); |
ParameterSet[Set][P_LOOP_THRESHOLD] = Setting.value("StickThreshold", 90).toInt(); |
ParameterSet[Set][P_LOOP_HYSTERESE] = Setting.value("LoopHysteresis", 50).toInt(); |
ParameterSet[Set][P_WINKEL_NICK] = Setting.value("TurnOverNick", 85).toInt(); |
ParameterSet[Set][P_WINKEL_ROLL] = Setting.value("TurnOverRoll", 85).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("User"); |
ParameterSet[Set][P_USER_1] = Setting.value("Parameter_1", 0).toInt(); |
ParameterSet[Set][P_USER_2] = Setting.value("Parameter_2", 0).toInt(); |
ParameterSet[Set][P_USER_3] = Setting.value("Parameter_3", 0).toInt(); |
ParameterSet[Set][P_USER_4] = Setting.value("Parameter_4", 0).toInt(); |
ParameterSet[Set][P_USER_5] = Setting.value("Parameter_5", 0).toInt(); |
ParameterSet[Set][P_USER_6] = Setting.value("Parameter_6", 0).toInt(); |
ParameterSet[Set][P_USER_7] = Setting.value("Parameter_7", 0).toInt(); |
ParameterSet[Set][P_USER_8] = Setting.value("Parameter_8", 0).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("Output"); |
ParameterSet[Set][P_J16_BITMASK] = Setting.value("J16_Bitmask", 255).toInt(); |
ParameterSet[Set][P_J16_TIMING] = Setting.value("J16_Timing", 251).toInt(); |
ParameterSet[Set][P_J17_BITMASK] = Setting.value("J17_Bitmask", 255).toInt(); |
ParameterSet[Set][P_J17_TIMING] = Setting.value("J17_Timing", 251).toInt(); |
Setting.endGroup(); |
Setting.beginGroup("NaviCtrl"); |
ParameterSet[Set][P_NAV_GPS_MODE] = Setting.value("GPS_ModeControl", 253).toInt(); |
ParameterSet[Set][P_NAV_GPS_GAIN] = Setting.value("GPS_Gain", 100).toInt(); |
ParameterSet[Set][P_NAV_GPS_P] = Setting.value("GPS_P", 90).toInt(); |
ParameterSet[Set][P_NAV_GPS_I] = Setting.value("GPS_I", 90).toInt(); |
ParameterSet[Set][P_NAV_GPS_D] = Setting.value("GPS_D", 90).toInt(); |
ParameterSet[Set][P_NAV_GPS_P_LIMIT] = Setting.value("GPS_P_Limit", 75).toInt(); |
ParameterSet[Set][P_NAV_GPS_I_LIMIT] = Setting.value("GPS_I_Limit", 75).toInt(); |
ParameterSet[Set][P_NAV_GPS_D_LIMIT] = Setting.value("GPS_D_Limit", 75).toInt(); |
ParameterSet[Set][P_NAV_GPS_ACC] = Setting.value("GPS_Acc", 0).toInt(); |
ParameterSet[Set][P_NAV_GPS_MIN] = Setting.value("GPS_MinSat", 6).toInt(); |
ParameterSet[Set][P_NAV_STICK_THRE] = Setting.value("GPS_StickThreshold", 8).toInt(); |
ParameterSet[Set][P_NAV_WIND_CORR] = Setting.value("GPS_WindCorrection", 90).toInt(); |
ParameterSet[Set][P_NAV_SPEED_COMP] = Setting.value("GPS_SpeedCompensation", 30).toInt(); |
ParameterSet[Set][P_NAV_RADIUS] = Setting.value("GPS_MaxRadius", 100).toInt(); |
ParameterSet[Set][P_NAV_ANGLE_LIMIT] = Setting.value("GPS_AngleLimit", 60).toInt(); |
ParameterSet[Set][P_NAV_PH_LOGINTIME] = Setting.value("GPS_PH_Login_Time", 4).toInt(); |
Setting.endGroup(); |
show_FCSettings(Set, ParameterSet[Set]); |
} |
} |
int wdg_Settings::get_Value(QComboBox *Combo) |
{ |
if (Combo->currentText() == QString("Poti 1")) |
return 251; |
if (Combo->currentText() == QString("Poti 2")) |
return 252; |
if (Combo->currentText() == QString("Poti 3")) |
return 253; |
if (Combo->currentText() == QString("Poti 4")) |
return 254; |
return Combo->currentText().toInt(); |
} |
void wdg_Settings::store_ParameterSet(int Set) // DONE 0.75a |
{ |
char *Name = le_SetName->text().toLatin1().data(); |
int a; |
for (a = 0; a < le_SetName->text().length(); a++) |
{ |
ParameterSet[Set][P_NAME+a] = Name[a]; |
} |
while(a < 12) |
{ |
ParameterSet[Set][P_NAME+a] = 0; |
a++; |
} |
// Seite 1 |
ParameterSet[Set][P_GLOBAL_CONF] = 0; |
if (cb_1_1->isChecked()) |
ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x01; |
if (cb_1_2->isChecked()) |
ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x02; |
if (cb_1_3->isChecked()) |
ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x04; |
if (cb_1_4->isChecked()) |
ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x08; |
if (cb_1_5->isChecked()) |
ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x10; |
if (cb_1_6->isChecked()) |
ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x20; |
if (cb_1_7->isChecked()) |
ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x40; |
if (cb_1_8->isChecked()) |
ParameterSet[Set][P_GLOBAL_CONF] = ParameterSet[Set][P_GLOBAL_CONF] | 0x80; |
// Seite 2 |
ParameterSet[Set][P_KANAL_NICK] = sb_2_1->value(); |
ParameterSet[Set][P_KANAL_ROLL] = sb_2_2->value(); |
ParameterSet[Set][P_KANAL_GAS] = sb_2_3->value(); |
ParameterSet[Set][P_KANAL_GIER] = sb_2_4->value(); |
ParameterSet[Set][P_KANAL_POTI1] = sb_2_5->value(); |
ParameterSet[Set][P_KANAL_POTI2] = sb_2_6->value(); |
ParameterSet[Set][P_KANAL_POTI3] = sb_2_7->value(); |
ParameterSet[Set][P_KANAL_POTI4] = sb_2_8->value(); |
// Seite 3 |
ParameterSet[Set][P_STICK_P] = sb_3_1->value(); |
ParameterSet[Set][P_STICK_D] = sb_3_2->value(); |
ParameterSet[Set][P_GIER_P] = get_Value(cb_3_3); |
ParameterSet[Set][P_EXTERNAL] = get_Value(cb_3_4); |
// Seite 4 |
ParameterSet[Set][P_MAXHOEHE] = get_Value(cb_4_1); |
ParameterSet[Set][P_MIN_GAS] = sb_4_2->value(); |
ParameterSet[Set][P_HOEHE_P] = get_Value(cb_4_3); |
ParameterSet[Set][P_DRUCK_D] = get_Value(cb_4_4); |
ParameterSet[Set][P_HOEHE_ACC] = get_Value(cb_4_5); |
ParameterSet[Set][P_HOEHE_GAIN] = sb_4_6->value(); |
// Seite 5 |
ParameterSet[Set][P_GYRO_P] = get_Value(cb_5_1); |
ParameterSet[Set][P_GYRO_I] = get_Value(cb_5_2); |
ParameterSet[Set][P_GYRO_D] = get_Value(cb_5_8); |
ParameterSet[Set][P_DYNAMIC_STAB] = get_Value(cb_5_3); |
ParameterSet[Set][P_GYRO_ACC_FAKTOR] = sb_5_4->value(); |
ParameterSet[Set][P_GYRO_ACC_ABGL] = sb_5_5->value(); |
ParameterSet[Set][P_FAKTOR_I] = get_Value(cb_5_6); |
ParameterSet[Set][P_DRIFT_KOMP] = sb_5_7->value(); |
// Seite 6 |
ParameterSet[Set][P_SERVO_NICK_CONT] = get_Value(cb_6_1); |
ParameterSet[Set][P_SERVO_NICK_COMP] = sb_6_2->value(); |
ParameterSet[Set][P_SERVO_NICK_MIN] = sb_6_3->value(); |
ParameterSet[Set][P_SERVO_NICK_MAX] = sb_6_4->value(); |
// ParameterSet[Set][P_SERVO_NICK_COMPI] = cb_6_6->isChecked(); |
ParameterSet[Set][P_SERVO_ROLL_CONT] = get_Value(cb_6_7); |
ParameterSet[Set][P_SERVO_ROLL_COMP] = sb_6_8->value(); |
ParameterSet[Set][P_SERVO_ROLL_MIN] = sb_6_10->value(); |
ParameterSet[Set][P_SERVO_ROLL_MAX] = sb_6_11->value(); |
ParameterSet[Set][P_SERVO_REFR] = sb_6_5->value(); |
if (cb_6_6->isChecked()) |
ParameterSet[Set][P_SERVO_COMPI] = ParameterSet[Set][P_SERVO_COMPI] | 0x01; |
if (cb_6_9->isChecked()) |
ParameterSet[Set][P_SERVO_COMPI] = ParameterSet[Set][P_SERVO_COMPI] | 0x02; |
// Seite 7 |
ParameterSet[Set][P_GAS_MIN] = sb_7_1->value(); |
ParameterSet[Set][P_GAS_MAX] = sb_7_2->value(); |
ParameterSet[Set][P_KOMPASS_WIRKUNG] = get_Value(cb_7_3); |
ParameterSet[Set][P_UNTERSPANNUNG] = sb_7_4->value(); |
ParameterSet[Set][P_NOTGASZEIT] = sb_7_5->value(); |
ParameterSet[Set][P_NOTGAS] = sb_7_6->value(); |
// Seite 8 |
ParameterSet[Set][P_ACHS_KOPPLUNG1] = get_Value(cb_8_1); |
ParameterSet[Set][P_ACHS_KOPPLUNG2] = get_Value(cb_8_2); |
ParameterSet[Set][P_ACHS_GKOPPLUNG] = get_Value(cb_8_3); |
// Seite 9 |
ParameterSet[Set][P_LOOP_CONFIG] = 0; |
if (tb_9_6->text() == QString("1")) |
ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x01; |
if (tb_9_7->text() == QString("1")) |
ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x02; |
if (tb_9_8->text() == QString("1")) |
ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x04; |
if (tb_9_9->text() == QString("1")) |
ParameterSet[Set][P_LOOP_CONFIG] = ParameterSet[Set][P_LOOP_CONFIG] | 0x08; |
ParameterSet[Set][P_LOOP_GAS_LIMIT] = get_Value(cb_9_1); |
ParameterSet[Set][P_LOOP_THRESHOLD] = sb_9_2->value(); |
ParameterSet[Set][P_WINKEL_NICK] = sb_9_3->value(); |
ParameterSet[Set][P_LOOP_HYSTERESE] = sb_9_4->value(); |
ParameterSet[Set][P_WINKEL_ROLL] = sb_9_5->value(); |
// Seite 10 |
ParameterSet[Set][P_USER_1] = get_Value(cb_10_1); |
ParameterSet[Set][P_USER_2] = get_Value(cb_10_2); |
ParameterSet[Set][P_USER_3] = get_Value(cb_10_3); |
ParameterSet[Set][P_USER_4] = get_Value(cb_10_4); |
ParameterSet[Set][P_USER_5] = get_Value(cb_10_5); |
ParameterSet[Set][P_USER_6] = get_Value(cb_10_6); |
ParameterSet[Set][P_USER_7] = get_Value(cb_10_7); |
ParameterSet[Set][P_USER_8] = get_Value(cb_10_8); |
// Seite 11 |
ParameterSet[Set][P_J16_BITMASK] = sb_11_1->value(); |
ParameterSet[Set][P_J16_TIMING] = get_Value(cb_11_2); |
ParameterSet[Set][P_J17_BITMASK] = sb_11_3->value(); |
ParameterSet[Set][P_J17_TIMING] = get_Value(cb_11_4); |
// Seite 12 |
ParameterSet[Set][P_NAV_GPS_MODE] = get_Value(cb_12_1); |
ParameterSet[Set][P_NAV_GPS_GAIN] = get_Value(cb_12_2); |
ParameterSet[Set][P_NAV_STICK_THRE] = sb_12_3->value(); |
ParameterSet[Set][P_NAV_GPS_MIN] = sb_12_4->value(); |
ParameterSet[Set][P_NAV_GPS_P] = get_Value(cb_12_5); |
ParameterSet[Set][P_NAV_GPS_I] = get_Value(cb_12_6); |
ParameterSet[Set][P_NAV_GPS_D] = get_Value(cb_12_7); |
ParameterSet[Set][P_NAV_GPS_ACC] = get_Value(cb_12_8); |
ParameterSet[Set][P_NAV_GPS_P_LIMIT] = get_Value(cb_12_9); |
ParameterSet[Set][P_NAV_GPS_I_LIMIT] = get_Value( |