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の結果が一致します。もし異なっていた場合にどの程度データが化けているかはバイナリエディタや、比較ツールを使って確認してください。