1

我有 0x38、0x39、0xC0 和 0xE8 之类的十六进制代码,我想将这个十六进制代码原样发送到蓝牙,无需转换为十六进制或整数。我使用此代码在我的应用程序中发送(蓝牙活动):

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

4

1 回答 1

2

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

于 2012-12-28T15:53:14.947 回答