2014年6月30日月曜日

【メモ】ラズパイのシリアル叩いたときの出力

はじめに、シリアルでログインしておかないとttyAMA0が叩けない。。。

VNC上のターミナルから以下のコマンドを叩いて、そのときのラズパイのシリアルポートのデータをモニタリングした。
 echo "test" > /dev/ttyAMA0

出てきたデータは16進数で次の通り
7465 7374 0D0A
test[CR](\r)[LF](\n)

で、最初僕が勘違いして、UNIX系はCRが改行コードかと思い(TeraTermの改行コード設定がCRだったから)、CR受信までバッフアリング、CR受信でmbedのUSBシリアルへ出力とやっていた。
ところがそうすると2回echoを実行したときに、
test
[改行]
test
と表示される。
CRまでバッフアリング、送出とやった後に、LFを受信するため、バッファの先頭が[LF]になってしまう。その後またtest[CR]まで受信するため、次に表示するときは
[LF]test[CR]となってしまうので、上記のように間に改行が入ることになる。


ただ、不思議なのがTeraTermの改行コードの設定だ。
[CR]でも[LF]でも正常に表示するが、受信しているデータは[CR][LF]だ。
ならTeraTermも[CR][LF]にすべき、と思うのが自然だが・・・
test
[改行]
test
[改行]

無駄に改行が入ってる。。。

改行コードを[LF]に設定すると
test
test

意図した通りの表示。

んじゃ[CR]に設定すると?
test
test

なんでやねん('A`)
[CR]のあとに[LF]あるから、[CR][LF]と同じような表示になると思ったのだが・・・。
うーん。。。

とりあえず[LF]なら正解ってことかなあ。

0 件のコメント :