タイマを利用するには
タイマインスタンスを利用すると、一定期間後の処理や、一定間隔のインター
バルでの処理を行うことができます。
タイマクラス | インスタンスアクセス関数 |
WSDtimer | WSGIappTimer() |
一定期間後の処理を行うには
一定期間後の処理を行うには、まず、タイマから起動され処理を行う関数を
用意します。次に、タイマインスタンスに対して、トリガ起動としてその実
行関数を登録します。
タイマ登録メンバ関数 | 機能 |
addTriggerProc() | トリガ起動登録関数 |
delTriggerProc() | トリガ起動削除関数 |
#include <WSDtimer.h>
//タイマから起動される処理関数のサンプル
void triggerHandler(unsigned char clock,void* data){
//clock は 250ms 毎にカウントアップされるカウンタ
//data は、タイマ登録する時に渡されたデータ
//ここでタイマ処理を行う...
}
void event_procedure(WSCbase* obj){
//ここで指定されたデータが、タイマ処理関数に引き渡される。
void* data = (void*)1234;
//一定期間後に1回起動するタイマ関数の登録 //1000ms 後に起動
long id = WSGIappTimer()->addTriggerProc( triggerHandler,WS1000MS,data );
//タイマを途中で止める場合は
WSGIappTimer()->delTriggerProc( id );
}
triggerHandler() 関数には、タイマから起動されて実行したい処理を記述し
ます。triggerHahdler() 関数に、データを与えたい場合、addTriggerProc()
の第3引数にvoid* で渡します。addTriggerProc() の返り値は、タイマ処理
の ID が返ってきます。もし、そのタイマ処理を止めたい場合は、
delTriggerProc() でその ID を指定します。
また、イベントプロシージャの場合とは異なり、タイマ処理関数の場合はオ
ブジェクトの更新処理が呼ばれないので、インスタンスのプロパティ値など
を変更する場合は、update()を呼んで描画更新させてください。
//タイマから起動される処理関数のサンプル
void timerHandler(unsigned char clock,void* data){
WSCbase* object = (WSCbase*)data;
object->setProperty(WSNlabelString,"時間です");
object->update(); //インスタンスの描画更新
}
一定期間毎に処理を行うには
一定期間毎に処理を行うには、まずタイマから起動され処理を行う関数を用
意します。次に、タイマインスタンスに対して、タイマ起動としてその実行
関数を登録します。
タイマ登録メンバ関数 | 機能 |
addTimerProc() | タイマ起動登録関数 |
delTimerProc() | タイマ起動削除関数 |
#include <WSDtimer.h>
//タイマから起動される処理関数のサンプル
void timerHandler(unsigned char clock,void* data){
//clock は 250ms 毎にカウントアップされるカウンタ
//data は、タイマ登録する時に渡されたデータ
//ここでタイマ処理を行う...
}
void event_procedure(WSCbase* obj){
//ここで指定されたデータが、タイマ処理関数に引き渡される。
void* data = (void*)1234;
//一定期間毎に起動するタイマ関数の登録 //500ms 毎に起動
long id = WSGIappTimer()->addTimerProc( timerHandler,WS500MS,data );
//タイマを途中で止める場合は
WSGIappTimer()->delTimerProc( id );
}
timerHandler() 関数には、タイマから起動されて実行したい処理を記述しま
す。timerHahdler() 関数に、データを与えたい場合、addTimerProc() の第
3引数にvoid* で渡します。addTimerProc() の返り値は、タイマ処理の ID
が返ってきます。もし、そのタイマ処理を止めたい場合は、delTimerProc()
でその ID を指定します。
また、イベントプロシージャの場合とは異なり、タイマ処理関数の場合はオ
ブジェクトの更新処理が呼ばれないので、インスタンスのプロパティ値など
を変更する場合は、update()を呼んで描画更新させてください。なお、指定
できるタイマの間隔は、WS250MS、WS500MS、WS750MS、WS1000MS、WS1250MS、...
などの250ms 間隔の値です。
//タイマから起動される処理関数のサンプル
void timerHandler(unsigned char clock,void* data){
WSCbase* object = (WSCbase*)data;
object->setProperty(WSNlabelString,"時間です");
object->update(); //インスタンスの描画更新
}