如何通过 Movesense 使用 BleNordicUART

How to make use of BleNordicUART with Movesense

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

有人可以帮忙吗?

谢谢

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

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

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

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

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

通过 BLE 获取调试消息:

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

    • 'Fatal': 0
    • 'Error': 1
    • 'Warning': 2
    • 'Info': 3
    • 'Verbose': 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);

...并配置最低级别以在 /System/Debug/Log/Config.

上使用 PUT 存储到 EEPROM

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

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