Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.87
Evgeny_
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 9
#1

Передача данных по Bluetooth - Android

04.09.2013, 11:51. Просмотров 5695. Ответов 4
Метки нет (Все метки)

Проблема в следующем, после определенного количества переданных байт(зависит от телефона, на huawei ~ 500, на nexus 4 ~ 1700) от Андроида к Ардуино передача обрывается, и приложение зависает после чего вылетает.
Вопрос заключается в том, как это исправить, такое ощущение, что перполняется буфер, но методов его очистки я не нашел. Пробовал
Java
1
OutputStream.flush();
не помогло
Передачу и подключение делаю через отдельный поток:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
class ConnectedThread extends Thread{
 
    BluetoothAdapter bluetooth1;
    private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
    
    BluetoothSocket clientSocket;
    
    private  BluetoothSocket mmSocket;
    private OutputStream mmOutStream;
    OutputStream tmpOut = null;
 
        private static final String TAG = "bluetooth1";
    public ConnectedThread()
    {
        bluetooth1 = BluetoothAdapter.getDefaultAdapter();
         bluetooth1.enable();
        BluetoothDevice device = bluetooth1.getRemoteDevice("00:13:02:01:72:69");
    
      try {
          mmSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
        } catch (IOException e) {
          
        }
      bluetooth1.cancelDiscovery();
    
       try
       {
        mmSocket.connect();  
       }
       catch(IOException e)
       {}
       try {
           tmpOut = mmSocket.getOutputStream();
         
       } catch (IOException e) { }
       mmOutStream = tmpOut;
   }
    public void write(String message) {
            Log.d(TAG, "...Данные для отправки: " + message + "...");
         byte[] msgBuffer = message.getBytes();
            try {
                mmOutStream.write(msgBuffer);
                }
            } 
            catch (IOException e) {
                Log.d(TAG, "...Ошибка отправки данных: " + e.getMessage() + "...");     
              }
            }
             }
Соединение между Arduino и Android устанавливается по нажатию на кнопку следующим образом:
Java
1
2
 mConnectedThread = new ConnectedThread();
        mConnectedThread.start();
Само сообщение отправляется по событию изменения значения ProgressBar - onProgressChanged
Java
1
2
3
         public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {
mConnectedThread.write("48"); }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2013, 11:51     Передача данных по Bluetooth
Посмотрите здесь:

Android Layout передача данных
Android Передача файлов через BlueTooth OPP / ContentResolver
Android Передача данных через bluetooth
Передача данных звуком Android
Передача данных Android
Android Как сделать передачу данных по bluetooth
Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor) Android
Получение и разбор данных по Bluetooth Android
Android Передача данных андроид устр. - stm по bluetooth
Android Интернет. Передача данных
Android Приём данных по Bluetooth
Вывод данных полученных через Bluetooth на экран Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 508
04.09.2013, 12:38     Передача данных по Bluetooth #2
А у вас случайно в буфер приема инпутстрима ничего не попадает? Возможно он вызывает переполнение.
Evgeny_
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 9
04.09.2013, 12:43  [ТС]     Передача данных по Bluetooth #3
Нет, с ним пока что не работаю
Evgeny_
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 9
20.09.2013, 15:49  [ТС]     Передача данных по Bluetooth #4
Цитата Сообщение от korsaj Посмотреть сообщение
А у вас случайно в буфер приема инпутстрима ничего не попадает? Возможно он вызывает переполнение.
Да, действительно, оказалось, что ардуино посылает байты в ответ, а инпустрим у меня никак не обрабатывался, вследствие чего и возникала ошибка. Спасибо.
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 508
20.09.2013, 19:53     Передача данных по Bluetooth #5
Незачто
Yandex
Объявления
20.09.2013, 19:53     Передача данных по Bluetooth
Ответ Создать тему
Опции темы

Текущее время: 19:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru