我想通过蓝牙从我的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 bluetooth发送的消息。
答案 0 :(得分:0)
不要让特征名称中的UART这个术语混淆你,它只是一个标准特性而与实际的UART无关。
根据文档,指示与UART TX特性一起使用,因此请查看如何使用API中的指示。
https://lancaster-university.github.io/microbit-docs/resources/bluetooth/bluetooth_profile.html
和
马丁
更多....
根据我给出上述链接的配置文件,您可以写入RX特性,但必须订阅TX特性的指示。你无法直接阅读它。
在Raspberry Pi上我会使用Noble node.hs模块:
https://github.com/sandeepmistry/noble
用于适应症
characteristic.subscribe([回调(误差)]);
和
characteristic.on('data',callback(data,isNotification));
写作用途
characteristic.write(data,withoutResponse [,callback(error)]); // data是一个缓冲区,withoutResponse为true | false
我知道你对手机不感兴趣,但原则完全一样,无论你编码哪个平台,无论你使用哪种API。您只需要知道每个特性支持哪些操作,然后相应地使用您的API。