Browse Source

update

master
zhaohe 1 year ago
parent
commit
6a7e19febc
  1. 2
      CMakeLists.txt
  2. 2
      a8000_protocol
  3. 28
      iflytop_canbus/iflytop_canbus_master.cpp
  4. 2
      iflytop_canbus/iflytop_canbus_master.hpp
  5. 9
      libzqt/zui/zqui.cpp
  6. 3
      libzqt/zui/zqui.hpp
  7. 66
      src/mainwindow.cpp
  8. 4
      src/mainwindow.h
  9. 33
      src/mainwindow.ui

2
CMakeLists.txt

@ -65,6 +65,8 @@ set(PROJECT_SOURCES
src/tab/id_card_read_tab.cpp
src/basic/format_memory.cpp
app.rc
)

2
a8000_protocol

@ -1 +1 @@
Subproject commit 149c58891a3c9fba1830865265da3513060b5fed
Subproject commit ab6fbde4f16636ae8c212b7f56198a19b9700e29

28
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];

2
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;

9
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, ...) {

3
libzqt/zui/zqui.hpp

@ -42,7 +42,6 @@ class ZQUI : public QObject {
typedef std::function<void(QString)> display_func_t;
std::function<void(QString)> m_ishow;
std::function<void(QString)> m_reportPreviewShow;
std::function<void(QString)> m_rawshow;
std::function<void()> m_instructionPreviewClear;
@ -53,12 +52,10 @@ class ZQUI : public QObject {
void doinui(std::function<void()> dowhat);
void ishow(const char *fmt, ...);
void reportPreviewShow(const char *fmt, ...);
void rawshow(const char *fmt, ...);
void instructionPreviewClear();
void setishow(std::function<void(QString)> func) { m_ishow = func; }
void setReportPreviewShow(std::function<void(QString)> func) { m_reportPreviewShow = func; }
void setrawshow(std::function<void(QString)> func) { m_rawshow = func; }
void setInstructionPreviewClear(std::function<void()> func) { m_instructionPreviewClear = func; }

66
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(); }));
}

4
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:

33
src/mainwindow.ui

@ -1067,7 +1067,7 @@ p, li { white-space: pre-wrap; }
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>2</verstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="title">
@ -1094,37 +1094,6 @@ p, li { white-space: pre-wrap; }
</widget>
</item>
<item>
<widget class="QGroupBox" name="reportPreviewBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>上报回执显示</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QTextBrowser" name="reportPreview">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="uploadDataPreviewBox_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">

Loading…
Cancel
Save