Sensor

本文汇总该功能的常见问题、关键参考代码和应用示例。

参考代码

文件

作用

solution\components\sensor\sensor_service\sensor_service.c

接收传感器数据并分发给订阅者

solution\components\sensor\sensor_service\sensor_service_ui.c

向 UI 提供传感器数据订阅和取消订阅接口

solution\components\sensor\sensor_nvm\sensor_nvm.c

保存传感器校准参数和历史状态

solution\components\sensor\sensor_algo\timer\sensor_timer.c

为传感器算法提供周期调度定时器

solution\components\sensor\sensor_algo\reg\sensor_reg.c

绑定传感器设备和算法实例

应用例程

场景

文件

调用接口

心率 APP 打开 / 关闭 HR 并订阅今日 / 实时 HR 数据

heartrate_main_gui.c

app_open_sensors()app_close_sensors()app_rt_data_info_get()

心率 APP 处理今日 / 实时 HR 数据并刷新页面

heartrate_main_proc.c

SENSOR_APP_TODAY_HR_INDSENSOR_APP_RT_HR_INFO_INDapp_rt_data_info_get()

血氧 APP 打开 / 关闭 SPO2 传感器并刷新测量结果

app_box.c

app_open_sensors()app_close_sensors()、SPO2 数据订阅回调

运动 APP 下发运动模式并读取初始运动数据

sport_action_gui.c

app_set_multi_sport_mode()app_open_sensors()app_rt_data_info_get()

指南针 APP 打开 / 关闭 MAG 并读取方位数据

compass_gui.c

app_open_sensors()app_close_sensors()app_rt_data_info_get()

自动亮度设置订阅 ASL 光感数据

setting_display_gui.c

lv_obj_data_subscribe()SENSOR_APP_RT_ASL_INFO_IDapp_screen_light_auto_set()

重力主菜单订阅 Gsensor 工厂模式数据

mainmenu_gravity.c

app_open_sensors()app_close_sensors()

FAQ1 Solution已经适配了哪些sensor设备?

Solution 适配sensor设备类型包括:Gsensor(运动传感器)、HR(心率传感器)、MAG(地磁传感器)、光感传感器。 Gsensor(运动传感器)设备列表

型号

功能

支持开发板

stk8321

三轴加速度计

HDK52X、HDK56X

stk8328c

三轴加速度计

sc7a22/sc7a20

三轴加速度计

lsm6dsl

六轴(加速度计+陀螺仪),计步

黄山派

HR(心率传感器)

型号

功能

支持开发板

vc32s

心率/血氧/血压

HDK52X、HDK56X

vc9202

心率/血氧/血压

HDK52X、HDK56X

hrs3300

心率/血氧

MAG(地磁传感器)

型号

功能

支持开发板

mmc5603

三轴地磁传感器

黄山派

qmc6310

三轴地磁传感器

HDK52X、HDK56X

光感传感器

型号

功能

支持开发板

ltr303

感应环境光

黄山派


FAQ2 Solution是否提供Sensor基础算法和运动算法?

Sensor基础算法列表

器件

功能

提供方

数据源

代码位置

vc32s/vc9202

心率/血氧/血压 计算

器件原厂提供

心率+加速度计

sdk\customer\peripherals\sensor\hr\vc32s

qmc6310/mmc5603

指南针 计算

器件原厂提供

地磁+加速度计

sdk\customer\peripherals\sensor\mag\qmc63x0

运动算法提供试用版本的cywee算法。 代码位置: solution\components\sensor\sensor_algo\acc\cywee_lib 静态功能列表

  • 睡眠

  • 抬腕亮屏

  • 翻腕灭屏

  • 久坐提醒

动态功能列表

  • 计步

  • 一般模式

  • 跑步机

  • 户外健走

  • 室内跑步

  • 骑车

  • 自由运动

  • 器械运动


FAQ3 UI 页面如何获取 sensor 实时数据并刷新?

开发页面时可以先按数据变化方式选择刷新方案:

  1. 心率、血氧、步数等事件驱动数据,优先用被动订阅:页面控件调用 lv_obj_data_subscribe 订阅对应 key,例如步数订阅 rt_step

  2. 时间、倒计时等固定频率数据,使用 lv_timer 主动刷新;

  3. 页面首次进入、从后台恢复或系统从睡眠唤醒时,主动读取一次 app_rt_info_getapp_rt_data_info_get,保证首帧显示正确;

  4. 页面退出时调用 lv_obj_data_unbind 或删除定时器,避免无效刷新和内存泄漏。

sensor 数据分发链路请参考 SENSOR数据对接;主动/被动刷新选择和示例请参考 数据刷新