ラズベリーパイとUbuntuのラップトップの2回目以降の送受信処理がうまく行きません。
プログラムはUbuntu上でファイルを読み込み,ファイルを小分けのチャンクにして、ラズベリーパイに送信するプログラムです。
プログラムでの2端末間での送受信にはラップトップのtty/USB0とラズベリーパイのtty/AMA0を利用しています。
受信データが何故か2回目以降、チェックサムと一致しません。
なぜデータの送受信が2回め以降一致しないんでしょう?
Ubuntu側の(送信側)のログです。
log
1Baud rate is 1200 2device is: /dev/ttyUSB0 3Waiting for receiver ping ...Data buffer is sample2.jpg,32553 4loading from datachunk size: 0 5Data chunk include 0 :115 6check sum is 17709, and 17709 is calculated 7?Data buffer is ÿØÿà 8loading from datachunk size: 1024 9Data chunk include 0 :255 10Data chunk include 1 :216 11Data chunk include 2 :255 12Data chunk include 3 :224 13/* 以下続く */ 14 15/* 以上で終わり */ 16Data chunk include 2048 :44 17check sum is 35628, and 35628 is calculated 18 chunk include 2047 :116 19Data chunk include 2048 :66 20check sum is 50242, and 50242 is calculated
ラズベリーパイ上(受信側)のログです。
log
1Baud rate is 1200 2device is: /dev/ttyAMA0 3Send C ping.... 4STX is matched 5received STX collectlly 6MODEM IS YMODEM 7Block number is VALID. 8loading from datachunk size: 1024 9Data chunk include 0 :115 10Data chunk include 1 :97 11Data chunk include 2 :109 12Data chunk include 3 :112 13/* 以下続く */ 14 15/* 以上で終わり */ 16Data buffer is 17Checksum is invalid. 18Checksum is 35628 ,and 6190 is calculated 19Block number is zero(YMODEM) . 20
質問の詳細はファイルを読み込みチャンクとして小分けしてチェックサムを取ると
受信側のチェックサムと同じ値を示すのに,データはなぜかノイズでも入った状態になってしまっています。左が送信データ(Ubuntu)、右が受信後です(RaspberryPi)。
一応のエラーの傾向としては3が0に変わってしまっているようです。
全体のコードhttps://codepaste.net/5d55sg
受信処理はメソッドxmodem_receiveです。
送信処理はメソッドxmodem_sendになります
一回目は成功するんです。でも二回目以降はなぜか失敗するのです。
ハードウェアの問題なら一回目も失敗するし・・・・
データが何故か違うのは何が問題なのんでしょう?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/22 04:18