速報APP / 通訊 / micro:bit Gateway

micro:bit Gateway

價格:免費

更新日期:2016-12-10

檔案大小:966k

目前版本:1.1

版本需求:Android 4.4 以上版本

官方網站:http://lehrer.bulme.at/~sk

Email:stuecklerf@gmail.com

micro:bit Gateway(圖1)-速報App

This app establishes a channel between two micro:bit devices. The channel will be handeled as UART communication. You have to develope a programm on each micro:bit device with UART transfer.

Indication aktive: BLE Indication (Default)

Indication inaktive: BLE Notification

Silent aktive: No visual logging

Silent inaktive: Logging

Requirements:

- Min. Android 4.4

- Bluetooth Low Energy (BLE)

- Paired devices

- micro:bit programm (developed by yourself)

MBED example:

#include "MicroBit.h"

#include "MicroBitUARTService.h"

MicroBit uBit;

MicroBitUARTService *uart;

int connected = 0;

void onConnected(MicroBitEvent e)

{

uBit.display.scroll("C");

connected = 1;

}

void onDisconnected(MicroBitEvent e)

{

uBit.display.scroll("D");

connected = 0;

}

void onButtonA(MicroBitEvent e)

{

if (connected == 0) {

uBit.display.scroll("NC");

return;

}

uart->send("Yes");

uBit.display.scroll("Y");

}

void onButtonB(MicroBitEvent e)

{

if (connected == 0) {

uBit.display.scroll("NC");

return;

}

uart->send("No");

uBit.display.scroll("N");

}

void onButtonAB(MicroBitEvent e)

{

micro:bit Gateway(圖2)-速報App

if (connected == 0) {

uBit.display.scroll("NC");

return;

}

uart->send("SK");

uBit.display.scroll("SK");

}

void processBLEUart() {

uint8_t readBuf[22];

while (1) { // loop for ever

if ((!connected) || (!uart->isReadable())) {

uBit.sleep(50); // wait 50mS and check again

continue; // loop;

}

//else we are connected AND there is some input to read

if (uart->isReadable()) {

while (uart->isReadable()) {

int charCount = uart->read(readBuf, 22, ASYNC);

if (charCount != 0) {

for (int i = 0; i < charCount; i++)

uBit.display.scroll((char) readBuf[i]);

}

}

}

}

}

/*

IMPORTANT !!!

Oherwise you will run out of memory !

Recommend disabling the DFU and Event services in MicroBitConfig.h since they are not needed here:

microbit->microbit-dal->inc->core->MicroBitConfig.h

#define MICROBIT_BLE_DFU_SERVICE 0

#define MICROBIT_BLE_EVENT_SERVICE 0

#define MICROBIT_SD_GATT_TABLE_SIZE 0x500

*/

int main()

{

// Initialise the micro:bit runtime.

uBit.init();

uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_CONNECTED, onConnected);

uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_DISCONNECTED, onDisconnected);

uBit.messageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_CLICK, onButtonA);

uBit.messageBus.listen(MICROBIT_ID_BUTTON_B, MICROBIT_BUTTON_EVT_CLICK, onButtonB);

uBit.messageBus.listen(MICROBIT_ID_BUTTON_AB, MICROBIT_BUTTON_EVT_CLICK, onButtonAB);

uart = new MicroBitUARTService(*uBit.ble, 32, 32);

uBit.display.scroll("Go");

create_fiber(&processBLEUart); // create fiber and schedule it.

release_fiber();

}