在BBC Micro中使用config.json文件:bit Mbed在线编译器

时间:2017-11-30 18:24:30

标签: c++ c mbed bbc-microbit

有没有人使用在线Mbed C / C ++编译器将config.json文件与BBC Micro:bit一起使用?如果是这样,文件系统中的位置是否放置了config.json文件?

当我使用Mbed在线C / C ++编译器构建名为microbit-simple-radio-rx和microbit-simple-radio-tx的示例无线电程序时,我在加载后没有得到Micro:bit的任何响应十六进制文件但是,当我使用离线yotta命令行为具有相同config.json文件的Micro:bit编译相同的示例并加载hex文件时,示例可以正确运行。

在我看来,Mbed在线编译器正在忽略config.json文件。此文件的内容关闭蓝牙,因为Micro:位无线电使用自定义堆栈,该堆栈无法与蓝牙同时运行。我还可以通过将此行添加到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 个答案:

答案 0 :(得分:3)

Mbed在线编译器使用mbed_app.json而不是config.json。您可以通过以下方式执行相同操作:

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

只需将其放入mbed_app.json并放在项目的根目录中即可。