TSoC トラ技基板 UART 入出力サンプル

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

普通 Unix や Linux を使用しているプログラマーが組込みマイコンに触って最初にとまどうのがターミナルからの入出力だと思います。

ある程度、メモリーとパワーのある MCU の場合には printf() や scanf() が使用できるのですが、メモリーの制約の強い小型 MCU では、これらなじみの関数が使えない場合が多々あります。

そもそも組込みシステムではターミナルがついていないことの方が多いのかも知れませんが・・・

というわけで、先のサンプルではログ出力だけを行っていましたが、今回は簡単なコマンドをターミナルから受け取って、実行する簡易シェル風のサンプルを作成してみました。

000-TeraTerm-log.JPG

使用可能なコマンドは 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 にして使用してください。

また、入力キーをエコーさせるために、ローカルエコーにもチェックを

入れておくと良いと思います。

002-TeraTerm-端末設定.JPG

0 Replies