停止将十进制转换为 ascii
Stop conversion decimal to ascii
我正在尝试通过蓝牙从 arduino 发送一个 int 到 android,但是如果我发送 56,我在 android 端收到 8...无论如何我可以收到56,最好是字符串形式,包括字符
Arduino 代码:
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
。显然,您可以根据需要以任何方式更改此行为。
我正在尝试通过蓝牙从 arduino 发送一个 int 到 android,但是如果我发送 56,我在 android 端收到 8...无论如何我可以收到56,最好是字符串形式,包括字符
Arduino 代码:
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
。显然,您可以根据需要以任何方式更改此行为。