При передаче данных размером более 4 байт по Bluetooth через приложение Android данные изменяются и отсутствуют ⇐ JAVA
-
Гость
При передаче данных размером более 4 байт по Bluetooth через приложение Android данные изменяются и отсутствуют
Я создал собственное приложение для Android для связи с модулем HC-05. поэтому, когда я одновременно передаю более 4-байтовых данных с помощью кнопки в Android, отправленный пакет данных пропускается, или порядок перемешивается, или он принимает другое значение. когда я отправляю 3-байтовые данные (0x31,0x32,0x33), все идет нормально. в чем может быть проблема? Я использую обычный код, который есть в Интернете, на веб-сайте разработчиков Android и в других источниках. Я столкнулся с этой проблемой, кто-нибудь поможет мне решить эту проблему. Это мой код для отправки или получения данных, который выполняется в другом потоке
публичный класс classBTInitDataCommunication расширяет поток {частный окончательный BluetoothSocket bluetoothSocket; private InputStream inputStream =null; private OutputStream outputStream=null; частный байт[] mmBuffer; общедоступный классBTInitDataCommunication (сокет BluetoothSocket) { Log.i(TAG, "classBTInitDataCommunication-start"); bluetoothSocket = разъем; пытаться { inputStream = bluetoothSocket.getInputStream(); outputStream = bluetoothSocket.getOutputStream(); } улов (IOException e) { е.printStackTrace(); Log.e(TAG, "classBTInitDataCommunication-start, exp " + e.getMessage()); } } публичный недействительный запуск() { байт [] буфер = новый байт [1024]; целые байты; пока (BTSocket.isConnected()) { пытаться { байты = inputStream.read (буфер); handler.obtainMessage(BT_STATE_MESSAGE_RECEIVED,bytes,-1,buffer).sendToTarget(); } улов (IOException e) { е.printStackTrace(); Log.e(TAG, "BT отключается от завершения решения, exp " + e.getMessage()); iBTConnectionStatus = BT_CON_STATUS_CONNECTION_LOST; пытаться { //отключаем Bluetooth Log.d(TAG, «Отключение BTConnection»); if(BTSocket!=null && BTSocket.isConnected()) { БТСокет.закрыть(); } ButtonBTConnect.setText("Подключиться"); bBTConnected = ложь; } улов (IOException ex) { ex.printStackTrace(); } } } } публичная недействительная запись (байт[] байт) { пытаться { выводStream.write(байты); выходной поток.flush(); } улов (IOException e) { е.printStackTrace(); } } public void writeBytes (байтовые данные) { пытаться { выводStream.write(данные); выходной поток.flush(); } catch (IOException e) { е.printStackTrace(); } }
Я создал собственное приложение для Android для связи с модулем HC-05. поэтому, когда я одновременно передаю более 4-байтовых данных с помощью кнопки в Android, отправленный пакет данных пропускается, или порядок перемешивается, или он принимает другое значение. когда я отправляю 3-байтовые данные (0x31,0x32,0x33), все идет нормально. в чем может быть проблема? Я использую обычный код, который есть в Интернете, на веб-сайте разработчиков Android и в других источниках. Я столкнулся с этой проблемой, кто-нибудь поможет мне решить эту проблему. Это мой код для отправки или получения данных, который выполняется в другом потоке
публичный класс classBTInitDataCommunication расширяет поток {частный окончательный BluetoothSocket bluetoothSocket; private InputStream inputStream =null; private OutputStream outputStream=null; частный байт[] mmBuffer; общедоступный классBTInitDataCommunication (сокет BluetoothSocket) { Log.i(TAG, "classBTInitDataCommunication-start"); bluetoothSocket = разъем; пытаться { inputStream = bluetoothSocket.getInputStream(); outputStream = bluetoothSocket.getOutputStream(); } улов (IOException e) { е.printStackTrace(); Log.e(TAG, "classBTInitDataCommunication-start, exp " + e.getMessage()); } } публичный недействительный запуск() { байт [] буфер = новый байт [1024]; целые байты; пока (BTSocket.isConnected()) { пытаться { байты = inputStream.read (буфер); handler.obtainMessage(BT_STATE_MESSAGE_RECEIVED,bytes,-1,buffer).sendToTarget(); } улов (IOException e) { е.printStackTrace(); Log.e(TAG, "BT отключается от завершения решения, exp " + e.getMessage()); iBTConnectionStatus = BT_CON_STATUS_CONNECTION_LOST; пытаться { //отключаем Bluetooth Log.d(TAG, «Отключение BTConnection»); if(BTSocket!=null && BTSocket.isConnected()) { БТСокет.закрыть(); } ButtonBTConnect.setText("Подключиться"); bBTConnected = ложь; } улов (IOException ex) { ex.printStackTrace(); } } } } публичная недействительная запись (байт[] байт) { пытаться { выводStream.write(байты); выходной поток.flush(); } улов (IOException e) { е.printStackTrace(); } } public void writeBytes (байтовые данные) { пытаться { выводStream.write(данные); выходной поток.flush(); } catch (IOException e) { е.printStackTrace(); } }
Мобильная версия