С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Basic4Android

Войти
Регистрация
Восстановить пароль
 
Сергей Мст
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 6
#1

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

21.08.2016, 21:09. Просмотров 1108. Ответов 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 (Basic4Android):

Проверка подключения по bluetooth - Программирование Android
Не подскажите, как можно проверять активно ли подключение по bluetooth? У меня есть два устройства, связь между ними устанавливается без...

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

Обработка включения Bluetooth - Программирование Android
Есть код: OnClickListener oclCheckBt = new OnClickListener() { public void onClick(View v){ ...

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

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

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

10
vxg
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,712
22.08.2016, 10:27 #2
Сергей Мст, поместите коннект в try блок и перехватите исключение
1
Сергей Мст
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 6
22.08.2016, 10:53  [ТС] #3
Не совсем понял о чем вы (пока еще не знаю что такое try блок), но буду изучать и рыть в этом направлении. Спасибо
0
vxg
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,712
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
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,712
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
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,712
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
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,712
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 - Администрирование Windows
Купил недавно МФУ Canon с Wi-Fi. Подключил, тестовая печать прошла на ура. Wi-Fi у меня нет, через Bluetooth законтачился нормально. Потом...

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

Qt Bluetooth, ошибка qt.bluetooth: Dummy backend running. Qt Bluetooth module is non-functional - C++ Qt
Начал разбираться с Qt и Bluetooth, для этого запустил пример http://doc.qt.io/qt-5/qtbluetooth-btscanner-example.html. Скомпилил, все...

Ошибки подключения на Wi-Fi - Windows 8, 8.1
Дело обстоит так: при создании нового подключения (залажу на сайт с браузера или программки чет себе качают) на Wi-Fi постоянно теряются...


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

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

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