无法比较通过蓝牙接收的字符串与普通字符串

时间:2015-04-24 22:12:34

标签: java android

我在Arduino和Android手机之间有联系。

这是我收到的字符串:总是字符串555,我知道因为我测试了它:

    final String data = new String(encodedBytes, "US-ASCII");
    String toCompare = data;

但这将始终打印false

txtArduino.setText(String.valueOf(toCompare.equals("555")));

我认为格式不同或类似,因为我肯定知道我收到了555

2 个答案:

答案 0 :(得分:0)

ASCII中的<53> 53 53 13是5 5 5␍

new String将其转换为Unicode / UTF-16,它作为Java中的文字将是&#34; 555 \ r&#34;或&#34; 555 \ u000D&#34;。所以,你应该比较一下。

final String data = new String(encodedBytes, "US-ASCII");
String toCompare = data;

txtArduino.setText(String.valueOf(toCompare.equals("555\r")));

根据您的蓝牙库,您可能必须考虑接收字节的,并且每次读取都会为您提供所有可用字节。然后由您将流拆分为消息。这可能是␍的目的。

答案 1 :(得分:0)

您的输入字符串包含最后的换行符。修剪它。