Browse Source

完成基本框架

master
zhaohe 1 year ago
parent
commit
f9ce6a4eeb
  1. 6
      app_protocols/ecode/pcecode.hpp
  2. 12
      app_protocols/ecode/publicecode.hpp
  3. 2
      app_protocols/transmit_disfection_protocol
  4. 13
      src/app/transmit_disinfection/transmit_disinfection_can_master.cpp
  5. 17
      src/db/ecode_info_mgr.cpp
  6. 43
      src/db/ecode_info_mgr.hpp
  7. 6
      src/protocol/zscanprotocol_com/zscanprotocol_com.cpp
  8. 2
      src/protocol/zscanprotocol_com/zscanprotocol_com.hpp
  9. 2
      src/zqui/ui/z_function_list_box.cpp
  10. 4
      src/zqui/zqui/zqui.hpp

6
app_protocols/ecode/pcecode.hpp

@ -0,0 +1,6 @@
#pragma once
typedef enum {
ke_channel_is_close = 10000 + 1,
ke_parse_config_file_fail = 10000 + 2,
} pc_ecode_t;

12
app_protocols/ecode/publicecode.hpp

@ -0,0 +1,12 @@
#pragma once
typedef enum {
kerr_noerror = 0,
kerr_overtime = 1,
kerr_invalid_param = 2,
kerr_invalid_param_num = 3,
kerr_subdevice_offline = 4,
kerr_function_not_support = 5,
kerr_function_not_support = 5,
} public_ecode_t;

2
app_protocols/transmit_disfection_protocol

@ -1 +1 @@
Subproject commit 723f3fb8223f66d47cc9817a89940c93f6f2d15d
Subproject commit 7ec8b89424ab02856d3c48a77dfb11e790db4693

13
src/app/transmit_disinfection/transmit_disinfection_can_master.cpp

@ -1,4 +1,6 @@
#include "transmit_disinfection_can_master.hpp"
#include "db/ecode_info_mgr.hpp"
using namespace iflytop;
using namespace zscanprotocol;
using namespace transmit_disfection_protocol;
@ -7,6 +9,17 @@ using namespace transmit_disfection_protocol;
void TransmitDisinfectionCanMaster::initialize(QTSerialChannel *ch) {
m_com = new ZSCanProtocolCom();
m_com->initialize(ch);
EcodeInfoMgr::ins().regEcodeInfo(kerr_motor_reset_error, "kerr_motor_reset_error");
EcodeInfoMgr::ins().regEcodeInfo(kerr_motor_subdevice_offline, "kerr_motor_subdevice_offline");
EcodeInfoMgr::ins().regEcodeInfo(kerr_motor_driver_error, "kerr_motor_driver_error");
EcodeInfoMgr::ins().regEcodeInfo(kerr_motor_undervoltage_error, "kerr_motor_undervoltage_error");
EcodeInfoMgr::ins().regEcodeInfo(kerr_motor_unkown_error, "kerr_motor_unkown_error");
EcodeInfoMgr::ins().regEcodeInfo(kerr_AirBlowerError, "kerr_AirBlowerError");
EcodeInfoMgr::ins().regEcodeInfo(kerr_HeaterError, "kerr_HeaterError");
EcodeInfoMgr::ins().regEcodeInfo(kerr_BlowerError, "kerr_BlowerError");
EcodeInfoMgr::ins().regEcodeInfo(kerr_ProportionalValveError, "kerr_ProportionalValveError");
}
ack_read_board_info_data_t TransmitDisinfectionCanMaster::readboardinfo(int to) {

17
src/db/ecode_info_mgr.cpp

@ -0,0 +1,17 @@
#include "ecode_info_mgr.hpp"
#include "ecode/pcecode.hpp"
#include "ecode/publicecode.hpp"
using namespace iflytop;
void EcodeInfoMgr::regPublicEcode() {
regEcodeInfo(kerr_noerror, "no error");
regEcodeInfo(kerr_overtime, "overtime");
regEcodeInfo(kerr_invalid_param, "invalid param");
regEcodeInfo(kerr_invalid_param_num, "invalid param num");
regEcodeInfo(kerr_subdevice_offline, "subdevice offline");
regEcodeInfo(kerr_function_not_support, "function not support");
regEcodeInfo(ke_channel_is_close, "channel is close");
regEcodeInfo(ke_parse_config_file_fail, "parse config file fail");
}

43
src/db/ecode_info_mgr.hpp

@ -0,0 +1,43 @@
#pragma once
#include <fstream>
#include <functional>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <set>
#include <sstream>
#include <string>
#include <vector>
namespace iflytop {
using namespace std;
class EcodeInfo {
public:
int code;
string info;
EcodeInfo(int code, const string& info) : code(code), info(info) {}
};
class EcodeInfoMgr {
map<int, shared_ptr<EcodeInfo>> ecodeInfoMap;
public:
static EcodeInfoMgr& ins() {
static EcodeInfoMgr instance;
return instance;
}
void regEcodeInfo(int code, const string& info) { ecodeInfoMap[code] = make_shared<EcodeInfo>(code, info); }
void regPublicEcode();
string getEcodeInfo(int code) {
auto it = ecodeInfoMap.find(code);
if (it != ecodeInfoMap.end()) {
return it->second->info;
}
return "E(" + to_string(code) + ")";
}
};
} // namespace iflytop

6
src/protocol/zscanprotocol_com/zscanprotocol_com.cpp

@ -1,4 +1,5 @@
#include "zscanprotocol_com.hpp"
#include "db/ecode_info_mgr.hpp"
#include <stdarg.h>
@ -223,8 +224,5 @@ shared_ptr<Receipt> ZSCanProtocolCom::callcmd4(int32_t to, int32_t cmdid, int32_
void ZSCanProtocolCom::sendraw(int32_t from, int32_t to, uint8_t *data, size_t len) { sendframe(from, to, data, len); }
string ZSCanProtocolCom::ecode2str(int ecode) {
if (m_ecode2str) {
return m_ecode2str(ecode);
}
return "Ecode(" + to_string(ecode) + ")";
return EcodeInfoMgr::ins().getEcodeInfo(ecode);
}

2
src/protocol/zscanprotocol_com/zscanprotocol_com.hpp

@ -87,7 +87,6 @@ class ZSCanProtocolCom {
zcanbus_packet_t *m_receipt_frame = (zcanbus_packet_t *)m_receipt_cache;
size_t m_receipt_len = 0;
ecode2str_t m_ecode2str;
public:
ZSCanProtocolCom() {}
@ -95,7 +94,6 @@ class ZSCanProtocolCom {
public:
void initialize(QTSerialChannel *ch);
void regOnRawData(on_raw_data_t cb) { on_rx_raw = cb; }
void regEcdoe2Str(ecode2str_t cb) { m_ecode2str = cb; }
void updateChannelConfig();
shared_ptr<Receipt> callcmd(int32_t to, int32_t cmdid, uint8_t *param, int32_t paramLen, int32_t overtime = 100);

2
src/zqui/ui/z_function_list_box.cpp

@ -98,7 +98,7 @@ void ZQFunctionListBox::newFunc(QString zh_name, QStringList params, std::functi
onButtonClick(params.size(), (const char **)args);
ISHOW("OK");
} catch (const std::zexception &e) {
ISHOW_ERROR("%s", e.what());
ISHOW_ERROR("e.what()=%s", e.what());
}
});
});

4
src/zqui/zqui/zqui.hpp

@ -4,11 +4,11 @@
//
#include "zqui/channelmgr/channelmgr.hpp"
//
#include "mainwindow.h"
#include "appnavibar.h"
#include "mainwindow.h"
#define ISHOW(fmt, ...) ZQUI::ins()->iShow(fmt, ##__VA_ARGS__)
#define ISHOW_ERROR(fmt, ...) ZQUI::ins()->iShow("错误: ", fmt, ##__VA_ARGS__)
#define ISHOW_ERROR(fmt, ...) ZQUI::ins()->iShow("错误: " fmt, ##__VA_ARGS__)
#define IRSHOW(fmt, ...) ZQUI::ins()->iRawShow(fmt, ##__VA_ARGS__)
#define ICLEAR() ZQUI::ins()->iClear()

Loading…
Cancel
Save