diff --git a/CMakeLists.txt b/CMakeLists.txt index a29e672..7facabb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,6 +73,7 @@ set(PROJECT_SOURCES src/basic/format_memory.cpp src/basic/smtp2_constant.cpp src/basic/a8k_id_card_writer.cpp + src/tab/a8k_opt_tab.cpp app.rc diff --git a/libzqt/zui/z_reg_table_list_box.cpp b/libzqt/zui/z_reg_table_list_box.cpp index d12b4cf..568048c 100644 --- a/libzqt/zui/z_reg_table_list_box.cpp +++ b/libzqt/zui/z_reg_table_list_box.cpp @@ -75,7 +75,8 @@ ZRegTableList::ZRegTableList(QWidget *parent, const QString &title) // // funcBox { m_funcBox = new ZQFunctionListBox(this, "", 4); - m_funcBox->newFunc("读全部", {}, [this](int argn, const char **args) { readAll(); }); + m_funcBox->newSubButton("读全部", [this](int argn, const char **args) { readAll(); }); + m_funcBox->newSubButton("写全部", [this](int argn, const char **args) { writeAll(); }); } // RegBox { @@ -105,9 +106,7 @@ ZRegTableList::ZRegTableList(QWidget *parent, const QString &title) // m_layout->addWidget(m_regBox); parent->layout()->addWidget(this); } -void ZRegTableList::addSpacer() { - m_regBoxLayoutL2->addItem(new QSpacerItem(20, 1, QSizePolicy::Minimum, QSizePolicy::Expanding)); -} +void ZRegTableList::addSpacer() { m_regBoxLayoutL2->addItem(new QSpacerItem(20, 1, QSizePolicy::Minimum, QSizePolicy::Expanding)); } void ZRegTableList::addReg(QString title, int addr, uint32_t flag) { ZRegItem *item = new ZRegItem(m_arWidget, title, addr, flag); @@ -187,6 +186,33 @@ void ZRegTableList::readAll() { } } +void ZRegTableList::writeAll() { + ZQUI::ins()->instructionPreviewClear(); + for (auto it = m_regMap.begin(); it != m_regMap.end(); it++) { + ZRegItem *item = it.value(); + int32_t val; + string outputinfo; + + bool readsuc = false; + try { + QString displayval = item->m_val->text(); + int32_t val = reformatRegVal(displayval, item->m_flag); + m_writereg_fn(item->m_addr, val); + readsuc = true; + } catch (std::zexception &e) { + ZQUI::ins()->doinui([item]() { + // item->hide(); + }); + readsuc = false; + } + if (readsuc) { + ZQUI::ins()->ishow("write reg:%-50s(%-8d) :%10d", it.key().toStdString().c_str(), item->m_addr, val); + } else { + ZQUI::ins()->ishow("write reg:%-50s(%-8d) :fail", it.key().toStdString().c_str()); + } + } +} + void ZRegTableList::initializeRegOperation(write_reg_func_t write_reg_fn, read_reg_func_t read_reg_fn) { m_writereg_fn = write_reg_fn; m_readreg_fn = read_reg_fn; diff --git a/libzqt/zui/z_reg_table_list_box.hpp b/libzqt/zui/z_reg_table_list_box.hpp index 67cb532..36967dd 100644 --- a/libzqt/zui/z_reg_table_list_box.hpp +++ b/libzqt/zui/z_reg_table_list_box.hpp @@ -134,6 +134,7 @@ class ZRegTableList : public QGroupBox { private: void readAll(); + void writeAll(); QString formatRegVal(int32_t val, uint32_t flag); int32_t reformatRegVal(QString valstr, uint32_t flag); }; diff --git a/src/tab/a8k_opt_tab.cpp b/src/tab/a8k_opt_tab.cpp new file mode 100644 index 0000000..38f440b --- /dev/null +++ b/src/tab/a8k_opt_tab.cpp @@ -0,0 +1,68 @@ +#include "a8k_opt_tab.hpp" + +#include "iflytop_canbus/iflytop_canbus_master.hpp" +#include "logger.hpp" +#include "qt_serial_datachannel.hpp" +#include "zexception.hpp" +#include "zui/z_function_list_box.hpp" +#include "zui/z_reg_table_list_box.hpp" +#include "zui/zq_vtab_page.hpp" +// +#include + +#include "../basic/format_memory.hpp" +#include "../basic/stm32_pin.hpp" +#include "./mainwindow.h" +#include "zui\zqui.hpp" +// +using namespace iflytop; +using namespace std; + +extern Ui::MainWindow *main_ui; + +extern int getDeviceId(); +#define EEPROM_MAX_ADD (2 * 1024) + +A8kOptTab *A8kOptTab::inst() { + static A8kOptTab *ins = new A8kOptTab(); + return ins; +} + + +// 巴迪泰复位风险 + // 1.转盘清空板夹。(因为需要拆设备,只能自动化清理) + // 2.板夹仓推杆推到一半,光学模组拉杆拉到一半。(因为需要拆设备,只能自动化清理) + // 3.脱帽盖帽摇匀处理到一半。(只能人工清理) + +//-------------------------------------------------------------------------------------------- + +//++++++++++++++++++++++++++++++++++++++++ + +//硬件测试测试 +//打开t光学激光(激光增益,扫描增益) +//读即时取扫描结果() + +//打开f光学激光(激光增益,扫描增益) +//读即时取扫描结果 + +//++++++++++++++++++++++++++++++++++++++++ + +//单独模块测试 + //钩爪复位,光学模组复位 + //板夹仓-推杆复位,板夹仓-平移复位 + //转盘复位 + +//入板准备 +//T光学开始扫描:(激光增益,扫描增益,扫描启动位置,扫描方向,扫描点数) +//F光学开始扫描:(激光增益,扫描增益,扫描启动位置,扫描方向,扫描点数) +//读取扫描结果 +//分析存储扫描结果 +//丢板 + +void A8kOptTab::construct(QTabWidget *fathertab) { + + + + + +} diff --git a/src/tab/a8k_opt_tab.hpp b/src/tab/a8k_opt_tab.hpp new file mode 100644 index 0000000..c3a4006 --- /dev/null +++ b/src/tab/a8k_opt_tab.hpp @@ -0,0 +1,45 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// +#include + +namespace iflytop { +using namespace std; + +class A8kOptTab { + QTabWidget *m_fathertab; + + public: + static A8kOptTab *inst(); + + void construct(QTabWidget *fathertab); +}; +} // namespace iflytop diff --git a/src/tab/step_motor_ctrl_tab.cpp b/src/tab/step_motor_ctrl_tab.cpp index 30aa06b..b67a034 100644 --- a/src/tab/step_motor_ctrl_tab.cpp +++ b/src/tab/step_motor_ctrl_tab.cpp @@ -111,7 +111,7 @@ void StepMotorCtrlTab::construct(QTabWidget *fathertab) { tableBox->addReg("pos", kreg_step_motor_pos, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("dpos", kreg_step_motor_dpos, ZRegItem::krw | ZRegItem::kdec); - tableBox->addReg("shift", kreg_step_motor_shift, ZRegItem::krw | ZRegItem::kdec); + // tableBox->addReg("shift", kreg_step_motor_shift, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("shaft", kreg_step_motor_shaft, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("one_circle_pulse", kreg_step_motor_one_circle_pulse, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("one_circle_pulse_denominator", kreg_step_motor_one_circle_pulse_denominator, ZRegItem::krw | ZRegItem::kdec);