From 70fb9f15a46f18c1505bac5295ab184648da05c5 Mon Sep 17 00:00:00 2001 From: Caisking Date: Wed, 18 Jun 2025 12:19:17 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E6=94=B9=E8=A1=80=E5=8E=8B=E6=A0=A1?= =?utf8?q?=E5=87=86=E8=BE=93=E5=85=A5=E6=9C=BA=E5=99=A8=E6=95=B0=E5=80=BC?= =?utf8?q?=E7=95=8C=E9=9D=A2=E4=BA=A4=E4=BA=92=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/bloodpressure/include/BPModel.h | 13 +++- .../bloodpressure/include/BPValueView.h | 8 +- .../bloodpressure/src/BPMainPresenter.cpp | 74 +++++++++---------- .../nativeui/bloodpressure/src/BPModel.cpp | 37 ++++++---- .../bloodpressure/src/BPValueView.cpp | 61 ++++++++++++--- 5 files changed, 123 insertions(+), 70 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPModel.h b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPModel.h index 501cd322d..af6ede58c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPModel.h @@ -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 diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPValueView.h b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPValueView.h index f241463c0..837933e5a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPValueView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPValueView.h @@ -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}; diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPMainPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPMainPresenter.cpp index fb93e4cb2..a02ff169e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPMainPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPMainPresenter.cpp @@ -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 diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPModel.cpp index b702b170b..4455da791 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPModel.cpp @@ -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; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPValueView.cpp b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPValueView.cpp index a8b030dd4..6eb415e37 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPValueView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPValueView.cpp @@ -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 初始化背景是否成功 -- 2.17.1