添加修改参数的IAS_SEL,修正通讯强度,和传输速率
This commit is contained in:
+175
-22
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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
@@ -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));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -103,6 +103,8 @@ private slots:
|
||||
void Timer_1s_out(void);
|
||||
|
||||
|
||||
void updateDlink(float rssi,uint64_t bitrate);
|
||||
|
||||
protected slots:
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -78,7 +78,7 @@ void statusprocess::process()//线程函数
|
||||
m_heartbeat.system_status,
|
||||
m_heartbeat.mavlink_version);
|
||||
|
||||
qDebug() << "heartbeat";
|
||||
//qDebug() << "heartbeat";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user