#144 手表,心率测量开始测量的时候显示的心率值太大,需要优化开始显示的心率值
authorCaisking <3449750381@qq.com>
Sat, 21 Sep 2024 08:45:51 +0000 (16:45 +0800)
committerCaisking <3449750381@qq.com>
Sat, 21 Sep 2024 08:45:51 +0000 (16:45 +0800)
code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp

index c67d360..8404487 100644 (file)
@@ -180,6 +180,7 @@ private:
   uint16_t valid_counter_ = 0;    // 有效数计数器\r
   uint16_t disvalid_counter_ = 0; // 无效数计数器\r
   uint16_t unwear_counter_ = 0;   // 佩戴错误计数器\r
+  uint16_t display_counter_ = 0;  //显示计数器\r
 \r
   HeartResult heartresult_ = HeartResult::NOT_TESTED; // 检测结果\r
   HeartCheck checkstate = HeartCheck::RESTSTSTE;      // 目前检测状态\r
index c6287fb..87058ed 100644 (file)
@@ -29,9 +29,10 @@ extern "C" {
 #endif\r
 \r
 #define MAX_UNWEAR_COUNT 30\r
-#define MAX_VALID_HRS_COUNT 40\r
+#define MAX_VALID_HRS_COUNT 60\r
 #define MAX_DISVALID_HRS_COUNT 70\r
 #define MIN_DISPLAY_HEART 60\r
+#define DISPLAY_COUNT 20\r
 #define HEARTTEST 1 //[0 开启测试 1 关闭]\r
 \r
 /*佩戴检测结果*/\r
@@ -378,13 +379,21 @@ void HeartModel::SetResult(HeartResult result) { heartresult_ = result; }
 HeartResult HeartModel::GetResult() { return heartresult_; }\r
 // 控制心率检测\r
 void HeartModel::Heart_Control(HeartState state, HeartCheck check) {\r
+  //优先级低不对高优先级处理\r
   if (check < checkstate) {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
                   "Higher execution instruction exists");\r
     return;\r
   }\r
+\r
   if (state == HeartState::End && heartstate == true) {\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartState End");\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartState End");\r
+    //状态数全部清空\r
+    valid_counter_ = 0;\r
+    disvalid_counter_ = 0;\r
+    unwear_counter_ = 0;\r
+    display_counter_ = 0;\r
+    displayheart = 0;\r
     uint8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;\r
     send_ppg_cmd_msg(md);\r
     heartstate = false;\r
@@ -424,6 +433,8 @@ void HeartModel::Heart_Stop() {
   valid_counter_ = 0;\r
   disvalid_counter_ = 0;\r
   unwear_counter_ = 0;\r
+  display_counter_ = 0;\r
+  displayheart = 0;\r
 \r
   /*主界面卡片检测 或者 被动检测*/\r
   if (checkstate == HeartCheck::CARDCHECK ||\r
@@ -560,7 +571,14 @@ void HeartModel::UpHeartdata(uint16_t heart) {
   if (uapi_dev_runtime_get_train_status() == 1)\r
     return;\r
 \r
-  displayheart = heart;\r
+  if (heart != 0) {\r
+    if (display_counter_ >= DISPLAY_COUNT) {\r
+      displayheart = heart;\r
+    } else {\r
+      displayheart = 0;\r
+    }\r
+    display_counter_++;\r
+  }\r
 \r
   // 更新心率和计数器\r
   if (displayheart != 0) {\r