0

我想使用 BLE UART(BleNordicUART 模块)和我的自定义固件来打印简单的调试输出(我没有编程夹具)。我在 wiki 或来源中没有找到任何有关 BLE UART 的信息。我可以从我的 Android 设备上找到并连接到 BLE UART 服务,但没有收到任何数据。

有人可以帮忙吗?

谢谢

4

2 回答 2

0

在 BleController.hpp 中找到 send_ble_nus_data() 函数。

于 2019-03-16T21:02:31.023 回答
0

使用 BLE Nordic UART 的替代方案是DebugService,它可以为您提供实时调试消息并将它们存储到 EEPROM 以供以后检索。

这方面的文档仍然有点稀疏(请参阅:MovesenseCoreLib中的 debug.yaml),但这是简短版本:

在代码中写入(信息级别)调试消息(其他级别请参见:DebugLogger.hpp):

DebugLogger::info("stateChange DOUBLETAP: newState = %d", stateChange.newState);

要通过 BLE 获取 DebugMessages:

  • 订阅路径/System/Debug/{Level}其中 {Level} 是以下之一:

    • “致命”:0
    • “错误”:1
    • “警告”:2
    • “信息”:3
    • “详细”:4

要将调试消息存储到 EEPROM,您必须在 App.cpp中定义要使用的内存区域,并确保它不与日志内存重叠。定义示例(16kB 用于调试,其余用于日志):

// Define 16kB DEBUG message area
// NOTE: If building a simulator build, these macros are obligatory!
DEBUGSERVICE_BUFFER_SIZE(6, 120); // 6 lines, 120 characters total
DEBUG_EEPROM_MEMORY_AREA(true, 0, 16384)
// Rest of the EEPROM is for Logbook 
LOGBOOK_MEMORY_AREA(16384, (384 * 1024)-16384);

...并使用 PUT on /System/Debug/Log/Config 配置要存储到 EEPROM 的最低级别。

要从 EEPROM 中获取条目,请在/System/Debug/Log上使用包含最大时间戳(在 Movesense >=1.9 中使用“Id”)的查询对象执行 GET(GET 一次最多返回 4-6 个条目,因此您必须反复调用它才能获取所有条目)。

全面披露:我为 Movesense 团队工作

于 2019-03-18T11:39:36.907 回答