2017-03-24 16 views
0

この質問はここで始まりましたhereこれは赤いニシンのようです!Android BLE書き込みバイト[](符号なしの値を含む)

問題は、BLEデバイスに書き込む必要がある値のバイト配列があることです。

byte bytes[] = {0x04,0x08,0x0F,0x66,(byte)0x99,0x41,0x52,0x43,0x55,(byte)0xAA}; 
ch.setValue(bytes); 

私はこの配列の出力をログに記録した場合、私は(負の値に注意してください)取得:

[4, 8, 15, 102, -103, 65, 82, 67, 85, -86] 

しかし、理論的にはこれが唯一の値のJavaの表現でなければならないと認識さに影響を与えるべきではありません値はBluetoothデバイスに当たったが、そうではないようだ。

これらの値はメーカーが要求しているため変更できませんが、2つの値は符号なしバイト/ intの範囲外です。これがデバイスがisnではない理由であるようですコマンドを認識できません。

このコマンドを特性に書き込むと、成功コードが0(成功)になりますが、デバイスはコマンドに応答しません。

私の質問は正しい方法でこれを送っているのですか?または、内部に含まれる知覚された値を維持するためにバイト配列をフォーマット/処理する必要がありますか?

アドバイスをいただければ幸いです!

+0

「私の質問は正解です」もちろん、そのことはわかりません。あなたのコードが見える場合に限ります。 – greenapps

+0

申し訳ありませんが、私は空気中で送信する前にバイト[]を処理してはならないことを確認することを意味していました。 –

答えて

0

あなたはすべて正しいことをしています。バイト値を出力すると、符号付き整数が基数10に表示されます。各バイトに正しい8ビットを空中で送信します。

+0

エミールに感謝します。はい、ログ出力がbase10になることを認識しました。このコマンドがBTデバイスによって認識されないのはなぜですか?このアプリのiOSバージョンと同じコマンドフォームをObjective Cから同じデバイスに送信すると、すべて完璧に動作します –

関連する問題