Espruino:Примеры/Использование UART-портов (NUS) при помощи BLE
Поддержать проект | Содержание | Резерв | Справочник по API | Модули | Примеры | Резерв | Резерв | Резерв | Резерв | Резерв |
Содержание
Использование UART-портов (NUS) при помощи BLE[1]
По умолчанию у BLE-устройств вроде Puck.js есть сервис Nordic UART, который служит чем-то вроде последовательного порта для доступа к Espruino REPL. При необходимости его можно отключить при помощи NRF.setServices({},{uart:false}).
Вспомогательный скрипт «puck.js» позволяет получить доступ к UART из веб-браузера с Web Bluetooth – более подробно читайте в этом руководстве.
Отправка
Если вы, имея одно Espruino-устройство, хотите подключиться к сервису UART на другом Espruino-устройстве, то можете просто воспользоваться для отправки данных модулем «ble_simple_uart» (более подробно о модулях читайте тут).
Используйте его следующим образом:
NRF.requestDevice({ filters: [{ namePrefix: 'Puck.js' }] }).then(function(device) {
require("ble_simple_uart").write(device, "digitalPulse(LED3,1,1000)\n", function() {
print('Готово!');
});
});
Кроме того, require("ble_simple_uart").write возвращает промис, который можно использовать в .then().
NRF.requestDevice({ filters: [{ namePrefix: 'Puck.js' }] }).then(function(device) {
return require("ble_simple_uart").write(device, "digitalPulse(LED3,1,1000)\n");
}).then(function() {
print('Готово!');
});
Текст по UART можно передавать сколько угодно долго – модуль будет автоматически разбивать его на BLE-пакеты и отправлять дальше.
Получение / выполнение
Модуль «ble_simple_uart» просто отправляет данные. Но модуль «ble_uart» может также принимать данные. Для этого он держит соединение открытым, и когда всё будет готово, вам нужно будет вручную закрыть его при помощи disconnect().
Здесь мы также воспользуемся вспомогательной функцией eval(), которая вычисляет выражение устройства, находящегося по ту сторону коммуникации, передаёт его обратно в виде JSON-строки, а затем парсит:
var uart;
NRF.requestDevice({ filters: [{ namePrefix: 'Puck.js' }] }).then(function(device) {
return require("ble_uart").connect(device);
}).then(function(u) {
uart = u;
// Опционально. Ждём 0.5 секунд, пока из BLE-буфера
// не будут отправлены находящиеся в нём данные,
// так как они могут пересечься с результатом eval():
return new Promise(function(r) { setTimeout(r, 500); });
}).then(function() {
return uart.eval('E.getTemperature()');
}).then(function(data) {
print("Получили температуру "+data);
uart.disconnect();
});
Но вы также, если нужно, можете воспользоваться on('data' ...) и write():
NRF.requestDevice({ filters: [{ namePrefix: 'Puck.js' }] }).then(function(device) {
return require("ble_uart").connect(device);
}).then(function(uart) {
uart.on('data', function(d) { print("Получили:"+JSON.stringify(d)); });
uart.write("digitalPulse(LED,1,10);\n"); // .then(...)
setTimeout(function() {
uart.disconnect();
console.log("Отключились");
}, 2000);
});
Примечание: Код выше напечатает что-то вроде:
Получили:"digitalPulse(LED,1,1"
Получили:"0);\r\n=undefined\r\n>"
Это происходит из-за того, что по умолчанию JavaScript-консоль (REPL) пересылает обратно все команды, которые ей были отправлены, также применяя к ним функцию eval(). Чтобы не допустить этого, перед командой можно поставить префикс \x10 или вообще отключить эхо-отображение с помощью функции echo().
См.также
Ссылки на полезные ресурсы
- AliExpress — глобальная виртуальная (в Интернете) торговая площадка, предоставляющая возможность покупать товары производителей из КНР;
- computeruniverse.net - Интернет-магазин компьютеров(Промо код 5 Евро на первую покупку:FWWC3ZKQ);
- DigitalOcean - американский провайдер облачных инфраструктур, с главным офисом в Нью-Йорке и с центрами обработки данных по всему миру;
- Викиум - Онлайн-тренажер для мозга
- Like Центр - Центр поддержки и развития предпринимательства.
- Gamersbay - лучший магазин по бустингу для World of Warcraft.
- Ноотропы OmniMind N°1 - Усиливает мозговую активность. Повышает мотивацию. Улучшает память.
- Санкт-Петербургская школа телевидения - это федеральная сеть образовательных центров, которая имеет филиалы в 37 городах России.
- Lingualeo.com — интерактивный онлайн-сервис для изучения и практики английского языка в увлекательной игровой форме.
- Junyschool (Джунискул) – международная школа программирования и дизайна для детей и подростков от 5 до 17 лет, где ученики осваивают компьютерную грамотность, развивают алгоритмическое и креативное мышление, изучают основы программирования и компьютерной графики, создают собственные проекты: игры, сайты, программы, приложения, анимации, 3D-модели, монтируют видео.
- Умназия - Интерактивные онлайн-курсы и тренажеры для развития мышления детей 6-13 лет
- SkillBox - это один из лидеров российского рынка онлайн-образования. Среди партнеров Skillbox ведущий разработчик сервисного дизайна AIC, медиа-компания Yoola, первое и самое крупное русскоязычное аналитическое агентство Tagline, онлайн-школа дизайна и иллюстрации Bang! Bang! Education, оператор PR-рынка PACO, студия рисования Draw&Go, агентство performance-маркетинга Ingate, scrum-студия Sibirix, имидж-лаборатория Персона.
- «Нетология» — это университет по подготовке и дополнительному обучению специалистов в области интернет-маркетинга, управления проектами и продуктами, дизайна, Data Science и разработки. В рамках Нетологии студенты получают ценные теоретические знания от лучших экспертов Рунета, выполняют практические задания на отработку полученных навыков, общаются с экспертами и единомышленниками. Познакомиться со всеми продуктами подробнее можно на сайте https://netology.ru, линейка курсов и профессий постоянно обновляется.
- StudyBay Brazil – это онлайн биржа для португалоговорящих студентов и авторов! Студент получает уникальную работу любого уровня сложности и больше свободного времени, в то время как у автора появляется дополнительный заработок и бесценный опыт.
- Автор24 — самая большая в России площадка по написанию учебных работ: контрольные и курсовые работы, дипломы, рефераты, решение задач, отчеты по практике, а так же любой другой вид работы. Сервис сотрудничает с более 70 000 авторов. Более 1 000 000 работ уже выполнено.
- StudyBay – это онлайн биржа для англоязычных студентов и авторов! Студент получает уникальную работу любого уровня сложности и больше свободного времени, в то время как у автора появляется дополнительный заработок и бесценный опыт.
Внешние ссылки