定时器在线程的用法好像很奇怪,需要研究一下
This commit is contained in:
@@ -6,47 +6,38 @@ void SendMessageTo(uint8_t ch, uint8_t *data,uint16_t len)
|
||||
qDebug() << data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
MissionProcess::MissionProcess(QObject *parent) : QObject(parent)
|
||||
{
|
||||
|
||||
QTimer::singleShot(1000,this, &MissionProcess::mTimerOut);
|
||||
}
|
||||
|
||||
void MissionProcess::mTimerOut()
|
||||
{
|
||||
ismTimerTimeOut = true;
|
||||
qDebug() << ismTimerTimeOut;
|
||||
qDebug() << QThread::currentThread();
|
||||
qDebug() << "time out" << ismTimerTimeOut;
|
||||
}
|
||||
|
||||
void MissionProcess::mTimerReset(int time)
|
||||
{
|
||||
if(MissionProcess::mTimer != nullptr)
|
||||
if(mTimer != nullptr)
|
||||
{
|
||||
//mTimer->start(time);
|
||||
mTimer->start(time);
|
||||
|
||||
MissionProcess::mTimer->start(time);
|
||||
|
||||
if(MissionProcess::mTimer->isActive())
|
||||
if(mTimer->isActive())
|
||||
{
|
||||
qDebug() << "start timer";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
ismTimerTimeOut = false;
|
||||
}
|
||||
|
||||
void MissionProcess::mTimerStop()
|
||||
{
|
||||
if(MissionProcess::mTimer != nullptr)
|
||||
MissionProcess::mTimer->stop();
|
||||
if(mTimer != nullptr)
|
||||
{
|
||||
mTimer->stop();
|
||||
}
|
||||
}
|
||||
|
||||
void MissionProcess::setRunFrq(uint32_t frq)
|
||||
@@ -60,9 +51,6 @@ void MissionProcess::setRunFrq(uint32_t frq)
|
||||
|
||||
void MissionProcess::start()
|
||||
{
|
||||
|
||||
qDebug() << QThread::currentThreadId();
|
||||
|
||||
if(Missionthread == nullptr)
|
||||
{
|
||||
Missionthread = new QThread();
|
||||
@@ -75,9 +63,6 @@ void MissionProcess::start()
|
||||
running_flag = true;
|
||||
Missionthread->start();
|
||||
qDebug() << "thread start" << running_flag;
|
||||
|
||||
|
||||
qDebug() << QThread::currentThreadId();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -102,10 +87,11 @@ void MissionProcess::process()//线程函数
|
||||
{
|
||||
uint8_t count = 0;
|
||||
|
||||
if(!MissionProcess::mTimer)
|
||||
if(!mTimer)
|
||||
{
|
||||
MissionProcess::mTimer = new QTimer;
|
||||
connect(MissionProcess::mTimer,&QTimer::timeout,this,&MissionProcess::mTimerOut);
|
||||
mTimer = new QTimer;
|
||||
mTimer->moveToThread(Missionthread);
|
||||
connect(mTimer,&QTimer::timeout,this,&MissionProcess::mTimerOut);
|
||||
}
|
||||
|
||||
while (running_flag)
|
||||
@@ -131,12 +117,9 @@ void MissionProcess::process()//线程函数
|
||||
|
||||
void MissionProcess::SendMessage(mavlink_message_t msg)
|
||||
{
|
||||
uint8_t MAVLink_Buf[256+20];
|
||||
uint16_t MAVLink_Len;
|
||||
|
||||
MAVLink_Len = mavlink_msg_to_send_buffer(MAVLink_Buf, &msg);
|
||||
|
||||
SendMessageTo(0,MAVLink_Buf, MAVLink_Len);
|
||||
uint8_t buff[256+20];
|
||||
uint16_t len = mavlink_msg_to_send_buffer(buff, &msg);
|
||||
SendMessageTo(0,buff, len);
|
||||
}
|
||||
|
||||
|
||||
@@ -183,13 +166,17 @@ void MissionProcess::ReadStateMachine(void)
|
||||
static uint8_t step = 0;
|
||||
static uint8_t timeout_count = 0;
|
||||
|
||||
//定时器好像行不通,需要读取当前时间来做超时
|
||||
|
||||
if(step == 0)
|
||||
{
|
||||
request_list();//请求读取某一个设备的航线
|
||||
//mTimerReset(1000);//1秒,如果超时,那么重新发送一次指令
|
||||
mTimerReset(1000);//1秒,如果超时,那么重新发送一次指令
|
||||
|
||||
QTimer::singleShot(1000,this, &MissionProcess::mTimerOut);
|
||||
|
||||
qDebug() << this << QThread::currentThread();
|
||||
|
||||
step++;//下一个阶段
|
||||
}
|
||||
else if(step == 1)//等待收到Count
|
||||
|
||||
Reference in New Issue
Block a user