59,9 → 59,6 |
// Tab mit Debug-Elementen verbergen |
tab_Main->removeTab(6); |
|
// Tab mit Wegpunkte-Elementen verbergen |
tab_Main->removeTab(5); |
|
// Settings-Tab hinzufügen. |
f_Settings = new wdg_Settings( this ); |
f_Settings->set_Config(Settings); |
270,6 → 267,9 |
connect(rb_SelFC, SIGNAL(clicked()), this, SLOT(slot_rb_Hardware())); |
connect(rb_SelMag, SIGNAL(clicked()), this, SLOT(slot_rb_Hardware())); |
|
// Wegpunkt-Befehl |
connect(pb_FlyTo, SIGNAL(clicked()), this, SLOT(slot_ac_SendWaypoint())); |
|
// firmeware Updateen / flashen |
connect(pb_Update, SIGNAL(clicked()), this, SLOT(slot_pb_Update())); |
connect(pb_HexFile, SIGNAL(clicked()), this, SLOT(slot_pb_HexFile())); |
1238,6 → 1238,65 |
*/ |
} |
|
void MKTool::slot_ac_SendWaypoint() |
{ |
if (Navi.Current.Longitude == 0 && |
Navi.Current.Latitude == 0) { |
QMessageBox msgB; |
QString msg; |
msgB.setText("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_LonValue->text().toDouble(&ok_lon); |
desired_lat = le_LatValue->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 = 1; |
desired_pos.HoldTime = 60; |
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) { |
send_Data('s', ADDRESS_NC, (char *)&desired_pos, sizeof(desired_pos), false); |
} else { |
QMessageBox msgB; |
QString msg; |
msg += "Bitte die Eingabe ueberpruefen!\n"; |
msg += "Die Werte muessen sich in der Naehe der aktuellen Koordinaten befinden\n"; |
msg += "(Lon: "; |
msg += ToolBox::get_Float(Navi.Current.Longitude,10000000); |
msg += ", "; |
msg += "Lat: "; |
msg += ToolBox::get_Float(Navi.Current.Latitude,10000000); |
msg += ")"; |
msgB.setText(msg); |
msgB.exec(); |
} |
} |
|
// Seriel-Port Bereich, Befehle senden und Daten empfangen |
////////////////////////////////////////////////////////// |
|