Files
TowerOptoSifAndSpectral/source/Thread/Scheduler.cpp

75 lines
1.5 KiB
C++
Raw Normal View History

2021-12-13 17:18:24 +08:00
#include "Scheduler.h"
Scheduler::Scheduler(QObject* parent /*= nullptr*/)
{
m_GrabTimer = new QTimer(this);
connect(m_GrabTimer, &QTimer::timeout, this, &Scheduler::OnTimeCounter);
connect(this, &Scheduler::SignalSelfStart, this, &Scheduler::StartAsPlanned);
}
Scheduler::~Scheduler()
{
if (m_GrabTimer != NULL)
{
m_GrabTimer->stop();
delete m_GrabTimer;
}
}
void Scheduler::SetAcqTimeParams(AcqTimeSettings struAcqTime)
{
m_struAcqTime = struAcqTime;
}
void Scheduler::Preheating()
{
qDebug() << "Start Preheating";
#ifdef _DEBUG
QThread::msleep(5000);
#else
QThread::msleep(1000*60*5);
#endif
qDebug() << "Preheating Finished";
}
void Scheduler::SelfStart()
{
emit SignalSelfStart();
}
void Scheduler::StartAsPlanned()
{
bool bStopWait = false;
QTime qtTime = QTime::currentTime();
while (!bStopWait)
{
QThread::msleep(100);
if (m_struAcqTime.qtStartTime <= qtTime && qtTime < m_struAcqTime.qtStopTime)
2021-12-13 17:18:24 +08:00
{
bStopWait = true;
}
}
2021-12-16 15:50:17 +08:00
int iIntervalInMS = m_struAcqTime.qtInterval.hour() * 3600 * 1000 + m_struAcqTime.qtInterval.minute() * 60 * 1000 + m_struAcqTime.qtInterval.second() * 1000;
2021-12-13 17:18:24 +08:00
2021-12-14 14:52:29 +08:00
m_GrabTimer->start(iIntervalInMS);
2021-12-13 17:18:24 +08:00
}
int Scheduler::OnTimeCounter()
{
2021-12-16 15:50:17 +08:00
QTime qtTime = QTime::currentTime();
if (m_struAcqTime.qtStartTime <= qtTime && qtTime < m_struAcqTime.qtStopTime)
{
2021-12-21 17:37:48 +08:00
qDebug() << "it's time to work...work work.";
emit SignalGrabOnce();
return 0;
}
else
{
system("gpio write 1 0");//<2F><EFBFBD>ϵ<EFBFBD>
qDebug() << "gpio write 1 0......"<<endl;
2021-12-16 15:50:17 +08:00
qDebug() << "Non working time. Idling......";
2021-12-21 17:37:48 +08:00
return 0;
2021-12-16 15:50:17 +08:00
}
2021-12-13 17:18:24 +08:00
}