我正在尝试为Bluegiga BLE121LR蓝牙模块进行Over The Air固件更新。
我一直在寻找特色写(它应该是一个write_no_repsonse类型)以及它刚刚挂起并且似乎从while循环中踢出来的地方我得到了#34;应用程序可能在其主线程上做了太多工作。"我的logcat输出中的警告。
确保我的无线连接建立后,我在onResume中执行以下代码。 OTA文件位于assets文件夹中,似乎正确加载到字节数组中。
我非常喜欢新手,我确信这是一个线程约定或者我在这里缺少的东西。有人能指出我正确的方向吗?
try {
InputStream dis;
try {
dis = getAssets().open("BLE121LR_OTA.ota");
byte[] fileData1 = new byte[dis.available()];
try {
this.wait(200);
dis.read(fileData1);
int length = fileData1.length;
Log.i(TAG, "Length of file: " + length);
int i = 0;
if (mService != null) {
otaDataChar = mService.getCharacteristic(IOPENER_OTA_DATA);
otaControlChar = mService.getCharacteristic(IOPENER_OTA_CONTROL);
while (i < length) {
byte[] byte16 = new byte[16];
System.arraycopy(fileData1, i, byte16, 0, 16);
Log.e(TAG, "byte16" + getHexString(byte16));
otaDataChar.setValue(getHexString(byte16));
otaDataChar.setWriteType(4);
mConnectedGatt.writeCharacteristic(otaDataChar);
Log.e(TAG, "CHAR WRITE");
i = i + 16;
}
} else {
Log.e(TAG, "Mservice fucked up.");
}
Log.e(TAG, "BEGIN FLASH REBOOT");
// otaControlChar.setValue("3");
// mConnectedGatt.writeCharacteristic(otaControlChar);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
dis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (Exception e) {
}
答案 0 :(得分:0)
它与线程无关......我试图在null上进行操作。