b
This commit is contained in:
@@ -6,6 +6,24 @@ ParameterProcess::ParameterProcess(QObject *parent) : QObject(parent)
|
||||
|
||||
paramInspect = new ParameterInspector();
|
||||
|
||||
|
||||
qRegisterMetaType<uint8_t>("uint8_t");
|
||||
qRegisterMetaType<uint16_t>("uint16_t");
|
||||
qRegisterMetaType<uint32_t>("uint32_t");
|
||||
|
||||
|
||||
//开启线程之后signal失效
|
||||
|
||||
connect(paramInspect,SIGNAL(ReadCmd(uint8_t,uint8_t,uint8_t)),
|
||||
this,SLOT(ReadCmd(uint8_t,uint8_t,uint8_t)),Qt::DirectConnection);//多线程连接方式
|
||||
|
||||
connect(paramInspect,SIGNAL(WriteCmd(uint8_t,uint8_t,uint32_t)),
|
||||
this,SLOT(WriteCmd(uint8_t,uint8_t,uint32_t)),Qt::DirectConnection);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
paramInspect->show();
|
||||
|
||||
}
|
||||
@@ -56,6 +74,13 @@ void ParameterProcess::stop()
|
||||
void ParameterProcess::process()//线程函数
|
||||
{
|
||||
uint8_t count = 0;
|
||||
|
||||
connect(paramInspect,SIGNAL(ReadCmd(uint8_t,uint8_t,uint8_t)),
|
||||
this,SLOT(ReadCmd(uint8_t,uint8_t,uint8_t)));
|
||||
|
||||
connect(paramInspect,SIGNAL(WriteCmd(uint8_t,uint8_t,uint32_t)),
|
||||
this,SLOT(WriteCmd(uint8_t,uint8_t,uint32_t)));
|
||||
|
||||
while (running_flag)
|
||||
{
|
||||
count ++;
|
||||
@@ -92,6 +117,13 @@ void ParameterProcess::ReadCmd(uint8_t m_sysid, uint8_t m_compid,uint8_t type)
|
||||
compid = m_compid;
|
||||
status.m_Mode = RecieveMode;//接收模式
|
||||
status.recieve.type = (type)?(_readtype::One):(_readtype::All);
|
||||
|
||||
qDebug() << "sysid" << sysid << endl
|
||||
<< "compid" << compid << endl
|
||||
<< "Mode" << status.m_Mode << endl
|
||||
<< "type" << status.recieve.type << endl
|
||||
<< "start...";
|
||||
|
||||
start();//开启线程
|
||||
}
|
||||
|
||||
@@ -102,6 +134,12 @@ void ParameterProcess::WriteCmd(uint8_t m_sysid, uint8_t m_compid ,uint32_t coun
|
||||
//mission_status.transmit.count = count;
|
||||
status.m_Mode = TransmitMode;//发送模式
|
||||
|
||||
qDebug() << "sysid" << sysid << endl
|
||||
<< "compid" << compid << endl
|
||||
<< "Mode" << status.m_Mode << endl
|
||||
<< "type" << status.recieve.type << endl
|
||||
<< "start...";
|
||||
|
||||
start();//开启线程
|
||||
}
|
||||
|
||||
@@ -120,7 +158,7 @@ void ParameterProcess::ParameterParse(mavlink_message_t msg)
|
||||
paramInspect->appendParameter(msg);//发送的时候需要连同当前的sysid 和 compid也发送下去
|
||||
status.recieve.isWaitingforValue = false;
|
||||
status.transmit.isWaitingforValue = false;
|
||||
qDebug() << "param_value.param_index" << param_value.param_index;
|
||||
//qDebug() << "param_value.param_index" << param_value.param_index;
|
||||
}break;
|
||||
case MAVLINK_MSG_ID_PARAM_EXT_ACK:{
|
||||
mavlink_msg_param_ext_ack_decode(&msg,¶m_ext_ack);
|
||||
@@ -161,14 +199,8 @@ void ParameterProcess::ReadStateMachine(void)//一整列
|
||||
qDebug() << "start reading parameter";
|
||||
status.recieve.isWaitingforValue = true;
|
||||
|
||||
if(status.recieve.type == _readtype::All)
|
||||
{
|
||||
request_list();//一整列,也可以一个,龚老师飞控并不支持这个
|
||||
}
|
||||
else if(status.recieve.type == _readtype::One)
|
||||
{
|
||||
request_read("xxx",0);//读取0
|
||||
}
|
||||
request_list();//一整列,也可以一个,龚老师飞控并不支持这个
|
||||
|
||||
step++;
|
||||
time = QTime::currentTime().msecsSinceStartOfDay();
|
||||
}
|
||||
@@ -177,17 +209,35 @@ void ParameterProcess::ReadStateMachine(void)//一整列
|
||||
//如果超时,那么结束
|
||||
if((QTime::currentTime().msecsSinceStartOfDay() - time) > 1000)
|
||||
{
|
||||
qDebug() << "parameter item time out ";
|
||||
step = 2;
|
||||
timeout_count = 0;
|
||||
qDebug() << "parameter read fail";
|
||||
|
||||
//做一个列表,记录谁丢了,后面单独请求
|
||||
//qmap list
|
||||
|
||||
qDebug() << "parameter item time out ";
|
||||
timeout_count = 0;
|
||||
|
||||
|
||||
if(status.recieve.type == _readtype::All)//如果是ALL的情况下,那么再用单独一个一个去请求一次
|
||||
{
|
||||
qDebug() << "try One mode";
|
||||
|
||||
status.recieve.type =_readtype::One;
|
||||
|
||||
status.recieve.isWaitingforValue = true;
|
||||
time = QTime::currentTime().msecsSinceStartOfDay();
|
||||
request_read("xxx",0);//读取0
|
||||
}
|
||||
else
|
||||
{
|
||||
step = 2;
|
||||
qDebug() << "parameter read fail";
|
||||
}
|
||||
}
|
||||
else//如果没有超时
|
||||
{
|
||||
if(status.recieve.isWaitingforValue == false)//收到item
|
||||
{
|
||||
qDebug() << "parameter item reccieved";
|
||||
//qDebug() << "parameter item reccieved";
|
||||
timeout_count = 0;
|
||||
|
||||
time = QTime::currentTime().msecsSinceStartOfDay();
|
||||
|
||||
Reference in New Issue
Block a user