Android 向蓝牙发送十六进制代码
我有十六进制代码,如0x38、0x39、0xC0和0xE8,我想将此十六进制代码原样发送到Bluetooth,无需转换为十六进制或整数。我在我的应用程序中使用此代码发送(Bluetooth活动): 当我将此代码发送到Bluetooth时,它会进一步发送到Arduino板,在那里它必须匹配这些十六进制代码并执行一些操作。我的Arduino代码是:Android 向蓝牙发送十六进制代码,android,bluetooth,arduino,Android,Bluetooth,Arduino,我有十六进制代码,如0x38、0x39、0xC0和0xE8,我想将此十六进制代码原样发送到Bluetooth,无需转换为十六进制或整数。我在我的应用程序中使用此代码发送(Bluetooth活动): 当我将此代码发送到Bluetooth时,它会进一步发送到Arduino板,在那里它必须匹配这些十六进制代码并执行一些操作。我的Arduino代码是: if(Serial.available()>3) { if(Serial.read()==0x38 &
if(Serial.available()>3)
{
if(Serial.read()==0x38 && Serial.read()==0x39)
code=Serial.read()+Serial.read()*256;
irsend.sendCode(code,16);
Serial.println("code sent is");
Serial.println(code,DEC);
}
这个Arduino代码没有问题,但是我从我的应用程序发送到Bluetooth的内容可能是错误的。所以它不匹配。我需要以何种类型发送这些十六进制代码?
-64
十进制可能表示为0xC0
(请参阅)。我不喜欢Arduino代码,但我建议您确保Serial.read()
返回的值被解释为无符号整数/字节。这将帮助您手动解释有符号位表示和数字输出。我觉得代码还可以。您收到的是哪些字节而不是预期的字节?@domsom感谢您的重播。我得到的是有符号的数字,比如-64…所以我改变了这个字节a=-64;intb=((int)a)和0xFF;所以这给了我一个无符号的数字。你不想Serial.println(code,HEX)代码>?另外,如果你认为它在Android代码中,你见过这个吗@EricFossum i’l更改为Serial.println(代码,十六进制);我试试看。是的,你是对的。从Arduino代码中我得到了有符号的数字。因此,只有我将代码声明更改为无符号int代码。
if(Serial.available()>3)
{
if(Serial.read()==0x38 && Serial.read()==0x39)
code=Serial.read()+Serial.read()*256;
irsend.sendCode(code,16);
Serial.println("code sent is");
Serial.println(code,DEC);
}