Микропроцессоры и микроконтроллеры

 
 
 
«Измерять продуктивность программирования подсчетом строк кода — это так же, как оценивать постройку самолета по его весу.»
Bill Gates
Русский | Українська


Микропроцессоры и микроконтроллеры :: JAVA и STM32 - курс экспресс-программирования с MicroEJ :: JAVA и STM32 - курс экспресс-программирования с MicroEJ. Часть пятая

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. Работа светодиодов в основном методе