Форум программистов, компьютерный форум, киберфорум
Наши страницы
Basic4Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Сергей Мст
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 6
1

Обработка ошибки подключения по Bluetooth

21.08.2016, 21:09. Просмотров 1342. Ответов 10
Метки нет (Все метки)

Добрый день!
У меня в программе, написанной на Basic4Android реализована связь телефона с контроллером по Bluetooth. При запуске программы телефон автоматически коннектится с контроллером. Если контроллера нет рядом, то вылезает сообщение:
"Error connecting. java.io.IOEexception: read failed, socket might closed or timeout, read ret:-1"
И соответственно выполнение программы прерывается. Подскажите, пожалуйста, как программно отловить невозможность подключения или возникновение этой ошибки? Возможно есть какая-нибудь функция, которая запускается при возникновении ошибки и при этом выполнение программы не прерывается? Хотелось бы сделать так, чтобы программа постоянно пыталась создать связь, но при невозможности этого программа не "вылетала" бы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2016, 21:09
Ответы с готовыми решениями:

Проверка подключения по bluetooth
Не подскажите, как можно проверять активно ли подключение по bluetooth? У меня...

Клиент bluetooth. как в кнопке правильно вызвать метод для подключения?
нашел в интернете готовый класс private class ConnectThread extends Thread {...

Обработка включения Bluetooth
Есть код: OnClickListener oclCheckBt = new OnClickListener() { ...

Приём текста по Bluetooth. Ошибки в символах
Добрый день. Прошу особо не пинать. Вопрос чисто технический. Второй день...

Обработка ошибки подключения к базе данных Access
Доброго времени суток. В своей программе подключаюсь к базе данных Access...

10
vxg
Модератор
3252 / 2052 / 323
Регистрация: 13.01.2012
Сообщений: 7,949
22.08.2016, 10:27 2
Сергей Мст, поместите коннект в try блок и перехватите исключение
1
Сергей Мст
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 6
22.08.2016, 10:53  [ТС] 3
Не совсем понял о чем вы (пока еще не знаю что такое try блок), но буду изучать и рыть в этом направлении. Спасибо
0
vxg
Модератор
3252 / 2052 / 323
Регистрация: 13.01.2012
Сообщений: 7,949
22.08.2016, 10:57 4
Сергей Мст вы же где то подключаетесь?
Java
1
2
3
4
5
6
try {
//вот тут страшный вызов который подключает нас если это возможно или вываливает исключение если все плохо
} catch (IOEexception e) {
//сделать то что нужно если подключение не удалось
//как вариант еще и сделать return что бы выполнение блока кода не пошло дальше этой строки
}
0
Сергей Мст
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 6
23.08.2016, 08:22  [ТС] 5
VXG, еще раз спасибо за совет. В лоб решить не получилось, почему-то ошибку в операторе "Serial1.Connect(stroka)" не отлавливает, но я тогда перед ним пробую считать данные с "несконнекченного" порта и ошибка ловится. Попробую использовать эту возможность.
СПАСИБО

Добавлено через 19 часов 22 минуты
Добрый день, VXG!
К сожалению мне так и не удалось добиться того что я хотел.
Конструкция try { } catch (IOException e) {} как я понял, из Java. В Basic4Android используется похожая конструкция, но без фигурных скобок и после catch мне не удалось вставить (IOException e).
На сколько я понял, ошибку коннекта не отлавливается из-за того что команда "Serial1.Connect(stroka)" работает в фоновом режиме. Другие ошибки она ловит "на ура!"
Может еще есть какое-то ухищрение, которое отлавливает ошибки и в фоновом режиме? Или возможно вставить кусочек Java кода в программу на B4A?
0
vxg
Модератор
3252 / 2052 / 323
Регистрация: 13.01.2012
Сообщений: 7,949
23.08.2016, 09:12 6
Сергей Мст, и тут я понял что речь идет о basic... 5c

Добавлено через 4 минуты
PureBasic
1
2
3
4
5
    Try
        //пытаемся подключиться
    Catch
        //произошла ошибка с выбросом исключения
    End Try
0
Сергей Мст
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 6
23.08.2016, 12:17  [ТС] 7
Я пытался после вашей рекомендации использовать try <>catch <> end try, но к сожалению, эта конструкция не отлавливают ошибку подключения. Другие ошибки ловит хорошо. Я думаю, что проблема в том, что оператор "connect" в b4a запускает фоновый процесс, который не ловится конструкцией try <>catch <> end try.
Может еще есть какой-нибудь способ отловить эту ошибку?
Спасибо.
0
vxg
Модератор
3252 / 2052 / 323
Регистрация: 13.01.2012
Сообщений: 7,949
23.08.2016, 14:21 8
Сергей Мст, может ловить событие подключения
PureBasic
1
2
3
4
5
6
7
Sub Serial1_Connected (Success As Boolean)
    If Success Then
        //...
    Else
        //...
    End If
End Sub
0
Сергей Мст
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 6
23.08.2016, 16:45  [ТС] 9
Я использую эту конструкцию и она отлично ловит момент подключения и выполняет нужные действия, но "else" не понятно когда срабатывает. У меня похоже вообще никогда до него дело не доходит. Если соединение установлено, то срабатывает
If Success Then
//...
если не устанавливается, то вылезает ошибка Java, а то что после else не срабатывает...
0
vxg
Модератор
3252 / 2052 / 323
Регистрация: 13.01.2012
Сообщений: 7,949
23.08.2016, 17:56 10
Сергей Мст, может есть нечто аналогичное вызываемое при ошибке?
0
Сергей Мст
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 6
23.08.2016, 18:05  [ТС] 11
Вот это я как раз и ищу...
Сейчас пробую при помощи разных ухищрений отследить работу порта. Например пытаюсь из него прочитать и отслеживаю ошибку. Если при попытке считать с порта возникает ошибка, то значит связи нет. Эта ошибка отлавливается. Но тут тоже есть своя "фига в кармане" - если связь была установлена, а потом потеряна, то при попытке считать из порта ошибки не возникает.
Сейчас ищу еще что-нибудь для отлавливания этой ситуации.
0
23.08.2016, 18:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2016, 18:05

Обработка ошибки подключения в программе обмен сообщениями по локальной сети
Добрый день. Нужна помощь эксперта. Пишу программу, обмен сообщениями в...

После подключения МФУ исчез bluetooth
Купил недавно МФУ Canon с Wi-Fi. Подключил, тестовая печать прошла на ура....

Как создать ярлык для подключения устройства Bluetooth?
Есть устройство Bluetooth(микрофон с динамиком на ухо), которое каждый раз надо...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru