线程操作加锁
This commit is contained in:
@@ -63,14 +63,14 @@ void ParameterProcess::process()//线程函数
|
||||
while (running_flag)
|
||||
{
|
||||
count ++;
|
||||
QThread::msleep(1000.0/running_frq);
|
||||
//QThread::msleep(1000.0/running_frq);
|
||||
|
||||
switch(status.m_Mode)
|
||||
{
|
||||
default:
|
||||
case Nop_Mode :break;
|
||||
case RecieveMode : ReadStateMachine();break;
|
||||
case TransmitMode : WriteStateMachine();break;
|
||||
case Nop_Mode : QThread::yieldCurrentThread();break;
|
||||
case RecieveMode : ReadStateMachine();QApplication::processEvents();break;
|
||||
case TransmitMode : WriteStateMachine();QApplication::processEvents();break;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -176,6 +176,7 @@ void ParameterProcess::Parse(mavlink_message_t msg)
|
||||
status.transmit.isWaitingforValue = false;
|
||||
|
||||
qDebug() << "param_value" << param_value.param_index << param_value.param_value;
|
||||
emit showMessage(tr("recieve parameter %1 %2").arg(param_value.param_id).arg(param_value.param_value));
|
||||
}break;
|
||||
case MAVLINK_MSG_ID_PARAM_EXT_ACK:{
|
||||
mavlink_msg_param_ext_ack_decode(&msg,¶m_ext_ack);
|
||||
@@ -216,6 +217,8 @@ void ParameterProcess::ReadStateMachine(void)//一整列
|
||||
qDebug() << "start reading parameter";
|
||||
status.recieve.isWaitingforValue = true;
|
||||
|
||||
emit showMessage(tr("Start Reading Parameters,use All Mode"));
|
||||
|
||||
request_list();//一整列,也可以一个,龚老师飞控并不支持这个
|
||||
|
||||
step++;
|
||||
@@ -235,16 +238,19 @@ void ParameterProcess::ReadStateMachine(void)//一整列
|
||||
|
||||
if(status.recieve.type == _readtype::All)//如果是ALL的情况下,那么再用单独一个一个去请求一次
|
||||
{
|
||||
emit showMessage(tr("Start Reading Parameters,use One Mode"));
|
||||
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";
|
||||
emit showMessage(tr("Fail to Read Parameters"));
|
||||
}
|
||||
}
|
||||
else//如果没有超时
|
||||
@@ -282,6 +288,7 @@ void ParameterProcess::ReadStateMachine(void)//一整列
|
||||
//停止线程,不能停止
|
||||
//stop();
|
||||
|
||||
emit showMessage(tr("Reading parameters complete"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -296,7 +303,7 @@ void ParameterProcess::WriteStateMachine(void)
|
||||
{
|
||||
//向其他线程或者自己读取航点的数量
|
||||
status.transmit.isWaitingforValue = true;
|
||||
|
||||
emit showMessage(tr("write parameter %1,%2").arg(param_set.param_id).arg(param_set.param_value));
|
||||
set(param_set.param_id,param_set.param_type,param_set.param_value);//发送一个参数
|
||||
time = QTime::currentTime().msecsSinceStartOfDay();
|
||||
step++;//下一个阶段
|
||||
|
||||
Reference in New Issue
Block a user