0

Эксперименты с Android. Приложение 2

У первой статье цикла была приве­дена методика «быстрого старта» в создании соб­ственных андроидных приложений. Для примера использовалась среда визуального программиро­вания Applnventor-2 (AI2). Тем, кто преодолел на­чальные трудности и обошел все подводные кам­ни, удалось увидеть на экране планшета первое тестовое приложение. Но, чтобы разобраться в де­талях и тонкостях, нужно умерить пыл и заменить тактику «семимильных шагов» тактикой «мелких перебежек» с постепенным приближением к цели.

Проводя эксперименты с Android, не надо за­бывать о главной задаче – научиться создавать приложения, которые осуществляли бы двухсто­роннюю связь с удаленным микроконтроллерным устройством, будь то AVR, PIC, STM32Discovery или Arduino.

Удаленная связь ассоциируется в первую оче­редь с беспроводными интерфейсами Bluetooth (ВТ) и Wi-Fi. Первый из них проще в применении, да и финансово менее обременительный. С дру­гой стороны не все планшеты поддерживают «си­ний зуб», хотя в большинстве случаев допускают подключение простого адаптера ВТ и програм­мную активацию виртуального СОМ-порта [2].

О том, как соединить МК, ВТ и Android подроб­но рассказывалось в [1] (РА11-12/2014). Един­ственная проблема заключалась в применении «чужого» программного обеспечения, которое нельзя приспособить под свои нужды.

К счастью, в среде AI2 имеется поддержка ВТ, что позволяет как «из кубиков» строить авторские приложения. При этом знание языка Java не тре­буется, а для понимания физики работы нужны лишь минимальные теоретические основы.

Краткие сведения об интерфейсе ВТ

Для работы устройств ВТ выделяется диапазон частот 2400…2483 МГц. Вся полоса разбивается на 79 канальных интервала. Передатчик и прием­ник синхронно «перепрыгивают» с одной каналь­ной частоты на другую по псевдослучайному зако­ну 1600 раз в секунду.

Дальность связи зависит от мощности пере­датчика и чувствительности приемника. В случае планшета с ВТ класса 2 (до 2,5 мВт) устойчивое со­единение наблюдается в пределах 10-20 м внутри помещения или через кирпичную/бетонную стену.

Каждое ВТ-устройство поддерживает один или несколько наборов профилей: для воспроизве­дения музыки, организации персональной микросети, передачи текста, цифровых данных. Важно, чтобы оба устройства ВТ поддерживали профиль SPP (Serial Port Profile). Тогда цифровые данные от МК смогут передаваться через стандартный интер­фейс UART, а на планшете их будет принимать вир­туальный COM-порт. Радиотракт в данном случае служит проволочной линией с сигналами TxD, RxD.

Соединение по ВТ осуществляется, как прави­ло, в режиме «точка-точка», при этом для безо­пасности можно вводить пароль (PIN-код, ключ, шифр), чтобы создать так называемую «пару». Одно из устройств будет ведущим, другое ведо­мым. Соответственно, на одной стороне органи­зуется «сервер», к которому обращается «клиент».

Конструктивно различают: чипы ВТ, модули ВТ, адаптеры ВТ, шилды ВТ. Для подключения к МК подойдут адаптеры и шилды. Планшет с Android лучше выбирать такой, чтобы сразу содержал встроенный модуль ВТ. Допускается эксперимен­тировать и с мобильными телефонами.

Третейский судья

Предположим, что программа под Android уже создана, однако, прежде чем опробовать ее дей­ствие на удаленном МК, не мешало бы провести оперативное тестирование работы с помощью компьютера или ноутбука. Имеется в виду исполь­зовать канал ВТ и два виртуальных COM-порта для связи между планшетом и компьютером. Послед­ний будет играть роль «третейского судьи», чтобы подтвердить исправность оборудования.

Для настольного компью­тера нужно приобрести недо­рогой китайский BT-адаптер, вставляемый в разъем USB (рис.11). Иначе его называ­ют «донгл» или «свисток». При первом включении операци­онная система опознает но­вое устройство и установит стандартные драйвера Microsoft. Но, рано радо­ваться, виртуальных COM-портов видно не будет.

Рис. 11

Рис. 11

Чтобы активизировать дополнительные профи­ли, требуется установить «родные» драйвера от раз­работчика продукта. Хорошо, если они находятся на прилагаемом к «свистку» компакт-диске, а если нет?

Помощь, как это часто бывает, приходит из Интернета. Но для начала надо самостоятельно выяснить идентификационные номера VID и PID адаптера, для чего в диспетчере устройств открыть его свойства: «Радиомодули Bluetooth- Generic Bluetooth Radio-Сведения» (рис. 12).

Рис. 12

Рис. 12

Далее, с выясненными VID, PID зайти на сайт <http://notebookclub.org/forum/thread-730.html> и определить фирму-изготовитель чипа BT. Для справ­ки, чипы выпускают фирмы: Atheros, Broadcom, Intel, Motorola, Ralink, Realtek, Toshiba, Widcomm. К боль­шинству из них подходят пакеты драйверов от Broadcom, Atheros, Intel, предлагаемые на сайте для скачивания. Например, адаптер с VID=0A12, PID=0001 относится к продукции Toshiba, но успеш­но инсталлируется драйверами от Atheros прог­раммой «Bluetooth Suite» («Bluetooth_Atheros_XP_ July_2014.exe», 165 Мбайт).

После установки драйверов и перезагрузки компьютера, в трее должен появиться значок ВТ, а в диспетчере устройств – изменения согласно рис. 13. Кроме того, добавятся профили: переда­чи файлов, DHCP, аудио, ВТ-клавиатуры, ВТ-мыши, факса и даже дистанционного фотоаппарата.

Рис. 13

Рис. 13

Назначение виртуальных COM-портов можно посмотреть в схеме настроек «Bluetooth Suite» (рис.14), из чего следует, что головным портом для связи с планшетом будет СОМ7. Интересный нюанс – «родной» драйвер от Toshiba добавляет в систему не 3, а целых 9 виртуальных COM-портов, что не принципиально.

Рис. 14

Рис. 14

Окно дизайна AI2 (Designer)

У первом приложении все дей­ствия по синтезу программы «мяукающего кота» слепо копировались по подсказкам из сайта помо­щи AI2. Это было целесообразно для быстрого освоения методики программирования и гарантированного получения результата.

Во втором приложении спешить уже некуда, можно рассмотреть детали и углубиться в теорию пользовательского интерфейса Android. В каче­стве примера будет создано приложение «TestBT», которое просканирует окружающее пространство, составит список близлежащих ВТ-устройств, со­единится с одним из них, передаст текст «Hello, World!», а затем разъединит связь.

З рис.15 показан внешний вид окна дизайна приложения «TestBT», где стрелками обозначены но­вые понятия: «активность», «контейнер», «служба».

Рис. 15

Рис. 15

Общее поле, на котором размещаются кнопки, списки, текст, картинки, относится до "Activity». По­скольку перевод этого термина на русский язык еще не устоялся, то некоторые авторы называют его «активность», «активити», а некоторые – «деятельность». Слово «активность» легче запоминает­ся на ассоциативном уровне, поэтому будет упо­требляться в дальнейшем.

В любом приложении должна содержаться, как минимум, одна активность Screenl. Запускается она первой и считается главной. Из нее запуска­ются другие активности, к примеру, служебные. Мнемонически можно представить себе активно­сти, как отдельные странички сайта в браузере.

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

Контейнеров может быть много, а может и ни одного, как, например, в первом тестовом прило­жении. Польза от контейнеров ощуща­ется в тех случаях, когда кнопки надо размещать не одна под одной, а в горизонтальной строке или в виде «квадратно-гнездовой» клавиатуры.

Служба (англ. Service) в Android не имеет визу­ального интерфейса, поэтому в AI2 размещается внизу, за полем активности. Служба выполняется в фоновом режиме и будет действовать до тех пор, пока не завершит свою работу. Приложения могут подключаться к службам, запускать их, произво­дить остановку.

У табл.1 перечислены свойства (Properties) тех компонентов приложения «TestBT», которые отличаются от установленных по умолчанию. Это поможет воссоздать проект самостоятельно.

Подробное описание функций разных компо­нентов приведено на русскоязычном сайте <http://android-lamer.ru/> и в книге [3], при этом инфор­мация, относящаяся к AI, будет актуальна и для AI2.

Табл.1

Компонент Функция Изменяемые свойства (остальное по умолчанию)
Screen1 Активность Icon «<ввести имя файла иконки с расширением *.png>». Title «TestBT»
HorizontalArrangement1 Контейнер AlignHorizontal «Center», Wight «Fill parent»
ListPicker1 Список Text «Соединение BT»
Button1 Кнопка Text «Разъединение BT»
Label1 Надпись Text «(с) Радиоаматор, №2-2015», TextAlignment «Center», Width «Fill parent»

Редактор блоков AI2 (Blocks Editor)

З рис. 16 показан внешний вид редактора блоков AI2, где в графическом виде разрисована логика работы приложения «TestBT».

Рис. 16

Рис. 16

Каркас любой программы AI2 состоит из одной или нескольких мозаик, каждая из которых содер­жит разноцветные блоки. Соединяются блоки

между собой си­стемой впадин и выступов. Где раз­мещать мозаики на экране и в ка­кой очередности – решает програм­мист. Более того, правой кнопкой мыши можно всег­да перегруппиро­вать и пересорти­ровать мозаики в удобном для обо­зрения виде.

В отличие от Си-образных язы­ков программиро­вания, в приложе­ниях для Android нет унифициро­ванной точки входа при запуске, наподобие функции «main». В этом смысле все мозаики являются равноправ­ными. Единственное, что при желании можно сформировать мозаику начальной инициализа­ции (аналог функции «setup» eArduino), выбрав блоки с ключевым словом «Initialize».

Управление действиями удобно рассматри­вать через призму системы прерываний. Вектора­ми прерываний можно считать события, указан­ные в верхнем блоке мозаики, в частности, нажатие кнопки, активация списка, срабатывание таймера, прием данных и т.д. То есть ОС Android постоянно находится в режиме ожидания. Как только наступает одно из перечисленных собы­тий, будут выполняться действия, указанные в конкретной мозаике в порядке «слева-направо, сверху-вниз».

Строки на рис. 16 для удобства пронумерованы цифрами. Разумеется, в реальном проекте такая нумерация отсутствует. Она нужна лишь для ссы­лок по тексту статьи.

Логика работы приложения "TestBT"

Программа состоит из трех мозаик: (1-2), (3-8), (9-11). Все надписи в блоках выполнены на англий­ском языке. Переводить их нужно дословно, счи­тая весь текст, разбитым на длинные предложения с запятыми и точками в конце каждой строки. Что не ясно – домысливается, а потом проверяется экспериментально.

Строка 1. Событие происходит тогда, когда спи­сок ListPickerl активируется, т.е. нажата сенсорная полоска «Соединение ВТ».

Строка 2. Действие – открыть экран служебной активности и показать в списке ListPickerl перечень сетевых адресов и имен (AddressesAndNames) от близлежащих ВТ-устройств. Иными словами, си­стема обращается к службе BluetoothClientl, кото­рая прослушивает радиодиапазон, находит BT- модули и выводит их перечень на вспомогательный экран.

Возврат из служебной активности к основному приложению возможен двумя путями:

  • нажатием на системную кнопку «Возврат» (полукруг с обратной стрелкой в Android), при этом произойдет переход к предыдущему экрану без каких-либо действий;
  • нажатием в списке ListPicker1 на строку с названием обнаруженного ВТ-устройства (ком­пьютера), при этом произойдет переход к началу мозаики-2.

Строка 3. Событие происходит тогда, когда вы­брана строка в списке ListPicker1 на служебном экране черного цвета.

Строки 4-8. Действие – попытаться подключить­ся к ВТ-устройству с адресом, ранее выбранным в списке ListPicker1 из мозаики-1. Если подключение удачное, то сменить цвет полоски «Соединение BT» с белого на зеленый, а также передать удаленно­му устройству текст «Hello, World!».

В компьютере надо включить ВТ-адаптер, запу­стить любую терминальную программу, выбрать COM-порт (в данном случае СОМ7) и наблюдать появление текста «Hello, World!» от планшета. Ин­тересная деталь – скорость виртуального СОМ-порта задавать не надо. Она игнорируется, по­скольку соединение идет «поверх» эмуляции на максимально доступной для ВТ-2.0 скорости при­мерно 230 кбод.

Если соединение не удалось, то служба Blueto­othClientl дает запрос на создание пары с удален­ным устройством и попросит ввести пароль на планшете (рис. 17).

Рис. 17

Рис. 17

Цифры пароля могут быть лю­быми, но такими же, как и в компьютере. После создания пары, в диспетчере программы «Blueto­oth Suite» должны появиться стрелки соединения, как на левой пиктограмме рис. 18. В дальнейшем пароль вводить, как правило, не требуется.

Рис. 18

Рис. 18

Строка 9. Событие происходит тогда, когда на­жата кнопка «Разъединение BT». В этой строке для примера показан информационный коммента­рий, который добавляет сам программист правой кнопкой мыши «Add Comment» при выделении лю­бого объекта схемы. Комментарии на работу при­ложения никак не влияют.

Строки 10-11. Действие – разорвать связь по BT и установить цвет фона надписи «Соединение BT» белым вместо зеленого. При этом в «Blueto­oth Suite» стрелки соединения через пару секунд должны превратиться в «галочку», как на правой пиктограмме рис. 18.

Выход из приложения «TestBT» можно произ­водить стандартными средствами Android, но внизу слева предусмотрена специальная иконка с тремя горизонтальными полосами, облегчаю­щая задачу. Этот «копирайт» имеется во всех при­ложениях, созданных с помощью AI2, т.е. по его наличию можно судить о применяемой среде про­граммирования.

Література

  1. Самбук-Нагорный Р. Использование eAndroid адаптера USB2COM на базе СР2102 / <http://komposter.com.ua/content/ispolzovanie-v-android-adaptera-usb2com-na-baze-cp2102-2014-11 -03>.
  2. Колисниченко Д. Н. Android для пользовате­ля. Полезные программы и советы / Денис Колис­ниченко. – БХВ-Петербург, 2013.

Автор: Сергей Рюмик, г. Чернигов

Джерело: Радиоаматор №2, 2015

адмін

Залишити коментар

Your email address will not be published. Required fields are marked *