LABA 120 - Mit App Inventor 2 - максимально просто связь по BlueTooth


LABA 120 - Mit App Inventor 2 - Как организовать связь по BlueTooth и автоматическое подключение по блютуз в Mit App Inventor 2

максимально просто подключение телефона на
андроид к другому андроиду через блютуз,в Mit App Inventor 2
, и автоматическое подключение по блютуз

всего семь (7) блоков

в Mit App Inventor 2

К оглавлению

* Введение
* BlueTooth Server
* BlueTooth Client
* Auto Connect on Run
* Еще про авто подключение
* скачать


задать вопрос в группе VK



Как организовать подключение телефона на
андроид к другому андроиду через блютуз
(синий зуб bluetooth)


Например для экспериментов с датчиком акселерометра,
когда основной аппарат должен находится в покое.
Или наоборот для управления чем нибудь,
используя акселерометр как датчик положения руля,
а наклон вперед назад как педаль газа
Но об этом позже в другой теме

BlueTooth может выступать в двух ипостасях
как Сервер или как Клиент. А соединение выглядит так
клиент подключается к серверу.
В отличии от некоторых модулей типа HC-05, который в зависимости от
прошивки, работает клиентом или сервером,
Блютуз телефона обладает обоими этими свойствами

В природе существуют разные версии Bluetooth
от обычных до BLE (блютуз низкой энергии)
пытаясь стыковать старое с новым не всегда можно получить
положительный результат, тут дело практики



На верх
В среде программирования андроид Mit App Inventor 2
имеется вкладка Connectivity

в Mit App Inventor 2

А в ней компоненты связи BlueTooth

BlueTooth.Server
BlueTooth.Client


Далее В данном повествовании
рассказывается как их использовать без лишних движений
Самый минимум так сказать

Исходники прилагаются, так что набирать по новой нет надобности


На верх
***********************

Компонент BlueTooth.Server

имеет нехилый набор свойств и методов

Но из всего этого изобилия

нам понадобится не так уж и много
блок Accept Connection
в Mit App Inventor 2
разрешающий устанавливать соединение
Свойство Service Name - пустая строка
Обрамленный событием инициализация экрана приложения


Событие BlueTooth server - Connection Accepted
в Mit App Inventor 2

возникающие при установке соединения
запишет в заголовок приложения сообщение об этом
радостном факте, так же здесь увеличивается счетчик подключений
в реальности не особо нужный, и разрешается следующее подключение
любого спаренного с телефоном клиента
если такое соединение произойдет, то предыдущий аппарат не будет
получать данные, хотя по документации в той же
Википедии сказано что блютуз разрешает подключение
семи клиентов к одному серверу

тут или лыжи не едут, или я не до конца
врубился что здесь надо делать

в Mit App Inventor 2
рис 4


А вот и таймер. он кликает каждую секунду
это событие проверяет установлено ли соединение
в Mit App Inventor 2


BluetoothServer1.IsConnected
если установлено
проверяет если данные в буфере приемника SPP серийного порта

BluetoothServer1.BytesAvailableToReceive


и если их больше нуля, считывает их в переменную Global Data
методом
BluetoothServer1.ReceiveText
в количестве

BluetoothServer1.BytesAvailableToReceive

то есть все

Текстовым оператором Join эти данные добавляются
к уже принятым в конструкции

в Mit App Inventor 2


счетчик в метке L_CNT.Text Увеличивается на единицу
что позволяет видеть не зависла ли наша программа

оператор Notifier.ShowAlert
вывод на экран невидимое сообщение
которое не дает телефону погасить экран и уйти в спячку

конструкция IF ch_cicl.Checked при установке галки в соответствующем
поле, вызывает функцию Send о которой будет далее

в Mit App Inventor 2


Так для прикола и удобства тестирования

в Mit App Inventor 2



блок If Contains text
Проверяет не содержится ли в принятых данных
слово CLS и при его наличии очищает окно данных


Кнопка CB_cls.click
очищает окно данных
обнуляет счетчик

в Mit App Inventor 2

КнопкаCB_Send.click

Вызывает функцию Send, Правда неожиданно ?

в Mit App Inventor 2

Кнопка CB_Exit.click

в Mit App Inventor 2

Отключает BlueTooth.Server1.Disconnect
и закрывает приложение
Close application


Если выйти из программы нажав на телефоне кнопку возврат

в Mit App Inventor 2

то программа уберется с экрана , но где то глубоко внутри телефона
продолжит свое выполнение

в чем нетрудно будет убедиться, запустив ее снова
и увидеть не нулевой счетчик таймера

Процедура Send

в Mit App Inventor 2


Вначале проверяется Есть ли вообще связь

Bluetooth.Server1.IsConected


Затем конструкция

Bluetooth.Server1.SendText

Отправляет в синезубый эфир
текстовую строку собранную оператором Join
Состоящую из содержимого текстового поля

T_Send.text

И увеличивающегося каждую секунду счетчика
чтобы текст не был таким скучным
В придачу, каждые 25 секунд
Передается строка "CLS" которая на приемнике
очищает окно принятых данных

----------

в этом минимальном проекте
задействовано восемь наборов блоков
а основных процессов так вообще четыре

На верх
**********

Компонент BlueTooth.Client


Ну ладно с сервером вроде все понятно
а как к этой красоте приконнектится?

Кидаем в новый проект BlueTooth.Client1

в Mit App Inventor 2

смотрим свойства

в Mit App Inventor 2
параметров поменьше чем у сервера но все равно
впечатляет


в Mit App Inventor 2
Как и предыдущем случае для работы хватит
минимум операторов

в Mit App Inventor 2

Как обычно в начале блок инициализации экрана
приложения

Screen1.Initialize

В этом блоке, в переменную Global last из базы данных телефона
Оператором TinyDB1.GetValue

На верх
Считывается записанный при последнем удачном подключении
по BlueTooth MAC адрес Блютуз сервера


этот MAC адрес будет использоваться для автоматического
соединения с BlueTooth.Server в процедуре Last



о ней позже

Если же это первый запуск приложения
То в окне программы понадобится нажать кнопку

в Mit App Inventor 2
Connect



Откроется список доступных устройств и в нем выбираете
нужный девайс, применяя метод тыка пальцем

в Mit App Inventor 2

если все пучком, состоится коннект
а в заголовке программы появится текст с содержанием
имени и MAC адреса устройства BlueTooth.Server

в Mit App Inventor 2


Также эти параметры сохраняются в базе
с помощью блока -
в Mit App Inventor 2


TinyDB.StoreValue

где last имя записи
а global last ее значение, то бишь Mac адрес
в последующем. соединение произойдет при запуске приложения

в Mit App Inventor 2

Все так же тикает таймер проверяя буфер приемника,
Инкрементируется счетчик цикла программы
выдается невидимый Alert
чтобы наш девайс не заснул

По аналогии с тестовой программкой BT_Server

здесь также блок
If Contains text

Проверяет не содержится ли в принятых данных
слово CLS и при его наличии очищает окно данных

в Mit App Inventor 2
CB_last.Click

предназначена для принудительного соединения
с сервером MAC адрес которого записан в базе

в Mit App Inventor 2
CB_Exit.

служит для полного завершения приложения

Ну вот вроде и все

---------------

На верх
* Еще про авто подключение

Ну уж если речь зашла об автоконнекте , то пусть и блютуз сам
включается , если выключен
в Mit App Inventor 2


В самом Mit app Inventor 2 нет блока управлением состояния
BlueTooth. Однако как все приличные IDE - Mit app Inventor 2
поддерживает подключение сторонних
библиотек (плагинов, расширений, модулей или Extension),
как кому удобней. Которых в сети можно найти великое множество
и вот один такой TaifunBluetooth позволяет управлять аппаратным
включением блютуз телефона

в Mit App Inventor 2


в Mit App Inventor 2
подключаем его к проекту


ставим блок включения bluetooth в событие инициализации экрана
в Mit App Inventor 2

теперь все как у приличных программ, при запуске все остальное
срабатывает автоматически
И наконец совсем для ленивых
в Mit App Inventor 2

Можно настроить запуск вашей программы
при включении телефона, в этом поможет.
в Mit App Inventor 2


приложение Auto Start , там указываете что запускать
и через какое время после включения

в Mit App Inventor 2

Проверял работает как часы

Скачать бесплатно без регистрации

...
На верх


Скачать бесплатно без регитрации исходник BT_Client.aia
Скачать бесплатно без регитрации исходник BT_Server.aia
Скачать бесплатно без регитрации Программу BT_Client.apk
Скачать бесплатно без регитрации Программу BT_Server.apk