停止将十进制转换为 ascii

Stop conversion decimal to ascii

我正在尝试通过蓝牙从 arduino 发送一个 int 到 android,但是如果我发送 56,我在 android 端收到 8...无论如何我可以收到56,最好是字符串形式,包括字符

A​​rduino 代码:

int level = 56;
Serial.write(level);

Android代码:

 public void run() {
        byte[] buffer = new byte[128];
        int bytes;


        while (true) {
            try {
                bytes = connectedInputStream.read(buffer);
                String strReceived = new String(buffer, 0,bytes);
                final String msgReceived =/* String.valueOf(bytes) +
                        " bytes received: "
                        + */strReceived;



                runOnUiThread(new Runnable(){

                    @Override
                    public void run() {
                      textStatus.setText(msgReceived);
                        value = msgReceived ;
                    }});

值定义为静态字符串作为 class 变量

您正在将字节转换为字符串,因此您得到 '8'(char)56;。如果您不想那样做,只需按照以下步骤操作即可。

bytes = connectedInputStream.read(buffer);
String tmp = "";
for(int i=0;i<bytes;i++)
    tmp += Byte.toString(buffer[i]);  
final String msgReceived = tmp;

编辑

如果您发送如下,例如。

Serial.write(56);
Serial.write(76);  

如果这两个字节都被读取,您将在 msgReceived 中收到的内容将是 5676。显然,您可以根据需要以任何方式更改此行为。