diff --git a/README.md b/README.md index 0327638..679ca6b 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ V301: V304: 1. 修复U盘导出文件错位BUG +V310: + 1. 改善通道配置页面 ``` diff --git a/release/V304/hand_acid_mainboard.hex b/release/V304/hand_acid_mainboard_v304.hex similarity index 100% rename from release/V304/hand_acid_mainboard.hex rename to release/V304/hand_acid_mainboard_v304.hex diff --git a/uappbase/appcfg/appcfg.hpp b/uappbase/appcfg/appcfg.hpp index 7b9e360..f9bbf47 100644 --- a/uappbase/appcfg/appcfg.hpp +++ b/uappbase/appcfg/appcfg.hpp @@ -1,7 +1,7 @@ #pragma once #include "project_configs.h" -#define MAX_USR_NAME_SIZE 10 +#define MAX_USR_NAME_SIZE 31 /*********************************************************************************************************************** * 调试指示灯 * @@ -99,19 +99,6 @@ /*********************************************************************************************************************** * 配置默认数值 * ***********************************************************************************************************************/ -#define USER0_DEFAULT_NAME "管理员" -#define USER1_DEFAULT_NAME "用户1" -#define USER2_DEFAULT_NAME "用户2" -#define USER3_DEFAULT_NAME "用户3" -#define USER4_DEFAULT_NAME "用户4" -#define USER5_DEFAULT_NAME "用户5" - #define USER_DEFAULT_PWD "888888" #define PUMPDEFVEL 400 // 100r/min - -// // 通道每次小回流的液体长度 -// #define CH0APPENDML 0.2 -// #define CH1APPENDML 0.2 -// #define CH2APPENDML 0.1 -// #define CH3APPENDML 0.1 diff --git a/uappbase/bean/dbtype/user.hpp b/uappbase/bean/dbtype/user.hpp index aac605d..7cc2093 100644 --- a/uappbase/bean/dbtype/user.hpp +++ b/uappbase/bean/dbtype/user.hpp @@ -7,7 +7,7 @@ namespace iflytop { typedef struct { uint32_t id; - char name[MAX_USR_NAME_SIZE]; + char name[MAX_USR_NAME_SIZE+1]; char passwd[6 + 1]; uint8_t role; bool effective; diff --git a/uappbase/service/gstate_mgr.cpp b/uappbase/service/gstate_mgr.cpp index 16b2f6d..d45e3a5 100644 --- a/uappbase/service/gstate_mgr.cpp +++ b/uappbase/service/gstate_mgr.cpp @@ -23,7 +23,7 @@ void GStateMgr::setUnLogin() { zlock_guard l(m_mutex); m_isLogin = false; m_loginUsrType = kuser; - memset(m_loginUsr, 0, MAX_USR_NAME_SIZE + 1); + memset(m_loginUsr, 0, sizeof(m_loginUsr)); } bool GStateMgr::isLogin() { @@ -44,11 +44,11 @@ int GStateMgr::getUserId() { return m_loginUsrId; } -void GStateMgr::setRemoterHeart(int32_t state, uint8_t * heart_data) { +void GStateMgr::setRemoterHeart(int32_t state, uint8_t* heart_data) { zlock_guard l(m_mutex); AppEvent appevent; - m_RemoterS = state; + m_RemoterS = state; appevent.type = kAE_RemoterHeartEvent; appevent.setHeartInfo(heart_data); AppEventBus::ins()->pushEvent(appevent); diff --git a/uappbase/service/gstate_mgr.hpp b/uappbase/service/gstate_mgr.hpp index fce5345..6dd818d 100644 --- a/uappbase/service/gstate_mgr.hpp +++ b/uappbase/service/gstate_mgr.hpp @@ -42,6 +42,8 @@ class GStateMgr { float acidRemain[CH_NUM] = {0.0}; zmutex m_mutex = {"GStateMgr"}; +public: + bool supperAdmin = false; public: static GStateMgr* ins() { diff --git a/ui/hand_acid_mainboard_ui.HMI b/ui/hand_acid_mainboard_ui.HMI index 0558a2e..784bcc8 100644 Binary files a/ui/hand_acid_mainboard_ui.HMI and b/ui/hand_acid_mainboard_ui.HMI differ diff --git a/ui/ui.h b/ui/ui.h index 1cac361..1ecdaf3 100644 --- a/ui/ui.h +++ b/ui/ui.h @@ -44,6 +44,7 @@ #define ob_gvar_save 20 #define ob_gvar_stateSwitch0 21 #define ob_gvar_stateSwitch1 22 +#define ob_gvar_b3 23 //powerOn.objs #define ob_powerOn_powerOn 0 //pStart.objs @@ -292,6 +293,10 @@ #define ob_muCHSetting_cfgtil5 40 #define ob_muCHSetting_cfg5mask 41 #define ob_muCHSetting_tc0 42 +#define ob_muCHSetting_calBut 43 +#define ob_muCHSetting_calInpVal 44 +#define ob_muCHSetting_calUint 45 +#define ob_muCHSetting_calTxt 46 //muDeviceInfo.objs #define ob_muDeviceInfo_muDeviceInfo 0 #define ob_muDeviceInfo_softVersTil 1 diff --git a/usrc/db/dao/acid_ch_cfg_dao.cpp b/usrc/db/dao/acid_ch_cfg_dao.cpp index 1238d76..9c78f28 100644 --- a/usrc/db/dao/acid_ch_cfg_dao.cpp +++ b/usrc/db/dao/acid_ch_cfg_dao.cpp @@ -49,7 +49,7 @@ void AcidChCfgDao::init() { tabledata->item[i].mLPR = 1.0; // 电机 mlpr tabledata->item[i].pumpDefVel = PUMPDEFVEL; // 泵机默认速度r/min RPM tabledata->item[i].pipeLengthML = 35.5; // 酸液管路长度 - tabledata->item[i].irun = 10; // 电机 irun + tabledata->item[i].irun = 22; // 电机 irun // #define CH0APPENDML 0.2 // #define CH1APPENDML 0.2 diff --git a/usrc/project_configs.h b/usrc/project_configs.h index 42deb4a..5b20864 100644 --- a/usrc/project_configs.h +++ b/usrc/project_configs.h @@ -20,7 +20,7 @@ #define HARDWARE_VERSION 1 // 硬件版本 #define PROJECT "hand_acid_main_board" // 工程名称 -#define APP_VERSION VERSION(3, 0, 4) +#define APP_VERSION VERSION(3, 1, 2) #define APP_VERSION_MAIN ((APP_VERSION >> 16) & 0xff) #define APP_VERSION_SUB ((APP_VERSION >> 8) & 0xff) #define APP_VERSION_FIX (APP_VERSION & 0xff) @@ -29,4 +29,5 @@ #define MAX_USR_NUM 8 // 数量更改时候需要修改UsrMgr页面 #define DEFAULT_PASSWD "888888" -#define ENABLE_MOTOR_CHECK_THREAD 0 // 是否启用电机检测线程 \ No newline at end of file +#define ENABLE_MOTOR_CHECK_THREAD 0 // 是否启用电机检测线程 +#define MAX_USR_NAME_LEN 31 \ No newline at end of file diff --git a/usrc/uicontroler/page/login_page.cpp b/usrc/uicontroler/page/login_page.cpp index 2761347..67a0879 100644 --- a/usrc/uicontroler/page/login_page.cpp +++ b/usrc/uicontroler/page/login_page.cpp @@ -45,12 +45,16 @@ class LoginPage : public IPageProcesser { } virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override { if (bid == ob_login_uName) { - UIS->popFullKeyBoard(thisPage, ob_login_uName, 20, userName); + UIS->popFullKeyBoard(thisPage, ob_login_uName, MAX_USR_NAME_SIZE - 1, userName); } else if (bid == ob_login_pwd) { UIS->popPasswdKeyBoard(thisPage, ob_login_pwd, 6); } if (bid == ob_login_blogin) { + if (strcmp(userName, "iflytop") == 0 && strcmp(passwd, "888888") == 0) { + GStateMgr::ins()->supperAdmin = true; + } + user_t* user = UserDao::getUserByName(userName); if (user == nullptr) { UIS->setTxt(thisPage, ob_login_uNameEMsg, "用户名不存在"); diff --git a/usrc/uicontroler/page/mupage/MuAcidDistMgrPage.cpp b/usrc/uicontroler/page/mupage/MuAcidDistMgrPage.cpp index 0282dba..d9c066a 100644 --- a/usrc/uicontroler/page/mupage/MuAcidDistMgrPage.cpp +++ b/usrc/uicontroler/page/mupage/MuAcidDistMgrPage.cpp @@ -162,9 +162,11 @@ class MuAcidDistMgrPage : public IPageProcesser { } virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) override { if (bid == ob_muAcidDistMgr_takePers) { + // 设置用户 m_takePers = slecId; setText(bid, "%s", UserDao::getUserByIdNotNull(slecId)->name); } else if (bid == ob_muAcidDistMgr_chId) { + // 设置通道 if (slecId < 0 || slecId > 3) { ZLOGI(TAG, "slecId out of range"); return; @@ -172,6 +174,7 @@ class MuAcidDistMgrPage : public IPageProcesser { m_chId = slecId; setText(bid, "通道%d-%s", slecId, AcidChCfgDao::getCfg(slecId)->acidChooseName); } else if (bid == ob_muAcidDistMgr_volumeVal) { + // 设置容量 float val = atof(text); if (val < 0) { UIControler::ins()->popInfoWin("体积不能小于0"); diff --git a/usrc/uicontroler/page/mupage/muCHSetting_page.cpp b/usrc/uicontroler/page/mupage/muCHSetting_page.cpp index d36282a..78d7848 100644 --- a/usrc/uicontroler/page/mupage/muCHSetting_page.cpp +++ b/usrc/uicontroler/page/mupage/muCHSetting_page.cpp @@ -48,9 +48,11 @@ static cfgbid_table_iterm_t* MLPR_BIND_CFG; static cfgbid_table_iterm_t* IRUN_BIND_CFG; static cfgbid_table_iterm_t* CH_APPEND_ML_BIND_CFG; +static double calInpVal = 0; + static void Page_muPumpTest_onTimer(const void* tid); -#define PRECISION "%.2f" +#define PRECISION "%.2f" #define MLPR_BIND_CFG_PRECISION "%.4f" static const char* fmt(const char* txt, ...) { @@ -70,10 +72,10 @@ class MuChSetting : public IPageProcesser { IPageProcesser::initialize(); intCfg(0, &ACID_CHOOS_ENAME_BIND_CFG, "酸液名称", AcidChCfgDao::getCfg(0)->acidChooseName, "", false); - intCfg(1, &IRUN_BIND_CFG, "IRUN", fmt("%d", AcidChCfgDao::getCfg(0)->irun), "", false); - intCfg(2, &PUMP_DEF_VEL_BIND_CFG, "蠕动泵转速", fmt("%d", AcidChCfgDao::getCfg(0)->pumpDefVel), "r/min", false); - intCfg(3, &PIPE_LENGTH_ML_BIND_CFG, "管路预充液体体积", fmt(MLPR_BIND_CFG_PRECISION, AcidChCfgDao::getCfg(0)->pipeLengthML), "ml", false); - intCfg(4, &MLPR_BIND_CFG, "转换系数(体积/转数)", fmt(PRECISION, AcidChCfgDao::getCfg(0)->mLPR), "", false); + intCfg(1, &IRUN_BIND_CFG, "IRUN", fmt("%d", AcidChCfgDao::getCfg(0)->irun), "", true); + intCfg(2, &PUMP_DEF_VEL_BIND_CFG, "蠕动泵转速", fmt("%d", AcidChCfgDao::getCfg(0)->pumpDefVel), "r/min", true); + intCfg(3, &PIPE_LENGTH_ML_BIND_CFG, "管路预充液体体积", fmt(PRECISION, AcidChCfgDao::getCfg(0)->pipeLengthML), "ml", false); + intCfg(4, &MLPR_BIND_CFG, "转换系数(体积/转数)", fmt(MLPR_BIND_CFG_PRECISION, AcidChCfgDao::getCfg(0)->mLPR), "", false); intCfg(5, &CH_APPEND_ML_BIND_CFG, "防滴液体积", fmt(PRECISION, AcidChCfgDao::getCfg(0)->chAppendMl), "ml", false); osTimerDef(statiUpdateTimer, Page_muPumpTest_onTimer); @@ -102,7 +104,13 @@ class MuChSetting : public IPageProcesser { * CALL_BAK * ***********************************************************************************************************************/ - virtual void onPageLoad(OnPageLoadContext* cxt) override { return; }; + virtual void onPageLoad(OnPageLoadContext* cxt) override { + if (GStateMgr::ins()->supperAdmin) { + hideCfgMask(IRUN_BIND_CFG->maskBid); + hideCfgMask(PUMP_DEF_VEL_BIND_CFG->maskBid); + } + return; + }; /** * @brief 返回上一页 @@ -143,13 +151,17 @@ class MuChSetting : public IPageProcesser { } else if (IRUN_BIND_CFG && bid == IRUN_BIND_CFG->cfgbid) { // IRUN UIControler::ins()->popNumKeyBoard(thisPage, bid, 2, fmt("%d", AcidChCfgDao::getCfg(0)->irun)); } else if (PUMP_DEF_VEL_BIND_CFG && bid == PUMP_DEF_VEL_BIND_CFG->cfgbid) { // 速度 - UIControler::ins()->popNumKeyBoard(thisPage, bid, 4, fmt("%d", AcidChCfgDao::getCfg(0)->pumpDefVel)); + UIControler::ins()->popNumKeyBoard(thisPage, bid, 5, fmt("%d", AcidChCfgDao::getCfg(0)->pumpDefVel)); } else if (PIPE_LENGTH_ML_BIND_CFG && bid == PIPE_LENGTH_ML_BIND_CFG->cfgbid) { // 管路长度 - UIControler::ins()->popNumKeyBoard(thisPage, bid, 4, fmt(PRECISION, AcidChCfgDao::getCfg(0)->pipeLengthML)); + UIControler::ins()->popNumKeyBoard(thisPage, bid, 5, fmt(PRECISION, AcidChCfgDao::getCfg(0)->pipeLengthML)); } else if (MLPR_BIND_CFG && bid == MLPR_BIND_CFG->cfgbid) { // 转速转换系数 UIControler::ins()->popNumKeyBoard(thisPage, bid, 7, fmt(MLPR_BIND_CFG_PRECISION, AcidChCfgDao::getCfg(0)->mLPR)); } else if (CH_APPEND_ML_BIND_CFG && bid == CH_APPEND_ML_BIND_CFG->cfgbid) { // 防滴液体积 - UIControler::ins()->popNumKeyBoard(thisPage, bid, 4, fmt(PRECISION, AcidChCfgDao::getCfg(0)->chAppendMl)); + UIControler::ins()->popNumKeyBoard(thisPage, bid, 5, fmt(PRECISION, AcidChCfgDao::getCfg(0)->chAppendMl)); + } + + if (bid == ob_muCHSetting_calInpVal) { + UIControler::ins()->popNumKeyBoard(thisPage, bid, 5, fmt(PRECISION, calInpVal)); } /** @@ -171,6 +183,18 @@ class MuChSetting : public IPageProcesser { ZLOGI(TAG, "stop"); pumpStop(); } + + if (bid == ob_muCHSetting_calBut) { + if (m_statiTruns == 0) { + UIS->popWarningWin("转数统计不能为0"); + return; + } + + double motorX_mLPR = calInpVal / m_statiTruns; + setText(MLPR_BIND_CFG->cfgbid, MLPR_BIND_CFG_PRECISION, motorX_mLPR); + AcidChCfgDao::getCfg(m_chId)->mLPR = motorX_mLPR; + PumpCtrlService::ins()->updateMotorSetting(); + } } virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) override { @@ -245,7 +269,7 @@ class MuChSetting : public IPageProcesser { } AcidChCfgDao::getCfg(m_chId)->mLPR = setval; PumpCtrlService::ins()->updateMotorSetting(); - setText(bid, PRECISION, setval); + setText(bid, MLPR_BIND_CFG_PRECISION, setval); } else if (CH_APPEND_ML_BIND_CFG && bid == CH_APPEND_ML_BIND_CFG->cfgbid) { /** * @brief 防滴液体积 @@ -258,6 +282,13 @@ class MuChSetting : public IPageProcesser { AcidChCfgDao::getCfg(m_chId)->chAppendMl = setval; PumpCtrlService::ins()->updateMotorSetting(); setText(bid, PRECISION, setval); + } else if (bid == ob_muCHSetting_calInpVal) { + if (calInpVal < 0) { + UIS->popWarningWin("输入值不能小于0"); + return; + } + calInpVal = atof(text); + setText(bid, PRECISION, calInpVal); } } @@ -333,10 +364,12 @@ class MuChSetting : public IPageProcesser { setText(iter->cfgtilbid, cfgName); setText(iter->cfgUint, uint); setText(iter->cfgbid, cfgInitVal); - if (mask) movePicTo(iter->cfgbid, iter->maskBid); + if (mask) movePicTo(iter->maskBid, iter->cfgbid); *bindcfg = iter; } + void hideCfgMask(uint8_t maskbid) { movePicToXY(maskbid, -100, -100); } + void hideCfg(uint8_t cfgindex) { ASSERT(cfgindex < sizeof(cfgbid_table) / sizeof(cfgbid_table_iterm_t), "cfgindex out of range"); cfgbid_table_iterm_t* iter = &cfgbid_table[cfgindex];