Browse Source

v3.1.2

master
zhaohe 5 months ago
parent
commit
f8380a13ed
  1. 2
      README.md
  2. 0
      release/V304/hand_acid_mainboard_v304.hex
  3. 15
      uappbase/appcfg/appcfg.hpp
  4. 2
      uappbase/bean/dbtype/user.hpp
  5. 6
      uappbase/service/gstate_mgr.cpp
  6. 2
      uappbase/service/gstate_mgr.hpp
  7. BIN
      ui/hand_acid_mainboard_ui.HMI
  8. 5
      ui/ui.h
  9. 2
      usrc/db/dao/acid_ch_cfg_dao.cpp
  10. 5
      usrc/project_configs.h
  11. 6
      usrc/uicontroler/page/login_page.cpp
  12. 3
      usrc/uicontroler/page/mupage/MuAcidDistMgrPage.cpp
  13. 55
      usrc/uicontroler/page/mupage/muCHSetting_page.cpp

2
README.md

@ -8,6 +8,8 @@ V301:
V304: V304:
1. 修复U盘导出文件错位BUG 1. 修复U盘导出文件错位BUG
V310:
1. 改善通道配置页面
``` ```

0
release/V304/hand_acid_mainboard.hex → release/V304/hand_acid_mainboard_v304.hex

15
uappbase/appcfg/appcfg.hpp

@ -1,7 +1,7 @@
#pragma once #pragma once
#include "project_configs.h" #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 USER_DEFAULT_PWD "888888"
#define PUMPDEFVEL 400 // 100r/min #define PUMPDEFVEL 400 // 100r/min
// // 通道每次小回流的液体长度
// #define CH0APPENDML 0.2
// #define CH1APPENDML 0.2
// #define CH2APPENDML 0.1
// #define CH3APPENDML 0.1

2
uappbase/bean/dbtype/user.hpp

@ -7,7 +7,7 @@ namespace iflytop {
typedef struct { typedef struct {
uint32_t id; uint32_t id;
char name[MAX_USR_NAME_SIZE];
char name[MAX_USR_NAME_SIZE+1];
char passwd[6 + 1]; char passwd[6 + 1];
uint8_t role; uint8_t role;
bool effective; bool effective;

6
uappbase/service/gstate_mgr.cpp

@ -23,7 +23,7 @@ void GStateMgr::setUnLogin() {
zlock_guard l(m_mutex); zlock_guard l(m_mutex);
m_isLogin = false; m_isLogin = false;
m_loginUsrType = kuser; m_loginUsrType = kuser;
memset(m_loginUsr, 0, MAX_USR_NAME_SIZE + 1);
memset(m_loginUsr, 0, sizeof(m_loginUsr));
} }
bool GStateMgr::isLogin() { bool GStateMgr::isLogin() {
@ -44,11 +44,11 @@ int GStateMgr::getUserId() {
return m_loginUsrId; 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); zlock_guard l(m_mutex);
AppEvent appevent; AppEvent appevent;
m_RemoterS = state;
m_RemoterS = state;
appevent.type = kAE_RemoterHeartEvent; appevent.type = kAE_RemoterHeartEvent;
appevent.setHeartInfo(heart_data); appevent.setHeartInfo(heart_data);
AppEventBus::ins()->pushEvent(appevent); AppEventBus::ins()->pushEvent(appevent);

2
uappbase/service/gstate_mgr.hpp

@ -42,6 +42,8 @@ class GStateMgr {
float acidRemain[CH_NUM] = {0.0}; float acidRemain[CH_NUM] = {0.0};
zmutex m_mutex = {"GStateMgr"}; zmutex m_mutex = {"GStateMgr"};
public:
bool supperAdmin = false;
public: public:
static GStateMgr* ins() { static GStateMgr* ins() {

BIN
ui/hand_acid_mainboard_ui.HMI

5
ui/ui.h

@ -44,6 +44,7 @@
#define ob_gvar_save 20 #define ob_gvar_save 20
#define ob_gvar_stateSwitch0 21 #define ob_gvar_stateSwitch0 21
#define ob_gvar_stateSwitch1 22 #define ob_gvar_stateSwitch1 22
#define ob_gvar_b3 23
//powerOn.objs //powerOn.objs
#define ob_powerOn_powerOn 0 #define ob_powerOn_powerOn 0
//pStart.objs //pStart.objs
@ -292,6 +293,10 @@
#define ob_muCHSetting_cfgtil5 40 #define ob_muCHSetting_cfgtil5 40
#define ob_muCHSetting_cfg5mask 41 #define ob_muCHSetting_cfg5mask 41
#define ob_muCHSetting_tc0 42 #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 //muDeviceInfo.objs
#define ob_muDeviceInfo_muDeviceInfo 0 #define ob_muDeviceInfo_muDeviceInfo 0
#define ob_muDeviceInfo_softVersTil 1 #define ob_muDeviceInfo_softVersTil 1

2
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].mLPR = 1.0; // 电机 mlpr
tabledata->item[i].pumpDefVel = PUMPDEFVEL; // 泵机默认速度r/min RPM tabledata->item[i].pumpDefVel = PUMPDEFVEL; // 泵机默认速度r/min RPM
tabledata->item[i].pipeLengthML = 35.5; // 酸液管路长度 tabledata->item[i].pipeLengthML = 35.5; // 酸液管路长度
tabledata->item[i].irun = 10; // 电机 irun
tabledata->item[i].irun = 22; // 电机 irun
// #define CH0APPENDML 0.2 // #define CH0APPENDML 0.2
// #define CH1APPENDML 0.2 // #define CH1APPENDML 0.2

5
usrc/project_configs.h

@ -20,7 +20,7 @@
#define HARDWARE_VERSION 1 // 硬件版本 #define HARDWARE_VERSION 1 // 硬件版本
#define PROJECT "hand_acid_main_board" // 工程名称 #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_MAIN ((APP_VERSION >> 16) & 0xff)
#define APP_VERSION_SUB ((APP_VERSION >> 8) & 0xff) #define APP_VERSION_SUB ((APP_VERSION >> 8) & 0xff)
#define APP_VERSION_FIX (APP_VERSION & 0xff) #define APP_VERSION_FIX (APP_VERSION & 0xff)
@ -29,4 +29,5 @@
#define MAX_USR_NUM 8 // 数量更改时候需要修改UsrMgr页面 #define MAX_USR_NUM 8 // 数量更改时候需要修改UsrMgr页面
#define DEFAULT_PASSWD "888888" #define DEFAULT_PASSWD "888888"
#define ENABLE_MOTOR_CHECK_THREAD 0 // 是否启用电机检测线程
#define ENABLE_MOTOR_CHECK_THREAD 0 // 是否启用电机检测线程
#define MAX_USR_NAME_LEN 31

6
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 { virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override {
if (bid == ob_login_uName) { 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) { } else if (bid == ob_login_pwd) {
UIS->popPasswdKeyBoard(thisPage, ob_login_pwd, 6); UIS->popPasswdKeyBoard(thisPage, ob_login_pwd, 6);
} }
if (bid == ob_login_blogin) { if (bid == ob_login_blogin) {
if (strcmp(userName, "iflytop") == 0 && strcmp(passwd, "888888") == 0) {
GStateMgr::ins()->supperAdmin = true;
}
user_t* user = UserDao::getUserByName(userName); user_t* user = UserDao::getUserByName(userName);
if (user == nullptr) { if (user == nullptr) {
UIS->setTxt(thisPage, ob_login_uNameEMsg, "Óû§Ãû²»´æÔÚ"); UIS->setTxt(thisPage, ob_login_uNameEMsg, "Óû§Ãû²»´æÔÚ");

3
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 { virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) override {
if (bid == ob_muAcidDistMgr_takePers) { if (bid == ob_muAcidDistMgr_takePers) {
// 设置用户
m_takePers = slecId; m_takePers = slecId;
setText(bid, "%s", UserDao::getUserByIdNotNull(slecId)->name); setText(bid, "%s", UserDao::getUserByIdNotNull(slecId)->name);
} else if (bid == ob_muAcidDistMgr_chId) { } else if (bid == ob_muAcidDistMgr_chId) {
// 设置通道
if (slecId < 0 || slecId > 3) { if (slecId < 0 || slecId > 3) {
ZLOGI(TAG, "slecId out of range"); ZLOGI(TAG, "slecId out of range");
return; return;
@ -172,6 +174,7 @@ class MuAcidDistMgrPage : public IPageProcesser {
m_chId = slecId; m_chId = slecId;
setText(bid, "通道%d-%s", slecId, AcidChCfgDao::getCfg(slecId)->acidChooseName); setText(bid, "通道%d-%s", slecId, AcidChCfgDao::getCfg(slecId)->acidChooseName);
} else if (bid == ob_muAcidDistMgr_volumeVal) { } else if (bid == ob_muAcidDistMgr_volumeVal) {
// 设置容量
float val = atof(text); float val = atof(text);
if (val < 0) { if (val < 0) {
UIControler::ins()->popInfoWin("体积不能小于0"); UIControler::ins()->popInfoWin("体积不能小于0");

55
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* IRUN_BIND_CFG;
static cfgbid_table_iterm_t* CH_APPEND_ML_BIND_CFG; static cfgbid_table_iterm_t* CH_APPEND_ML_BIND_CFG;
static double calInpVal = 0;
static void Page_muPumpTest_onTimer(const void* tid); static void Page_muPumpTest_onTimer(const void* tid);
#define PRECISION "%.2f"
#define PRECISION "%.2f"
#define MLPR_BIND_CFG_PRECISION "%.4f" #define MLPR_BIND_CFG_PRECISION "%.4f"
static const char* fmt(const char* txt, ...) { static const char* fmt(const char* txt, ...) {
@ -70,10 +72,10 @@ class MuChSetting : public IPageProcesser {
IPageProcesser::initialize(); IPageProcesser::initialize();
intCfg(0, &ACID_CHOOS_ENAME_BIND_CFG, "酸液名称", AcidChCfgDao::getCfg(0)->acidChooseName, "", false); 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); intCfg(5, &CH_APPEND_ML_BIND_CFG, "防滴液体积", fmt(PRECISION, AcidChCfgDao::getCfg(0)->chAppendMl), "ml", false);
osTimerDef(statiUpdateTimer, Page_muPumpTest_onTimer); osTimerDef(statiUpdateTimer, Page_muPumpTest_onTimer);
@ -102,7 +104,13 @@ class MuChSetting : public IPageProcesser {
* CALL_BAK * * 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 * @brief
@ -143,13 +151,17 @@ class MuChSetting : public IPageProcesser {
} else if (IRUN_BIND_CFG && bid == IRUN_BIND_CFG->cfgbid) { // IRUN } else if (IRUN_BIND_CFG && bid == IRUN_BIND_CFG->cfgbid) { // IRUN
UIControler::ins()->popNumKeyBoard(thisPage, bid, 2, fmt("%d", AcidChCfgDao::getCfg(0)->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) { // 速度 } 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) { // 管路长度 } 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) { // 转速转换系数 } 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)); 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) { // 防滴液体积 } 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"); ZLOGI(TAG, "stop");
pumpStop(); 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 { 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; AcidChCfgDao::getCfg(m_chId)->mLPR = setval;
PumpCtrlService::ins()->updateMotorSetting(); 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) { } else if (CH_APPEND_ML_BIND_CFG && bid == CH_APPEND_ML_BIND_CFG->cfgbid) {
/** /**
* @brief * @brief
@ -258,6 +282,13 @@ class MuChSetting : public IPageProcesser {
AcidChCfgDao::getCfg(m_chId)->chAppendMl = setval; AcidChCfgDao::getCfg(m_chId)->chAppendMl = setval;
PumpCtrlService::ins()->updateMotorSetting(); PumpCtrlService::ins()->updateMotorSetting();
setText(bid, PRECISION, setval); 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->cfgtilbid, cfgName);
setText(iter->cfgUint, uint); setText(iter->cfgUint, uint);
setText(iter->cfgbid, cfgInitVal); setText(iter->cfgbid, cfgInitVal);
if (mask) movePicTo(iter->cfgbid, iter->maskBid);
if (mask) movePicTo(iter->maskBid, iter->cfgbid);
*bindcfg = iter; *bindcfg = iter;
} }
void hideCfgMask(uint8_t maskbid) { movePicToXY(maskbid, -100, -100); }
void hideCfg(uint8_t cfgindex) { void hideCfg(uint8_t cfgindex) {
ASSERT(cfgindex < sizeof(cfgbid_table) / sizeof(cfgbid_table_iterm_t), "cfgindex out of range"); ASSERT(cfgindex < sizeof(cfgbid_table) / sizeof(cfgbid_table_iterm_t), "cfgindex out of range");
cfgbid_table_iterm_t* iter = &cfgbid_table[cfgindex]; cfgbid_table_iterm_t* iter = &cfgbid_table[cfgindex];

Loading…
Cancel
Save