2017年2月12日日曜日

[UWSC]タイムアウト関数 [自作関数]

初心者のプログラミング導入のため、UWSCという開発ソフトを使って作り上げる作業を実際にやって見せるカテゴリ。準備した自作関数や使い方、トラブルを記事にしていきます。得るものがあれば幸いです。
今回は、設定した時間が経過したかどうかを判定するタイムアウト関数を作りました。

記事の内容

○タイムアウト関数
戻値(int)=timeout(s,tout)

【ご注意】--------------------------------------------------------
ここで紹介するタイムアウト関数は少し使いづらいので、↓で作り直ししております。
---------------------------------------------------------------

UWSCは主に非同期プログラム用ということで多少ビビっております。
そこでタイムアウトの判定を頻繁に行うであろうと思い、関数にしておくことにしました。


タイムアウトを判定する関数

●タイムアウト関数

自作関数timeout s=GETTIME()
R=timeout(s,15)   15秒以上経ってたらRには1が代入される
timeout関数
1
2
3
4
5
6
7
FUNCTION timeout(s,tout)
   IF (GETTIME()-s)>=tout
    RESULT=1
   ELSE
    RESULT=0
   ENDIF

FEND


呼び出し側からは、例えば、
使用例
1
2
3
4
5
6
7
 s=GETTIME()
 WHILE (timeout(s,5)=0)

  ここに色んな命令を書く

 SLEEP(0.1)
 WEND
などとして、ループにタイムアウト機能を持たせます。

その他プログラム中にある命令・関数
sleep(n)n秒間何もしないというUWSC特有の命令です。
s=GETTIME()その時点の時刻(秒単位)を得るUWSCに搭載されている関数です。
while (条件)
wend
条件が成り立っている間はwhile~wendの間をループし続ける命令です。
これは大抵の開発環境にあるループ命令です。

ここで作ったタイムアウト関数は秒単位ですが、GETTIME()関数はミリ秒を測ることもでき、それを使って高精度に判定することもできますが、タイムアウト程度なら不要かなと思い上のようにしました。

あとループ中にsleep(0.1)と0.1秒間スリープさせているのは、UWSCのように他のソフトを制御する場合、コンピュータの演算能力を他のアプリケーションプログラムに渡してそちらを進める必要があるためです。

これはUWSC特有の処理です。例では、ループ1回につき0.1秒間の“何もしない時間”ができあがることになります。


記事の内容

記事の内容は伝わりましたでしょうか。
○タイムアウト関数
戻値(int)=timeout(s,tout)


関数群のダウンロードはこちら
func_poku.uwsのコメント欄に呼び出し方が書いてあります。


【関連記事】[UWSC]よく使う記号をグローバル宣言
[UWSC]配列の最大要素を返す関数
[UWSC]文字列操作あれこれ2
[UWSC]文字列操作あれこれ


スポンサーリンク



ブログ村へ blogramのブログランキング

ポク太郎の「俺の説明聞いてくれ」 コンテンツ
ポク太郎の「俺の説明聞いてくれ」最キラー記事 コンピュータ(ハード/ソフト)
映画・ドラマ・芸能
変人のつぶやきとトラブル
ホームへ戻る


0 件のコメント:

コメントを投稿