ブログ

シリアル通信の動作確認方法

at_ito
2016年9月4日 16時00分

RS232Cや、RS485での通信でフロー制御を行っていない場合、データが化けることがあります。その際にどの程度の速度で、どれぐらいデータが化けるかを確認する方法を紹介します。

環境

  • Armadilloを2台、シリアルで接続
    • 以降の記載では、送信側をarmadillo1、受信側をarmadillo2と記載します

受信側設定

まずは、以下のようにsttyコマンドを実行し、armadillo2のシリアル通信を設定してください。
※: <任意のシリアル設定>には、各環境によって置き換えてください
※: ここでは例としてシリアルポートに/dev/ttymxc0を使用します。環境によって置き換えてください。

[armadillo2 ~]# stty -F /dev/ttymxc0 <任意のシリアル設定>
[armadillo2 ~]# cat /dev/ttymxc0 > 10MB.img
※: ファイル送信完了後Ctrl+Cで終了させる

送信側設定

以下のようにsttyコマンドを実行し、armadillo1のシリアル通信を設定してください。

[armadillo1 ~]# stty -F /dev/ttymxc0 <任意のシリアル設定>

以下のコマンドを実行し、送信用のファイルを作成してください。ここでは例として10MBのファイルを作成します。
※: 環境に合わせて変更してください

[armadillo1 ~]# dd if=/dev/urandom of=/home/ftp/pub/10MB.img bs=10M count=1

データの送受信

受信側のArmadillo(armadillo2)で以下のコマンドを実行し、シリアルで受信したデータをファイルにする準備をしてください。

[armadillo2 ~]# cat /dev/ttymxc0 > receive_data

送信側のArmadillo(armadillo1)で以下のコマンドを実行し、前述の手順で作成したデータをシリアルに送信してください。

[armadillo1 ~]# dd if=/home/ftp/pub/10MB.img of=/dev/ttymxc0 bs=10M count=1
1+0 records in
1+0 records out
10485760 bytes (10 MB) copied, 114.036 s, 92.0 kB/s

送信が終了しましたら、受信側のArmadillo(armadillo2)上でCtrl + Cを押すことにより、実行しているコマンドを終了させてください。

通信データの確認

送信側、受信側でファイルの一致を確認するには、以下のようにmd5sumコマンドを実行します。

[armadillo1 ~]# md5sum 10MB.img
fc3bbff2350c8556e2f200d9486a5125  10MB.img
[armadillo2 ~]# md5sum 10MB.img
fc3bbff2350c8556e2f200d9486a5125  10MB.img

上記のように、送信したデータが正常に受け取れている場合は、md5sumの結果が一致します。もし異なっていた場合にどの程度データが化けているかはバイナリエディタや、比較ツールを使って確認してください。