質問: cnt - 1 endif endwhile mpause 5000 ``` 現在は、方法が分からず、上記のようにyesnoboxで対応しています。 なお、機器はYAMAHAのFWX-120を使用しています。 何か方法がありましたら、よろしくお願いいたします。
回答: 何秒か待機する`mpause`の代替として`mtimeout`と`recvln`を組み合わせることで、割込入力待ちしながら待機できませんか? 下記のコードはlinux上で任意の処理(ここではpingとsleep)と3秒待機を繰り返しながら無限ループしています。 `check_input`ラベルが呼ばれるたびに3秒まで入力を待ち、その間に空白文字(スペースや改行文字)のみ入力されると正規表現にヒットして`exit`でマクロが終了します。 ``` while 1 sendln 'ping 127.0.0.1 -c 2 -i 0.5' ; 任意の処理 wait '#' '$' ; 処理完了まで待機 call check_input sendln 'sleep 1' ; 任意の処理その2 wait '#' '$' ; 処理完了まで待機 call check_input endwhile ; スリープしながら入力チェック :check_input timeout = 3 ; タイムアウトを3秒に設定 recvln ; タイムアウトまでスリープしながら入力チェック if result = 1 then ; 何かが入力された strmatch inputstr '.+[$#]\s*$' ; 末尾が$か#の後に空白文字(スペースや改行文字)のみ if result = 1 then ; 上記正規表現に合致 exit ; マクロ終了 endif endif timeout = 0 ; タイムアウトを無限(初期値)に戻す return ; 呼び出し元に戻る ```