2017-04-12 7 views
0

文字列データを入力する場合、私のコードはデータのシリアル送信/読み取りを正しく行います。データが16進数の場合、私のシリアル送信/読み取りデータは正しくtextview出力がstrange.Why奇妙なシンボルがアンドロイド画面に表示されますか?なぜAndroid画面に奇妙なシンボルが表示されるのですか?

マイ入力:

0067123456789123456789123456FF8E6457DF0215DF820803111111DF820903222222DF820A03333333DF6F3CDFEF0602AAAADFEF0B08BBBBBBBBBBBBBBBBDFEF0E20CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDFEF0402DDDD1D 

私の受信データ方法:

private void updateReceivedData(byte[] data) throws InterruptedException { 

    String s = new String(data); 
    text2.setText("Incoming Mesage = " + s); 
    SendSerialData(data, data.length); 

} 

Hterm(TRUE)にマイシリアル出力:

0067123456789123456789123456FF8E6457DF0215DF820803111111DF820903222222DF820A03333333DF6F3CDFEF0602AAAADFEF0B08BBBBBBBBBBBBBBBBDFEF0E20CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDFEF0402DDDD1D 

私のTextView出力:

��g4Vx�#Eg�4V��dW�߂߂ """߂ 
333�o<���������������� 
������������������������������������ 
+0

あなたは文字エンコーディングの問題を持っているように見えます。 [here](http://stackoverflow.com/questions/1536054/how-to-convert-byte-array-to-string-and-vice-versa)を参照してください –

+0

ありがとうございますが、それは私には役に立たなかった –

答えて

0

私は答えを見つけました。代わりに:

String s = new String(data); 

用途:

String s = byteArrayToHex(data); 

そして、このメソッドを追加します。

public static String byteArrayToHex(byte[] a) { 
    StringBuilder sb = new StringBuilder(a.length * 2); 
    for(byte b: a) 
     sb.append(String.format("%02x", b)); 
    return sb.toString(); 
} 
関連する問題