Использование файла config.json с BBC Micro: бит Mbed онлайн-компилятор

Кто-нибудь получил онлайн-компилятор Mbed C/C++ для использования файлов config.json с BBC Micro:bit? Если да, то где в файловой системе вы разместили файл config.json?

Когда я использую онлайновый компилятор C / C++ Mbed для создания примеров радиопрограмм, называемых microbit-simple-radio-rx и microbit-simple-radio-tx, я не получаю никакого ответа от бит Micro: после загрузки шестнадцатеричных файлов. Однако, когда я использую автономную командную строку yotta для компиляции тех же примеров для бита Micro: с теми же файлами config.json и загрузки шестнадцатеричных файлов, примеры работают правильно.

Мне кажется, что файлы config.json игнорируются онлайн-компилятором Mbed. Содержимое этого файла отключает Bluetooth, поскольку Micro: битное радио использует собственный стек, который не может работать одновременно с Bluetooth. Я также могу отключить библиотеку Bluetooth, добавив эту строку в библиотеку MicroBit.h:

#define MICROBIT_BLE_ENABLED 0

Затем это позволяет примерам компилироваться и корректно работать с онлайн-компилятором Mbed.

файл config.json:

{ 
     microbit-dal:{
        bluetooth:{
            enabled: 0 
        } 
     } 
}

microbit_simple_radio_rx:

#include "MicroBit.h"

MicroBit    uBit;

void onData(MicroBitEvent)
{
    ManagedString s = uBit.radio.datagram.recv();

    if (s == "1")
        uBit.display.print("A");

    if (s == "2")
        Bit.display.print("B");
}

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

    uBit.messageBus.listen(MICROBIT_ID_RADIO, 
        MICROBIT_RADIO_EVT_DATAGRAM, onData);
    uBit.radio.enable();

    while(1)
        uBit.sleep(1000);
}

microbit_simple_radio_tx:

#include "MicroBit.h"

MicroBit    uBit;

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

    while(1)
    {
        uBit.display.print("t");
        if (uBit.buttonA.isPressed())
        {
            uBit.radio.datagram.send("1");
            uBit.display.print("1");
        }
         else if (uBit.buttonB.isPressed())
        {
            uBit.radio.datagram.send("2");
            uBit.display.print("2");
        }
        uBit.sleep(200);       
    }
}

1 ответ

Решение

Онлайн-компилятор Mbed использует mbed_app.json вместо config.json, Вы можете сделать то же самое, что и сейчас, через:

{
    "macros": [ "MICROBIT_BLE_ENABLED=0" ]
}

Просто вставьте это в mbed_app.json и поместите в корень вашего проекта.

Другие вопросы по тегам