2
我正在開發一個通過藍牙與微控制器進行通信的應用程序。我發送一個由成功接收的字節數組組成的數據包。但是,微控制器發送的字節數組沒有被我接收。沒有錯誤出現。接收代碼如下:通過藍牙與微控制器進行Android通信
private void beginListenForData() {
// TODO Auto-generated method stub
Log.e("clientsocket", "listening data");
final Handler handler = new Handler();
final byte delimiter = 10; // This is the ASCII code for a newline
// character
stopWorker = false;
readBufferPosition = 0;
readBuffer = new byte[1024];
workerThread = new Thread(new Runnable() {
public void run() {
while (!Thread.currentThread().isInterrupted() && !stopWorker) {
try {
int bytesAvailable = mmInputStream.available();
if (bytesAvailable > 0) {
Log.e("bytes", "" + bytesAvailable);
Log.e("bytes", "" + bytesAvailable);
byte[] packetBytes = new byte[bytesAvailable];
Log.v("packet Bytes", "" + packetBytes);
for (int m = 0; m < packetBytes.length; m++)
Log.e("checking array", "" + packetBytes[m]);
Log.v("packet bytes len", "" + packetBytes.length);
mmInputStream.readFully(packetBytes, 0,
packetBytes.length);
for (int i = 0; i < bytesAvailable; i++) {
byte b = packetBytes[i];
if (b == delimiter) {
byte[] encodedBytes = new byte[readBufferPosition];
System.arraycopy(readBuffer, 0,
encodedBytes, 0,
encodedBytes.length);
for (int k = 0; k < encodedBytes.length; k++)
Log.v("encoded bytes", ""
+ encodedBytes[k]);
int[] iarray = new int[encodedBytes.length - 1];
int k = 0;
for (int j = 0; j < encodedBytes.length - 1; j++)
iarray[k++] = encodedBytes[j] & 0xff;
StringBuilder sb = new StringBuilder(
iarray.length);
for (int l : iarray)
sb.append(l);
for (k = 0; k < iarray.length; k++)
Log.v("iarray", "" + iarray[k]);
final String data = sb.toString();
// final String data = new String(
// encodedBytes, "UTF-8");
Log.e("data server", data);
readBufferPosition = 0;
Log.e("clientserver", "" + data);
handler.post(new Runnable() {
public void run() {
myLabel.append("\n" + data);
System.gc();
Log.e("clientserver", "" + data);
}
});
} else {
readBuffer[readBufferPosition++] = b;
}
}
}
} catch (IOException ex) {
stopWorker = true;
myLabel.append("\n" + "Try Again!");
}
}
}
});
workerThread.start();
}
最初,當微控制器在字符串發送數據時,它被通過我成功讀取。但是當它打開到字節數組時,問題就開始了。有人可以幫助我嗎? 謝謝:)
你可以發佈你的logcat嗎? – Gattsu
你的傳輸碼是什麼? –
解決了問題! 這是因爲分隔符在兩端不匹配。感謝你的關心。 :) – Prat