ブログ

TIPS:シリアル通信で制御コードを含むデータを送信する簡易的な方法(コマンドで実行)

at_kazutaka.bito
2022年4月11日 9時40分

コマンドのみで、シリアル通信で制御コードを含むデータを送信する方法です。

1. ボーレートを設定

ここでは、Armadillo-640のRS232Cインタフェースで通信する場合で説明します。
ここでは、下記のように設定します。
 シリアル通信するデバイスファイル:/dev/ttymxc2
 ボーレート:38400

Armadillo-640上で、sttyコマンドで設定します。

root@armadillo:~# stty -F /dev/ttymxc2 38400

(本例以外の設定をする場合、デバイスファイル名、ボーレートは読み替えてください)

2. 制御コードを含むデータを送信

ここでは、echoコマンドを使ってデータを送信します。
ASCIIコードを8進数で表記することで、制御コードも送信できます。
例として、"Hello"というテキストをSTX(制御コード:0x02)、ETX(制御コード:0x03)で囲って送信します。

root@armadillo:~# echo -ne \\002\\0110\\0145\\0154\\0154\\0157\\003 > /dev/ttymxc2

\\0の後ろに、1~3文字のASCIIコードを8進数にした値を記述します。
上記のコマンドでは、下記のような対応になります。

\\002:STX(制御コード:0x02)
\\0124:H(0x48)
\\0145:e(0x65)
\\0154:l(0x6c)
\\0154:l(0x6c)
\\0157:o(0x6f)
\\003:ETX(制御コード:0x03)