waitrecv

【Tera Term マクロ言語】コマンドリファレンス

waitrecv 機能

[通信コマンド]

文字列を待ちます。

コマンドライン

waitrecv <sub-string> <len> <pos>

機能説明

マクロの実行を一時停止させて、文字列が届くのを待ちます。

次の条件を満たすと、waitrecv の判断処理を行います。

・文字列の長さが <len> 文字
・文字列がその <pos> 文字目(1オリジン)から始まる副文字列 <sub-string> を含んでいる

コマンドは <len> バイトの文字列を受信するたびに、条件を満たすかどうかを確認します。
例えば、<sub-string> が "def"、<len> が 9 、<pos> が 4 のとき、文字列 "abcdefghi" は条件を満たします。

もし条件を満たす文字列が送られてきたら、システム変数 <inputstr> に保存されます。

システム変数 <timeout><mtimeout> が 0 より大きい場合、<timeout>.<mtimeout> 秒の時間がすぎるとタイムアウトが発生します。
タイムアウトの値が 0 以下の場合は、タイムアウトは発生しません。

これらのコマンドの実行結果はシステム変数 <result> に格納されます。

その後、マクロの次の行へ処理を進めます。

なお、<mtimeout> の精度は 50 msec 程度です。
<sub-string>
待機したい受信文字列に含まれる副文字列を指定します。
<len>
対象とする、受信文字列の長さを指定します。

9 であれば 9 文字受信した時点で条件を満たします。
<pos>
受信文字列内で <sub-string> を期待する文字数目を指定します

3 であれば、受信した文字の中で 3 文字目から <sub-string> が含まれることを示します。
受信文字列より大きな数値*1は指定できません。

また、同じ理由で 5 文字中の 4 文字目から xxx という3文字を含む文字列という指定もできません。

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<sub-string>文字列待機したい受信文字列に含まれる文字列を指定します。
<len>整数対象とする、受信文字列の長さを指定します。
<pos>整数受信文字列内で <sub-string> を期待する文字数目を指定します。

対象バージョン

全てのバージョンで利用可能です。

戻り値

戻り値として以下の変数が定義されます。
変数名意味
result-1<pos> 文字目から始まる <sub-string> を含む文字列が来て inputstr に保存された。<br>しかし文字列の長さは、タイムアウトのために <len> 文字より短い
0タイムアウト。条件を満たす文字列は送られてこなかった
1条件をみたす文字列が来て inputstr に保存された
inputstr文字列条件をみたす文字列が格納される

関連コマンド

setdebug
wait

*1 : 例えば、5文字中の10文字目という無理な数値

使用方法

使用例

; Every byte is shown in hexadecimal
setdebug 2
waitrecv '43 0D'  2 1
setdebug 0

; In this mode non printable characters are shown as control keys e.g. ^A = 1, ^B = 2 etc.
setdebug 1
waitrecv 'C^M' 2 1
setdebug 0

; Normal mode
setdebug 0
waitrecv 'C'#13 2 1

サンプル

サンプルマクロはありません。

備考

特にありません。