如果输入字符串数据,我的代码会正确地执行串行发送/读取数据。如果数据是十六进制,虽然我的串行发送/读取数据正确textview输出是奇怪的。为什么在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 :(得分: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();
}