diff --git a/CMakeLists.txt b/CMakeLists.txt index 0b8b84f..1dc9151 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,6 +65,8 @@ set(PROJECT_SOURCES src/tab/id_card_read_tab.cpp src/basic/format_memory.cpp + + app.rc ) diff --git a/a8000_protocol b/a8000_protocol index 149c588..ab6fbde 160000 --- a/a8000_protocol +++ b/a8000_protocol @@ -1 +1 @@ -Subproject commit 149c58891a3c9fba1830865265da3513060b5fed +Subproject commit ab6fbde4f16636ae8c212b7f56198a19b9700e29 diff --git a/iflytop_canbus/iflytop_canbus_master.cpp b/iflytop_canbus/iflytop_canbus_master.cpp index b7da791..abec558 100644 --- a/iflytop_canbus/iflytop_canbus_master.cpp +++ b/iflytop_canbus/iflytop_canbus_master.cpp @@ -33,6 +33,10 @@ void IflytopCanbusMaster::initialize(IDataChannel *channel) { // CanPacketRxBuffer *rxbuf = nullptr; rxbuf = findRxBuff(from); + if (!rxbuf) { + ZLOGE(TAG, "find rx buff fail"); + return; + } if (frameId == 0) { rxbuf->rxdataSize = 0; rxbuf->rxPacketNum = 0; @@ -62,24 +66,20 @@ void IflytopCanbusMaster::initialize(IDataChannel *channel) { // } CanPacketRxBuffer *IflytopCanbusMaster::findRxBuff(int deviceId) { - for (int i = 0; i < ZARRAY_SIZE(m_rxbuf); i++) { - if (m_rxbuf[i].id == deviceId) { - return &m_rxbuf[i]; - } - - if (m_rxbuf[i].id == 0) { - m_rxbuf[i].id = deviceId; - return &m_rxbuf[i]; - } + if (deviceId < 0 || deviceId > 255) { + ZLOGE(TAG, "device id is invalid"); + return nullptr; } - - ZASSERT(0); - return nullptr; + return &m_rxbuf[deviceId]; } void IflytopCanbusMaster::processRxPacket(zcr_cmd_header_t *frame, size_t len) { if (frame->packetType == kptv2_ack || frame->packetType == kptv2_error_ack) { if (on_rx_raw) on_rx_raw(kcmd_receipt, (uint8_t *)frame, len); + } else if (frame->packetType == kptv2_cmd) { + if (on_rx_raw) on_rx_raw(kcmd_cmd, (uint8_t *)frame, len); + } else if (frame->packetType == kptv2_event) { + if (on_rx_raw) on_rx_raw(kcmd_report, (uint8_t *)frame, len); } if (frame->packetType == kptv2_ack || frame->packetType == kptv2_error_ack) { @@ -92,8 +92,6 @@ void IflytopCanbusMaster::processRxPacket(zcr_cmd_header_t *frame, size_t len) { ZLOGE(TAG, "Rx index not match, %s", zhex2str((uint8_t *)frame, len).c_str()); return; } - } else if (frame->packetType == kptv2_event) { - if (on_rx_raw) on_rx_raw(kcmd_report, (uint8_t *)frame, len); } } @@ -119,7 +117,7 @@ int32_t IflytopCanbusMaster::getAckBufLen() { return m_receipt_len - sizeof(zcr void IflytopCanbusMaster::writereg(int32_t device_id, int32_t regaddr, int32_t val) { callcmd2(device_id, kmodule_set_reg, regaddr, val); } -void IflytopCanbusMaster::callcmd0(int32_t device_id, int32_t cmdid) { callcmd(device_id, cmdid, nullptr, 0,G_OVERTIME); } +void IflytopCanbusMaster::callcmd0(int32_t device_id, int32_t cmdid) { callcmd(device_id, cmdid, nullptr, 0, G_OVERTIME); } void IflytopCanbusMaster::callcmd1(int32_t device_id, int32_t cmdid, int32_t param0) { int32_t param[4]; diff --git a/iflytop_canbus/iflytop_canbus_master.hpp b/iflytop_canbus/iflytop_canbus_master.hpp index a9d1ecf..83b4734 100644 --- a/iflytop_canbus/iflytop_canbus_master.hpp +++ b/iflytop_canbus/iflytop_canbus_master.hpp @@ -31,7 +31,7 @@ class RxReceiptContext { class CanPacketRxBuffer { public: - int32_t id = 0; + int32_t id = -1; uint8_t rxdata[2048] = {0}; int rxdataSize = 0; diff --git a/libzqt/zui/zqui.cpp b/libzqt/zui/zqui.cpp index 085e2c9..6046efa 100644 --- a/libzqt/zui/zqui.cpp +++ b/libzqt/zui/zqui.cpp @@ -25,15 +25,6 @@ void ZQUI::instructionPreviewClear() { if (m_instructionPreviewClear) m_instructionPreviewClear(); } -void ZQUI::reportPreviewShow(const char *fmt, ...) { - va_list args; - va_start(args, fmt); - char buf[1024] = {0}; - vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); - QString text(buf); - if (m_reportPreviewShow) m_reportPreviewShow(text); -} void ZQUI::rawshow(const char *fmt, ...) { diff --git a/libzqt/zui/zqui.hpp b/libzqt/zui/zqui.hpp index 3e82707..83ae311 100644 --- a/libzqt/zui/zqui.hpp +++ b/libzqt/zui/zqui.hpp @@ -42,7 +42,6 @@ class ZQUI : public QObject { typedef std::function display_func_t; std::function m_ishow; - std::function m_reportPreviewShow; std::function m_rawshow; std::function m_instructionPreviewClear; @@ -53,12 +52,10 @@ class ZQUI : public QObject { void doinui(std::function dowhat); void ishow(const char *fmt, ...); - void reportPreviewShow(const char *fmt, ...); void rawshow(const char *fmt, ...); void instructionPreviewClear(); void setishow(std::function func) { m_ishow = func; } - void setReportPreviewShow(std::function func) { m_reportPreviewShow = func; } void setrawshow(std::function func) { m_rawshow = func; } void setInstructionPreviewClear(std::function func) { m_instructionPreviewClear = func; } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 7e7783a..f3dbb6c 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -80,18 +80,6 @@ void MainWindow::ishow(QString text) { info.append(text); emit doinui_signal(QFunction([this, info]() { ui->instructionPreview->append(info); })); } -void MainWindow::reportPreviewShow(QString text) { - QString info; - - info.append(QDateTime::currentDateTime().toString("hh:mm:ss.zzz ")); - info.append(text); - emit doinui_signal(QFunction([this, info]() { - if (ui->reportPreview->document()->lineCount() > 1000) { - ui->reportPreview->document()->clear(); - } - ui->reportPreview->append(info); - })); -} void MainWindow::rawshow(QString text) { QString info; @@ -110,40 +98,6 @@ void MainWindow::instructionPreviewClear() { doinui_signal(QFunction([this]() { ui->instructionPreview->clear(); })); } -#pragma pack(push, 1) -typedef struct { - uint16_t header; - int16_t wave1; - int16_t wave2; - int16_t wave3; - int16_t wave4; - int16_t wave5; - uint8_t check; - uint16_t tail; -} Wave_t; -#pragma pack(pop) - -void MainWindow::displayWave(int16_t wave1, int16_t wave2, int16_t wave3) { - // 1. 生成波形数据 - Wave_t wave; - wave.header = 0xAAAA; - wave.wave1 = wave1; - wave.wave2 = wave2; - wave.wave3 = wave3; - wave.wave4 = 0; - wave.wave5 = 0; - wave.tail = 0x5555; - wave.check = 0; - - uint8_t check = 0; - for (size_t i = 2; i < sizeof(wave) - 2; i++) { - check += ((uint8_t *)&wave)[i]; - } - wave.check = check; - // 2. 发送波形数据 - G_WaveDataChannel.send((uint8_t *)&wave, sizeof(wave)); -} - /*********************************************************************************************************************** * UI相关构造 * ***********************************************************************************************************************/ @@ -236,7 +190,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi connect(this, SIGNAL(doinui_signal(QFunction)), this, SLOT(doinui_slot(QFunction))); ZQUI::ins()->initialize(); ZQUI::ins()->setishow([this](QString text) { ishow(text); }); - ZQUI::ins()->setReportPreviewShow([this](QString text) { reportPreviewShow(text); }); ZQUI::ins()->setrawshow([this](QString text) { rawshow(text); }); ZQUI::ins()->setInstructionPreviewClear([this]() { instructionPreviewClear(); }); @@ -263,20 +216,28 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi int32_t packetType = frame->packetType; if (type == kcmd_cmd) { - ZQUI::ins()->rawshow("[CMD ] %s", zhex2str(hex, hexlen).c_str()); if (cmdId == kmodule_set_reg) { - ZQUI::ins()->rawshow(" [-->] module_set_reg %d(mid) %d(reg) %d(val)", mid, param[0], param[1]); + // ZQUI::ins()->rawshow("[CMD ] %s", zhex2str(hex, hexlen).c_str()); + ZQUI::ins()->rawshow(" [-->] module_set_reg %d(mid) %s(%d) %d(val)", mid, regindex2str(param[0]), param[0], param[1]); } else if (cmdId == kmodule_get_reg) { - ZQUI::ins()->rawshow(" [-->] module_get_reg %d(mid) %d(reg)", mid, param[0]); + // ZQUI::ins()->rawshow("[CMD ] %s", zhex2str(hex, hexlen).c_str()); + ZQUI::ins()->rawshow(" [-->] module_get_reg %d(mid) %s(%d)", mid, regindex2str(param[0]), param[0]); } else { - ZQUI::ins()->rawshow(" [-->] index:%d cmdid:0x%04x mid:%d param:%s", frame->packetindex, cmdId, mid, zhex2str(frame->data, hexlen - sizeof(zcr_cmd_header_t)).c_str()); + if (cmdId != kmodule_get_status) { + ZQUI::ins()->rawshow("[CMD ] %d cmdid:(%s)0x%04x mid:%d param:%s", frame->packetindex, cmdid2str(cmdId), cmdId, mid, zhex2str(frame->data, hexlen - sizeof(zcr_cmd_header_t)).c_str()); + } else { + // ZQUI::ins()->rawshow("[CMD ] %s", zhex2str(hex, hexlen).c_str()); + } } } else if (type == kcmd_receipt) { if (kptv2_error_ack == packetType) { ZQUI::ins()->rawshow("[E-RECEI] %s(%d)", err::error2str(param[0]), param[0]); } else { - ZQUI::ins()->rawshow("[ RECEI] %s", zhex2str(hex, hexlen).c_str()); + if (cmdId != kmodule_get_status) { + ZQUI::ins()->rawshow("[ RECEI] %s", zhex2str(hex, hexlen).c_str()); + } else { + } } } else if (type == kcmd_report) { ZQUI::ins()->rawshow("[REPORT ] %s", zhex2str(hex, hexlen).c_str()); @@ -314,7 +275,6 @@ void MainWindow::on_PublicState_DeviceID_textChanged() { PublicState_DeviceIDVal void MainWindow::on_clearPreview_clicked() { doinui_signal(QFunction([this]() { ui->instructionPreview->clear(); })); - doinui_signal(QFunction([this]() { ui->reportPreview->clear(); })); doinui_signal(QFunction([this]() { ui->rawDataPreview->clear(); })); } diff --git a/src/mainwindow.h b/src/mainwindow.h index c7138a0..d9b13e0 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -108,11 +108,7 @@ signals: void instructionPreviewClear(); void ishow(QString info); - void reportPreviewShow(QString info); void rawshow(QString info); - - void displayWave(int16_t wave1, int16_t wave2, int16_t wave3); - void displayInfo(bool suc, QString info); private: diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 23d9658..48134f1 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -1067,7 +1067,7 @@ p, li { white-space: pre-wrap; } 0 - 2 + 1 @@ -1094,37 +1094,6 @@ p, li { white-space: pre-wrap; } - - - - 0 - 1 - - - - 上报回执显示 - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - - - -