JAVA и STM32 - курс экспресс-программирования с MicroEJ. Часть пятая
Теперь вы можете начать создавать код приложения. Сначала добавьте основной класс основным методом, с которого будет запускаться программа. Имя класса не имеет значения, важно, чтобы он содержал статический метод main. Вы можете добавить новый класс, щелкнув правой кнопкой мыши по проекту в дереве слева от основного окна среды MicroEJ и выбрав New? Class. В новом окне класса (рисунок 5) должно быть указано его имя. Также стоит указать имя пакета, в который будет помещен класс, иначе он будет помещен в пакет по умолчанию, что не рекомендуется. После нажатия кнопки «Готово» будет создан класс с методом main, в который следует поместить собственный код. Как упоминалось ранее, этот метод является статическим, что означает, что его можно вызывать без создания объекта класса, в котором он находится. Кроме того, вы можете видеть, что он помечен модификатором открытого доступа, который, в свою очередь, позволяет вызывать этот метод из любой точки программы.
Рис. 5. Создание нового класса
Прежде чем приступить к реализации метода main, стоит подготовить еще один класс - ButtonListener (листинг 1). Это класс, который позволяет получать события кнопок от генератора (описание в пункте 1). Он должен реализовывать интерфейс Listener в библиотеке MicroUI. Интерфейс в Java - это список методов, которые класс должен реализовать. Можно также думать об этом как об эквиваленте наследования от абстрактного класса, известного из других объектно-ориентированных языков. Благодаря этому созданный класс ButtonListener, реализующий интерфейс Listener, также имеет тип Listener и может использоваться генератором событий. Новый класс можно добавить так же, как и основной класс, но в этом случае, добавив реализованный интерфейс (ej.microui.Listener) в поле Interface. Это также можно сделать после добавления класса, добавив реализацию Listener после имени класса в исходном файле.
Интерфейс Listener требует реализации трех методов executeAction, которые отличаются аргументами. В этом случае нужен только один из них, принимая целое число в качестве кода события, описанного в пункте 1. (другие методы можно оставить пустыми, но они должны быть определены в классе). Внутри метода тип события определяется и отображается в консоли - в примере используются только события нажатия и отпускания кнопки. Метод executeAction будет вызываться при каждом обнаружении события.
package app;
import ej.microui.Listener; import ej.microui.io.Buttons;
public class ButtonListener implements Listener {
@Override public void performAction() { // TODO Auto-generated method stub }
@Override public void performAction(int value) { System.out.println("Got event number "+value); int action = Buttons.getAction(value); switch (action) { case Buttons.PRESSED: System.out.println("Button PRESSED"); break; case Buttons.RELEASED: System.out.println("Button RELEASED"); break; default: break; } }
@Override public void performAction(int value, Object object) { // TODO Auto-generated method stub } }
Код. 1. Код класса ButtonListener
Теперь вы можете приступить к реализации основного метода (листинг 2). Это очень просто и содержит только регистрацию предварительно подготовленного объекта ButtonListener в генераторе событий. Это типичная структура для приложения с пользовательским интерфейсом: основной метод main готовит интерфейс, а остальная часть программы находится в обработке событий.
package app;
import ej.microui.EventGenerator; import ej.microui.io.Buttons;
public class GPIO {
public static void main(String[] args) { EventGenerator[] eventGenerators = EventGenerator.get(Buttons.class); eventGenerators[0].setListener(new ButtonListener()); } }
2. Код GPIO
Таблица CommentGenerator [] все еще нуждается в комментарии. Он содержит все зарегистрированные генераторы типа, указанного в аргументе метода EventGenerator.get. Эти генераторы определены в конфигурации платформы в файле * -configuration / microui / microui.xml.
В конце мы просто должны запустить пример. В начале вы можете проверить работу в симуляторе (как видно в фильме). Для этого щелкните правой кнопкой мыши проект и выберите «Запустить как? Запустить конфигурации ...». В появившемся окне создайте новую конфигурацию («Новая конфигурация запуска»), выберите проект («Обзор») на вкладке «Главная» и класс, содержащий основной метод («Выбрать основной тип»). ...). На вкладке «Выполнение» выберите предварительно подготовленную платформу (JPF) и установите флажок «Выполнить в SimJPF». После нажатия кнопки «Выполнить» запускается симулятор, при котором нажатие кнопки мышью вызывает вызов метода класса ButtonListener и отображение кода полученного события в консоли. Запуск примера на оценочном наборе будет обсуждаться в следующих параграфах
Светодиодная поддержка
Драйвер светодиодов (кстати о светодиодах - разнообразное телекоммуникационное оборудование вы всегда можете найти на сайте компании deps.ua, к примеру каталог коаксиальных кабелей расположен по ссылке https://deps.ua/katalog/koaksialnyiy-kabel-finmark) также включен в библиотеку MicroUI, и его использование очень просто. Он предоставляет методы для проверки количества диодов и установки их состояния. Реализация этих методов находится внутри платформы, а библиотека обеспечивает доступ к ним с уровня Java. Количество доступных диодов проверяется путем вызова метода Leds.getNumberOfLeds () из модуля ej.microui.io.Leds и изменения их состояния путем вызова Leds.setLedOn (int ledid) или Leds.setLedOff (int ledid). Значение ledid - это число диодов от 0 до общего количества диодов минус один.
Мониторинг диодов возможен из любой точки кода. В примере в основном методе проверяется количество доступных диодов и сигнализируется на одном из них (листинг 3).
public static void main(String[] args) { EventGenerator[] eventGenerators = EventGenerator.get(Buttons.class); eventGenerators[0].setListener(new ButtonListener()); try { int ledsCount = Leds.getNumberOfLeds(); for (int i = 0; i < ledsCount; i++) { Leds.setLedOn(0); Thread.sleep(1000); Leds.setLedOff(0); Thread.sleep(1000); } } catch (InterruptedException e) { e.printStackTrace(); } } 3. Работа светодиодов в основном методе
|