From: Caisking <3449750381@qq.com> Date: Sat, 21 Sep 2024 08:45:51 +0000 (+0800) Subject: #144 手表,心率测量开始测量的时候显示的心率值太大,需要优化开始显示的心率值 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=7af720e90cc206a5d9916b0022588f66930ed46e;p=mirrors%2FFD230.git #144 手表,心率测量开始测量的时候显示的心率值太大,需要优化开始显示的心率值 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h b/code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h index c67d3600b..840448728 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h @@ -180,6 +180,7 @@ private: uint16_t valid_counter_ = 0; // 有效数计数器 uint16_t disvalid_counter_ = 0; // 无效数计数器 uint16_t unwear_counter_ = 0; // 佩戴错误计数器 + uint16_t display_counter_ = 0; //显示计数器 HeartResult heartresult_ = HeartResult::NOT_TESTED; // 检测结果 HeartCheck checkstate = HeartCheck::RESTSTSTE; // 目前检测状态 diff --git a/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp index c6287fb5b..87058ede5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp @@ -29,9 +29,10 @@ extern "C" { #endif #define MAX_UNWEAR_COUNT 30 -#define MAX_VALID_HRS_COUNT 40 +#define MAX_VALID_HRS_COUNT 60 #define MAX_DISVALID_HRS_COUNT 70 #define MIN_DISPLAY_HEART 60 +#define DISPLAY_COUNT 20 #define HEARTTEST 1 //[0 开启测试 1 关闭] /*佩戴检测结果*/ @@ -378,13 +379,21 @@ void HeartModel::SetResult(HeartResult result) { heartresult_ = result; } HeartResult HeartModel::GetResult() { return heartresult_; } // 控制心率检测 void HeartModel::Heart_Control(HeartState state, HeartCheck check) { + //优先级低不对高优先级处理 if (check < checkstate) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Higher execution instruction exists"); return; } + if (state == HeartState::End && heartstate == true) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartState End"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartState End"); + //状态数全部清空 + valid_counter_ = 0; + disvalid_counter_ = 0; + unwear_counter_ = 0; + display_counter_ = 0; + displayheart = 0; uint8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST; send_ppg_cmd_msg(md); heartstate = false; @@ -424,6 +433,8 @@ void HeartModel::Heart_Stop() { valid_counter_ = 0; disvalid_counter_ = 0; unwear_counter_ = 0; + display_counter_ = 0; + displayheart = 0; /*主界面卡片检测 或者 被动检测*/ if (checkstate == HeartCheck::CARDCHECK || @@ -560,7 +571,14 @@ void HeartModel::UpHeartdata(uint16_t heart) { if (uapi_dev_runtime_get_train_status() == 1) return; - displayheart = heart; + if (heart != 0) { + if (display_counter_ >= DISPLAY_COUNT) { + displayheart = heart; + } else { + displayheart = 0; + } + display_counter_++; + } // 更新心率和计数器 if (displayheart != 0) {