-PR-
締切済み

時間のパルスを作りたい。

  • 困ってます
  • 質問No.15831
  • 閲覧数45
  • ありがとう数7
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 44% (35/79)

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

ある関数を作りたいのです。その関数とはパルス的な動きをするものです。
ある秒時間がきたら開始して、指定時間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)である時間を表します。

簡潔なアルゴリズムがあれば是非教えてください。
すばらしいアルゴリズムをお待ちしています。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル13

ベストアンサー率 26% (511/1924)

んーっと普通関数って一回値を返したらそれっきりだと思うんですが、オンするとかオフするってのはまさか戻り値じゃないですよね?
それと、パルス的ってことはタイマー割り込みみたいな事が必要だと思います。さらにその割り込みを待つためのループも必要でしょう。

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


  • 回答No.2
レベル10

ベストアンサー率 50% (52/103)

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

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は使ってません。終了はこの関数を呼び出したところで判定して下さい。
お礼コメント
cyan1110

お礼率 44% (35/79)

情報不足で申し訳ありません。しかし、まさに私の期待する回答でした。たった2行で書いてしまうなんて!ありがとうございました。
投稿日時 - 0000-00-00 00:00:00
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ