使用定时器的方式做超时,,但是失效,不起作用

This commit is contained in:
hm
2020-03-12 23:19:04 +08:00
parent f6d83b53f4
commit cfa8f91a1f
+32 -14
View File
@@ -3,7 +3,7 @@
void SendMessageTo(uint8_t ch, uint8_t *data,uint16_t len)
{
qDebug() << data;
}
@@ -16,11 +16,7 @@ void SendMessageTo(uint8_t ch, uint8_t *data,uint16_t len)
MissionProcess::MissionProcess(QObject *parent) : QObject(parent)
{
if(!mTimer)
{
mTimer = new QTimer;
connect(mTimer,&QTimer::timeout,this,&MissionProcess::mTimerOut);
}
}
void MissionProcess::mTimerOut()
@@ -31,15 +27,26 @@ void MissionProcess::mTimerOut()
void MissionProcess::mTimerReset(int time)
{
if(mTimer)
mTimer->start(time);
if(MissionProcess::mTimer != nullptr)
{
//mTimer->start(time);
MissionProcess::mTimer->start(time);
if(MissionProcess::mTimer->isActive())
{
qDebug() << "start timer";
}
}
ismTimerTimeOut = false;
}
void MissionProcess::mTimerStop()
{
if(mTimer)
mTimer->stop();
if(MissionProcess::mTimer != nullptr)
MissionProcess::mTimer->stop();
}
void MissionProcess::setRunFrq(uint32_t frq)
@@ -53,6 +60,9 @@ void MissionProcess::setRunFrq(uint32_t frq)
void MissionProcess::start()
{
qDebug() << QThread::currentThreadId();
if(Missionthread == nullptr)
{
Missionthread = new QThread();
@@ -65,6 +75,9 @@ void MissionProcess::start()
running_flag = true;
Missionthread->start();
qDebug() << "thread start" << running_flag;
qDebug() << QThread::currentThreadId();
}
else
{
@@ -89,7 +102,11 @@ void MissionProcess::process()//线程函数
{
uint8_t count = 0;
if(!MissionProcess::mTimer)
{
MissionProcess::mTimer = new QTimer;
connect(MissionProcess::mTimer,&QTimer::timeout,this,&MissionProcess::mTimerOut);
}
while (running_flag)
{
@@ -105,7 +122,6 @@ void MissionProcess::process()//线程函数
{
WriteStateMachine();
}
}
//退出线程
Missionthread->quit();
@@ -170,13 +186,15 @@ void MissionProcess::ReadStateMachine(void)
if(step == 0)
{
request_list();//请求读取某一个设备的航线
mTimerReset(1000);//1秒,如果超时,那么重新发送一次指令
//mTimerReset(1000);//1秒,如果超时,那么重新发送一次指令
QTimer::singleShot(1000,this, &MissionProcess::mTimerOut);
step++;//下一个阶段
}
else if(step == 1)//等待收到Count
{
//如果超时,那么重新发一次指令
if(ismTimerTimeOut)
{
step = 1;