From 7407e42797968b2c5d4f8eb1be8a300d87c8e1a1 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 31 Aug 2024 12:01:24 +0800 Subject: [PATCH] update --- ucomponents/zcan/zcan.cpp | 16 ++++++++++-- ucomponents/zcan/zcan.hpp | 5 +++- ui/ui.h | 41 +++++++++++++++++++------------ usrc/service/front_end_controler.cpp | 17 ++++++++++--- usrc/service/front_end_controler.hpp | 3 +++ usrc/service/page/Page_login.cpp | 10 ++------ usrc/service/page/Page_login.hpp | 1 - usrc/service/page/Page_main.cpp | 15 ++++++----- usrc/service/valve_state_ctrl_service.cpp | 2 +- 9 files changed, 71 insertions(+), 39 deletions(-) diff --git a/ucomponents/zcan/zcan.cpp b/ucomponents/zcan/zcan.cpp index 3a53da7..a128c6b 100644 --- a/ucomponents/zcan/zcan.cpp +++ b/ucomponents/zcan/zcan.cpp @@ -171,7 +171,7 @@ void ZCAN1::init() { }); } -bool ZCAN1::txMsg(const uint32_t extid, const uint8_t txdata[], uint32_t txdatalen, int32_t overtime) { +bool ZCAN1::_txMsg(const uint32_t extid, const uint8_t txdata[], uint32_t txdatalen, int32_t overtime) { zlock_guard l(m_lock); CAN_TxHeaderTypeDef pHeader; uint8_t aData[8] /*8byte table*/; @@ -198,7 +198,7 @@ bool ZCAN1::txMsg(const uint32_t extid, const uint8_t txdata[], uint32_t txdatal int i = 1; while (HAL_CAN_IsTxMessagePending(&hcan1, txMailBox)) { if (zos_haspassedms(enterticket) > (uint32_t)overtime) { - ZLOGE(TAG, "HAL_CAN_IsTxMessagePending overtime"); + if (!txNoError) ZLOGE(TAG, "HAL_CAN_IsTxMessagePending overtime"); HAL_CAN_AbortTxRequest(&hcan1, txMailBox); return false; } @@ -207,6 +207,18 @@ bool ZCAN1::txMsg(const uint32_t extid, const uint8_t txdata[], uint32_t txdatal } return true; } +bool ZCAN1::txMsgNoError(const uint32_t extid, const uint8_t txdata[], uint32_t txdatalen, int32_t overtime) { + zlock_guard l(m_lock); + txNoError = true; + bool suc = _txMsg(extid, txdata, txdatalen, overtime); + txNoError = false; + return suc; +} +bool ZCAN1::txMsg(const uint32_t extid, const uint8_t txdata[], uint32_t txdatalen, int32_t overtime) { + zlock_guard l(m_lock); + return _txMsg(extid, txdata, txdatalen, overtime); +} + void ZCAN1::regOnCanMessage(function onmessage) { onZcanRx = onmessage; } bool ZCAN1::getRxMsg(zcanrx_t *rx) { diff --git a/ucomponents/zcan/zcan.hpp b/ucomponents/zcan/zcan.hpp index f79afd8..22fc6fe 100644 --- a/ucomponents/zcan/zcan.hpp +++ b/ucomponents/zcan/zcan.hpp @@ -20,7 +20,8 @@ class ZCAN1 { ZQueue rxQueue; function onZcanRx; - bool inited = false; + bool inited = false; + bool txNoError = false; public: ZCAN1() {} @@ -32,6 +33,7 @@ class ZCAN1 { void init(); bool txMsg(const uint32_t extid, const uint8_t txdata[], uint32_t txdatalen, int32_t overtime); + bool txMsgNoError(const uint32_t extid, const uint8_t txdata[], uint32_t txdatalen, int32_t overtime); bool getRxMsg(zcanrx_t *rx); void regOnCanMessage(function onmessage); @@ -42,6 +44,7 @@ class ZCAN1 { private: HAL_StatusTypeDef initializeFilter(); HAL_StatusTypeDef activateRxIT(); + bool _txMsg(const uint32_t extid, const uint8_t txdata[], uint32_t txdatalen, int32_t overtime); }; } // namespace iflytop diff --git a/ui/ui.h b/ui/ui.h index 9425a96..c58068d 100644 --- a/ui/ui.h +++ b/ui/ui.h @@ -114,22 +114,31 @@ //muUsrMgr.objs #define ob_muUsrMgr_muUsrMgr 0 #define ob_muUsrMgr_bak 1 -#define ob_muUsrMgr_t0 2 -#define ob_muUsrMgr_t2 3 -#define ob_muUsrMgr_t3 4 -#define ob_muUsrMgr_t4 5 -#define ob_muUsrMgr_sw1 6 -#define ob_muUsrMgr_t6 7 -#define ob_muUsrMgr_sw2 8 -#define ob_muUsrMgr_t8 9 -#define ob_muUsrMgr_sw3 10 -#define ob_muUsrMgr_t10 11 -#define ob_muUsrMgr_sw4 12 -#define ob_muUsrMgr_t12 13 -#define ob_muUsrMgr_b1 14 -#define ob_muUsrMgr_b0 15 -#define ob_muUsrMgr_b2 16 -#define ob_muUsrMgr_b3 17 +#define ob_muUsrMgr_usr0name 2 +#define ob_muUsrMgr_unameCol 3 +#define ob_muUsrMgr_RestPwdCol 4 +#define ob_muUsrMgr_usr1name 5 +#define ob_muUsrMgr_usr1en 6 +#define ob_muUsrMgr_usr2name 7 +#define ob_muUsrMgr_usr2en 8 +#define ob_muUsrMgr_usr3name 9 +#define ob_muUsrMgr_usr3en 10 +#define ob_muUsrMgr_usr4name 11 +#define ob_muUsrMgr_usr4en 12 +#define ob_muUsrMgr_usrEnCol 13 +#define ob_muUsrMgr_usr1RestPwd 14 +#define ob_muUsrMgr_usr2RestPwd 15 +#define ob_muUsrMgr_usr3RestPwd 16 +#define ob_muUsrMgr_usr4RestPwd 17 +#define ob_muUsrMgr_usr5name 18 +#define ob_muUsrMgr_usr5en 19 +#define ob_muUsrMgr_usr5RestPwd 20 +#define ob_muUsrMgr_ReNameCol 21 +#define ob_muUsrMgr_usr1ReName 22 +#define ob_muUsrMgr_usr2ReName 23 +#define ob_muUsrMgr_usr3ReName 24 +#define ob_muUsrMgr_usr4ReName 25 +#define ob_muUsrMgr_usr5ReName 26 //muTmrMgr.objs #define ob_muTmrMgr_muTmrMgr 0 #define ob_muTmrMgr_select0 1 diff --git a/usrc/service/front_end_controler.cpp b/usrc/service/front_end_controler.cpp index ed083a9..bb61e47 100644 --- a/usrc/service/front_end_controler.cpp +++ b/usrc/service/front_end_controler.cpp @@ -107,13 +107,20 @@ void FrontEndControler::startSchedule() { } callUsrEventCb(&event_cache); - m_isFromPopWin = false; + + if (input_file_event_cache_state) { + callUsrEventCb(&input_file_event_cache); + input_file_event_cache_state = false; + } + + m_isFromPopWin = false; // 清空FromPopWin标志 } else if (tjc::kpt_on_promopt_page_load == packetType) { event_cache.eventId = packetType; event_cache.pid = packet.data[0]; event_cache.bid = 0; callUsrEventCb(&event_cache); - m_isFromPopWin = true; + m_isFromPopWin = true; // + } else if (tjc::kpt_on_keyboard_page_load == packetType) { event_cache.eventId = packetType; event_cache.pid = packet.data[0]; @@ -269,7 +276,9 @@ void FrontEndControler::processUsrKeyboardConfirmEvent(uint8_t* data, size_t len event_cache.bid = data[2]; const char* strbegin = (const char*)&data[3]; strbegin = zcpystr(event_cache.d.inputfield_content.text, strbegin, sizeof(event_cache.d.inputfield_content.text)); - callUsrEventCb(&event_cache); + // callUsrEventCb(&event_cache); + input_file_event_cache = event_cache; + input_file_event_cache_state = true; } void FrontEndControler::processLoginRequestEvent(uint8_t* data, size_t len) { @@ -371,7 +380,7 @@ void FrontEndControler::alert(const char* info, function onConfirm) static char buf[128]; sprintf(buf, "%s", info); - sendcmd("p[%d].b[%d].val=dp", pg_alert, ob_alert_frompage); + sendcmd("p[%d].b[%d].val=%d", pg_alert, ob_alert_frompage, m_nowPage); sendcmd("p[%d].b[%d].txt=\"%s\"", pg_alert, ob_alert_info, buf); sendcmd("page alert"); } diff --git a/usrc/service/front_end_controler.hpp b/usrc/service/front_end_controler.hpp index 4c8f6fc..d92a2ca 100644 --- a/usrc/service/front_end_controler.hpp +++ b/usrc/service/front_end_controler.hpp @@ -22,6 +22,9 @@ class FrontEndControler { zmutex m_cmdlock = {"FrontEndControler_LOCK"}; tjc::tjc_usr_event_t event_cache; + + tjc::tjc_usr_event_t input_file_event_cache; + bool input_file_event_cache_state = false; // on_usr_event_cb_t cb; diff --git a/usrc/service/page/Page_login.cpp b/usrc/service/page/Page_login.cpp index be01eaa..5e7b182 100644 --- a/usrc/service/page/Page_login.cpp +++ b/usrc/service/page/Page_login.cpp @@ -54,18 +54,12 @@ void Page_login::OnPageLoad() { } UIS->setVal(PAGE, OBJ(txtPasswd), txtPasswdCache); - - if (triggerLoginAction) { // triggerLoginAction为true说明用户刚刚输入完密码 - UIS->virtualClick(PAGE, OBJ(blogin), 0); // 触发一次登录按钮虚拟点击事件 - triggerLoginAction = false; - return; - } } void Page_login::OnInputFieldContentChange(uint8_t bid, const char* text) { - // 输入框内容变化时,会触发一次页面重新加载的事件,这里的逻辑是为了实现,免按登录登录按键。 if (bid == OBJ(txtPasswd)) { strncpy(txtPasswdCache, text, sizeof(txtPasswdCache)); - triggerLoginAction = true; + UIS->setVal(PAGE, bid, text); + UIS->virtualClick(PAGE, OBJ(blogin), 0); // 触发一次登录按钮虚拟点击事件 } } diff --git a/usrc/service/page/Page_login.hpp b/usrc/service/page/Page_login.hpp index a1fb959..dfa3a6d 100644 --- a/usrc/service/page/Page_login.hpp +++ b/usrc/service/page/Page_login.hpp @@ -7,7 +7,6 @@ class Page_login : public IPageProcesser { private: /* data */ - bool triggerLoginAction = false; char txtPasswdCache[20] = {0}; public: diff --git a/usrc/service/page/Page_main.cpp b/usrc/service/page/Page_main.cpp index 9295510..ca01630 100644 --- a/usrc/service/page/Page_main.cpp +++ b/usrc/service/page/Page_main.cpp @@ -109,15 +109,19 @@ void Page_main::OnInputFieldContentChange(uint8_t bid, const char* text) { else if (bid == ob_main_acidname0) { ZLOGI(TAG, "acidname0:%s", text); CS->setcfgAndFlush(kcfg_acidChooseName0, text); + UIS->setVal(PAGE, bid, text); } else if (bid == ob_main_acidname1) { ZLOGI(TAG, "acidname1:%s", text); CS->setcfgAndFlush(kcfg_acidChooseName1, text); + UIS->setVal(PAGE, bid, text); } else if (bid == ob_main_acidname2) { ZLOGI(TAG, "acidname2:%s", text); CS->setcfgAndFlush(kcfg_acidChooseName2, text); + UIS->setVal(PAGE, bid, text); } else if (bid == ob_main_acidname3) { ZLOGI(TAG, "acidname3:%s", text); CS->setcfgAndFlush(kcfg_acidChooseName3, text); + UIS->setVal(PAGE, bid, text); } // 设置加酸间隔 @@ -125,13 +129,11 @@ void Page_main::OnInputFieldContentChange(uint8_t bid, const char* text) { int32_t distrIntervalSecond = atoi(text); if (distrIntervalSecond <= 0) { UIS->alert("酸液间隔时间不能小于0"); - UIS->setVal(PAGE, ob_main_RunModeVal, CS->getStr(kcfg_distrInterval, &cfgcache)); return; } if (distrIntervalSecond > 30) { UIS->alert("酸液间隔时间不能大于30"); - UIS->setVal(PAGE, ob_main_RunModeVal, CS->getStr(kcfg_distrInterval, &cfgcache)); return; } @@ -167,14 +169,15 @@ void Page_main::OnButton(uint8_t bid, uint8_t val) { void Page_main::processAcidevalUpdateEvent(uint8_t bid, const char* text, int ch, config_index_t cfgid) { float add_ml = atof(text); if (add_ml < 0) { - UIS->setVal(PAGE, bid, CS->getStr(cfgid, &cfgcache)); // 恢复数值 UIS->alert("设定值不能小于0"); return; } else if (add_ml > CS->getInt(kcfg_echDitrUpLi)) { - UIS->setVal(PAGE, bid, CS->getStr(cfgid, &cfgcache)); // 恢复数值 UIS->alert(fmt("设定值不能大于%d", CS->getInt(kcfg_echDitrUpLi))); return; } - ZLOGI(TAG, "set acid ch%d:%s", ch, text); - CS->setcfgAndFlush(cfgid, text); // + char reformattext[20]; + sprintf(reformattext, "%.1f", add_ml); + ZLOGI(TAG, "set acid ch%d:%s", ch, reformattext); + UIS->setVal(PAGE, bid, reformattext); + CS->setcfgAndFlush(cfgid, reformattext); // } diff --git a/usrc/service/valve_state_ctrl_service.cpp b/usrc/service/valve_state_ctrl_service.cpp index 822512b..37e54cf 100644 --- a/usrc/service/valve_state_ctrl_service.cpp +++ b/usrc/service/valve_state_ctrl_service.cpp @@ -22,7 +22,7 @@ void ValveStateSyncService::startSync() { msg.output0 = output0state; msg.output1 = output1state; msg.rgbw = rgbwstate; - ZCAN1::ins()->txMsg(kvalve_ctrl_msg, (uint8_t*)&msg, sizeof(msg), 30); + ZCAN1::ins()->txMsgNoError(kvalve_ctrl_msg, (uint8_t*)&msg, sizeof(msg), 30); } } });