2022.8.17
前へ
次へ
ホームページトップへ戻る


PIC−USBIO using BASIC

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第40回]



●INPUT$

説明していない入力命令(正確に言うと命令ではなくて関数ですが)がもうひとつありました。
それが今回説明するINPUT$です。

INPUT$の書式です。
INPUT$(n)

nは1〜40の整数値で整数型の変数、配列を書くこともできます。
INKEY$([第38回]参照)に似ていますがINKEY$は文字を1個入力するとすぐにリターンします。
それに対してINPUT$(n)はキーボードからn個の文字を入力するまでリターンしません。
入力する文字は画面には表示されません(これはINKEY$と同じです)。
INKEY$はASCIIコードの$20(10進数の32、SPACEの文字コード)〜$7D(10進数の125、 } の文字コード)に対応する文字しか入力できませんが、INPUT$(n)はそれ以外の文字も入力できます。

まずは簡単な使用例です。

プログラムを実行していますが20行のinput$(5)のところで入力待ちになっています。
このとき画面にはカーソルマークは表示されません。
指定した5文字を入力し終わるまでこの画面のままで次に進みません。

5文字(a b c d e)を入力しました。

指定した文字数だけ入力するとinput$は終了して次の命令の実行に移ります。
input$は最後に[Enter]を入力する必要はありません。
[Enter]を入力するとそれも1文字に数えられます。

コード$20〜$7D以外の文字コードに対応する文字キーの入力例です。

入力する文字キーによってはそのまま前のプログラムのようにPRINT文で表示すると画面の制御に異常が出る可能性がありますからプログラムを変えて1文字ずつ文字コードで表示するようにしました。
4、5、6、8、13
と表示されました。
[Ctrl][d]、[Ctrl][e]、[Ctrl][f]、[Back Space]、[Enter]を入力した結果の表示です。
[Back Space]はコード08で[Enter]はコード0D(10進数では13)です。
なお[Ctrl][b]を入力すると実行中のBASICプログラムがブレークしてしまいます。
また[Ctrl][c]を入力するとBASICシステムが終了してコマンドプロンプトに戻ります。
ここではたまたま最後に[Enter]を入力しましたが上に書きましたようにINPUT$では最後に[Enter]を入力する必要はありません。
誤解されそうな実行例になってしまいましたのでもうひとつ実行例をお見せします。
今度は最初に[Enter]を入力しました。

[Enter]、[!]、[”]、[#]、[$]を入力しました。
13は16進コードでは0Dです。
33はコード21
34はコード22
35はコード23
36はコード24です。
この例のように[Enter]も1文字に数えられています。

そうでした。
PIC−USBIO用BASICには16進数で表示することのできる関数HEX$()がありますから、それを使えばよかったのでした。
今度はもう一度同じことをHEX$()を使ってやってみます。

60行を変更しました。
今度は16進数で表示されました。

INPUT$(n)の書式の説明のところで「nには整数型の変数も書くことができる」と説明しました。
下はnに整数型の変数を使った例です。

INPUT$(n)のnに変数名として「mojisu]を使いました。

なおキーの入力例として[Ctrl][d]、[Ctrl][e]、[Ctrl][f]や[Enter]、[BackSpace]などを使いましたがどんなキーでも入力できるということではありません。
フルキーボードの特殊キーは入力できないものがほとんどです。
フルキーボードの[1]〜[BackSpace]から[z]〜[/]の範囲にあるキー以外のキーのキーコードにはコード00を含むものや2バイトのものなどが多く、それらのキーをINPUT$()で入力しようとしても応答しなかったりエラーになったりします。

PIC−USBIO using BASIC[第40回]
2022.8.17upload

前へ
次へ
ホームページトップへ戻る