|  |  |  | 
|---|
|  |  |  | private PanelView pv; | 
|---|
|  |  |  | private ImageView iv_his, iv_status, iv_search, iv_bottom_status, iv_dianliang; | 
|---|
|  |  |  | private BluetoothService mBluetoothService; | 
|---|
|  |  |  | private ArrayList<String> realResult = new ArrayList<>(); | 
|---|
|  |  |  | private ArrayList<String> realHourResult = new ArrayList<>(); | 
|---|
|  |  |  | private ArrayList<String> realHisResult = new ArrayList<>(); | 
|---|
|  |  |  | //    private ArrayList<String> realResult = new ArrayList<>(); | 
|---|
|  |  |  | //    private ArrayList<String> realHourResult = new ArrayList<>(); | 
|---|
|  |  |  | //    private ArrayList<String> realHisResult = new ArrayList<>(); | 
|---|
|  |  |  | //上传数据 | 
|---|
|  |  |  | private ArrayList<RecData> submitResult = new ArrayList<>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private StringBuilder stringResult = new StringBuilder(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //临时存储上传数据 | 
|---|
|  |  |  | private ArrayList<RecData> submitTempResult = new ArrayList<>(); | 
|---|
|  |  |  | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private int checkTimeCount = 0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void doHandleData(String result) { | 
|---|
|  |  |  | if(StringUtils.isEmpty(result)) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //如果包含"时间校准成功确认信号"或重试5次以上则停止继续校准时间操作 | 
|---|
|  |  |  | if(result.startsWith(BLECommon.BLE_REC_TIME) || checkTimeCount > 5) { | 
|---|
|  |  |  | DebugUtils.sendData("data", result); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | handler.removeCallbacks(runnable); | 
|---|
|  |  |  | checkTimeCount = 0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | result = result.substring(14); | 
|---|
|  |  |  | doHandleData(result); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(result.startsWith("3A")) { | 
|---|
|  |  |  | if(result.length() >= 16) { | 
|---|
|  |  |  | DebugUtils.sendData("data", result); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | parseHisData(result.substring(0, 16)); | 
|---|
|  |  |  | result = result.substring(16); | 
|---|
|  |  |  | doHandleData(result); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | stringResult.append(result); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(result.startsWith("5A")) { | 
|---|
|  |  |  | if(result.length() >= 40) { | 
|---|
|  |  |  | DebugUtils.sendData("data", result); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | parseCurrentData(result.substring(0, 40)); | 
|---|
|  |  |  | result = result.substring(40); | 
|---|
|  |  |  | doHandleData(result); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | stringResult.append(result); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(result.startsWith("7A")) { | 
|---|
|  |  |  | if(result.length() >= 8) { | 
|---|
|  |  |  | DebugUtils.sendData("data", result); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | parseHoutData(result.substring(0, 8)); | 
|---|
|  |  |  | mBluetoothService.write(mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), mBluetoothService.getWirteCharacteristic().getUuid().toString(), BLECommon.BLE_SEND_7A, null); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | result = result.substring(8); | 
|---|
|  |  |  | doHandleData(result); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | stringResult.append(result); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 接收 | 
|---|
|  |  |  | 
|---|
|  |  |  | public void run() { | 
|---|
|  |  |  | Log.d("haijiang123", "收到消息====" + StringUtils.byteArrayToHexStr(characteristic.getValue())); | 
|---|
|  |  |  | String result = StringUtils.byteArrayToHexStr(characteristic.getValue()); | 
|---|
|  |  |  | //实时数据 | 
|---|
|  |  |  | parseCurrentData(result); | 
|---|
|  |  |  | parseHisData(result); | 
|---|
|  |  |  | parseHoutData(result); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(result.equals(BLECommon.BLE_REC_TIME) || checkTimeCount > 5) { | 
|---|
|  |  |  | handler.removeCallbacks(runnable); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (result.startsWith("7A")) { | 
|---|
|  |  |  | mBluetoothService.write(mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), mBluetoothService.getWirteCharacteristic().getUuid().toString(), BLECommon.BLE_SEND_7A, null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | DebugUtils.sendData("data", result); | 
|---|
|  |  |  | //处理数据叠罗汉 | 
|---|
|  |  |  | stringResult.append(result); | 
|---|
|  |  |  | result = stringResult.toString(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | doHandleData(result); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | stringResult = new StringBuilder(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //实时数据 | 
|---|
|  |  |  | //                                        parseCurrentData(result); | 
|---|
|  |  |  | //                                        parseHisData(result); | 
|---|
|  |  |  | //                                        parseHoutData(result); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                                        if (result.startsWith("7A")) { | 
|---|
|  |  |  | //                                            mBluetoothService.write(mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), mBluetoothService.getWirteCharacteristic().getUuid().toString(), BLECommon.BLE_SEND_7A, null); | 
|---|
|  |  |  | //                                        } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private int preLevel = -1; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void parseCurrentData(String result) { | 
|---|
|  |  |  | if (result.startsWith("5A")) { | 
|---|
|  |  |  | realResult.clear(); | 
|---|
|  |  |  | realResult.add(result); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | realResult.add(result); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String nowResult = ""; | 
|---|
|  |  |  | for (String s : realResult) { | 
|---|
|  |  |  | nowResult += s; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | private void parseCurrentData(String nowResult) { | 
|---|
|  |  |  | //        if (result.startsWith("5A")) { | 
|---|
|  |  |  | //            realResult.clear(); | 
|---|
|  |  |  | //            realResult.add(result); | 
|---|
|  |  |  | //        } else { | 
|---|
|  |  |  | //            realResult.add(result); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //        String nowResult = ""; | 
|---|
|  |  |  | //        for (String s : realResult) { | 
|---|
|  |  |  | //            nowResult += s; | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 20个字节,5A开头  5B结尾 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 
|---|
|  |  |  | play(2); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | submitResult.add(data); | 
|---|
|  |  |  | realResult.clear(); | 
|---|
|  |  |  | //            realResult.clear(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private AlertDialog testDialog; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void parseHoutData(String result) { | 
|---|
|  |  |  | if (result.startsWith("7A")) { | 
|---|
|  |  |  | realHourResult.clear(); | 
|---|
|  |  |  | realHourResult.add(result); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | realHourResult.add(result); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String nowResult = ""; | 
|---|
|  |  |  | for (String s : realHourResult) { | 
|---|
|  |  |  | nowResult += s; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | private void parseHoutData(String nowResult) { | 
|---|
|  |  |  | //        if (result.startsWith("7A")) { | 
|---|
|  |  |  | //            realHourResult.clear(); | 
|---|
|  |  |  | //            realHourResult.add(result); | 
|---|
|  |  |  | //        } else { | 
|---|
|  |  |  | //            realHourResult.add(result); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //        String nowResult = ""; | 
|---|
|  |  |  | //        for (String s : realHourResult) { | 
|---|
|  |  |  | //            nowResult += s; | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | if (!TextUtils.isEmpty(nowResult) && nowResult.length() == 8 && nowResult.startsWith("7A") && nowResult.endsWith("7B")) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(DebugUtils.debug_mode) { | 
|---|
|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 孕妇哨连接后上传的数据 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private void parseHisData(String result) { | 
|---|
|  |  |  | if (result.startsWith("3A")) { | 
|---|
|  |  |  | realHisResult.clear(); | 
|---|
|  |  |  | realHisResult.add(result); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | realHisResult.add(result); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String nowResult = ""; | 
|---|
|  |  |  | for (String s : realHisResult) { | 
|---|
|  |  |  | nowResult += s; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | private void parseHisData(String nowResult) { | 
|---|
|  |  |  | //        if (result.startsWith("3A")) { | 
|---|
|  |  |  | //            realHisResult.clear(); | 
|---|
|  |  |  | //            realHisResult.add(result); | 
|---|
|  |  |  | //        } else { | 
|---|
|  |  |  | //            realHisResult.add(result); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //        String nowResult = ""; | 
|---|
|  |  |  | //        for (String s : realHisResult) { | 
|---|
|  |  |  | //            nowResult += s; | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | if (!TextUtils.isEmpty(nowResult) && nowResult.length() == 16 && nowResult.startsWith("3A") && nowResult.endsWith("3B")) { | 
|---|
|  |  |  | Log.d("hourdata", "=====nowResult=====" + nowResult); | 
|---|
|  |  |  |  | 
|---|