標籤:eva public errno.h created ISE val desc 基類 settimer
#ifndef __TIMERTASK_H_#define __TIMERTASK_H_/* 定時器任務基類 */#include "asr_taskinterface.h"#include "comontype.h"class BaseTimerTask{public: BaseTimerTask():m_uiTvSec(0),m_uiTvUsec(0){} virtual ~BaseTimerTask(){}public: //設定定時器間隔 void setTimer(UINT uiTvSec,UINT uiTvUsec = 0); //啟動定時器 void startTimer(UINT uiTvSec,UINT uiTvUsec = 0); //週期性任務 virtual void intervalTask() = 0;private: UINT m_uiTvSec; //秒 UINT m_uiTvUsec; //微秒};#endif
#include "timertask.h"#include <sys/select.h>#include <sys/time.h>#include <sys/types.h>#include <unistd.h>#include <errno.h>/********************************************************BaseTimerTask*********************************************************//******************************************************** Func Name: setTimerDate Created: 2018-7-30 Description: 設定定時器 Input: uiTvSec:設定間隔多少秒 uiTvUsec:設定間隔多少微秒 Output: Return: Caution: *********************************************************/void BaseTimerTask::setTimer(UINT uiTvSec,UINT uiTvUsec){ m_uiTvSec = uiTvSec; m_uiTvUsec = uiTvUsec;}/******************************************************** Func Name: setTimerDate Created: 2018-7-30 Description: 開啟定時器 Input: uiTvSec:設定間隔多少秒 uiTvUsec:設定間隔多少微秒 Output: Return: Caution: *********************************************************/void BaseTimerTask::startTimer(UINT uiTvSec,UINT uiTvUsec){ int infds = 0; struct timeval stTimeval; m_uiTvSec = uiTvSec; m_uiTvUsec = uiTvUsec; do { stTimeval.tv_sec = (long)m_uiTvSec; stTimeval.tv_usec = (long)m_uiTvUsec; //select()每次返回後都會清空struct timeval參數 infds = select(0, NULL, NULL, NULL, &stTimeval); //執行任務 intervalTask(); } while ((0 == infds) || (infds < 0 && EINTR == errno));}
#ifndef __TESTTIMER_H_#define __TESTTIMER_H_/* 測試定時器任務類 */#include "timertask.h"class CPrintTimer:public BaseTimerTask{public: virtual void intervalTask();};#endif
#include <iostream>#include "testtimer.h"/********************************************************CPrintTimer*********************************************************//******************************************************** Func Name: intervalTaskDate Created: 2018-7-30 Description: 執行任務 Input: Output: Return: Caution: *********************************************************/void CPrintTimer::intervalTask(){ std::cout << "praise chaos" << std::endl;}
C++ 定時器任務類實現