2017-05-01 2 views
1

ティーンエイジャーとラズベリーPi3の間でUSBで通信しようとするといくつかの問題が発生します。他の人のためのシリアルポート(teensy - > raspi)で符号なし整数を送信する際にエラーが発生しました

13 becomes 10; 
269 becomes 266; 
525 becomes 522; 
781 becomes 778; 
1037 1034; 
1293 1290; 
1549 1546; 
1805 1802; 
etc... 

ではなく:

私はunsigned int型を送って、私は、例えば値10

に変更された値13のバイトを含むすべての数字のために間違った番号を受け取ります...

私のプログラムをpiで使用する場合、または/dev/ttyACMOでcatコマンドを送信する場合はどうしてもかまいません。しかし、別のコンピュータで同じことをすると、すべて正常に動作します。

私は別のコンピュータで同じ問題を抱えていますので、問題は私がインストールした悪いライブラリから来たと思います。

ご存知ですか?

PS:teensy上のコードのように簡単です:あなたはバイナリの数字を見れば

unsigned int i = 0; 
    while(true){ 
     Serial.write((char*) &i, 4); 
     ++i; 
     delay(500); 
    } 
+0

問題解決:http://stackoverflow.com/questions/42209980/serial-port-バイナリ転送変更 - キャリッジリターンありがとう! – Alex

答えて

0

しかし正確な理由を知らない彼らと同じパターン1101 = 13上のすべてのエンド(12月)。 >00001101269 - - >100001101525 - >1000001101781 - >11000011011037 10(12月)は、私が説明(cuttedないか何か)

13を持っていない理由です、バイナリで1010です - >100000011011293 - >101000011011549 - >110000011011805 - >11100001101

多分エラーは4バイト長int変数の変換から来ています1バイト長のchar変数に変換します。 >00001101最後ニブルに0 0001 10101010なる10と同等である - Cの文字列の末尾0は(多分char*を文字列として解釈される)終端文字であり、13、この場合にString termination - char c=0 vs char c='\0'

を参照することに注意してください

しかし(12月)、このエラーが原因になることができないだけで1101これで表示されていることを述べるとして...

関連する問題