Espruino:Примеры/Разработка под Bangle.js

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Разработка под Bangle.js [1]

Если у вас нет часов Bangle.js

Вы можете воспользоваться онлайн-эмулятором Bangle.js, но – очевидно – у вас не будет доступа к датчикам, Bluetooth, динамику и вибрационному мотору.

Если ваши смарт-часы не подключены к Bluetooth

  • Нажмите на Bangle.js среднюю кнопку (BTN2).
  • При помощи нижней кнопки (BTN3) перейдите к пункту с настройками («Settings»).
  • При помощи BTN2 выберите пункт с настройками.
  • Далее два варианта действий (одно или другое):
    • Убедитесь, что в настройках «BLE» и «Programmable» стоит «On», чтобы включить у Bangle.js режим программирования. Затем выберите «Back», чтобы выйти из меню настроек.
    • Найдите пункт «Make Connectable», выберите его и пока отложите Bangle.js, оставив на нем меню Connectable.
  • Откройте в Chrome онлайн-IDE для Espruino.
  • Кликните на желтую кнопку Connect в левом верхнем углу экрана.
  • В открывшемся окне кликните на пункт Web Bluetooth (если его нет, почитайте это руководство).
  • Найдите свои Bangle.js (по последним 4 цифрам) в списке устройств.

Теперь соединение должно быть установлено. Если этого не случилось, взгляните на эту статью.

Если вы хотите побыстрее начать, и у вас на руках только Android-телефон, то не беда! Если у вас нет внешней клавиатуры, вы можете установить бесплатное приложение Hackers Keyboard, где есть клавиши-стрелочки (они вам понадобятся).

Примечание

Если вы раньше уже пользовались Espruino, то убедитесь, что пунктом назначения для загрузки кода выбран пункт «RAM» – для этого кликните на треугольник, находящийся под кнопкой загрузки кода (которая, в свою очередь, находится в середине экрана). Потому что если будет выбран пункт «Flash», вы рискуете удалить встроенное меню (но, впрочем, его можно будет добавить обратно с помощью загрузчика приложений).

Если у вас Kickstarter-версия Bangle.js, найдите в настройках пункт «Debug Info» и поставьте в нем «Hide» или установите самую последнюю версию загрузчика (Bootloader) при помощи загрузчика приложений.

Когда подключились

Онлайн-IDE для Espruino состоит из 2 частей: из черного REPL слева и белого редактора справа.

REPL слева имеет прямое соединение с часами и моментально выполняет все, что вы туда пишете, но будьте внимательны, потому что в нем используются фигурные скобки, чтобы определить, когда начинать выполнение кода.

Поэтому вот этот код заставит Bangle.js завибрировать:

if (true) {
  Bangle.buzz();
}

А вот этот – если нажать  ↵ Enter , а не  Alt - ↵ Enter  – запустит три команды, последние две из которых вызовут ошибку:

if (true)
  Bangle.
    buzz();

Если вы пишете код в стиле «K&R», то вряд ли встретите какие-то проблемы, и если вы пишете код в правой части IDE, завершения строк будут выполняться автоматически.

Если вы пишете код в правой части, то можете нажать на кнопку в середине IDE, чтобы выполнить сброс Bangle.js (временно!) и загрузить код, который находится в правой части. Но начальный код (который работает на большинстве устройств Espruino!) потерпит неудачу, потому что на Bangle.js нет светодиода.

Теперь давайте попробуем некоторые команды.

Для начала давайте выполним сброс Bangle.js, чтобы выйти из меню «Connectable».

Напишите в левой части IDE следующее:

reset();

В результате должно появиться лого Bangle.js.

А эта команда заставит Bangle.js завибрировать:

Bangle.buzz();

А эта команда заставит часы издать писк:

Bangle.beep();
Примечание

У большинства Bangle.js нет пьезодинамика – вместо него они издают звуки при помощи вибрационного мотора. Если вы, наконец, получили свои Bangle.js и они не издают никакого звука при использовании Bangle.beep(), просто обновите Bootloader и Settings при помощи загрузчика приложений. После этого вы можете поменять режим «Beep» в настройках на «Vibrate».

Вы увидите, как эти команды возвращают промисы, а это значит, что вы можете сделать цепочку вызовов промисов:

Bangle.buzz().then(() => {
  Bangle.beep();
});

Чтобы очистить дисплей Bangle.js, можно воспользоваться функцией g.clear(). Полный список команд библиотеки Graphics можно найти тут.

Чтобы написать сообщение на экране, воспользуйтесь E.showMessage():

E.showMessage("Hello","A Title")

Специфические для Bangle.js функции и события находятся в классе Bangle, а функции, специфичные для Espruino – в классе E.

Но на самом дисплее также есть терминал VT100, так что если вы просто хотите написать какие-то данные, то можете воспользоваться Terminal.print() или Terminal.println():

Terminal.println("Hello World")

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

Стоит отметить, что когда вы отключены от Bluetooth, Bangle.js будет печатать все сообщения от console.log() (включая все исключения) на дисплей – если в пункте «Debug Info» в настройках задано «Show». Это может пригодиться, например, если вы хотите узнать, возникают ли сбои у вашего приложения при ежедневном использовании.

Хотите сделать какие-то реакции на нажимание кнопок Bangle.js? Можете запросить состояние кнопки. BTN1 – это верхняя кнопка, BTN2 – средняя, BTN3

– нижняя. Например, вот эта команда...
BTN2.read();

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

Вместо этого воспользуйтесь setWatch() – эта функция позволяет следить за нажатием кнопки:

setWatch(() => {
  E.showMessage("Вы\nнажали\nсреднюю\nкнопку!");  
  setTimeout(()=>g.clear(), 1000);
}, BTN2);

Это большой код, так что имеет смысл просто скопировать его в правую часть IDE, а затем воспользоваться кнопкой загрузки в середине.

По умолчанию проверка нажатия будет выполнена только один раз, но вы можете добавить в конце {repeat:true}, чтобы она повторялась:

setWatch(() => {
  Bangle.buzz();
  E.showMessage("Вы\nнажали\nсреднюю\nкнопку!");
  setTimeout(()=>g.clear(), 1000);
}, BTN2, {repeat:true});

По умолчанию эта функция определяет только нажатие кнопки, но вы также можете воспользоваться настройками edge:"falling" и edge:"both", чтобы также определять, когда ее отпускают.

Использование правой части IDE

Правая часть IDE – это просто реактор с подсветкой синтаксиса. Чтобы отправить на Bangle.js написанный код, просто кликните на кнопку загрузки:

Это выполнит предварительную обработку вашего кода, подгрузит нужные файлы, а потом загрузит код на Bangle.js. Вы также можете поменять пункт назначения кода (всего их три, смотрите описания внизу) – либо при помощи кнопки с треугольником, находящейся под кнопкой с загрузкой, либо при помощи пункта «Communications» в настройках.

  • «RAM» – обычно используется именно этот вариант. При этом в долговременную память ничего не записывается (а значит – не перезаписывается), так что это быстрый и безопасный способ разработки под Bangle.js.
  • «Flash» и «Flash (always)»НЕ ИСПОЛЬЗУЙТЕ ЭТОТ ВАРИАНТ НА BANGLE.JS, т.к. это перезапишет вашим приложением встроенный загрузчик Bangle.js.
  • «Storage» – здесь можно выбрать файл в памяти Storage, куда будет выполнена запись. Хорошо подходит при разработке собственных приложений (более подробно читайте тут).

Что дальше

Возможно, вам также будут интересны вот эти статьи:

См.также

Внешние ссылки