-1

我想通过蓝牙将消息从我的 Micro:Bit 发送到链接的设备。我有以下 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 配对:

在此处输入图像描述

配对后,我不知道如何阅读通过 uart 蓝牙发送的消息。

4

1 回答 1

0

不要让特性名称中的术语 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 特征的指示。你不能直接阅读它。

在树莓派上,我会使用 Noble node.hs 模块:

https://github.com/sandeepmistry/noble

用于适应症

特征.订阅([回调(错误)]);

特征.on('数据',回调(数据,isNotification));

写作用

特征.write(数据,没有响应[,回调(错误)]);// data 是一个缓冲区,withoutResponse 为 true|false

我知道您对手机不感兴趣,但原理完全相同,无论您为哪个平台编写代码和使用哪个 API。您只需要知道每个特征支持哪些操作,然后相应地使用您的 API。

于 2018-02-07T01:03:45.903 回答