update gencode, init on ground or in air
This commit is contained in:
+103
-10
@@ -5,6 +5,10 @@
|
||||
#include <QFileDialog>
|
||||
#include <QDateTime>
|
||||
|
||||
extern "C"{
|
||||
#include "SIL_capi.h"
|
||||
}
|
||||
|
||||
void MainWindow::scan_param()
|
||||
{
|
||||
const rtwCAPI_ModelMappingStaticInfo *sm = (*getmap_func)();
|
||||
@@ -126,6 +130,18 @@ void MainWindow::scan_param()
|
||||
{
|
||||
Att0[2] = param_value.toDouble();
|
||||
}
|
||||
else if (param_name == "V0")
|
||||
{
|
||||
V0[0] = param_value.toDouble();
|
||||
}
|
||||
else if (param_name == "V0(1)")
|
||||
{
|
||||
V0[1] = param_value.toDouble();
|
||||
}
|
||||
else if (param_name == "V0(2)")
|
||||
{
|
||||
V0[2] = param_value.toDouble();
|
||||
}
|
||||
else if (param_name == "hground")
|
||||
{
|
||||
hground = param_value.toDouble();
|
||||
@@ -247,6 +263,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
getmap_func = (SIL_GetCAPIStaticMap_ptr)(mdl->resolve("SIL_GetCAPIStaticMap"));
|
||||
u = (ExtU_SIL_T *)mdl->resolve("SIL_U");
|
||||
y = (ExtY_SIL_T *)mdl->resolve("SIL_Y");
|
||||
V0 = (double *)mdl->resolve("V0");
|
||||
m = (RT_MODEL_SIL_T *)mdl->resolve("SIL_M_");
|
||||
}
|
||||
else
|
||||
@@ -256,6 +273,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
getmap_func = &SIL_GetCAPIStaticMap;
|
||||
u = &SIL_U;
|
||||
y = &SIL_Y;
|
||||
V0 = ::V0;
|
||||
m = (RT_MODEL_SIL_T *)SIL_M;
|
||||
}
|
||||
|
||||
@@ -264,14 +282,16 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
|
||||
if (init_func && step_func && u && y && getmap_func)
|
||||
{
|
||||
(*init_func)();
|
||||
SIL_InitializeDataMapInfo();
|
||||
scan_param();
|
||||
|
||||
ui->lineEditLat->setText(QString("%1").arg(X0[0]));
|
||||
ui->lineEditLon->setText(QString("%1").arg(X0[1]));
|
||||
ui->lineEditAlt->setText(QString("%1").arg(hground));
|
||||
ui->lineEditHdg->setText(QString("%1").arg(Att0[2]*57.3));
|
||||
ui->lineEditSpeed->setText(QString("%1").arg(V0[0]));
|
||||
gear_height = X0[2] - hground;
|
||||
ui->lineEditAGL->setText(QString("%1").arg(gear_height));
|
||||
|
||||
qgc_sock = new QUdpSocket(this);
|
||||
if (qgc_sock->bind(QHostAddress::LocalHost, 6061))
|
||||
@@ -327,31 +347,54 @@ void MainWindow::update200Hz(void)
|
||||
ui->lineEditDal->setText(QString("%1").arg(y->da*-57.3,6,'f',2));
|
||||
ui->lineEditDar->setText(QString("%1").arg(y->da*57.3,6,'f',2));
|
||||
ui->lineEditDr->setText(QString("%1").arg(y->dr*57.3,6,'f',2));
|
||||
u->fault = 0;
|
||||
if (ui->checkBoxTurbine->checkState() == Qt::Checked)
|
||||
{
|
||||
u->fault |= 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
u->fault &= 0xFFFFFFFE;
|
||||
}
|
||||
if (ui->checkBoxDel->checkState() == Qt::Checked)
|
||||
{
|
||||
u->fault |= 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
u->fault &= 0xFFFFFFFD;
|
||||
}
|
||||
if (ui->checkBoxDer->checkState() == Qt::Checked)
|
||||
{
|
||||
u->fault |= 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
u->fault &= 0xFFFFFFFB;
|
||||
}
|
||||
if (ui->checkBoxDr->checkState() == Qt::Checked)
|
||||
{
|
||||
u->fault |= 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
u->fault &= 0xFFFFFFF7;
|
||||
}
|
||||
if (ui->checkBoxDal->checkState() == Qt::Checked)
|
||||
{
|
||||
u->fault |= 0x10;
|
||||
}
|
||||
else
|
||||
{
|
||||
u->fault &= 0xFFFFFFEF;
|
||||
}
|
||||
if (ui->checkBoxDar->checkState() == Qt::Checked)
|
||||
{
|
||||
u->fault |= 0x20;
|
||||
}
|
||||
else
|
||||
{
|
||||
u->fault &= 0xFFFFFFDF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -385,13 +428,18 @@ void MainWindow::onFire()
|
||||
onecase.push_back(val);
|
||||
}
|
||||
|
||||
double hground;
|
||||
val = ui->lineEditAlt->text().toDouble(&ok);
|
||||
if (ok)
|
||||
{
|
||||
head.push_back("X0(2)");
|
||||
onecase.push_back(val+gear_height);
|
||||
hground = val;
|
||||
head.push_back("hground");
|
||||
onecase.push_back(val);
|
||||
onecase.push_back(hground);
|
||||
if (ui->radioButtonOnGround->isChecked())
|
||||
{
|
||||
head.push_back("X0(2)");
|
||||
onecase.push_back(hground+gear_height);
|
||||
}
|
||||
}
|
||||
|
||||
val = ui->lineEditHdg->text().toDouble(&ok);
|
||||
@@ -401,7 +449,26 @@ void MainWindow::onFire()
|
||||
onecase.push_back(val/57.3);
|
||||
}
|
||||
|
||||
if (ui->radioButtonInAir->isChecked())
|
||||
{
|
||||
head.push_back("Att0(1)");
|
||||
onecase.push_back(0);
|
||||
val = ui->lineEditSpeed->text().toDouble(&ok);
|
||||
if (ok)
|
||||
{
|
||||
head.push_back("V0");
|
||||
onecase.push_back(val);
|
||||
}
|
||||
val = ui->lineEditAGL->text().toDouble(&ok);
|
||||
if (ok)
|
||||
{
|
||||
head.push_back("X0(2)");
|
||||
onecase.push_back(hground+val);
|
||||
}
|
||||
}
|
||||
|
||||
setup_param(head, onecase);
|
||||
(*init_func)();
|
||||
|
||||
QString filename = QString("sil")
|
||||
+QDateTime::currentDateTime().toString("yyyyMMddhhmmss")
|
||||
@@ -416,11 +483,24 @@ void MainWindow::onFire()
|
||||
connect(timer200Hz, SIGNAL(timeout()), this, SLOT(update200Hz()));
|
||||
timer200Hz->start(5);
|
||||
|
||||
stage = 2;
|
||||
ui->pushButton_start->setText(QString("Launch"));
|
||||
ui->pushButtonLaunch->setEnabled(true);
|
||||
ui->tabWidget->setCurrentIndex(1);
|
||||
|
||||
if (ui->radioButtonOnGround->isChecked())
|
||||
{
|
||||
stage = 2;
|
||||
ui->pushButton_start->setText(QString("Launch"));
|
||||
ui->pushButtonLaunch->setEnabled(true);
|
||||
ui->tabWidget->setCurrentIndex(1);
|
||||
u->fault = 0x0;
|
||||
}
|
||||
if (ui->radioButtonInAir->isChecked())
|
||||
{
|
||||
stage = 3;
|
||||
ui->pushButton_start->setText(QString("Flying"));
|
||||
ui->pushButtonLaunch->setText(QString("Flying"));
|
||||
ui->pushButton_start->setEnabled(false);
|
||||
ui->pushButtonLaunch->setEnabled(false);
|
||||
ui->tabWidget->setCurrentIndex(1);
|
||||
u->fault = 0x40;
|
||||
}
|
||||
}
|
||||
else if (stage == 2)
|
||||
{
|
||||
@@ -509,3 +589,16 @@ void MainWindow::onTimes(int i)
|
||||
times = i;
|
||||
}
|
||||
|
||||
void MainWindow::onAG()
|
||||
{
|
||||
if (ui->radioButtonOnGround->isChecked())
|
||||
{
|
||||
ui->lineEditSpeed->setEnabled(false);
|
||||
ui->lineEditAGL->setEnabled(false);
|
||||
}
|
||||
if (ui->radioButtonInAir->isChecked())
|
||||
{
|
||||
ui->lineEditSpeed->setEnabled(true);
|
||||
ui->lineEditAGL->setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user