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)


【関連記事】
[UWSC]現在のタイムスタンプ(文字列)を返す関数
[UWSC]タイムアウト関数(作り直し)


スポンサーリンク



↓ ランキングに参加しています!(Ctrlキーを押しながら) ↓

blogramのブログランキング

ポク太郎の「俺の説明聞いてくれ」 コンテンツ
ポク太郎の「俺の説明聞いてくれ」最キラー記事 IT関連
電気回路やプログラムの記事。元々のメインコンテンツ。
UWSC奮闘記
プログラミングのできる子に
デジタルの世界って
映画・ドラマ・芸能
ハリウッドが主のエンターテイメントの記事。最近は似顔絵多し。
戦士の息抜き
ブログ運営
AnalyticsやSerchConsolなどの使い方、アクセスアップに関する話題。
アドセンス関連
他のGoogleツール
その他
アホのもくろみ
アホの雑記
取りとめもなく好き勝手に書く記事。不本意にも一番人気だったり。
役に立つかも
休むに似たり
好き勝手に書く
落書き漫画
何故人気なのか全く解らない数コマ漫画。結局最大コンテンツに。
物思いに耽る
免責事項 ホームへ戻る

スポンサーリンク





0 件のコメント:

コメントを投稿