diff --git a/uappbase/bean/appevent.h b/uappbase/bean/appevent.h index 383359f..0e1d16a 100644 --- a/uappbase/bean/appevent.h +++ b/uappbase/bean/appevent.h @@ -19,6 +19,7 @@ typedef enum { kAE_RemoterConnectedEvent, // 遥控器连接成功 kAE_RemoterDisConnectedEvent, // 遥控器断开连接 + } AppEventType_t; /** diff --git a/ui/hand_acid_mainboard_ui.HMI b/ui/hand_acid_mainboard_ui.HMI index 21f898b..ab92977 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 227199b..4cd02bc 100644 --- a/ui/ui.h +++ b/ui/ui.h @@ -289,7 +289,7 @@ #define ob_muDeviceInfo_deviceId 4 #define ob_muDeviceInfo_manufaTil 5 #define ob_muDeviceInfo_manufa 6 -#define ob_muDeviceInfo_t0 7 +#define ob_muDeviceInfo_title 7 #define ob_muDeviceInfo_bak 8 //muReCtlerBind.objs #define ob_muReCtlerBind_muReCtlerBind 0 diff --git a/usrc/project_configs.h b/usrc/project_configs.h index 73602c1..a68d4bb 100644 --- a/usrc/project_configs.h +++ b/usrc/project_configs.h @@ -18,7 +18,7 @@ #define HARDWARE_VERSION 1 // 硬件版本 #define PROJECT "hand_acid_main_board" // 工程名称 -#define APP_VERSION "200" +#define APP_VERSION "2.0.0" #define MOTOR_NUM 4 diff --git a/usrc/service/app_core.cpp b/usrc/service/app_core.cpp index d408c98..45664d5 100644 --- a/usrc/service/app_core.cpp +++ b/usrc/service/app_core.cpp @@ -116,13 +116,44 @@ void AppCore::initialize() { ZLOGI(TAG, "load zhdb end"); // - // RemoteControlerUpper::ins()->initialize(); // 遥控器初始化 - // RemoteControlerUpper::ins()->startSchedule(); + RemoteControlerUpper::ins()->initialize(); // 遥控器初始化 + RemoteControlerUpper::ins()->startSchedule(); + RemoteControlerEventProcesser::ins()->initialize(); + // ValveStateSyncService::ins()->initialize(ZCAN1::ins()); // 阀门状态同步服务初始化 // ValveStateSyncService::ins()->startSync(); - PumpCtrlService::ins()->initialize(); // 泵控制服务初始化 - RemoteControlerStateSyncService::ins()->initialize(); // 遥控器状态同步服务初始化 - RemoteControlerStateSyncService::ins()->startSync(); + PumpCtrlService::ins()->initialize(); // 泵控制服务初始化 + // RemoteControlerStateSyncService::ins()->initialize(); // 遥控器状态同步服务初始化 + // RemoteControlerStateSyncService::ins()->startSync(); + + // { + // ZLOGI(TAG, "start scan %s", "XXXXXXXXX"); + // for (size_t i = 0;; i++) { + // if (i != 0) ZLOGI(TAG, "re start scan %s %d", "XXXXXXXX", i); + // bool suc = RCTRL->startScan("XXXXXXXXX", false); // 输入一个错误的设备名,当作不扫描 + // if (suc) break; + // } + // } + + RCTRL->resetMasterBoard(); + RCTRL->resetMasterBoard(); + RCTRL->resetMasterBoard(); + RCTRL->resetMasterBoard(); + + { + ZLOGI(TAG, "start scan %s", BLENAME); + for (size_t i = 0;; i++) { + if (i != 0) ZLOGI(TAG, "re start scan %s %d", BLENAME, i); + bool suc = RCTRL->startScan(BLENAME, false); // 输入一个错误的设备名,当作不扫描 + if (suc) break; + } + } + ZLOGI(TAG, "start scan end..........................................................."); + + // RCTRL->stopScan(); + while (true) { + osDelay(1); + } // UI初始化 UIControler::ins()->initialize(); @@ -131,7 +162,7 @@ void AppCore::initialize() { /*********************************************************************************************************************** * 开始蓝牙扫描 * ***********************************************************************************************************************/ - // osDelay(100); + osDelay(100); // if (strlen(DeviceSettingDao::get()->bleClientName) != 0) { // ZLOGI(TAG, "start scan :%s", DeviceSettingDao::get()->bleClientName); // for (size_t i = 0;; i++) { @@ -139,16 +170,11 @@ void AppCore::initialize() { // bool suc = RCTRL->startScan(DeviceSettingDao::get()->bleClientName, true); // if (suc) break; // } - // } else { - // ZLOGI(TAG, "start scan %s", "XXXXXXXXX"); - // for (size_t i = 0;; i++) { - // if (i != 0) ZLOGI(TAG, "re start scan %s %d", "XXXXXXXX", i); - // bool suc = RCTRL->startScan("XXXXXXXXX", false); // 输入一个错误的设备名,当作不扫描 - // if (suc) break; - // } // } - UIControler::ins()->chpage(pg_muCHSetting, true); + // else + + UIControler::ins()->chpage(pg_muReCtlerBind, true); /*********************************************************************************************************************** * 统计内存使用情况 * diff --git a/usrc/service/remote_controler.cpp b/usrc/service/remote_controler.cpp index 987af81..eb1aa26 100644 --- a/usrc/service/remote_controler.cpp +++ b/usrc/service/remote_controler.cpp @@ -161,7 +161,9 @@ bool RemoteControlerUpper::txcmd(uint8_t* data, uint32_t len) { ZLOGI(TAG, "txcmd : %s(%d)", zhex2str(data, len), len); #endif + // vPortEnterCritical(); HAL_UART_Transmit(m_uart, data, len, 100); + // vPortExitCritical(); // HAL_UART_Transmit_DMA(m_uart, data, len); bool suc = ackQueue.receive(&ackcache, CMD_OVERTIME); if (!suc) { diff --git a/usrc/service/remote_controler_event_processer.cpp b/usrc/service/remote_controler_event_processer.cpp index 6c8c486..d873b4e 100644 --- a/usrc/service/remote_controler_event_processer.cpp +++ b/usrc/service/remote_controler_event_processer.cpp @@ -5,8 +5,8 @@ // #include "pump_ctrl_service.hpp" #include "service/remote_controler.hpp" -#include "uicontroler/ui_controler.hpp" #include "ui/ui.h" +#include "uicontroler/ui_controler.hpp" // @@ -17,11 +17,8 @@ static const char* zhex2str(uint8_t* data, size_t len); void RemoteControlerEventProcesser::initialize() { m_thread.init(TAG); - GSM->setRemoterS(RemoteControlerUpper::ins()->isConnected(), DeviceSettingDao::get()->bleClientName); - RCTRL->regOnReport([this](uint8_t* rx, int32_t len) { - // ZLOGI(TAG, "TRACE process ble report start"); zble_proto_packet_t* packet = (zble_proto_packet_t*)rx; logevent(rx, len); @@ -31,7 +28,6 @@ void RemoteControlerEventProcesser::initialize() { // ZLOGI(TAG, "TRACE process ble report end"); return; } - if (packet->cmd == kzble_report_connected_event) { zble_connected_event_t* event = (zble_connected_event_t*)packet->data; GSM->setRemoterS(true, event->blename); @@ -44,6 +40,12 @@ void RemoteControlerEventProcesser::initialize() { }); } +/** + * @brief 该方法用于将接收到的蓝牙事件打印出来,不做任何处理 + * + * @param rx + * @param len + */ void RemoteControlerEventProcesser::logevent(uint8_t* rx, int32_t len) { // zble_proto_packet_t* packet = (zble_proto_packet_t*)rx; @@ -59,6 +61,7 @@ void RemoteControlerEventProcesser::logevent(uint8_t* rx, int32_t len) { ZLOGI(TAG, "onBleEvent -> disconnect"); return; } + if (packet->cmd == kzble_report_scan_result) { zble_scan_result_t* event = (zble_scan_result_t*)packet->data; ZLOGI(TAG, "onBleEvent -> [scanResult], name:%20s, peeradd:%s, rssi:%d, tx_power:%d", event->blename, zhex2str(event->peeradd, 6), event->rssi, event->tx_power); @@ -85,31 +88,7 @@ void RemoteControlerEventProcesser::logevent(uint8_t* rx, int32_t len) { ZLOGI(TAG, "[process-thread] rx unkown event(%d) : %s", packet->cmd, zhex2str(rx, len)); } -void RemoteControlerEventProcesser::processKeyEventFromRemoter(hand_acid_remoter_key_event_t keyEvent) { - /** - * @brief 如果当前设备处于工作中,则无论什么按键都是停止工作 - */ - if (PUMPCS->isWorking()) { - PUMPCS->stop(); - RCTRL->setRemoterState(GSM->getRunMode(), PUMPCS->isWorking()); - return; - } - - /** - * @brief 下面几个页面蓝牙手柄按下,不做任何反应,TODO - */ - // if (UIS->getNowPage() == pg_login || UIS->getNowPage() == pg_pStart || UIS->getNowPage() == pg_muBleHandSett || UIS->getNowPage() == pg_muPumpTest) { - // return; - // } - - /** - * @brief 如果不在首页,则报警 - */ - if (UIS->getNowPage() != pg_home) { - UIS->popWarningWin("请先切换到首页,在控制设备"); - return; - } - +void RemoteControlerEventProcesser::processKeyEventInHomePage(hand_acid_remoter_key_event_t keyEvent) { /** * @brief 操作设备 */ @@ -145,6 +124,57 @@ void RemoteControlerEventProcesser::processKeyEventFromRemoter(hand_acid_remoter } } +void RemoteControlerEventProcesser::processKeyEventFromRemoter(hand_acid_remoter_key_event_t keyEvent) { + /** + * @brief 如果当前设备处于工作中,则无论什么按键都是停止工作 + */ + if (PUMPCS->isWorking()) { + PUMPCS->stop(); + RCTRL->setRemoterState(GSM->getRunMode(), PUMPCS->isWorking()); + return; + } + + switch (UIS->getNowPage()) { + // 设备未启动,不处理任何按键 + case pg_gvar: + case pg_powerOn: + case pg_pStart: + case pg_login: + break; + + case pg_home: + processKeyEventInHomePage(keyEvent); + break; + + case pg_navi: + case pg_muInterval: + case pg_muUsrMgr: + case pg_muDateMgr: + case pg_muAcidType: + case pg_muChangePasswd: + case pg_muCHSetting: + case pg_muDeviceInfo: + case pg_muAcidTakeMgr: + case pg_muAcidUseRecd: + UIS->popWarningWin("请先切换到首页,在控制设备"); + break; + + case pg_muReCtlerBind: // 手柄绑定页面自己处理按键 + break; + + // 以下页面不处理任何按键 + case pg_popwin: + case pg_keybdB: + case pg_keybdAP: + case pg_keyPasswd: + case pg_keybMutSel: + case pg_keybMutSelFix: + break; + default: + break; + } +} + static const char* zhex2str(uint8_t* data, size_t len) { static char buf[256]; memset(buf, 0, sizeof(buf)); diff --git a/usrc/service/remote_controler_event_processer.hpp b/usrc/service/remote_controler_event_processer.hpp index 7a14b47..af2d83d 100644 --- a/usrc/service/remote_controler_event_processer.hpp +++ b/usrc/service/remote_controler_event_processer.hpp @@ -1,8 +1,8 @@ #pragma once #include "apphardware/apphardware.hpp" -#include "uappbase/base.hpp" #include "config/config.hpp" +#include "uappbase/base.hpp" namespace iflytop { /** * @brief @@ -23,8 +23,9 @@ class RemoteControlerEventProcesser { void initialize(); - public: + private: void logevent(uint8_t* rx, int32_t len); void processKeyEventFromRemoter(hand_acid_remoter_key_event_t keyEvent); + void processKeyEventInHomePage(hand_acid_remoter_key_event_t keyEvent); }; } // namespace iflytop diff --git a/usrc/uicontroler/page/mupage/muDeviceInfo_page.cpp b/usrc/uicontroler/page/mupage/muDeviceInfo_page.cpp new file mode 100644 index 0000000..8867c85 --- /dev/null +++ b/usrc/uicontroler/page/mupage/muDeviceInfo_page.cpp @@ -0,0 +1,38 @@ + +#include "db/dao/user_dao.hpp" +#include "uappbase/apphal/apphal.hpp" +#include "ui/ui.h" +#include "uicontroler/base/page_processer.hpp" +// +#include "db/dao/acid_ch_cfg_dao.hpp" +#include "db/dao/device_setting_dao.hpp" +// +#include "service/pump_ctrl_service.hpp" + +namespace iflytop { +using namespace std; +#define TAG "muDeviceInfoPage" + +class muDeviceInfoPage : public IPageProcesser { + private: + public: + muDeviceInfoPage() : IPageProcesser(TAG, pg_muDeviceInfo) {} + + virtual void initialize() override { + IPageProcesser::initialize(); + setText(ob_muDeviceInfo_softVers, "V%s", APP_VERSION); + setText(ob_muDeviceInfo_deviceId, "%s", sn_get_str()); + setText(ob_muDeviceInfo_manufa, "中国黄金"); + } + + private: + virtual void onPageLoad(OnPageLoadContext* cxt) override { return; }; + virtual void onBackKey() override { UIControler::ins()->chpage(pg_navi, true); }; + + virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) override {}; + virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override {} +}; + +// 实例化Page, 使其自动注册 +static muDeviceInfoPage instance; +} // namespace iflytop diff --git a/usrc/uicontroler/page/mupage/muReCtrlerBind_page.cpp b/usrc/uicontroler/page/mupage/muReCtrlerBind_page.cpp new file mode 100644 index 0000000..05b0f89 --- /dev/null +++ b/usrc/uicontroler/page/mupage/muReCtrlerBind_page.cpp @@ -0,0 +1,89 @@ + +#include "db/dao/user_dao.hpp" +#include "service/remote_controler.hpp" +#include "uappbase/apphal/apphal.hpp" +#include "ui/ui.h" +#include "uicontroler/base/page_processer.hpp" +// +#include "db/dao/acid_ch_cfg_dao.hpp" +#include "db/dao/device_setting_dao.hpp" +// +#include "service/pump_ctrl_service.hpp" + +namespace iflytop { +using namespace std; +#define TAG "muReCtrlerBindPage" +static bool m_scaning; +class muReCtrlerBindPage : public IPageProcesser { + private: + public: + muReCtrlerBindPage() : IPageProcesser(TAG, pg_muReCtlerBind) {} + + virtual void initialize() override { + IPageProcesser::initialize(); + setText(ob_muReCtlerBind_bleCliName, "%s", ""); + setText(ob_muReCtlerBind_bleEvent, "%s", ""); + setText(ob_muReCtlerBind_infoWin, "%s", ""); + + RCTRL->regOnReport([this](uint8_t* rx, int32_t len) { + zble_proto_packet_t* packet = (zble_proto_packet_t*)rx; + if (UIS->getNowPage() != thisPage) { + return; + } + + if (packet->cmd == kzble_app_report_key_event) { + int32_t keyEvent = *(int32_t*)packet->data; + if (keyEvent == hand_acid_remoter_kevent_add_liquid) { + setText(ob_muReCtlerBind_bleEvent, "加液"); + } + if (keyEvent == hand_acid_remoter_kevent_change_next_mode) { + setText(ob_muReCtlerBind_bleEvent, "模式切换"); + } + if (keyEvent == hand_acid_remoter_kevent_reflux) { + setText(ob_muReCtlerBind_bleEvent, "液路回流"); + } + if (keyEvent == hand_acid_remoter_kevent_preFilling) { + setText(ob_muReCtlerBind_bleEvent, "液路预充"); + } + return; + } + }); + } + + private: + virtual void onPageLoad(OnPageLoadContext* cxt) override { return; }; + virtual void onBackKey() override { + if (m_scaning) { + RCTRL->startScan("XXXXXXXXX", false); // 相当于停止扫描 + } + UIControler::ins()->chpage(pg_navi, true); + }; + + virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) override {}; + virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override { + if (bid == ob_muReCtlerBind_scan) { + ZLOGI(TAG, "bleScan"); + bool suc = RCTRL->startScan(BLENAME, true); + if (suc) { + setText(ob_muReCtlerBind_infoWin, "%s", "扫描中..."); + m_scaning = true; + } + m_scaning = true; + } + } + + virtual void onAppEvent(AppEvent_t* event) override { + if (event->type == kAE_RemoterConnectedEvent) { + ZLOGI(TAG, "ble connect success"); + setText(ob_muReCtlerBind_infoWin, "%s", "扫描到设备"); + DeviceSettingDao::updateBleClientName(event->d.bleName); + setText(ob_muReCtlerBind_infoWin, "%s", "绑定成功"); + setText(ob_muReCtlerBind_bleCliName, "%s", event->d.bleName); + m_scaning = false; + } + } +}; + +// 实例化Page, 使其自动注册 +static muReCtrlerBindPage instance; +} // namespace iflytop diff --git a/usrc/uicontroler/page/navi_page.cpp b/usrc/uicontroler/page/navi_page.cpp index 73f3af9..7b0a2dc 100644 --- a/usrc/uicontroler/page/navi_page.cpp +++ b/usrc/uicontroler/page/navi_page.cpp @@ -11,57 +11,108 @@ typedef struct { uint8_t page; } muInfo_t; -static int m_menuTotalNum; -static int m_pageNum; -static int m_maxPageNum; -static muInfo_t m_muInfo[32]; +typedef struct { + uint8_t bid; +} buttton_bid_info; + +// static int m_menuTotalNum; +// static int m_pageNum; +// static int m_maxPageNum; +// static muInfo_t m_muInfo[32]; + +typedef struct { + int menuTotalNum; + int pageNum; + int maxPageNum; + muInfo_t muInfo[32]; +} muInfoTable_t; + +/*********************************************************************************************************************** + * CFG * + ***********************************************************************************************************************/ +// 按钮配置 +static buttton_bid_info m_button_bid_info[] = { + {ob_navi_b0}, // + {ob_navi_b1}, // + {ob_navi_b2}, // + {ob_navi_b3}, // + {ob_navi_b4}, // + {ob_navi_b5}, // + {ob_navi_b6}, // + {ob_navi_b7}, // +}; +// 用户菜单配置 +static muInfoTable_t usrMuInfoTable = // + {.menuTotalNum = 3, + .pageNum = 1, + .maxPageNum = 1, + .muInfo = { + {ob_navi_muInterval, pg_muInterval}, // 加酸间隔 + {ob_navi_muChangePwd, pg_muChangePasswd}, // 修改密码 + {ob_navi_muLoginOut, 0} // 退出登录 + }}; +// 库管菜单配置 +static muInfoTable_t storeKeeperMuInfoTable = // + {.menuTotalNum = 4, + .pageNum = 1, + .maxPageNum = 1, + .muInfo = { + {ob_navi_muChangePwd, pg_muChangePasswd}, // 修改密码 + {ob_navi_muAcidTakeMgr, pg_muAcidTakeMgr}, // 领酸管理 + {ob_navi_muAcidUseRecd, pg_muAcidUseRecd}, // 用酸记录 + {ob_navi_muLoginOut, 0} // 退出登录 + }}; +// 管理员菜单配置 +static muInfoTable_t adminMuInfoTable = // + {.menuTotalNum = 11, + .pageNum = 1, + .maxPageNum = 2, + .muInfo = { + {ob_navi_muInterval, pg_muInterval}, // 加酸间隔 + {ob_navi_muCHSetting, pg_muCHSetting}, // 通道设置 + {ob_navi_muAcidType, pg_muAcidType}, // 酸类型管理 + {ob_navi_muUsrMgr, pg_muUsrMgr}, // 用户管理 + {ob_navi_muDateMgr, pg_muDateMgr}, // 修改时间 + {ob_navi_muAcidTakeMgr, pg_muAcidTakeMgr}, // 领酸管理 + {ob_navi_muAcidUseRecd, pg_muAcidUseRecd}, // 用酸记录 + {ob_navi_muReCtlerBind, pg_muReCtlerBind}, // 手柄绑定 + {ob_navi_muChangePwd, pg_muChangePasswd}, // 修改密码 + {ob_navi_muDeviceInfo, pg_muDeviceInfo}, // 设备信息 + {ob_navi_muLoginOut, 0} // 退出登录 + }}; + +/*********************************************************************************************************************** + * VAR * + ***********************************************************************************************************************/ + +static muInfoTable_t* curMuTable = &adminMuInfoTable; + +/*********************************************************************************************************************** + * UTILS * + ***********************************************************************************************************************/ static int getMuButtonNum(int32_t bid) { - switch (bid) { - case ob_navi_b0: - return 0; - case ob_navi_b1: - return 1; - case ob_navi_b2: - return 2; - case ob_navi_b3: - return 3; - case ob_navi_b4: - return 4; - case ob_navi_b5: - return 5; - case ob_navi_b6: - return 6; - case ob_navi_b7: - return 7; - default: - return 0; + for (int i = 0; i < ZARRAY_SIZE(m_button_bid_info); i++) { + if (m_button_bid_info[i].bid == bid) { + return i; + } } + return 0; } - -static int getMuButtonBid(int buttonIndex) { - switch (buttonIndex) { - case 0: - return ob_navi_b0; - case 1: - return ob_navi_b1; - case 2: - return ob_navi_b2; - case 3: - return ob_navi_b3; - case 4: - return ob_navi_b4; - case 5: - return ob_navi_b5; - case 6: - return ob_navi_b6; - case 7: - return ob_navi_b7; - default: - return ob_navi_b0; +static int getMuButtonBid(int buttonIndex) { return m_button_bid_info[buttonIndex].bid; } +static bool isMuButton(uint8_t bid) { + for (int i = 0; i < ZARRAY_SIZE(m_button_bid_info); i++) { + if (m_button_bid_info[i].bid == bid) { + return true; + } } + return false; } +/*********************************************************************************************************************** + * IMPL * + ***********************************************************************************************************************/ + class NaviPage : public IPageProcesser { public: NaviPage() : IPageProcesser(TAG, pg_navi) {} @@ -72,42 +123,40 @@ class NaviPage : public IPageProcesser { } private: - virtual void onBackKey() override { UIControler::ins()->chpage(pg_home,true); } + virtual void onBackKey() override { UIControler::ins()->chpage(pg_home, true); } virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override { if (bid == ob_navi_nexPage) { - if (m_pageNum < m_maxPageNum - 1) { - UIControler::ins()->chpage(pg_navi,true); - syncMenu(m_pageNum + 1); + if (curMuTable->pageNum < curMuTable->maxPageNum - 1) { + UIControler::ins()->chpage(pg_navi, true); + syncMenu(curMuTable->pageNum + 1); } } else if (bid == ob_navi_lastPage) { - if (m_pageNum > 0) { - UIControler::ins()->chpage(pg_navi,true); - syncMenu(m_pageNum - 1); + if (curMuTable->pageNum > 0) { + UIControler::ins()->chpage(pg_navi, true); + syncMenu(curMuTable->pageNum - 1); } } - if (isMuButton(bid)) { int buttonIndex = getMuButtonNum(bid); - int muIndex = m_pageNum * 8 + buttonIndex; - + int muIndex = curMuTable->pageNum * 8 + buttonIndex; ZLOGI(TAG, "on muButton muIndex=%d ", muIndex); - - if (buttonIndex < m_menuTotalNum) { - if (m_muInfo[buttonIndex].page != 0) { - UIControler::ins()->chpage(m_muInfo[buttonIndex].page,true); + if (buttonIndex < curMuTable->menuTotalNum) { + if (curMuTable->muInfo[muIndex].page != 0) { + UIControler::ins()->chpage(curMuTable->muInfo[muIndex].page, true); } else { - } + UIControler::ins()->chpage(pg_login, true); + } } } } virtual void onAppEvent(AppEvent_t* event) override { if (event->type == kAE_LoginEvent) { if (GStateMgr::ins()->getLoginUsrType() == kadmin) { - initAdminMenu(); + curMuTable = &adminMuInfoTable; } else if (GStateMgr::ins()->getLoginUsrType() == kstorekeeper) { - initStoreKeeperMenu(); + curMuTable = &storeKeeperMuInfoTable; } else if (GStateMgr::ins()->getLoginUsrType() == kuser) { - initUsrMenu(); + curMuTable = &usrMuInfoTable; } syncMenu(0 /*pageNum*/); } @@ -115,87 +164,37 @@ class NaviPage : public IPageProcesser { private: void syncState() { - initAdminMenu(); + curMuTable = &adminMuInfoTable; syncMenu(0 /*pageNum*/); } void onLogin() {} - bool isMuButton(uint8_t bid) { - if (bid == ob_navi_b0 || // - bid == ob_navi_b1 || // - bid == ob_navi_b2 || // - bid == ob_navi_b3 || // - bid == ob_navi_b4 || // - bid == ob_navi_b5 || // - bid == ob_navi_b6 || // - bid == ob_navi_b7) { - return true; - } - return false; - } - - void initAdminMenu() { - int i = 0; - m_muInfo[i++] = {ob_navi_muInterval, pg_muInterval}; // 加酸间隔 - m_muInfo[i++] = {ob_navi_muCHSetting, pg_muCHSetting}; // 通道设置 - m_muInfo[i++] = {ob_navi_muAcidType, pg_muAcidType}; // 酸类型管理 - m_muInfo[i++] = {ob_navi_muUsrMgr, pg_muUsrMgr}; // 用户管理 - m_muInfo[i++] = {ob_navi_muDateMgr, pg_muDateMgr}; // 修改时间 - m_muInfo[i++] = {ob_navi_muAcidTakeMgr, pg_muAcidTakeMgr}; // 领酸管理 - m_muInfo[i++] = {ob_navi_muAcidUseRecd, pg_muAcidUseRecd}; // 用酸记录 - m_muInfo[i++] = {ob_navi_muReCtlerBind, pg_muReCtlerBind}; // 手柄绑定 - m_muInfo[i++] = {ob_navi_muChangePwd, pg_muChangePasswd}; // 修改密码 - m_muInfo[i++] = {ob_navi_muDeviceInfo, pg_muDeviceInfo}; // 设备信息 - m_muInfo[i++] = {ob_navi_muLoginOut, 0}; // 退出登录 - m_menuTotalNum = i; - m_maxPageNum = (m_menuTotalNum - 1) / 8 + 1; - } - - void initUsrMenu() { - int i = 0; - m_muInfo[i++] = {ob_navi_muInterval, pg_muInterval}; // 加酸间隔 - m_muInfo[i++] = {ob_navi_muChangePwd, pg_muChangePasswd}; // 修改密码 - m_muInfo[i++] = {ob_navi_muLoginOut, 0}; // 退出登录 - m_menuTotalNum = i; - m_maxPageNum = (m_menuTotalNum - 1) / 8 + 1; - } - - void initStoreKeeperMenu() { - int i = 0; - m_muInfo[i++] = {ob_navi_muChangePwd, pg_muChangePasswd}; // 修改密码 - m_muInfo[i++] = {ob_navi_muAcidTakeMgr, pg_muAcidTakeMgr}; // 领酸管理 - m_muInfo[i++] = {ob_navi_muAcidUseRecd, pg_muAcidUseRecd}; // 用酸记录 - m_muInfo[i++] = {ob_navi_muLoginOut, 0}; // 退出登录 - m_menuTotalNum = i; - m_maxPageNum = (m_menuTotalNum - 1) / 8 + 1; - } - void syncMenu(int pageNum) { // - m_pageNum = pageNum; - int startIdx = m_pageNum * 8; + curMuTable->pageNum = pageNum; + int startIdx = curMuTable->pageNum * 8; int j = 0; for (int i = startIdx; j < 8; i++, j++) { - if (i < m_menuTotalNum) { - UIControler::ins()->setButtonPicNum(pg_navi, getMuButtonBid(j), m_muInfo[i].bid); + if (i < curMuTable->menuTotalNum) { + UIControler::ins()->setButtonPicNum(pg_navi, getMuButtonBid(j), curMuTable->muInfo[i].bid); } else { UIControler::ins()->setButtonPicNum(pg_navi, getMuButtonBid(j), ob_navi_muNone); } } - if (m_pageNum == m_maxPageNum - 1) { + if (curMuTable->pageNum == curMuTable->maxPageNum - 1) { visEx(ob_navi_nexPage, 0); } else { visEx(ob_navi_nexPage, 1); } - if (m_pageNum == 0) { + if (curMuTable->pageNum == 0) { visEx(ob_navi_lastPage, 0); } else { visEx(ob_navi_lastPage, 1); } - UIControler::ins()->setTxt(pg_navi, ob_navi_pageIndex, "%d/%d", m_pageNum + 1, m_maxPageNum); + UIControler::ins()->setTxt(pg_navi, ob_navi_pageIndex, "%d/%d", curMuTable->pageNum + 1, curMuTable->maxPageNum); } }; diff --git a/usrc/uicontroler/ui_controler.cpp b/usrc/uicontroler/ui_controler.cpp index 9055326..57f52f6 100644 --- a/usrc/uicontroler/ui_controler.cpp +++ b/usrc/uicontroler/ui_controler.cpp @@ -340,7 +340,9 @@ void UIControler::sendcmd(const char* format, va_list args) { buf[len + 1] = 0xff; buf[len + 2] = 0xff; + // vPortEnterCritical(); HAL_UART_Transmit(tjcUart, (uint8_t*)buf, len + 3, 100); + // vPortExitCritical(); while (true) { osDelay(1); if (tjcUart->gState == HAL_UART_STATE_READY) {