- 建議以process專屬的MQ, 設置定時器, 儘可能避免以外部process進行定時器的設置, 造成日後難以追查觸發的來源或控管不易
- 建議有限度地新增定時觸發事件, 以避免降低系統效能
#設置計時器, 以給定的MQ為觸發對象
TimerHandler::TimerHandler (char *mq_name);
mq_name: process專屬的MQ名稱
ex:
TimerHandler timer (MQ_EDPLCRCV);
#新增定時觸發事件
TimerHandler::add (char *tm_name, int msec, int msg_id, void *msg, int msg_size);
tm_name: 定時事件名稱
msec : 間隔時間 (毫秒 milli-seconds)
msg_id: 觸發事件代碼
msg: 觸發資料
msg_size: 觸發資料長度
ex:
timer.add (“Timer_AliveMsg”, 30000, MSG_TIMER_ALIVEMSG, 0, 0);
timer.add (“Timer_Hello”, 30000, MSG_TIMER_HELLO, "hello world", strlen("hello world"));
#啟動/停止/重置
TimerHandler::set_enable (char *tm_name, bool run_it);
tm_name: 定時事件名稱
run_it: 啟動/重置(enable), 停止(disable)
ex:
timer.set_enable (“Timer_AliveMsg”, true);
timer.set_enable (“Timer_AliveMsg”, false);
#移除定時觸發事件
TimerHandler::remove (char *tm_name);
tm_name: 定時事件名稱
ex:
timer.remove ("Timer_AliveMsg");
#設置間隔時間 (milli-seconds)
TimerHandler::set_interval (char *tm_name, int msec);
tm_name: 定時事件名稱
msec: 間隔時間 (毫秒 milli-seconds)
ex:
timer.set_interval ("Timer_AliveMsg", 10000);