App inventor 2 подключение bluetooth

LABA 120 — Mit App Inventor 2 — Как максимально просто,организовать связь по 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
вывод на экран невидимое сообщение
которое не дает телефону погасить экран и уйти в спячку

Читайте также:  Нет intel wireless bluetooth

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

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

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

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

р05 ‘ alt= ‘в Mit App Inventor 2’>

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

r 06 кнопка отправки данных’ alt= ‘в Mit App Inventor 2’>

r07 что бы не осталось в памяти нужно правильно выйти’ alt= ‘в Mit App Inventor 2’>

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

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

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

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

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

Bluetooth.Server1.IsConected

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

Bluetooth.Server1.SendText

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

T_Send.text

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

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

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

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

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

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

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

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

02 инит Screen1.Initialize инициализации экрана андроид’ alt= ‘в Mit App Inventor 2’>

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

В этом блоке, в переменную 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 , там указываете что запускать
и через какое время после включения

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

Источник

App Inventor and the Bluetooth Component

A simple Bluetooth Chat with App Inventor 2

This App Inventor 2 example is based on the following 2 examples:

  • J.W.Tyler’s Bluetooth Chat example, revised by Liz Looney, and
  • Shival Wolf’s Bluetooth Chat example (unfortunately this page is not available anymore), both made with App Inventor Classic.

I now tried to set up an App Inventor 2 example as simple as possible. As in the other examples, both the bluetooth client and server modules are used to create a chat session. Both components are in the same app. The client component will be used for the device which starts the connection, the server component will be used for the device accepting the connection. The devices must have been paired first. There is no searching for available chat clients. The example only works to send messages between 2 devices.

Screenshots

For questions about App Inventor,
please ask in the App Inventor community.Thank you.

info [at] puravidaapps [dot] com for details!
For questions about App Inventor, please use the App Inventor forum. Thank you.

App Inventor Blocks

Initialization

Set the nickname to a random user name, general initialization.
The procedure print will print the current text to the label while the previous text will scroll down.

Client: Connect

In the listpicker.BeforePicking event the listpicker will be initialized with the MAC addresses and names of the available paired devices. After selecting a MAC address, the server module will stop listening for further connection requests. In the screen title «Role=Client» will be displayed.

The procedure connected (parameter=true) will enable the Send button, disable the Connect listpicker, start the Clock and enable the Disconnect button.



Server: Connection accepted

If the app receives a connection request, it accepts it. In this case in the screen title «Role=Server» will be displayed.

Читайте также:  Bluetooth гарнитуры sena srl2

Timer: Check if new messages have been sent

Every second it will be checked, if there has been received some text. If yes, it will be displayed in the result label. Depending on role=server or client, different blocks have to be used.

Disconnect

The procedure connected (parameter=false) will disable the Send button, enable the Connect listpicker, stop the Clock component and disable the Disconnect button.

Other blocks used

The Screen.ErrorOccurred block catches errors and displays them in the result label.

Test

Tested successfully on HTC Desire running Android 2.2 and Samsung Galaxy Tab 10.1N running Android 3.2.

Known Issues

  • While trying to connect, both client and server display an «Error 509 Accept Connection: Unable to accept a connection from a bluetooth device». This message can be ignored.
  • As far as I can see, after client or server disconnected, there is no possibility for the chat partner to see, that the connection is gone. Therefore currently an «Error 516: Unable to write: Connection reset by peer» will be diplayed after trying to send a text without connection.
  • Sometimes «Error 507: Unable to connect. Is the device turned on?» shows up while trying to connect.

Questions and Answers

Q1: My problem is to connect the Android Device in a way that the PC thinks it ist a BT keyboard (i have a real one that works and i know how to pair devices) and receives keystrokes that finally go to word processors etc.
A: See this thread and use PC Wedge and Datasnip serial to keybord redirection on your Windows PC.

Q2: I need to create a Multiple bluetooth connections to multiple devices to implement a «chat room». I don’t know how to make it?
A: The Bluetooth component of App Inventor only offers communication between 2 devices. You could use several bluetooth server and client components, but this will be very cumbersome. For a chat room, I therefore recommend you to use the web component instead, see also my Chat Demo with App Inventor 2 and PubNub.

Download


Developing and maintaining snippets, tutorials and extensions for App Inventor takes a lot of time.
I hope it saved some of your time. If yes, then you might consider to donate a small amount!

or donate some mBTC to BitcoinAddress:
1Jd8kXLHu2Vkuhi15TWHiQm4uE9AGPYxi8
Bitcoin

This work by Pura Vida Apps is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License
with attribution (name=Pura Vida Apps and link to the source site) required.

Site Content © 2010 — 2022 Pura Vida Apps using the Foundation Framework.

Portions of this page are modifications based on work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License. Android is a trademark of Google Inc.

«Bluetooth» Icon by dakirby309.

Источник

Оцените статью
Adblock
detector