我想通过蓝牙将消息从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蓝牙发送的消息。
最佳答案
不要让特性名称中的术语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
用于指示使用
feature.subscribe([callback(error)]);
和
feature.on('data',callback(data,isNotification));
用于写作
feature.write(data,withoutResponse [,callback(error)]); //数据是缓冲区,而没有Response为true | false
我知道您对电话不感兴趣,但是原理是完全一样的,无论您要编码的平台还是所使用的API。您只需要知道每个特征支持哪些操作,然后相应地使用您的API即可。
关于c++ - Micro:位读取蓝牙消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48648088/