From 8989edfee16ac0cd26b6aec96ca8a1c3a89fb464 Mon Sep 17 00:00:00 2001 From: hm Date: Sun, 25 Apr 2021 17:10:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=88=B5=E6=9C=BA=E6=A0=87=E5=AE=9A=E5=BC=95?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App/Config/Config.cpp | 50 ++- App/Config/Config.h | 11 +- App/Setting/Index0/Global/GlobalSetting.cpp | 173 ++++++-- App/Setting/Index0/Global/GlobalSetting.h | 7 +- App/Setting/Index0/Global/GlobalSetting.ui | 449 +++++++++++++++----- App/ToolsUI/ServoSystem/ServoSystem.cpp | 36 +- App/ToolsUI/ServoSystem/ServoSystem.h | 30 +- App/mainwindow.cpp | 72 +++- App/mainwindow.h | 35 +- 9 files changed, 654 insertions(+), 209 deletions(-) diff --git a/App/Config/Config.cpp b/App/Config/Config.cpp index 82fedcb..7a61f30 100644 --- a/App/Config/Config.cpp +++ b/App/Config/Config.cpp @@ -175,12 +175,31 @@ void Config::set_GCS_ID(QVariant id) setJsonObject("GlobalSetting",obj); } -void Config::getServoOffset(QVariant *la,QVariant *ra, - QVariant *le,QVariant *re, - QVariant *ru) +void Config::getServoOffset(QVariant *dirla,QVariant *dirra,QVariant *dirle,QVariant *dirre,QVariant *dirru, + QVariant *maxla,QVariant *maxra,QVariant *maxle,QVariant *maxre,QVariant *maxru, + QVariant *scalela,QVariant *scalera,QVariant *scalele,QVariant *scalere,QVariant *scaleru, + QVariant *la,QVariant *ra,QVariant *le,QVariant *re,QVariant *ru) { QJsonObject obj = getJsonObject("ServoOffset"); + *dirla = obj.value("dirla").toDouble(); + *dirra = obj.value("dirra").toDouble(); + *dirle = obj.value("dirle").toDouble(); + *dirre = obj.value("dirre").toDouble(); + *dirru = obj.value("dirru").toDouble(); + + *maxla = obj.value("maxla").toDouble(); + *maxra = obj.value("maxra").toDouble(); + *maxle = obj.value("maxle").toDouble(); + *maxre = obj.value("maxre").toDouble(); + *maxru = obj.value("maxru").toDouble(); + + *scalela = obj.value("scalela").toDouble(); + *scalera = obj.value("scalera").toDouble(); + *scalele = obj.value("scalele").toDouble(); + *scalere = obj.value("scalere").toDouble(); + *scaleru = obj.value("scaleru").toDouble(); + *la = obj.value("la").toDouble(); *ra = obj.value("ra").toDouble(); *le = obj.value("le").toDouble(); @@ -188,12 +207,31 @@ void Config::getServoOffset(QVariant *la,QVariant *ra, *ru = obj.value("ru").toDouble(); } -void Config::setServoOffset(QVariant la,QVariant ra, - QVariant le,QVariant re, - QVariant ru) +void Config::setServoOffset(QVariant dirla,QVariant dirra,QVariant dirle,QVariant dirre,QVariant dirru, + QVariant maxla,QVariant maxra,QVariant maxle,QVariant maxre,QVariant maxru, + QVariant scalela,QVariant scalera,QVariant scalele,QVariant scalere,QVariant scaleru, + QVariant la,QVariant ra,QVariant le,QVariant re,QVariant ru) { QJsonObject obj; + obj["dirla"] = dirla.toDouble(); + obj["dirra"] = dirra.toDouble(); + obj["dirle"] = dirle.toDouble(); + obj["dirre"] = dirre.toDouble(); + obj["dirru"] = dirru.toDouble(); + + obj["maxla"] = maxla.toDouble(); + obj["maxra"] = maxra.toDouble(); + obj["maxle"] = maxle.toDouble(); + obj["maxre"] = maxre.toDouble(); + obj["maxru"] = maxru.toDouble(); + + obj["scalela"] = scalela.toDouble(); + obj["scalera"] = scalera.toDouble(); + obj["scalele"] = scalele.toDouble(); + obj["scalere"] = scalere.toDouble(); + obj["scaleru"] = scaleru.toDouble(); + obj["la"] = la.toDouble(); obj["ra"] = ra.toDouble(); obj["le"] = le.toDouble(); diff --git a/App/Config/Config.h b/App/Config/Config.h index 1899da3..4529f87 100644 --- a/App/Config/Config.h +++ b/App/Config/Config.h @@ -45,12 +45,13 @@ public slots: void set_GCS_ID(QVariant id); - void getServoOffset(QVariant *la,QVariant *ra, - QVariant *le,QVariant *re, - QVariant *ru); + void getServoOffset(QVariant *dirla, QVariant *dirra, QVariant *dirle, QVariant *dirre, QVariant *dirru, + QVariant *maxla, QVariant *maxra, QVariant *maxle, QVariant *maxre, QVariant *maxru, + QVariant *scalela, QVariant *scalera, QVariant *scalele, QVariant *scalere, QVariant *scaleru, + QVariant *la, QVariant *ra,QVariant *le, QVariant *re,QVariant *ru); - void setServoOffset(QVariant la,QVariant ra, - QVariant le,QVariant re, + void setServoOffset(QVariant dirla, QVariant dirra, QVariant dirle, QVariant dirre, QVariant dirru, QVariant maxla, QVariant maxra, QVariant maxle, QVariant maxre, QVariant maxru, QVariant scalela, QVariant scalera, QVariant scalele, QVariant scalere, QVariant scaleru, QVariant la, QVariant ra, + QVariant le, QVariant re, QVariant ru); void getHeartBeat(QVariant *state,QVariant *frq); diff --git a/App/Setting/Index0/Global/GlobalSetting.cpp b/App/Setting/Index0/Global/GlobalSetting.cpp index 8a5a898..2854abc 100644 --- a/App/Setting/Index0/Global/GlobalSetting.cpp +++ b/App/Setting/Index0/Global/GlobalSetting.cpp @@ -28,9 +28,39 @@ GlobalSetting::GlobalSetting(QWidget *parent) : emit setGCSID(id.toInt());//设置全局ID + + ui->comboBox_dir_la->addItem("1",1); + ui->comboBox_dir_la->addItem("-1",-1); + ui->comboBox_dir_la->setCurrentIndex(0); + + ui->comboBox_dir_ra->addItem("1",1); + ui->comboBox_dir_ra->addItem("-1",-1); + ui->comboBox_dir_ra->setCurrentIndex(0); + + ui->comboBox_dir_le->addItem("1",1); + ui->comboBox_dir_le->addItem("-1",-1); + ui->comboBox_dir_le->setCurrentIndex(0); + + ui->comboBox_dir_re->addItem("1",1); + ui->comboBox_dir_re->addItem("-1",-1); + ui->comboBox_dir_re->setCurrentIndex(0); + + ui->comboBox_dir_ru->addItem("1",1); + ui->comboBox_dir_ru->addItem("-1",-1); + ui->comboBox_dir_ru->setCurrentIndex(0); + + + + on_pushButton_getServoOffset_clicked(); + + + + + + QVariant frq; QVariant state; cfg->getHeartBeat(&state,&frq); @@ -49,6 +79,10 @@ GlobalSetting::GlobalSetting(QWidget *parent) : on_pushButton_getHeartBeat_clicked(); + + + + } GlobalSetting::~GlobalSetting() @@ -101,21 +135,69 @@ void GlobalSetting::on_pushButton_getServoOffset_clicked() { Config *cfg = new Config(); - QVariant la; - QVariant ra; - QVariant le; - QVariant re; - QVariant ru; + QVariant dir_la; + QVariant dir_ra; + QVariant dir_le; + QVariant dir_re; + QVariant dir_ru; - cfg->getServoOffset(&la,&ra,&le,&re,&ru); + QVariant max_la; + QVariant max_ra; + QVariant max_le; + QVariant max_re; + QVariant max_ru; - ui->doubleSpinBox_la->setValue(la.toDouble()); - ui->doubleSpinBox_ra->setValue(ra.toDouble()); - ui->doubleSpinBox_le->setValue(le.toDouble()); - ui->doubleSpinBox_re->setValue(re.toDouble()); - ui->doubleSpinBox_ru->setValue(ru.toDouble()); + QVariant scale_la; + QVariant scale_ra; + QVariant scale_le; + QVariant scale_re; + QVariant scale_ru; - emit setServo(la,ra,le,re,ru); + QVariant bias_la; + QVariant bias_ra; + QVariant bias_le; + QVariant bias_re; + QVariant bias_ru; + + cfg->getServoOffset(&dir_la,&dir_ra,&dir_le,&dir_re,&dir_ru, + &max_la,&max_ra,&max_le,&max_re,&max_ru, + &scale_la,&scale_ra,&scale_le,&scale_re,&scale_ru, + &bias_la,&bias_ra,&bias_le,&bias_re,&bias_ru); + + + ui->comboBox_dir_la->setCurrentIndex(ui->comboBox_dir_la->findData(dir_la)); + ui->comboBox_dir_ra->setCurrentIndex(ui->comboBox_dir_ra->findData(dir_ra)); + ui->comboBox_dir_le->setCurrentIndex(ui->comboBox_dir_le->findData(dir_le)); + ui->comboBox_dir_re->setCurrentIndex(ui->comboBox_dir_re->findData(dir_re)); + ui->comboBox_dir_ru->setCurrentIndex(ui->comboBox_dir_ru->findData(dir_ru)); + + ui->doubleSpinBox_max_la->setValue(max_la.toDouble()); + ui->doubleSpinBox_max_ra->setValue(max_ra.toDouble()); + ui->doubleSpinBox_max_le->setValue(max_le.toDouble()); + ui->doubleSpinBox_max_re->setValue(max_re.toDouble()); + ui->doubleSpinBox_max_ru->setValue(max_ru.toDouble()); + + ui->doubleSpinBox_scale_la->setValue(scale_la.toDouble()); + ui->doubleSpinBox_scale_ra->setValue(scale_ra.toDouble()); + ui->doubleSpinBox_scale_le->setValue(scale_le.toDouble()); + ui->doubleSpinBox_scale_re->setValue(scale_re.toDouble()); + ui->doubleSpinBox_scale_ru->setValue(scale_ru.toDouble()); + + + ui->doubleSpinBox_bias_la->setValue(bias_la.toDouble()); + ui->doubleSpinBox_bias_ra->setValue(bias_ra.toDouble()); + ui->doubleSpinBox_bias_le->setValue(bias_le.toDouble()); + ui->doubleSpinBox_bias_re->setValue(bias_re.toDouble()); + ui->doubleSpinBox_bias_ru->setValue(bias_ru.toDouble()); + + + + + + emit setServo(dir_la,dir_ra,dir_le,dir_re,dir_ru, + max_la,max_ra,max_le,max_re,max_ru, + scale_la,scale_ra,scale_le,scale_re,scale_ru, + bias_la,bias_ra,bias_le,bias_re,bias_ru); delete cfg; @@ -125,25 +207,68 @@ void GlobalSetting::on_pushButton_getServoOffset_clicked() void GlobalSetting::on_pushButton_setServoOffset_clicked() { - QVariant la; - QVariant ra; - QVariant le; - QVariant re; - QVariant ru; + QVariant dir_la; + QVariant dir_ra; + QVariant dir_le; + QVariant dir_re; + QVariant dir_ru; - la = ui->doubleSpinBox_la->value(); - ra = ui->doubleSpinBox_ra->value(); - le = ui->doubleSpinBox_le->value(); - re = ui->doubleSpinBox_re->value(); - ru = ui->doubleSpinBox_ru->value(); + QVariant max_la; + QVariant max_ra; + QVariant max_le; + QVariant max_re; + QVariant max_ru; + + QVariant scale_la; + QVariant scale_ra; + QVariant scale_le; + QVariant scale_re; + QVariant scale_ru; + + QVariant bias_la; + QVariant bias_ra; + QVariant bias_le; + QVariant bias_re; + QVariant bias_ru; - emit setServo(la,ra,le,re,ru); + dir_la = ui->comboBox_dir_la->currentData(); + dir_ra = ui->comboBox_dir_ra->currentData(); + dir_le = ui->comboBox_dir_le->currentData(); + dir_re = ui->comboBox_dir_re->currentData(); + dir_ru = ui->comboBox_dir_ru->currentData(); + + max_la = ui->doubleSpinBox_max_la->value(); + max_ra = ui->doubleSpinBox_max_ra->value(); + max_le = ui->doubleSpinBox_max_le->value(); + max_re = ui->doubleSpinBox_max_re->value(); + max_ru = ui->doubleSpinBox_max_ru->value(); + + scale_la = ui->doubleSpinBox_scale_la->value(); + scale_ra = ui->doubleSpinBox_scale_ra->value(); + scale_le = ui->doubleSpinBox_scale_le->value(); + scale_re = ui->doubleSpinBox_scale_re->value(); + scale_ru = ui->doubleSpinBox_scale_ru->value(); + + bias_la = ui->doubleSpinBox_bias_la->value(); + bias_ra = ui->doubleSpinBox_bias_ra->value(); + bias_le = ui->doubleSpinBox_bias_le->value(); + bias_re = ui->doubleSpinBox_bias_re->value(); + bias_ru = ui->doubleSpinBox_bias_ru->value(); + + + emit setServo(dir_la,dir_ra,dir_le,dir_re,dir_ru, + max_la,max_ra,max_le,max_re,max_ru, + scale_la,scale_ra,scale_le,scale_re,scale_ru, + bias_la,bias_ra,bias_le,bias_re,bias_ru); Config *cfg = new Config(); - cfg->setServoOffset(la,ra,le,re,ru); + cfg->setServoOffset(dir_la,dir_ra,dir_le,dir_re,dir_ru, + max_la,max_ra,max_le,max_re,max_ru, + scale_la,scale_ra,scale_le,scale_re,scale_ru, + bias_la,bias_ra,bias_le,bias_re,bias_ru); cfg->deleteLater(); delete cfg; diff --git a/App/Setting/Index0/Global/GlobalSetting.h b/App/Setting/Index0/Global/GlobalSetting.h index 0dfed5e..136a8cb 100644 --- a/App/Setting/Index0/Global/GlobalSetting.h +++ b/App/Setting/Index0/Global/GlobalSetting.h @@ -39,9 +39,10 @@ signals: void setGCSID(int id); - void setServo(QVariant la,QVariant ra, - QVariant le,QVariant re, - QVariant ru); + void setServo(QVariant dirla, QVariant dirra, QVariant dirle, QVariant dirre, QVariant dirru, + QVariant maxla, QVariant maxra, QVariant maxle, QVariant maxre, QVariant maxru, + QVariant scalela, QVariant scalera, QVariant scalele, QVariant scalere, QVariant scaleru, + QVariant la, QVariant ra,QVariant le, QVariant re,QVariant ru); void setHeartBeat(QVariant state,QVariant frq); diff --git a/App/Setting/Index0/Global/GlobalSetting.ui b/App/Setting/Index0/Global/GlobalSetting.ui index fb2bc32..5458ed2 100644 --- a/App/Setting/Index0/Global/GlobalSetting.ui +++ b/App/Setting/Index0/Global/GlobalSetting.ui @@ -6,153 +6,303 @@ 0 0 - 533 - 384 + 408 + 463 Form - - - - Qt::Vertical - - - - 20 - 302 - - - - - + - 舵机偏差 + 舵机显示设置 - - - - 右副翼 - - - - - + + - -99.000000000000000 + -9999999.000000000000000 - - - - - - 保存 - - - - - - - 左升降 - - - - - - - -99.000000000000000 + + 9999999.000000000000000 - - - 读取 - - - - - - - 方向舵 - - - - - - - 左副翼 - - - - - - - -99.000000000000000 - - - - 右升降 - - + + + + 方向舵 + + + + + - -99.000000000000000 + -9999999.000000000000000 + + + 9999999.000000000000000 + + + + + + + -9999999.000000000000000 + + + 9999999.000000000000000 + + + + + + + 左副翼 + + + + + + + 极值 + + + + + + + 左升降 + + + + + + + -9999999.000000000000000 + + + 9999999.000000000000000 + + + 0.000000000000000 + + + + + + + 零偏 + + + + + + + 方向 + + + + + + + 舵机 + + + + + + + 比例值 + + + + + + + 右副翼 + + + + + + + 保存 + + + + + + + -9999999.000000000000000 + + + 9999999.000000000000000 + + + + + + + 显示值 = 方向 * RAW / 32767 * 极值 / 比例 - 零偏 + + + + + + + -9999999.000000000000000 + + + 9999999.000000000000000 + + + 1.000000000000000 + + + + + + + -9999999.000000000000000 + + + 9999999.000000000000000 + + + 1.000000000000000 + + + + + + + 9999999.000000000000000 + + + 1.000000000000000 + + + + + + + -9999999.000000000000000 + + + 9999999.000000000000000 + + + 1.000000000000000 + + + + + + + -9999999.000000000000000 + + + 9999999.000000000000000 + + + 1.000000000000000 + + + + + + + -9999999.000000000000000 + + + 9999999.000000000000000 + + + 1.000000000000000 + + + + + + + -9999999.000000000000000 + + + 9999999.000000000000000 + + + 1.000000000000000 + + + + + + + -9999999.000000000000000 + + + 9999999.000000000000000 + + + 1.000000000000000 + + + + + + + -9999999.000000000000000 + + + 9999999.000000000000000 + + + 1.000000000000000 + + + + + + + -9999999.000000000000000 + + + 9999999.000000000000000 + + + 1.000000000000000 - - - -99.000000000000000 - - + - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - ID设置 - - - - + + - - + + + + + + + + + + + - 设置地面站ID号 - - - - - - - 设置 + 读取 @@ -202,6 +352,71 @@ + + + + ID设置 + + + + + + + + + 设置地面站ID号 + + + + + + + 设置 + + + + + + + + + + Qt::Vertical + + + + 20 + 302 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + diff --git a/App/ToolsUI/ServoSystem/ServoSystem.cpp b/App/ToolsUI/ServoSystem/ServoSystem.cpp index 409d7da..805c3a6 100644 --- a/App/ToolsUI/ServoSystem/ServoSystem.cpp +++ b/App/ToolsUI/ServoSystem/ServoSystem.cpp @@ -38,20 +38,12 @@ ServoSystem::ServoSystem(QWidget *parent) : Config *cfg = new Config(); - QVariant la; - QVariant ra; - QVariant le; - QVariant re; - QVariant ru; - - cfg->getServoOffset(&la,&ra,&le,&re,&ru); - m_la = la.toFloat(); - m_ra = ra.toFloat(); - m_le = le.toFloat(); - m_re = re.toFloat(); - m_ru = ru.toFloat(); + cfg->getServoOffset(&dir_la,&dir_ra,&dir_le,&dir_re,&dir_ru, + &max_la,&max_ra,&max_le,&max_re,&max_ru, + &scale_la,&scale_ra,&scale_le,&scale_re,&scale_ru, + &bias_la,&bias_ra,&bias_le,&bias_re,&bias_ru); } @@ -192,17 +184,17 @@ void ServoSystem::setServoState(mavlink_servo_output_raw_t *t) QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo3_raw) /32767.0 * 25.0 - m_ru,'f',2)); */ - ui->label_rud_curr->setText( QString::number(-((int16_t)t->servo13_raw)/32767.0 * 25.0 - m_ru,'f',2)); - ui->label_ele_l_curr->setText(QString::number(-((int16_t)t->servo15_raw)/32767.0 * 25.0 - m_le,'f',2)); - ui->label_ele_r_curr->setText(QString::number( ((int16_t)t->servo12_raw)/32767.0 * 25.0 - m_re,'f',2)); - ui->label_ail_l_curr->setText(QString::number( ((int16_t)t->servo14_raw)/32767.0 * 35.0 / 1.12 - m_la,'f',2)); - ui->label_ail_r_curr->setText(QString::number(-((int16_t)t->servo11_raw)/32767.0 * 35.0 / 1.117 - m_ra,'f',2)); + ui->label_rud_curr->setText( QString::number(dir_ru.toInt() * ((int16_t)t->servo13_raw)/32767.0 * max_ru.toDouble()/scale_ru.toDouble() - bias_ru.toDouble(),'f',2)); + ui->label_ele_l_curr->setText(QString::number(dir_le.toInt() * ((int16_t)t->servo15_raw)/32767.0 * max_le.toDouble()/scale_le.toDouble() - bias_le.toDouble(),'f',2)); + ui->label_ele_r_curr->setText(QString::number(dir_re.toInt() * ((int16_t)t->servo12_raw)/32767.0 * max_re.toDouble()/scale_re.toDouble() - bias_re.toDouble(),'f',2)); + ui->label_ail_l_curr->setText(QString::number(dir_la.toInt() * ((int16_t)t->servo14_raw)/32767.0 * max_la.toDouble()/scale_la.toDouble() - bias_la.toDouble(),'f',2)); + ui->label_ail_r_curr->setText(QString::number(dir_ra.toInt() * ((int16_t)t->servo11_raw)/32767.0 * max_ra.toDouble()/scale_ra.toDouble() - bias_ra.toDouble(),'f',2)); - ui->label_rud_cmd->setText( QString::number(-((int16_t)t->servo3_raw)/32767.0 * 25.0 - m_ru,'f',2));//ru - ui->label_ele_l_cmd->setText(QString::number(-((int16_t)t->servo1_raw)/32767.0 * 25.0 - m_le,'f',2));//le - ui->label_ele_r_cmd->setText(QString::number( ((int16_t)t->servo2_raw)/32767.0 * 25.0 - m_re,'f',2));//re - ui->label_ail_l_cmd->setText(QString::number( ((int16_t)t->servo4_raw)/32767.0 * 35.0 / 1.12 - m_la,'f',2));//la - ui->label_ail_r_cmd->setText(QString::number(-((int16_t)t->servo5_raw)/32767.0 * 35.0 / 1.117 - m_ra,'f',2));//ra + ui->label_rud_cmd->setText( QString::number(dir_ru.toInt() * ((int16_t)t->servo3_raw)/32767.0 * max_ru.toDouble()/scale_ru.toDouble() - bias_ru.toDouble(),'f',2));//ru + ui->label_ele_l_cmd->setText(QString::number(dir_le.toInt() * ((int16_t)t->servo1_raw)/32767.0 * max_le.toDouble()/scale_le.toDouble() - bias_le.toDouble(),'f',2));//le + ui->label_ele_r_cmd->setText(QString::number(dir_re.toInt() * ((int16_t)t->servo2_raw)/32767.0 * max_re.toDouble()/scale_re.toDouble() - bias_re.toDouble(),'f',2));//re + ui->label_ail_l_cmd->setText(QString::number(dir_la.toInt() * ((int16_t)t->servo4_raw)/32767.0 * max_la.toDouble()/scale_la.toDouble() - bias_la.toDouble(),'f',2));//la + ui->label_ail_r_cmd->setText(QString::number(dir_ra.toInt() * ((int16_t)t->servo5_raw)/32767.0 * max_ra.toDouble()/scale_ra.toDouble() - bias_ra.toDouble(),'f',2));//ra /* sbus = feedback (ra) diff --git a/App/ToolsUI/ServoSystem/ServoSystem.h b/App/ToolsUI/ServoSystem/ServoSystem.h index fc94f8d..ac418da 100644 --- a/App/ToolsUI/ServoSystem/ServoSystem.h +++ b/App/ToolsUI/ServoSystem/ServoSystem.h @@ -54,11 +54,31 @@ private: Ui::ServoSystem *ui; - float m_la = 0; - float m_ra = 0; - float m_le = 0; - float m_re = 0; - float m_ru = 0; + + QVariant dir_la; + QVariant dir_ra; + QVariant dir_le; + QVariant dir_re; + QVariant dir_ru; + + QVariant max_la; + QVariant max_ra; + QVariant max_le; + QVariant max_re; + QVariant max_ru; + + QVariant scale_la; + QVariant scale_ra; + QVariant scale_le; + QVariant scale_re; + QVariant scale_ru; + + QVariant bias_la; + QVariant bias_ra; + QVariant bias_le; + QVariant bias_re; + QVariant bias_ru; + }; diff --git a/App/mainwindow.cpp b/App/mainwindow.cpp index a6d16ad..c82e002 100644 --- a/App/mainwindow.cpp +++ b/App/mainwindow.cpp @@ -891,15 +891,34 @@ void MainWindow::updateDlink(float rssi, uint64_t bitrate) } -void MainWindow::setServoOffset(QVariant la,QVariant ra, - QVariant le,QVariant re, - QVariant ru) +void MainWindow::setServoOffset(QVariant dirla, QVariant dirra, QVariant dirle, QVariant dirre, QVariant dirru, + QVariant maxla, QVariant maxra, QVariant maxle, QVariant maxre, QVariant maxru, + QVariant scalela, QVariant scalera, QVariant scalele, QVariant scalere, QVariant scaleru, + QVariant la, QVariant ra,QVariant le, QVariant re,QVariant ru) { - m_la = la.toDouble(); - m_ra = ra.toDouble(); - m_le = le.toDouble(); - m_re = re.toDouble(); - m_ru = ru.toDouble(); + dir_la = dirla; + dir_ra = dirra; + dir_le = dirle; + dir_re = dirre; + dir_ru = dirru; + + max_la = maxla; + max_ra = maxra; + max_le = maxle; + max_re = maxre; + max_ru = maxru; + + scale_la = scalela; + scale_ra = scalera; + scale_le = scalele; + scale_re = scalere; + scale_ru = scaleru; + + bias_la = la; + bias_ra = ra; + bias_le = le; + bias_re = re; + bias_ru = ru; } // 16~20Hz左右 运行频率可能太高 @@ -1587,16 +1606,18 @@ void MainWindow::updateUI()//事件驱动式更新数据 statusui->setState(11,QString::number(-dlink->mavlinknode->vehicle.global_position_int.vz * 10e-3,'f',1),tr(" ")); - statusui->setServo(1,QString::number( ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo14_raw)/32767.0 * 35.0 / 1.12 - m_la,'f',2), - QString::number( ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo4_raw) /32767.0 * 35.0 / 1.12 - m_la,'f',2)); - statusui->setServo(2,QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo11_raw)/32767.0 * 35.0 / 1.117 - m_ra,'f',2), - QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo5_raw) /32767.0 * 35.0 / 1.117 - m_ra,'f',2)); - statusui->setServo(3,QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo15_raw)/32767.0 * 25.0 - m_le,'f',2), - QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo1_raw) /32767.0 * 25.0 - m_le,'f',2)); - statusui->setServo(4,QString::number( ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo12_raw)/32767.0 * 25.0 - m_re,'f',2), - QString::number( ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo2_raw) /32767.0 * 25.0 - m_re,'f',2)); - statusui->setServo(5,QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo13_raw)/32767.0 * 25.0 - m_ru,'f',2), - QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo3_raw) /32767.0 * 25.0 - m_ru,'f',2)); + + + statusui->setServo(1,QString::number(dir_la.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo14_raw)/32767.0 * max_la.toDouble()/scale_la.toDouble() - bias_la.toDouble(),'f',2), + QString::number(dir_la.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo4_raw) /32767.0 * max_la.toDouble()/scale_la.toDouble() - bias_la.toDouble(),'f',2)); + statusui->setServo(2,QString::number(dir_ra.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo11_raw)/32767.0 * max_ra.toDouble()/scale_ra.toDouble() - bias_ra.toDouble(),'f',2), + QString::number(dir_ra.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo5_raw) /32767.0 * max_ra.toDouble()/scale_ra.toDouble() - bias_ra.toDouble(),'f',2)); + statusui->setServo(3,QString::number(dir_le.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo15_raw)/32767.0 * max_le.toDouble()/scale_le.toDouble() - bias_le.toDouble(),'f',2), + QString::number(dir_le.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo1_raw) /32767.0 * max_le.toDouble()/scale_le.toDouble() - bias_le.toDouble(),'f',2)); + statusui->setServo(4,QString::number(dir_re.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo12_raw)/32767.0 * max_re.toDouble()/scale_re.toDouble() - bias_re.toDouble(),'f',2), + QString::number(dir_re.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo2_raw) /32767.0 * max_re.toDouble()/scale_re.toDouble() - bias_re.toDouble(),'f',2)); + statusui->setServo(5,QString::number(dir_ru.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo13_raw)/32767.0 * max_ru.toDouble()/scale_ru.toDouble() - bias_ru.toDouble(),'f',2), + QString::number(dir_ru.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo3_raw) /32767.0 * max_ru.toDouble()/scale_ru.toDouble() - bias_ru.toDouble(),'f',2)); /* @@ -1724,6 +1745,19 @@ void MainWindow::updateUI()//事件驱动式更新数据 + + toolsui->diagram->setServo(1,QString::number(dir_la.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo14_raw)/32767.0 * max_la.toDouble()/scale_la.toDouble() - bias_la.toDouble(),'f',2), + QString::number(dir_la.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo4_raw) /32767.0 * max_la.toDouble()/scale_la.toDouble() - bias_la.toDouble(),'f',2)); + toolsui->diagram->setServo(2,QString::number(dir_ra.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo11_raw)/32767.0 * max_ra.toDouble()/scale_ra.toDouble() - bias_ra.toDouble(),'f',2), + QString::number(dir_ra.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo5_raw) /32767.0 * max_ra.toDouble()/scale_ra.toDouble() - bias_ra.toDouble(),'f',2)); + toolsui->diagram->setServo(3,QString::number(dir_le.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo15_raw)/32767.0 * max_le.toDouble()/scale_le.toDouble() - bias_le.toDouble(),'f',2), + QString::number(dir_le.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo1_raw) /32767.0 * max_le.toDouble()/scale_le.toDouble() - bias_le.toDouble(),'f',2)); + toolsui->diagram->setServo(4,QString::number(dir_re.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo12_raw)/32767.0 * max_re.toDouble()/scale_re.toDouble() - bias_re.toDouble(),'f',2), + QString::number(dir_re.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo2_raw) /32767.0 * max_re.toDouble()/scale_re.toDouble() - bias_re.toDouble(),'f',2)); + toolsui->diagram->setServo(5,QString::number(dir_ru.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo13_raw)/32767.0 * max_ru.toDouble()/scale_ru.toDouble() - bias_ru.toDouble(),'f',2), + QString::number(dir_ru.toInt() * ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo3_raw) /32767.0 * max_ru.toDouble()/scale_ru.toDouble() - bias_ru.toDouble(),'f',2)); + +/* toolsui->diagram->setServo(1,QString::number( ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo14_raw)/32767.0 * 35.0 / 1.12 - m_la,'f',2), QString::number( ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo4_raw)/32767.0 * 35.0 / 1.12 - m_la,'f',2)); toolsui->diagram->setServo(2,QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo11_raw)/32767.0 * 35.0 / 1.117 - m_ra,'f',2), @@ -1735,7 +1769,7 @@ void MainWindow::updateUI()//事件驱动式更新数据 toolsui->diagram->setServo(5,QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo13_raw)/32767.0 * 25.0 - m_ru,'f',2), QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo3_raw)/32767.0 * 25.0 - m_ru,'f',2)); - +*/ QString Fix; switch (dlink->mavlinknode->vehicle.gps_raw_int.fix_type) { diff --git a/App/mainwindow.h b/App/mainwindow.h index a73c8c3..65cb4bd 100644 --- a/App/mainwindow.h +++ b/App/mainwindow.h @@ -77,9 +77,10 @@ public slots: void beep(void); - void setServoOffset(QVariant la,QVariant ra, - QVariant le,QVariant re, - QVariant ru); + void setServoOffset(QVariant dirla, QVariant dirra, QVariant dirle, QVariant dirre, QVariant dirru, + QVariant maxla, QVariant maxra, QVariant maxle, QVariant maxre, QVariant maxru, + QVariant scalela, QVariant scalera, QVariant scalele, QVariant scalere, QVariant scaleru, + QVariant la, QVariant ra,QVariant le, QVariant re,QVariant ru); protected slots: @@ -152,11 +153,29 @@ protected: bool isEngineStartUp = false; - float m_la = 0; - float m_ra = 0; - float m_le = 0; - float m_re = 0; - float m_ru = 0; + QVariant dir_la; + QVariant dir_ra; + QVariant dir_le; + QVariant dir_re; + QVariant dir_ru; + + QVariant max_la; + QVariant max_ra; + QVariant max_le; + QVariant max_re; + QVariant max_ru; + + QVariant scale_la; + QVariant scale_ra; + QVariant scale_le; + QVariant scale_re; + QVariant scale_ru; + + QVariant bias_la; + QVariant bias_ra; + QVariant bias_le; + QVariant bias_re; + QVariant bias_ru; };