zhaohe 8 months ago
parent
commit
4279a5fc16
  1. 1
      uappbase/bean/appevent.h
  2. BIN
      ui/hand_acid_mainboard_ui.HMI
  3. 2
      ui/ui.h
  4. 2
      usrc/project_configs.h
  5. 54
      usrc/service/app_core.cpp
  6. 2
      usrc/service/remote_controler.cpp
  7. 90
      usrc/service/remote_controler_event_processer.cpp
  8. 5
      usrc/service/remote_controler_event_processer.hpp
  9. 38
      usrc/uicontroler/page/mupage/muDeviceInfo_page.cpp
  10. 89
      usrc/uicontroler/page/mupage/muReCtrlerBind_page.cpp
  11. 239
      usrc/uicontroler/page/navi_page.cpp
  12. 2
      usrc/uicontroler/ui_controler.cpp

1
uappbase/bean/appevent.h

@ -19,6 +19,7 @@ typedef enum {
kAE_RemoterConnectedEvent, //
kAE_RemoterDisConnectedEvent, //
} AppEventType_t;
/**

BIN
ui/hand_acid_mainboard_ui.HMI

2
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

2
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

54
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);
/***********************************************************************************************************************
* 使 *

2
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) {

90
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));

5
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

38
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

89
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

239
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);
}
};

2
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) {

Loading…
Cancel
Save