私はAsuro
小さなロボットであるからBluetooth経由でバイトアレイを受信するAndroidアプリを開発しています。
このバイト配列はコマンドのプロトコルであるため、15の固定サイズがあります。さらに、アプリはバイト配列をAsuroに送信し、Asuroはそれを送り返します。
ただし、read(byte []、0,15)関数を使用してこの配列をLog.dに渡すと、このバイト配列は分割されます。
以下のコードを参照してください。
public void run() {
Log.i(TAG, "BEGIN mConnectedThread");
byte[] buffer = new byte[15];
int bytes = 0;
// Keep listening to the InputStream while connected
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer, 0, 15);
if (buffer[0] != 0) {
Log.d("Asuro-Android", "Input :" + Arrays.toString(buffer));
}
buffer = new byte[15];
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
break;
}
}
}
Asuroに送っています:
Output: [58, 48, 49, 48, 48, 48, 49, 48, 48, 48, 51, 48, 48, 48, 48]
接続などが機能します。単純化するために、配列を作成して出力ストリームにフラッシュします。
しかし、私は得ています:
Input :[58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Input :[48, 49, 48, 48, 48, 49, 48, 48, 48, 51, 0, 0, 0, 0, 0]
Input :[48, 48, 48, 48, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
これは私の側(アプリ)のエラーでしょうか、それともasuroの側のエラーでしかありませんか?