Микро: бит прочитанного сообщения Bluetooth

Я хочу отправлять сообщения с моего Micro: Bit на связанное устройство через Bluetooth. У меня есть следующий код для Micro: Bit:

#include "MicroBit.h"#include "MicroBitUARTService.h"
MicroBitUARTService *uart;
MicroBit uBit;

uint8_t connected = 0;

void onConnect(MicroBitEvent)
{
connected = 1;
uBit.display.print("C");
}

void onDisconnect(MicroBitEvent)
{
connected = 0;
uBit.display.print("D");
}

void onButtonA(MicroBitEvent e)
{
if (connected == 0) {
uBit.display.print("X");
return;
}
uart->send("Button A");
uBit.display.print("A");
}

void onButtonB(MicroBitEvent e)
{
if (connected == 0) {
uBit.display.print("X");
return;
}
uart->send("Button B");
uBit.display.print("B");
}

int main()
{
// Initialise the micro:bit runtime.
uBit.init();

uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_CONNECTED, onConnect);
uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_DISCONNECTED, onDisconnect);
uBit.messageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_CLICK, onButtonA);
uBit.messageBus.listen(MICROBIT_ID_BUTTON_B, MICROBIT_BUTTON_EVT_CLICK, onButtonB);

uart = new MicroBitUARTService(*uBit.ble, 32, 32);
uBit.display.print("S");

release_fiber();
}

Я могу связать его с моим MacBook, используя следующий инструмент:

введите описание изображения здесь

После сопряжения я не знаю, как читать сообщения, отправленные через Bluetooth UART.

-1

Решение

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

согласно документации, признаки используются с характеристикой UART TX, поэтому посмотрите, как использовать индикации из вашего API.

https://lancaster-university.github.io/microbit-docs/resources/bluetooth/bluetooth_profile.html

А также

https://lancaster-university.github.io/microbit-docs/ble/uart-service/#example-microbit-application-animal-vegetable-mineral-game для примера Android.

Мартин

Больше….

В соответствии с документацией профиля, для которой я дал ссылку выше, вы можете написать в характеристику RX, но должны подписаться на Показания для характеристики TX. Вы не можете прочитать это напрямую.

На Raspberry Pi я бы использовал модуль Noble node.hs:

https://github.com/sandeepmistry/noble

Для показаний используйте

characteristic.subscribe ([обратный вызов (ошибка)]);

а также

характеристика.on (‘данные’, обратный вызов (data, isNotification));

Для письменного использования

характеристика.write (данные, без ответа [, обратный вызов (ошибка)]); // данные являются буфером, безResponse имеет значение true | false

Я знаю, что вы не интересуетесь телефонами, но принцип один и тот же, независимо от того, какую платформу вы программируете и какой API используете. Вам просто нужно знать, какие операции поддерживает каждая характеристика, а затем соответственно использовать ваш API.

0

Другие решения

Других решений пока нет …