我想使用 BLE UART(BleNordicUART 模块)和我的自定义固件来打印简单的调试输出(我没有编程夹具)。我在 wiki 或来源中没有找到任何有关 BLE UART 的信息。我可以从我的 Android 设备上找到并连接到 BLE UART 服务,但没有收到任何数据。
有人可以帮忙吗?
谢谢
我想使用 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 获取 DebugMessages:
订阅路径/System/Debug/{Level}其中 {Level} 是以下之一:
要将调试消息存储到 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 团队工作