将十六进制代码发送到蓝牙

时间:2012-12-24 06:34:08

标签: android bluetooth arduino

我有十六进制代码,如0x38,0x39,0xC0和0xE8,我想发送这个十六进制代码,因为它是蓝牙,不需要转换为十六进制或int。我使用此代码在我的应用程序中发送(蓝牙活动):

     byte[] hex_txt = {(byte)0x38, (byte)0x39, (byte)0xC0, (byte)0xE8};
     OutputStream outStream;
     try {
    outStream = socket.getOutputStream();
        outStream.write(hex_txt);
        System.out.println("byte sent: " + hex_txt);
         }

当我将此代码发送到蓝牙时,它会进一步发送到Arduino板,它必须匹配这些十六进制代码并执行一些操作。我的arduino代码是:

   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代码的问题,但是从我的应用程序发送到蓝牙可能是错误的......所以它不匹配。我需要以什么类型发送这些十六进制代码?

1 个答案:

答案 0 :(得分:2)

十进制中的

-64可能是0xC0的表示(请参阅http://en.wikipedia.org/wiki/Signed_number_representations)。我没有使用Arduino代码,但我建议你确保Serial.read()返回的值被解释为无符号整数/字节。这将帮助您手动解释带符号的位表示和数字输出。