質問編集履歴

4 誤字

NEWBIEEBIEE

NEWBIEEBIEE score 39

2017/01/22 12:49  投稿

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

    4434 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Linux

    4439 questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

3 誤字

NEWBIEEBIEE

NEWBIEEBIEE score 39

2017/01/22 12:44  投稿

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

    4434 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Linux

    4439 questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

2 追記

NEWBIEEBIEE

NEWBIEEBIEE score 39

2017/01/22 12:43  投稿

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

    4434 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Linux

    4439 questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

1 書式の修正

NEWBIEEBIEE

NEWBIEEBIEE score 39

2017/01/22 12:42  投稿

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

    4434 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Linux

    4439 questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る