一般的なプログラムで質問があります。

ある関数を作りたいのです。その関数とはパルス的な動きをするものです。
ある秒時間がきたら開始して、指定時間ONして指定時間OFFします終了
時間がきたら、OFFします。

説明:
boolean PulsTime (int start_time, int finsh_time, int on_time, int off_time)

int start_timeは現在時刻の秒と一致したらON時間の開始を表します。
int finsh_timeはONとOFFのトータル時間を表します。
int on_timeはON(TRUE)である時間を表します。
int off_timeはOFF(FALSE)である時間を表します。

簡潔なアルゴリズムがあれば是非教えてください。
すばらしいアルゴリズムをお待ちしています。

A 回答 (2件)

仕様に謎が多いのですが、返り値がオン、オフに対応すると仮定すると、



int GetNowTimeBySecond( void );

boolean PulsTime (int start_time, int on_time, int off_time)
{
int now_time = (GetNowTimeBySecond() - start_time) % (on_time + off_time);

return (now_time > 0) && (now_time < on_time);
}

といった感じでしょうか。
現在時刻を得る関数は環境によって違うので、グローバル時刻(秒)をintで返す関数をGetNowTimeBySecond()として定義しておきます。
int finsh_timeは使ってません。終了はこの関数を呼び出したところで判定して下さい。
    • good
    • 0
この回答へのお礼

情報不足で申し訳ありません。しかし、まさに私の期待する回答でした。たった2行で書いてしまうなんて!ありがとうございました。

お礼日時:-0001/11/30 00:00

んーっと普通関数って一回値を返したらそれっきりだと思うんですが、オンするとかオフするってのはまさか戻り値じゃないですよね?


それと、パルス的ってことはタイマー割り込みみたいな事が必要だと思います。さらにその割り込みを待つためのループも必要でしょう。

トータル時間まで関数が制御を占有して良いなら、グローバル変数に結果を返すような形で可能だと思います。
内部にループを作って、時間比較してグローバル変数を操作するようになると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ