LABA 120 - Mit App Inventor 2 - Как организовать связь по BlueTooth и автоматическое подключение по блютуз в Mit App Inventor 2
максимально просто подключение телефона наандроид к другому андроиду через блютуз,в Mit App Inventor 2
, и автоматическое подключение по блютуз
всего семь (7) блоков
К оглавлению
* Введение
* BlueTooth Server
* BlueTooth Client
* Auto Connect on Run
* Еще про авто подключение
* скачать
Как организовать подключение телефона на
андроид к другому андроиду через блютуз
(синий зуб bluetooth)
Например для экспериментов с датчиком акселерометра,
когда основной аппарат должен находится в покое.
Или наоборот для управления чем нибудь,
используя акселерометр как датчик положения руля,
а наклон вперед назад как педаль газа
Но об этом позже в другой теме
BlueTooth может выступать в двух ипостасях
как Сервер или как Клиент. А соединение выглядит так
клиент подключается к серверу.
В отличии от некоторых модулей типа HC-05, который в зависимости от
прошивки, работает клиентом или сервером,
Блютуз телефона обладает обоими этими свойствами
В природе существуют разные версии Bluetooth
от обычных до BLE (блютуз низкой энергии)
пытаясь стыковать старое с новым не всегда можно получить
положительный результат, тут дело практики
На верх
В среде программирования андроид Mit App Inventor 2
имеется вкладка Connectivity
А в ней компоненты связи BlueTooth
BlueTooth.Server
BlueTooth.Client
Далее В данном повествовании
рассказывается как их использовать без лишних движений
Самый минимум так сказать
Исходники прилагаются, так что набирать по новой нет надобности
На верх
***********************
Компонент BlueTooth.Server
имеет нехилый набор свойств и методовНо из всего этого изобилия
нам понадобится не так уж и много
блок Accept Connection
разрешающий устанавливать соединение
Свойство Service Name - пустая строка
Обрамленный событием инициализация экрана приложения
Событие BlueTooth server - Connection Accepted
возникающие при установке соединения
запишет в заголовок приложения сообщение об этом
радостном факте, так же здесь увеличивается счетчик подключений
в реальности не особо нужный, и разрешается следующее подключение
любого спаренного с телефоном клиента
если такое соединение произойдет, то предыдущий аппарат не будет
получать данные, хотя по документации в той же
Википедии сказано что блютуз разрешает подключение
семи клиентов к одному серверу
тут или лыжи не едут, или я не до конца
врубился что здесь надо делать
рис 4
А вот и таймер. он кликает каждую секунду
это событие проверяет установлено ли соединение
BluetoothServer1.IsConnected если установлено
проверяет если данные в буфере приемника SPP серийного порта
BluetoothServer1.BytesAvailableToReceive
и если их больше нуля, считывает их в переменную Global Data
методом
BluetoothServer1.ReceiveText в количестве
BluetoothServer1.BytesAvailableToReceive
то есть все
Текстовым оператором Join эти данные добавляются
к уже принятым в конструкции
счетчик в метке L_CNT.Text Увеличивается на единицу
что позволяет видеть не зависла ли наша программа
оператор Notifier.ShowAlert вывод на экран невидимое сообщение
которое не дает телефону погасить экран и уйти в спячку
конструкция IF ch_cicl.Checked при установке галки в соответствующем
поле, вызывает функцию Send о которой будет далее
Так для прикола и удобства тестирования
блок If Contains text
Проверяет не содержится ли в принятых данных
слово CLS и при его наличии очищает окно данных
Кнопка CB_cls.click
очищает окно данных
обнуляет счетчик
КнопкаCB_Send.click
Вызывает функцию Send, Правда неожиданно ?
Кнопка CB_Exit.click
Отключает BlueTooth.Server1.Disconnect
и закрывает приложение
Close application
Если выйти из программы нажав на телефоне кнопку возврат
то программа уберется с экрана , но где то глубоко внутри телефона
продолжит свое выполнение
в чем нетрудно будет убедиться, запустив ее снова
и увидеть не нулевой счетчик таймера
Процедура Send
Вначале проверяется Есть ли вообще связь
Bluetooth.Server1.IsConected
Затем конструкция
Bluetooth.Server1.SendText
Отправляет в синезубый эфир
текстовую строку собранную оператором Join
Состоящую из содержимого текстового поля
T_Send.text
И увеличивающегося каждую секунду счетчика
чтобы текст не был таким скучным
В придачу, каждые 25 секунд
Передается строка "CLS" которая на приемнике
очищает окно принятых данных
----------
в этом минимальном проекте
задействовано восемь наборов блоков
а основных процессов так вообще четыре
На верх
**********
Компонент BlueTooth.Client
Ну ладно с сервером вроде все понятно
а как к этой красоте приконнектится?
Кидаем в новый проект BlueTooth.Client1
смотрим свойства
параметров поменьше чем у сервера но все равно
впечатляет
Как и предыдущем случае для работы хватит
минимум операторов
Как обычно в начале блок инициализации экрана
приложения
Screen1.Initialize
В этом блоке, в переменную Global last из базы данных телефона
Оператором TinyDB1.GetValue
На верх
Считывается записанный при последнем удачном подключении
по BlueTooth MAC адрес Блютуз сервера
этот MAC адрес будет использоваться для автоматического
соединения с BlueTooth.Server в процедуре Last
о ней позже
Если же это первый запуск приложения
То в окне программы понадобится нажать кнопку
Connect
Откроется список доступных устройств и в нем выбираете
нужный девайс, применяя метод тыка пальцем
если все пучком, состоится коннект
а в заголовке программы появится текст с содержанием
имени и MAC адреса устройства BlueTooth.Server
Также эти параметры сохраняются в базе
с помощью блока -
TinyDB.StoreValue
где last имя записи
а global last ее значение, то бишь Mac адрес
в последующем. соединение произойдет при запуске приложения
Все так же тикает таймер проверяя буфер приемника,
Инкрементируется счетчик цикла программы
выдается невидимый Alert
чтобы наш девайс не заснул
По аналогии с тестовой программкой BT_Server
здесь также блок
If Contains text
Проверяет не содержится ли в принятых данных
слово CLS и при его наличии очищает окно данных
CB_last.Click
предназначена для принудительного соединения
с сервером MAC адрес которого записан в базе
CB_Exit.
служит для полного завершения приложения
Ну вот вроде и все
---------------
На верх
* Еще про авто подключение
Ну уж если речь зашла об автоконнекте , то пусть и блютуз сам
включается , если выключен
В самом Mit app Inventor 2 нет блока управлением состояния
BlueTooth. Однако как все приличные IDE - Mit app Inventor 2
поддерживает подключение сторонних
библиотек (плагинов, расширений, модулей или Extension),
как кому удобней. Которых в сети можно найти великое множество
и вот один такой TaifunBluetooth позволяет управлять аппаратным
включением блютуз телефона
подключаем его к проекту
ставим блок включения bluetooth в событие инициализации экрана
теперь все как у приличных программ, при запуске все остальное
срабатывает автоматически
И наконец совсем для ленивых
Можно настроить запуск вашей программы
при включении телефона, в этом поможет.
приложение Auto Start , там указываете что запускать
и через какое время после включения
Проверял работает как часы
Скачать бесплатно без регистрации
...На верх
Скачать бесплатно без регитрации исходник BT_Client.aia
Скачать бесплатно без регитрации исходник BT_Server.aia
Скачать бесплатно без регитрации Программу BT_Client.apk
Скачать бесплатно без регитрации Программу BT_Server.apk