修改血压校准输入机器数值界面交互逻辑 1857/1
authorCaisking <Casiking@zhihuishixun.com>
Wed, 18 Jun 2025 04:19:17 +0000 (12:19 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Wed, 18 Jun 2025 04:19:17 +0000 (12:19 +0800)
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPModel.h
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPValueView.h
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPMainPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPModel.cpp
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPValueView.cpp

index 501cd32..af6ede5 100644 (file)
@@ -38,6 +38,11 @@ enum class BPRESULT {
   INVALID_DATA    // 无效数据
 };
 
+enum class BP_VALUE_TYPE {
+  SBP = 0,
+  DBP,
+};
+
 #define BP_CHECK_TIME_MAX 30
 class BPModel {
 public:
@@ -52,8 +57,8 @@ public:
   BPState GetCurrentState();
   //控制血压检测
   void BP_Control(BPState state);
-  void SetSBPValue(int flag); 
-  void SetDBPValue(int flag);
+  void BP_SetValue(BP_VALUE_TYPE type, bool set_value);
+  int16_t GetValue(BP_VALUE_TYPE type);
 
   ///////////////////////////////////////////////
   void BP_StartTimer(uint32_t interval = 1*1000);// 1s定时器
@@ -62,8 +67,8 @@ public:
 
 private:
   BPState current_state = BPState::BP_NORMAL;
-  static int16_t SBP;
-  static int16_t DBP;
+  int16_t custom_sbp = SBP_VALUE;
+  int16_t custom_dbp = DBP_VALUE;
 };
 } // namespace OHOS
 
index f241463..837933e 100644 (file)
@@ -2,6 +2,7 @@
 #ifndef BP_VALUE_VIEW_H
 #define BP_VALUE_VIEW_H
 
+
 #include "components/ui_label.h"
 #include "components/ui_label_ext.h"
 #include "components/ui_button.h"
@@ -10,6 +11,7 @@
 #include "components/ui_scroll_view.h"
 #include "components/ui_label_button_ext.h"
 
+#include "bloodpressure/include/BPModel.h"
 
 
 namespace OHOS
@@ -27,13 +29,17 @@ namespace OHOS
         bool InitLable();
         bool Initbackground();
 
-        void UpSPO2Text(void);
+        void UpDateVauleText(BP_VALUE_TYPE type);
 
     private:
         UIImageView *background = nullptr;
         UILabelExt *titleLabel = nullptr;
         UILabelExt *SBPLabel = nullptr;
         UILabelExt *DBPLabel = nullptr;
+
+        UILabel* SBPValue{nullptr};
+        UILabel* DBPValue{nullptr};
+
         UILabelButton *valuecheckButton{nullptr};
         UIImageView *SBPLeft{nullptr};
         UIImageView *SBPRight{nullptr};
index fb93e4c..a02ff16 100644 (file)
@@ -52,35 +52,11 @@ namespace OHOS
     static constexpr uint16_t PROGRESS_VALUE_MAX = 10;
 
     static BPMainPresenter *g_pBPMainPresenter;
-    /* -------------------------------------------------------------------------- */
-    // 获取当前的时间戳
-    uint32_t BPMainPresenter::GetCurrentTime()
-    {
-        uint32_t time;
-        if (uapi_get_timestampe_ss(&time) != ERRCODE_SUCC)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get timestamp");
-            return 0;
-        }
-        return time;
-    }
 
-    // 获取时间差,现在传进来的是两个时间戳
-    int BPMainPresenter::GetTDOA(uint32_t new_time, uint32_t old_time)
-    {
-        if (new_time == old_time || old_time > new_time)
-        {
-            return 0;
-        }
-        int time_diff_seconds = new_time - old_time;
-        // 转换为分钟的差值
-        int time_diff_minutes = time_diff_seconds / 60;
-        return time_diff_minutes;
-    }
     /* -------------------------------------------------------------------------- */
     BPMainPresenter::BPMainPresenter()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BPMainPresenter::new BPMainPresenter");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BPMainPresenter::new BPMainPresenter");
         g_pBPMainPresenter = this;
 #ifdef MEM_CHECK
         MemCheck::GetInstance()->EnableLeakCheck(true);
@@ -150,53 +126,69 @@ namespace OHOS
             BPMainView::GetInstance()->ChangeView(it->second.first, it->second.second);
             return true;
         }
-        if (strcmp(view.GetViewId(), STARTCALIBRATIONBUTTON) == 0)
+        else if (strcmp(view.GetViewId(), STARTCALIBRATIONBUTTON) == 0)
         {
             BPModel::GetInstance()->BP_Control(BPState::BP_CALIBRATING_FIRSTTIME);
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "STARTCALIBRATIONBUTTON");
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "STARTCALIBRATIONBUTTON");
             BPMainView::GetInstance()->ChangeView(BPCALPOSREQVIEW, BPUNDERCALIBRATIONVIEW);
             BPModel::GetInstance()->BP_StartTimer(); // 开始计时器,计时结束后自动切换到主界面
         }
 
-        if (strcmp(view.GetViewId(), "value_check") == 0 && flag == 0)
+        else if (strcmp(view.GetViewId(), "value_check") == 0 && flag == 0)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "value_check");
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "value_check");
             BPMainView::GetInstance()->ChangeView(BPVALUEVIEW, BPSECUNDERCALIBRATIONVIEW);
             BPModel::GetInstance()->BP_StartTimer(); // 开始计时器,计时结束后自动切换到主界面
             flag++;
         }
         else if (strcmp(view.GetViewId(), "value_check") == 0 && flag == 1)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "value_check");
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "value_check");
             BPMainView::GetInstance()->ChangeView(BPVALUEVIEW, BPRESULTANALYSISVIEW);
             flag = 0;
         }
-        if (strcmp(view.GetViewId(), "SBPLeft") == 0)
+        else if (strcmp(view.GetViewId(), "SBPLeft") == 0)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SBPLeft_BP");
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SBPLeft_BP");
+            BPModel::GetInstance()->BP_SetValue(BP_VALUE_TYPE::SBP,false);
+            if(BPValueView::GetInstance()){
+             BPValueView::GetInstance()->UpDateVauleText(BP_VALUE_TYPE::SBP);
+            }
         }
-        if (strcmp(view.GetViewId(), "SBPRight") == 0)
+        else if (strcmp(view.GetViewId(), "SBPRight") == 0)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SBPRight");
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SBPRight");
+            BPModel::GetInstance()->BP_SetValue(BP_VALUE_TYPE::SBP,true);
+            if(BPValueView::GetInstance()){
+             BPValueView::GetInstance()->UpDateVauleText(BP_VALUE_TYPE::SBP);
+            }
         }
-        if (strcmp(view.GetViewId(), "DBPLeft") == 0)
+        else if (strcmp(view.GetViewId(), "DBPLeft") == 0)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DBPLeft");
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DBPLeft");
+            BPModel::GetInstance()->BP_SetValue(BP_VALUE_TYPE::DBP,false);
+            if(BPValueView::GetInstance()){
+             BPValueView::GetInstance()->UpDateVauleText(BP_VALUE_TYPE::DBP);
+            }
         }
-        if (strcmp(view.GetViewId(), "DBPRight") == 0)
+        else if (strcmp(view.GetViewId(), "DBPRight") == 0)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DBPRight");
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DBPRight");
+            BPModel::GetInstance()->BP_SetValue(BP_VALUE_TYPE::DBP,true);
+            if(BPValueView::GetInstance()){
+             BPValueView::GetInstance()->UpDateVauleText(BP_VALUE_TYPE::DBP);
+            }
         }
         else if (strcmp(view.GetViewId(), CALIBRATIONLATTERBUTTON) == 0)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CALIBRATIONLATTERBUTTON");
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CALIBRATIONLATTERBUTTON");
         }
         else if (strcmp(view.GetViewId(), CALIBRATIONBUTTON) == 0)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CALIBRATIONBUTTON");
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CALIBRATIONBUTTON");
         }
         return true;
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BPPresenter::OnClick");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BPPresenter::OnClick");
     }
 
 }
\ No newline at end of file
index b702b17..4455da7 100644 (file)
@@ -49,8 +49,9 @@ namespace OHOS
   // 声明定时器变量
   static osTimerId_t g_timer = nullptr;
   static int Time = 30;
-  int16_t BPModel::SBP = SBP_VALUE;
-  int16_t BPModel::DBP = DBP_VALUE;
+
+
+  
   BPModel::BPModel() {}
   BPModel::~BPModel() {}
   BPModel *BPModel::GetInstance(void)
@@ -143,20 +144,30 @@ namespace OHOS
     // 更新状态
     BP_SetState(state);
   }
-  
-  void BPModel::SetSBPValue(int flag)
+  // 机器校准收缩压与舒张压的数值
+  void  BPModel::BP_SetValue(BP_VALUE_TYPE type, bool set_value)
   {
-    if (flag == 0)
-      BPModel::SBP--;
+    if(set_value)
+    {
+      if(type == BP_VALUE_TYPE::SBP)
+       custom_sbp++;
+      else
+       custom_dbp++;
+    }
     else
-      BPModel::SBP++;
+    {
+      if(type == BP_VALUE_TYPE::SBP)
+       custom_sbp--;
+      else
+       custom_dbp--;
+    }
   }
-  void BPModel::SetDBPValue(int flag)
+  int16_t  BPModel::GetValue(BP_VALUE_TYPE type)
   {
-    if (flag == 0)
-      BPModel::DBP--;
+    if(type == BP_VALUE_TYPE::SBP)
+      return custom_sbp;
     else
-      BPModel::DBP++;
+      return custom_dbp;
   }
   ///////////////////////////////////////////////////////////////////////////////////////
 
@@ -183,9 +194,9 @@ namespace OHOS
       else if (BPDetectionView::GetInstance())
       {
       //测试成功 -> 进入结果界面
-      // BPDetectionView::GetInstance()->ChangeView(CALIBRATION_BPVIEW, RESULT_BPVIEW);
+      BPDetectionView::GetInstance()->ChangeView(CALIBRATION_BPVIEW, RESULT_BPVIEW);
       //测试失败 -> 进入错误界面
-      BPDetectionView::GetInstance()->ChangeView(CALIBRATION_BPVIEW, ERROR_BPVIEW);
+      // BPDetectionView::GetInstance()->ChangeView(CALIBRATION_BPVIEW, ERROR_BPVIEW);
       }
       return;
     }
index a8b030d..6eb415e 100644 (file)
@@ -14,7 +14,7 @@
 namespace OHOS
 {
     static BPValueView *g_pBPValueView{nullptr};
-    static const char *BPBACKPATH = "/user/res/BPCalibration/calibration_background.bin";
+    static const char *BPBACKPATH = "/user/res/BPCalibration/W.bin";
     static const char *LEFTPATH = "/user/res/BPCalibration/decrease_button.bin";
     static const char *RIGHTPATH = "/user/res/BPCalibration/increase_button.bin";
     
@@ -39,10 +39,6 @@ namespace OHOS
     {
         if(group)
         {
-            group->RemoveAll();
-            delete group;
-            group = nullptr;
-        }
         if (background != nullptr)
         {
             delete background;
@@ -88,11 +84,23 @@ namespace OHOS
             delete DBPRight;
             DBPRight = nullptr;
         }
+        if (SBPValue != nullptr)
+        {
+            delete SBPValue;
+            SBPValue = nullptr;
+        }
+        if (DBPValue != nullptr)
+        {
+            delete DBPValue;
+            DBPValue = nullptr;
+        }
+            group->RemoveAll();
+            delete group;
+            group = nullptr;
+        }
     }
     /* -------------------------------------------------------------------------- */
-    void BPValueView::UpSPO2Text()
-    {
-    }
+
     /* -------------------------------------------------------------------------- */
     /***
      * @description:
@@ -118,16 +126,47 @@ namespace OHOS
     bool BPValueView::InitLable()
     {
         
-        InitLabel(titleLabel, 109, 38, 239, 35, "title", "血压校准", DEFAULT_VECTOR_FONT_FILENAME, 35);
-        InitLabel(SBPLabel, 63, 160, 100, 29, "SBP", "收缩压", DEFAULT_VECTOR_FONT_FILENAME, 30);
-        InitLabel(DBPLabel, 63, 280, 100, 29, "DBP", "舒张压", DEFAULT_VECTOR_FONT_FILENAME, 30);
+        InitLabel(titleLabel, 109, 38, 239, 35, "title", "请输入血压计量", DEFAULT_VECTOR_FONT_FILENAME, 30);
+        InitLabel(SBPLabel, 63, 170, 100, 29, "SBP", "收缩压", DEFAULT_VECTOR_FONT_FILENAME, 30);
+        InitLabel(DBPLabel, 63, 270, 100, 29, "DBP", "舒张压", DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+        InitUILabel(SBPValue, 210, 150, 200, 60, "SBPValue", "120", DEFAULT_VECTOR_FONT_FILENAME, 50);
+        InitUILabel(DBPValue, 210, 270, 200, 60, "DBPValue", "80", DEFAULT_VECTOR_FONT_FILENAME, 50);
+        SBPValue->SetTextColor(Color::Red());
+        DBPValue->SetTextColor(Color::Red());
+
+
         /*初始化检测时间*/
         group->Add(titleLabel);
         group->Add(SBPLabel);
         group->Add(DBPLabel);
 
+        group->Add(SBPValue);
+        group->Add(DBPValue);
+
         return true;
     }
+
+    void BPValueView::UpDateVauleText(BP_VALUE_TYPE type)
+    {
+        if(SBPValue == nullptr || DBPValue == nullptr)
+        {
+            return;
+        }
+
+        switch (type)
+        {
+        case BP_VALUE_TYPE::SBP:
+            SBPValue->SetText(std::to_string(BPModel::GetInstance()->GetValue(type)).c_str());
+            break;
+        case BP_VALUE_TYPE::DBP:
+            DBPValue->SetText(std::to_string(BPModel::GetInstance()->GetValue(type)).c_str());
+            break;
+        default:
+            break;
+        }
+    }
+
     /***
      * @description:
      * @return 初始化背景是否成功