添加修改参数的IAS_SEL,修正通讯强度,和传输速率

This commit is contained in:
hm
2020-12-11 17:47:29 +08:00
parent 5f0de85207
commit 92170ac18d
10 changed files with 338 additions and 87 deletions
+175 -22
View File
@@ -166,6 +166,89 @@ void CommandBox::setFloatFlag(bool flag)
floatflag = flag;
}
float CommandBox::param_getvalue(QVariant param,uint8_t type)
{
float value;
union {
uint8_t u8[8];
int8_t i8[8];
uint16_t u16[4];
int16_t i16[4];
uint32_t u32[2];
int32_t i32[2];
uint64_t u64;
int64_t i64;
float f[2];
double d;
}src;
switch (type)
{
case MAV_PARAM_TYPE_UINT8:
{
src.u8[0] = param.toUInt();
((uint8_t *)&value)[0] = src.u8[0];
}break;
case MAV_PARAM_TYPE_INT8:
{
src.i8[0] = param.toUInt();
((int8_t *)&value)[0] = src.i8[0];
}break;
case MAV_PARAM_TYPE_UINT16:
{
src.u16[0] = param.toUInt();
((uint16_t *)&value)[0] = src.u16[0];
}break;
case MAV_PARAM_TYPE_INT16:
{
src.i16[0] = param.toUInt();
((int16_t *)&value)[0] = src.i16[0];
}break;
case MAV_PARAM_TYPE_UINT32:
{
src.u32[0] = param.toUInt();
((uint32_t *)&value)[0] = (uint32_t)src.u32[0];
}break;
case MAV_PARAM_TYPE_INT32:
{
src.i32[0] = param.toUInt();
((int32_t *)&value)[0] = (int32_t)src.i32[0];
}break;
case MAV_PARAM_TYPE_UINT64:
{
src.u64 = param.toUInt();
((uint64_t *)&value)[0] = (uint64_t )src.u64;
}break;
case MAV_PARAM_TYPE_INT64:
{
src.i64 = param.toUInt();
((int64_t *)&value)[0] = (int64_t)src.i64;
}break;
case MAV_PARAM_TYPE_REAL32:
{
src.f[0] = param.toFloat();
((float *)&value)[0] = (float)src.f[0];
}break;
case MAV_PARAM_TYPE_REAL64:
{
src.d = param.toDouble();
((double *)&value)[0]= (double)src.d;
}break;
default:
{
src.f[0] = param.toFloat();
((float *)&value)[0] = (float)src.i32[0];
}break;
}
return value;
}
void CommandBox::commandAccepted(bool flag,uint16_t command,uint8_t result)
{
bool isFundSender = false;
@@ -340,26 +423,7 @@ void CommandBox::on_pushButton_SendCommand_clicked()
else if(cmdType == 1)
{
emit showMessage(tr("修改参数 ") + " " + ui->comboBox_IMU->itemText(m_value) + " " + QString::number(m_value),5000);
float value;
union {
uint8_t u8[8];
int8_t i8[8];
uint16_t u16[4];
int16_t i16[4];
uint32_t u32[2];
int32_t i32[2];
uint64_t u64;
int64_t i64;
float f[2];
double d;
}src;
src.i8[0] = m_value;
((int8_t *)&value)[0] = src.i8[0];
m_value = value;
emit showMessage(tr("修改参数 ") + " " + m_id.toLatin1().data() + " " + QString::number(m_value),5000);
emit WriteCmd(m_sysid,m_compid,m_id.toLatin1().data(),m_type,m_value);
@@ -585,8 +649,6 @@ void CommandBox::on_pushButton_IMU_clicked()
{
if((ui->comboBox_IMU->currentIndex() != -1)&&(ui->comboBox_sys->currentIndex() != -1))
{
int8_t value = ui->comboBox_IMU->currentData(Qt::UserRole).toInt();
uint8_t sysid = ui->comboBox_sys->currentData(Qt::UserRole).toInt();
uint8_t compid = 1;
QString id;
@@ -595,6 +657,8 @@ void CommandBox::on_pushButton_IMU_clicked()
id.clear();
id.append("use_ext_ins");
float value = param_getvalue(ui->comboBox_IMU->currentData(Qt::UserRole).toInt(),type);
on_paramClicked(sysid,compid,id,type,value);
}
@@ -609,6 +673,93 @@ void CommandBox::on_pushButton_IMU_clicked()
}
void CommandBox::on_pushButton_IAS_SEL_0_clicked()
{
if(ui->comboBox_sys->currentIndex() != -1)
{
uint8_t sysid = ui->comboBox_sys->currentData(Qt::UserRole).toInt();
uint8_t compid = 1;
QString id;
uint8_t type = MAV_PARAM_TYPE_UINT8;
id.clear();
id.append("IAS_SEL");
float value = param_getvalue(0,type);
on_paramClicked(sysid,compid,id,type,value);
}
else
{
QMessageBox *box = new QMessageBox(this);
box->setWindowTitle(tr("警告"));
box->setText(tr("请设定目标"));
box->show();
}
}
void CommandBox::on_pushButton_IAS_SEL_1_clicked()
{
if(ui->comboBox_sys->currentIndex() != -1)
{
uint8_t sysid = ui->comboBox_sys->currentData(Qt::UserRole).toInt();
uint8_t compid = 1;
QString id;
uint8_t type = MAV_PARAM_TYPE_UINT8;
id.clear();
id.append("IAS_SEL");
float value = param_getvalue(1,type);
on_paramClicked(sysid,compid,id,type,value);
}
else
{
QMessageBox *box = new QMessageBox(this);
box->setWindowTitle(tr("警告"));
box->setText(tr("请设定目标"));
box->show();
}
}
void CommandBox::on_pushButton_IAS_SEL_2_clicked()
{
if(ui->comboBox_sys->currentIndex() != -1)
{
uint8_t sysid = ui->comboBox_sys->currentData(Qt::UserRole).toInt();
uint8_t compid = 1;
QString id;
uint8_t type = MAV_PARAM_TYPE_UINT8;
id.clear();
id.append("IAS_SEL");
float value = param_getvalue(2,type);
on_paramClicked(sysid,compid,id,type,value);
}
else
{
QMessageBox *box = new QMessageBox(this);
box->setWindowTitle(tr("警告"));
box->setText(tr("请设定目标"));
box->show();
}
}
void CommandBox::addVehicles(int sysid, int compid)
{
Q_UNUSED(compid)
@@ -786,3 +937,5 @@ void CommandBox::on_pushButton_test_stop_clicked()
on_commandClicked(tr("设定 %1").arg(ui->pushButton_test_stop->text()),
0,0,0,0,0,0,0,20008,0);
}
+8
View File
@@ -39,6 +39,8 @@ public slots:
void setFloat(void);
void setFloatFlag(bool flag);
float param_getvalue(QVariant param,uint8_t type);
void commandAccepted(bool flag,uint16_t command,uint8_t result);
void on_comboBox_TestPoint_currentIndexChanged(int index);
@@ -125,6 +127,12 @@ private slots:
void on_pushButton_test_stop_clicked();
void on_pushButton_IAS_SEL_0_clicked();
void on_pushButton_IAS_SEL_1_clicked();
void on_pushButton_IAS_SEL_2_clicked();
private:
QWidget *m_parent;
+82 -54
View File
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>773</width>
<height>601</height>
<width>794</width>
<height>876</height>
</rect>
</property>
<property name="windowTitle">
@@ -359,45 +359,6 @@
</item>
<item row="1" column="0">
<layout class="QGridLayout" name="gridLayout_6">
<item row="2" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>惯导选择</string>
</property>
<layout class="QGridLayout" name="gridLayout_8">
<property name="spacing">
<number>12</number>
</property>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_sys"/>
</item>
<item row="0" column="3">
<widget class="QComboBox" name="comboBox_IMU"/>
</item>
<item row="0" column="4">
<widget class="QPushButton" name="pushButton_IMU">
<property name="text">
<string>选择</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_2">
<property name="text">
<string>选择惯导</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>无人机#</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
@@ -652,6 +613,86 @@
</layout>
</widget>
</item>
<item row="4" column="0">
<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>
<item row="2" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>参数设置</string>
</property>
<layout class="QGridLayout" name="gridLayout_8">
<property name="spacing">
<number>12</number>
</property>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_sys"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>无人机#</string>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QPushButton" name="pushButton_IAS_SEL_2">
<property name="text">
<string>外置大气机</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>选择惯导</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboBox_IMU"/>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="pushButton_IMU">
<property name="text">
<string>选择</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_12">
<property name="text">
<string>IAS_SEL</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="pushButton_IAS_SEL_0">
<property name="text">
<string>地速算空速</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QPushButton" name="pushButton_IAS_SEL_1">
<property name="text">
<string>内置大气机</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="3" column="0">
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
@@ -698,19 +739,6 @@
</layout>
</widget>
</item>
<item row="4" column="0">
<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>
</item>
<item row="1" column="2">
+6 -2
View File
@@ -31,16 +31,20 @@ GlobalSetting::GlobalSetting(QWidget *parent) :
on_pushButton_getServoOffset_clicked();
QVariant frq;
QVariant state;
cfg->getHeartBeat(&state,&frq);
ui->comboBox_HeartBeat_Frq->addItem(tr("1.0Hz"),1.0);
ui->comboBox_HeartBeat_Frq->addItem(tr("2.0Hz"),2.0);
ui->comboBox_HeartBeat_Frq->addItem(tr("5.0Hz"),5.0);
ui->comboBox_HeartBeat_Frq->addItem(tr("10Hz"),10);
ui->comboBox_HeartBeat_Frq->setCurrentIndex(0);
ui->comboBox_HeartBeat_Frq->setCurrentIndex(ui->comboBox_HeartBeat_Frq->findData(frq));
ui->comboBox_HeartBeat_State->addItem(tr("发送心跳包"),true);
ui->comboBox_HeartBeat_State->addItem(tr("关闭心跳包"),false);
ui->comboBox_HeartBeat_State->setCurrentIndex(0);
ui->comboBox_HeartBeat_State->setCurrentIndex(ui->comboBox_HeartBeat_Frq->findData(state));
on_pushButton_getHeartBeat_clicked();
+11 -2
View File
@@ -190,6 +190,8 @@ MainWindow::MainWindow(QWidget *parent)
connect(dlink->mavlinknode,SIGNAL(CommuniationLost(bool)),
this,SLOT(setCommunicationLostState(bool)),Qt::DirectConnection);
connect(dlink->mavlinknode,SIGNAL(updateDlink(float,uint64_t)),
this,SLOT(updateDlink(float,uint64_t)),Qt::DirectConnection);
//this ----- map
connect(map,SIGNAL(TotalDistanceUpdate(double)),
@@ -843,6 +845,14 @@ void MainWindow::setCommunicationLostState(bool flag)
last = flag;
}
void MainWindow::updateDlink(float rssi, uint64_t bitrate)
{
statusui->setDlink(1,QString::number(rssi,'f',0),
QString::number(bitrate));
}
void MainWindow::setServoOffset(QVariant la,QVariant ra,
QVariant le,QVariant re,
QVariant ru)
@@ -1500,8 +1510,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
statusui->setDlink(1,QString::number(dlink->mavlinknode->rssi,'f',0),
QString::number(dlink->mavlinknode->bitrate));
+2
View File
@@ -103,6 +103,8 @@ private slots:
void Timer_1s_out(void);
void updateDlink(float rssi,uint64_t bitrate);
protected slots:
+44 -3
View File
@@ -252,7 +252,7 @@ void MavLinkNode::start()
logTimer = new QTimer();
logTimer->setInterval(60 * 1000);//1min
logTimer->setInterval(1 * 60 * 1000);//5min
connect(logTimer,&QTimer::timeout,
this,&MavLinkNode::LogTimerOut,Qt::DirectConnection);
@@ -377,15 +377,24 @@ void MavLinkNode::TimerOut(void)
{
//qDebug() << "timeout" << "communication lost";
if((parserSuccess + parserFailure) > 0)
qDebug() << "TotalFrame_1s" << TotalFrame_1s << LossFrame_1s;
if(TotalFrame_1s > 0)
{
rssi = (float)(parserSuccess * 100.0f) / (parserSuccess + parserFailure);
rssi = (float)(TotalFrame_1s - LossFrame_1s)/ TotalFrame_1s * 100;
}
else
{
rssi = 0;
}
TotalFrame_1s = 0;
LossFrame_1s = 0;
if(hasConneted)
{
CommucationOverCount --;
@@ -401,6 +410,9 @@ void MavLinkNode::TimerOut(void)
emit CommuniationLost(isCommunicationLost);
}
}
emit updateDlink(rssi,bitrate);
}
void MavLinkNode::LogTimerOut(void)
@@ -535,6 +547,7 @@ QByteArray MavLinkNode::readbuff(quint32 src)
void MavLinkNode::Mavlinkparse(quint32 src,QByteArray datagram)
{
static int count = 0;
static uint8_t last_seq = 0;
mavlink_message_t msg;
mavlink_status_t status;
@@ -548,6 +561,34 @@ void MavLinkNode::Mavlinkparse(quint32 src,QByteArray datagram)
{
parserSuccess += 1;
if(msg.seq != ((uint8_t)(last_seq + 1)))
{
if(msg.seq > last_seq)
{
LossFrame_1s += msg.seq - last_seq;
}
else
{
LossFrame_1s += last_seq - 255 + msg.seq;
}
}
if(msg.seq > last_seq)
{
TotalFrame_1s += msg.seq - last_seq;
}
else
{
TotalFrame_1s += last_seq - 255 + msg.seq;
}
last_seq = msg.seq;
uint8_t buff[MAVLINK_MAX_PACKET_LEN+sizeof(quint64)];
quint64 currentTimestamp = ((quint64)QDateTime::currentMSecsSinceEpoch()) * 1000;
qToBigEndian(currentTimestamp, buff);
+6
View File
@@ -87,9 +87,15 @@ public:
uint64_t parserSuccess = 0;
uint64_t parserFailure = 0;
uint64_t TotalFrame_1s = 0;
uint64_t LossFrame_1s = 0;
float rssi = 100;
signals:
void updateDlink(float rssi,uint64_t byte);
void CommuniationLost(bool);
void showMessage(const QString &message,int TimeOut = 0);
+1 -1
View File
@@ -78,7 +78,7 @@ void statusprocess::process()//线程函数
m_heartbeat.system_status,
m_heartbeat.mavlink_version);
qDebug() << "heartbeat";
//qDebug() << "heartbeat";
}
}
+3 -3
View File
@@ -58,7 +58,7 @@ int DLink::SendMessageTo(quint8 ch, quint8 *msg, quint16 len)
qint64 flag = DLink::Clientsock->writeDatagram((const char *)msg,len,node.addr, node.port);
if(flag != -1)
{
qDebug() << "Client Send Msg";
//qDebug() << "Client Send Msg";
}
}
}
@@ -68,7 +68,7 @@ int DLink::SendMessageTo(quint8 ch, quint8 *msg, quint16 len)
qint64 flag = DLink::serialPort->write((const char *)msg,len);
if(flag != -1)
{
qDebug() << "serialPort Send Msg";
//qDebug() << "serialPort Send Msg";
}
}
@@ -78,7 +78,7 @@ int DLink::SendMessageTo(quint8 ch, quint8 *msg, quint16 len)
qint64 flag = multicast_sock->writeDatagram((const char *)msg, len,multicast_transmit_addr, multicast_transmit_port);
if(flag != -1)
{
qDebug() << "multicast Send Msg";
//qDebug() << "multicast Send Msg";
}
}