プレイ日記
おちゃめ ochame_nako
スリープした時間を1ミリ秒単位で取得可能なSLEEPTIME関数を作りました。 これを使えば「○○秒間以上スリープしたら××する」というプログラムを簡単に作ることができます。 使用方法や公開キーはコメントにて。
12そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
この関数にはグローバル変数_SLEEPTIMEを使用しているのでプログラムの最初の方でVAR _SLEEPTIMEと宣言しておいてください。 使用直前にA=SLEEPTIME(0)として初期化します。SLEEPTIME(0)を実行すればいいだけなので変数名はAでなくても任意の変数でOKです。 ループ中にSLEEPTIME(1)の値を適当な変数に代入しておけばスリープから復帰した際にスリープ時間を取得可能です。(詳しくはサンプルプログラムを参照)
0そうだね
プレイ済み
返信[2]
親投稿
ゆうさん^^ budou12817
メシノコ
0そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
スリープしたか否かだけ分かれば良い場合はSLEEPTIME(1)の値を別の変数に入れなくてもIF SLEEPTIME(1) THEN ~でもOKです。(スリープしてない場合はSLEEPTIME(1)の値は0であるため) なお、前回SLEEPTIME(1)を実行してから1秒以上経過している場合はA=SLEEPTIME(0)のようにして初期化して使用してください。
0そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
このSLEEPTIME関数は引数に任意の値を入れることでその指定時間以上スリープしたかどうかも簡単に判断可能となっています。 (例) IF SLEEPTIME(30) THEN ~ 30秒以上スリープしていればTHEN以下を実行
0そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
このSLEEPTIME関数は、スリープ中は増加しないMAINCNTとは異なりver.3.3.0で追加されたMILLISECがスリープ中も増加していることを利用して作りました。 1秒単位の取得であればTIME$を使用してもできますが、TIME$の場合は日付を跨いだ場合は正常に動作をしないためDATE$との併用が必須になります。 それと比べてMILLISECを使用した場合は超お手軽だし、1000秒単位で取得可能といいことだらけです。 このSLEEPTIME関数の公開キーは【 23NXDWQV 】です。
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
うえこうさんへ ハードウェアの機能を使っているのではなくプチコン3号が動作しているか否かで判別しているためプチコン3号以外を実行中は正しく判別はできませんね。 これはTIME$を使っても同じことです。 あくまで擬似的にスリープ状態を取得しているだけにすぎません。
2そうだね
プレイ済み
返信[7]
親投稿
Ϊċăņ ďо įт hikahikaru3
なんで前投稿がうねいに消されとんのや… 本題)Aって小数も受け付けそうな感じがするけどそれで正しく機能するのでしょうか?
0そうだね
未プレイ
返信[8]
親投稿
おちゃめ ochame_nako
SLEEPTIME関数の引数は2.5とか3.1とかの小数でも正しく判定が可能です。 ただし、私が数100回の計測した結果、スリープ時間は最短でも1.08秒程度なので1未満の数や1に近い数は正しく判定できない可能性が極めて高いです。(スリープした時点でスリープ時間は1秒を超える) したがって、1に近い小数値は可能な限り避ける方が良いでしょう。(2以上ならば何ら問題はない)
1そうだね
プレイ済み