INVALID_DATA // 无效数据
};
+enum class BP_VALUE_TYPE {
+ SBP = 0,
+ DBP,
+};
+
#define BP_CHECK_TIME_MAX 30
class BPModel {
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定时器
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
#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"
#include "components/ui_scroll_view.h"
#include "components/ui_label_button_ext.h"
+#include "bloodpressure/include/BPModel.h"
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};
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);
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
// 声明定时器变量
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)
// 更新状态
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;
}
///////////////////////////////////////////////////////////////////////////////////////
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;
}
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";
{
if(group)
{
- group->RemoveAll();
- delete group;
- group = nullptr;
- }
if (background != nullptr)
{
delete background;
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:
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 初始化背景是否成功