1

0x38 、 0x39 、 0xC0 、 0xE8 などの 16 進コードがあります。この 16 進コードをそのまま blue-tooth に送信したいので、16 進または int に変換する必要はありません。私は自分のアプリ(blue-tooth Activity)で送信するためにこのコードを使用しました:

     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 ボードに送信され、これらの 16 進コードと一致していくつかの操作を実行する必要があります。私の 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コードに問題はありませんが、アプリからブルートゥースに送信しているものは間違っている可能性があります..一致していません. これらの16進コードを送信する必要があるのはどのタイプですか?

4

1 に答える 1

2

-6410 進数では、おそらく0xC0( http://en.wikipedia.org/wiki/Signed_number_representationsを参照) の表現です。私はArduinoコードには興味がありませんが、によって返される値がSerial.read()符号なし整数/バイトとして解釈されることを確認することをお勧めします。これにより、符号付きビット表現と数値出力を手動で解釈する必要がなくなります。

于 2012-12-28T15:53:14.947 に答える