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

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

Восстановить пароль Регистрация
 
Сергей Мст
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 6
21.08.2016, 21:09     Обработка ошибки подключения по Bluetooth #1
Добрый день!
У меня в программе, написанной на Basic4Android реализована связь телефона с контроллером по Bluetooth. При запуске программы телефон автоматически коннектится с контроллером. Если контроллера нет рядом, то вылезает сообщение:
"Error connecting. java.io.IOEexception: read failed, socket might closed or timeout, read ret:-1"
И соответственно выполнение программы прерывается. Подскажите, пожалуйста, как программно отловить невозможность подключения или возникновение этой ошибки? Возможно есть какая-нибудь функция, которая запускается при возникновении ошибки и при этом выполнение программы не прерывается? Хотелось бы сделать так, чтобы программа постоянно пыталась создать связь, но при невозможности этого программа не "вылетала" бы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2726 / 1737 / 173
Регистрация: 13.01.2012
Сообщений: 6,504
22.08.2016, 10:27     Обработка ошибки подключения по Bluetooth #2
Сергей Мст, поместите коннект в try блок и перехватите исключение
Сергей Мст
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 6
22.08.2016, 10:53  [ТС]     Обработка ошибки подключения по Bluetooth #3
Не совсем понял о чем вы (пока еще не знаю что такое try блок), но буду изучать и рыть в этом направлении. Спасибо
vxg
Модератор
 Аватар для vxg
2726 / 1737 / 173
Регистрация: 13.01.2012
Сообщений: 6,504
22.08.2016, 10:57     Обработка ошибки подключения по Bluetooth #4
Сергей Мст вы же где то подключаетесь?
Java
1
2
3
4
5
6
try {
//вот тут страшный вызов который подключает нас если это возможно или вываливает исключение если все плохо
} catch (IOEexception e) {
//сделать то что нужно если подключение не удалось
//как вариант еще и сделать return что бы выполнение блока кода не пошло дальше этой строки
}
Сергей Мст
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 6
23.08.2016, 08:22  [ТС]     Обработка ошибки подключения по Bluetooth #5
VXG, еще раз спасибо за совет. В лоб решить не получилось, почему-то ошибку в операторе "Serial1.Connect(stroka)" не отлавливает, но я тогда перед ним пробую считать данные с "несконнекченного" порта и ошибка ловится. Попробую использовать эту возможность.
СПАСИБО

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

Добавлено через 4 минуты
PureBasic
1
2
3
4
5
    Try
        //пытаемся подключиться
    Catch
        //произошла ошибка с выбросом исключения
    End Try
Сергей Мст
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 6
23.08.2016, 12:17  [ТС]     Обработка ошибки подключения по Bluetooth #7
Я пытался после вашей рекомендации использовать try <>catch <> end try, но к сожалению, эта конструкция не отлавливают ошибку подключения. Другие ошибки ловит хорошо. Я думаю, что проблема в том, что оператор "connect" в b4a запускает фоновый процесс, который не ловится конструкцией try <>catch <> end try.
Может еще есть какой-нибудь способ отловить эту ошибку?
Спасибо.
vxg
Модератор
 Аватар для vxg
2726 / 1737 / 173
Регистрация: 13.01.2012
Сообщений: 6,504
23.08.2016, 14:21     Обработка ошибки подключения по Bluetooth #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
Регистрация: 21.08.2016
Сообщений: 6
23.08.2016, 16:45  [ТС]     Обработка ошибки подключения по Bluetooth #9
Я использую эту конструкцию и она отлично ловит момент подключения и выполняет нужные действия, но "else" не понятно когда срабатывает. У меня похоже вообще никогда до него дело не доходит. Если соединение установлено, то срабатывает
If Success Then
//...
если не устанавливается, то вылезает ошибка Java, а то что после else не срабатывает...
vxg
Модератор
 Аватар для vxg
2726 / 1737 / 173
Регистрация: 13.01.2012
Сообщений: 6,504
23.08.2016, 17:56     Обработка ошибки подключения по Bluetooth #10
Сергей Мст, может есть нечто аналогичное вызываемое при ошибке?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2016, 18:05     Обработка ошибки подключения по Bluetooth
Еще ссылки по теме:

Приём текста по Bluetooth. Ошибки в символах Android
После подключения МФУ исчез bluetooth
C++ Qt Ошибки подключения к SQLite
Qt Bluetooth, ошибка qt.bluetooth: Dummy backend running. Qt Bluetooth module is non-functional C++ Qt
Как создать ярлык для подключения устройства Bluetooth? Windows 7

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

Или воспользуйтесь поиском по форуму:
Сергей Мст
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 6
23.08.2016, 18:05  [ТС]     Обработка ошибки подключения по Bluetooth #11
Вот это я как раз и ищу...
Сейчас пробую при помощи разных ухищрений отследить работу порта. Например пытаюсь из него прочитать и отслеживаю ошибку. Если при попытке считать с порта возникает ошибка, то значит связи нет. Эта ошибка отлавливается. Но тут тоже есть своя "фига в кармане" - если связь была установлена, а потом потеряна, то при попытке считать из порта ошибки не возникает.
Сейчас ищу еще что-нибудь для отлавливания этой ситуации.
Yandex
Объявления
23.08.2016, 18:05     Обработка ошибки подключения по Bluetooth
Ответ Создать тему
Опции темы

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