Browse Source

update

master
zhaohe 1 year ago
parent
commit
636a6061cc
  1. 2
      a8k_optalgo
  2. 13
      libzqt/zui/zqui.cpp
  3. 12
      libzqt/zui/zqui.hpp
  4. 20
      src/mainwindow.cpp
  5. 2
      src/mainwindow.h
  6. 75
      src/tab/a8k_opt_tab.cpp

2
a8k_optalgo

@ -1 +1 @@
Subproject commit f1e84f5f99f42f6e810a77611cf197826a430271
Subproject commit 65fed4d521197fa45d33f68c4407829624a8a34a

13
libzqt/zui/zqui.cpp

@ -18,15 +18,22 @@ void ZQUI::ishow(const char *fmt, ...) {
vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
QString text(buf);
if (m_ishow) m_ishow(text);
if (m_ishow) m_ishow(false, text);
}
void ZQUI::ishow_raw(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_ishow) m_ishow(true, text);
}
void ZQUI::instructionPreviewClear() {
if (m_instructionPreviewClear) m_instructionPreviewClear();
}
void ZQUI::rawshow(const char *fmt, ...) {
va_list args;
va_start(args, fmt);

12
libzqt/zui/zqui.hpp

@ -41,9 +41,9 @@ class ZQUI : public QObject {
public:
typedef std::function<void(QString)> display_func_t;
std::function<void(QString)> m_ishow;
std::function<void(QString)> m_rawshow;
std::function<void()> m_instructionPreviewClear;
std::function<void(bool raw, QString)> m_ishow;
std::function<void(QString)> m_rawshow;
std::function<void()> m_instructionPreviewClear;
public:
static ZQUI *ins();
@ -52,10 +52,11 @@ class ZQUI : public QObject {
void doinui(std::function<void()> dowhat);
void ishow(const char *fmt, ...);
void ishow_raw(const char *fmt, ...);
void rawshow(const char *fmt, ...);
void instructionPreviewClear();
void setishow(std::function<void(QString)> func) { m_ishow = func; }
void setishow(std::function<void(bool raw, QString)> func) { m_ishow = func; }
void setrawshow(std::function<void(QString)> func) { m_rawshow = func; }
void setInstructionPreviewClear(std::function<void()> func) { m_instructionPreviewClear = func; }
@ -68,4 +69,5 @@ class ZQUI : public QObject {
extern void DoInUi(std::function<void()> dowhat);
#define ISHOW(fmt, ...) ZQUI::ins()->ishow(fmt, ##__VA_ARGS__)
#define ISHOW(fmt, ...) ZQUI::ins()->ishow(fmt, ##__VA_ARGS__)
#define ISHOW_RAW(fmt, ...) ZQUI::ins()->ishow_raw(fmt, ##__VA_ARGS__)

20
src/mainwindow.cpp

@ -75,12 +75,18 @@ void MainWindow::doinui_slot(QFunction func) {
* PreviewShow *
***********************************************************************************************************************/
void MainWindow::ishow(QString text) {
QString info;
info.append(QDateTime::currentDateTime().toString("hh:mm:ss"));
info.append("|");
info.append(text);
emit doinui_signal(QFunction([this, info]() { ui->instructionPreview->append(info); }));
void MainWindow::ishow(bool raw, QString text) {
if (!raw) {
QString info;
info.append(QDateTime::currentDateTime().toString("hh:mm:ss"));
info.append("|");
info.append(text);
emit doinui_signal(QFunction([this, info]() { ui->instructionPreview->append(info); }));
} else {
QString info;
info.append(text);
emit doinui_signal(QFunction([this, info]() { ui->instructionPreview->append(info); }));
}
}
void MainWindow::rawshow(QString text) {
@ -264,7 +270,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
qRegisterMetaType<QFunction>("QFunction");
connect(this, SIGNAL(doinui_signal(QFunction)), this, SLOT(doinui_slot(QFunction)));
ZQUI::ins()->initialize();
ZQUI::ins()->setishow([this](QString text) { ishow(text); });
ZQUI::ins()->setishow([this](bool raw, QString text) { ishow(raw, text); });
ZQUI::ins()->setrawshow([this](QString text) { rawshow(text); });
ZQUI::ins()->setInstructionPreviewClear([this]() { instructionPreviewClear(); });

2
src/mainwindow.h

@ -110,7 +110,7 @@ signals:
static void log_output(QtMsgType type, const QMessageLogContext &context, const QString &msg);
void instructionPreviewClear();
void ishow(QString info);
void ishow(bool raw, QString text);
void rawshow(QString info);
void displayInfo(bool suc, QString info);

75
src/tab/a8k_opt_tab.cpp

@ -253,39 +253,33 @@ void A8kOptTab::construct(QTabWidget *fathertab) {
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "结果处理", 4);
// 预分析结果
box->newSubButton("光学结果预分析", [this](int argn, const char **args) {
int32_t lasterGain = atoi(args[0]);
int32_t scanGain = atoi(args[1]);
ICM->callcmd2(getDeviceId(), ka8k_opt_v2_t_open_laster, lasterGain, scanGain);
box->newSubButton("光学结果(预)分析", [this](int argn, const char **args) {
if (m_optData.dataNum == 0) {
ZQUI::ins()->ishow("请先进行光学分析,并读取扫描结果");
return;
}
ISHOW("------ OptRawResultInfo ------");
ISHOW("laster gain:%d", lasterGain);
ISHOW("scan gain:%d", scanGain);
ISHOW("laster gain:%d", m_laserGain);
ISHOW("scan gain:%d", m_scanGain);
ISHOW("opt Type:%s", optType2Str(m_optType));
// 1. 预分析
OptAlgoPreProcessResult result;
if (m_optType == kfopt) {
F_A8kOptAlgoPreProcess(array2vector(m_optData), scanGain, 2600, 2800, result);
F_A8kOptAlgoPreProcess(array2vector(m_optData), m_scanGain, 2600, 2800, result);
} else if (m_optType == ktopt) {
T_A8kOptAlgoPreProcess(array2vector(m_optData), scanGain, 2600, 2800, result);
T_A8kOptAlgoPreProcess(array2vector(m_optData), m_scanGain, 2600, 2800, result);
}
ISHOW("------ OptPreParseResult ------");
ISHOW("scanAgain :%s", result.scanAgain ? "true" : "false");
ISHOW("suggestScanGain:%d", result.suggestScanGain);
ISHOW("重新扫描 :%s", result.scanAgain ? "true" : "false");
ISHOW("重新扫描建议增益 :%d", result.suggestScanGain);
});
box->newSubButtonEnd();
// 分析结果
box->newSubButton("光学结果分析", [this](int argn, const char **args) {
int32_t lasterGain = atoi(args[0]);
int32_t scanGain = atoi(args[1]);
ICM->callcmd2(getDeviceId(), ka8k_opt_v2_t_open_laster, lasterGain, scanGain);
box->newSubButton("光学结果分析2", [this](int argn, const char **args) {
DoInUi([]() {});
if (m_optData.dataNum == 0) {
ZQUI::ins()->ishow("请先进行光学分析,并读取扫描结果");
@ -293,20 +287,47 @@ void A8kOptTab::construct(QTabWidget *fathertab) {
}
ISHOW("------ OptRawResultInfo ------");
ISHOW("laster gain:%d", lasterGain);
ISHOW("scan gain:%d", scanGain);
ISHOW("laster gain:%d", m_laserGain);
ISHOW("scan gain:%d", m_scanGain);
ISHOW("opt Type:%s", optType2Str(m_optType));
OptAlgoResult result;
PorcessContext context;
A8kOptAlgoProcess(array2vector(m_optData), result);
A8kOptAlgoGetProcessContext(context);
DoInUi([result, context]() {
WidgetPlot2D *plot2d = new WidgetPlot2D();
QStringList lines;
lines.push_back("opt");
lines.push_back("diff");
lines.push_back("diffX2");
plot2d->initGraphName(lines);
for (int i = 0; i < result.displayData.size(); i++) {
plot2d->addData("opt", result.displayData[i]);
}
for (int i = 0; i < context.diff.size(); i++) {
plot2d->addData("diff", context.diff[i]);
}
for (int i = 0; i < context.diffX2.size(); i++) {
plot2d->addData("diffX2", context.diffX2[i]);
}
// 1. 预分析
OptAlgoPreProcessResult result;
if (m_optType == kfopt) {
F_A8kOptAlgoPreProcess(array2vector(m_optData), scanGain, 2600, 2800, result);
} else if (m_optType == ktopt) {
T_A8kOptAlgoPreProcess(array2vector(m_optData), scanGain, 2600, 2800, result);
}
ISHOW("------ OptPreParseResult ------");
ISHOW("scanAgain :%s", result.scanAgain ? "true" : "false");
ISHOW("suggestScanGain:%d", result.suggestScanGain);
// 250 个点的情况下,峰的标准位置在 40 80 120 160 200
for (int i = 1; i < 6; i++) {
plot2d->addRefLine(40 * i);
}
plot2d->show();
ISHOW_RAW("Peak,find,pos,startpos,endpos");
ISHOW_RAW("040,%s,%d,%d,%d,%f", result.pin040.find_peak ? "true" : "false", result.pin040.peak_pos, result.pin040.peak_start_pos, result.pin040.peak_end_pos, result.pin040.area);
ISHOW_RAW("080,%s,%d,%d,%d,%f", result.pin080.find_peak ? "true" : "false", result.pin080.peak_pos, result.pin080.peak_start_pos, result.pin080.peak_end_pos, result.pin080.area);
ISHOW_RAW("120,%s,%d,%d,%d,%f", result.pin120.find_peak ? "true" : "false", result.pin120.peak_pos, result.pin120.peak_start_pos, result.pin120.peak_end_pos, result.pin120.area);
ISHOW_RAW("160,%s,%d,%d,%d,%f", result.pin160.find_peak ? "true" : "false", result.pin160.peak_pos, result.pin160.peak_start_pos, result.pin160.peak_end_pos, result.pin160.area);
ISHOW_RAW("200,%s,%d,%d,%d,%f", result.pin200.find_peak ? "true" : "false", result.pin200.peak_pos, result.pin200.peak_start_pos, result.pin200.peak_end_pos, result.pin200.area);
});
//
});
box->newSubButtonEnd();
// 打印分析报告

Loading…
Cancel
Save