- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
普通 Unix や Linux を使用しているプログラマーが組込みマイコンに触って最初にとまどうのがターミナルからの入出力だと思います。
ある程度、メモリーとパワーのある MCU の場合には printf() や scanf() が使用できるのですが、メモリーの制約の強い小型 MCU では、これらなじみの関数が使えない場合が多々あります。
そもそも組込みシステムではターミナルがついていないことの方が多いのかも知れませんが・・・
というわけで、先のサンプルではログ出力だけを行っていましたが、今回は簡単なコマンドをターミナルから受け取って、実行する簡易シェル風のサンプルを作成してみました。
使用可能なコマンドは led, sum, ave, help の4つだけという豪華な仕様です。
プロンプト "> " に
led on
と入力すると、TSoC 上の LED が点灯します。
led off
と入力すると、TSoC 上の LED が消灯します。
sum 1 2 3
と入力すると 1+2+3 = 6 で、sum = 6 と表示されます。
ave 1 2 3
と入力すると (1+2+3)/3 = 2 で、ave = 2 と表示されます。
※なお、計算は整数のみでおこなっていますので、端数は切り捨てになっています。
help
もしくは、上記以外のコマンドを入力すると、簡単な使用方法が表示されます。
各コマンドは
do_command() という関数で、そのコマンドを知っているか判断して
知っているコマンドの場合には、そのコマンドに対応する関数を呼ぶ、
知らないコマンドの場合には、help() 関数を呼ぶという至って簡単な処理をしていますので、
新しいコマンドを追加するのも容易だと思います。
moto
P.S. 筆者はバックグランドが Unix/Linux のため、改行は '\n' で統一しています。
Terminal Emulator の改行コードを '\n' に設定するか、
TeraTerm の場合であればメニューの
設定 > 端末の設定
で、改行コード の 受信(R) を AUTO にして使用してください。
また、入力キーをエコーさせるために、ローカルエコーにもチェックを
入れておくと良いと思います。
- Labels:
-
PSoC 345 LP