Browse Source

update

master
zhaohe 1 year ago
parent
commit
e356f94275
  1. 2
      a8000_protocol
  2. 24
      src/mainwindow.cpp
  3. 88
      src/tab/a8k_opt_tab.cpp

2
a8000_protocol

@ -1 +1 @@
Subproject commit e1bab29823705e2518e61de9e2dc3d8535a5eaa6
Subproject commit 6d52b54e3c528a0be076d120d033ecfeb1051ee0

24
src/mainwindow.cpp

@ -191,17 +191,17 @@ void MainWindow::parse_ptv2_cmd(zcr_cmd_header_t *frame, int32_t packetlen) {
int32_t paramNum = (packetlen - sizeof(zcr_cmd_header_t)) / 4;
int32_t *para = (int32_t *)frame->data;
if (paramNum == 0) {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) ", frame->packetindex, cmdid2str(cmdId), cmdId, mid);
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) ", frame->packetindex, mid, cmdid2str(cmdId), cmdId);
} else if (paramNum == 1) {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d", frame->packetindex, cmdid2str(cmdId), cmdId, mid, para[0]);
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0]);
} else if (paramNum == 2) {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d,%d", frame->packetindex, cmdid2str(cmdId), cmdId, mid, para[0], para[1]);
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d,%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0], para[1]);
} else if (paramNum == 3) {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d", frame->packetindex, cmdid2str(cmdId), cmdId, mid, para[0], para[1], para[2]);
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0], para[1], para[2]);
} else if (paramNum == 4) {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d,%d", frame->packetindex, cmdid2str(cmdId), cmdId, mid, para[0], para[1], para[2], para[3]);
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d,%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0], para[1], para[2], para[3]);
} else {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%s", frame->packetindex, cmdid2str(cmdId), cmdId, mid, zhex2str(frame->data, packetlen - sizeof(zcr_cmd_header_t)).c_str());
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%s", frame->packetindex, mid, cmdid2str(cmdId), cmdId, zhex2str(frame->data, packetlen - sizeof(zcr_cmd_header_t)).c_str());
}
}
}
@ -221,17 +221,17 @@ void MainWindow::parse_ptv2_ack(zcr_cmd_header_t *frame, int32_t packetlen) {
int32_t paramNum = (packetlen - sizeof(zcr_cmd_header_t)) / 4;
int32_t *para = (int32_t *)frame->data;
if (paramNum == 0) {
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) ", frame->packetindex, cmdid2str(cmdId), cmdId, mid);
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) ", frame->packetindex, mid, cmdid2str(cmdId), cmdId);
} else if (paramNum == 1) {
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%d", frame->packetindex, cmdid2str(cmdId), cmdId, mid, para[0]);
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0]);
} else if (paramNum == 2) {
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%d,%d", frame->packetindex, cmdid2str(cmdId), cmdId, mid, para[0], para[1]);
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%d,%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0], para[1]);
} else if (paramNum == 3) {
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d", frame->packetindex, cmdid2str(cmdId), cmdId, mid, para[0], para[1], para[2]);
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0], para[1], para[2]);
} else if (paramNum == 4) {
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d,%d", frame->packetindex, cmdid2str(cmdId), cmdId, mid, para[0], para[1], para[2], para[3]);
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d,%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0], para[1], para[2], para[3]);
} else {
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%s", frame->packetindex, cmdid2str(cmdId), cmdId, mid, zhex2str(frame->data, packetlen - sizeof(zcr_cmd_header_t)).c_str());
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%s", frame->packetindex, mid, cmdid2str(cmdId), cmdId, zhex2str(frame->data, packetlen - sizeof(zcr_cmd_header_t)).c_str());
}
}
}

88
src/tab/a8k_opt_tab.cpp

@ -13,6 +13,7 @@
#include "../basic/format_memory.hpp"
#include "../basic/stm32_pin.hpp"
#include "./mainwindow.h"
#include "basic\widgetplot2d.h"
#include "zui\zqui.hpp"
//
using namespace iflytop;
@ -25,6 +26,11 @@ extern int getDeviceId();
#define CAMERA_MOTOR (getDeviceId() - 2)
#define PUSH_AND_PULL_MOTOR (getDeviceId() - 1)
typedef struct {
uint16_t data[1500];
int dataNum;
} opt_result_t;
A8kOptTab *A8kOptTab::inst() {
static A8kOptTab *ins = new A8kOptTab();
return ins;
@ -40,20 +46,6 @@ void A8kOptTab::construct(QTabWidget *fathertab) {
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "光学测试", 4);
// box->newSubButton("停止", [this](int argn, const char **args) { ICM->step_motor_stop(getDeviceId(), 0); });
box->newFunc("T光学-开始扫描", {"scanDirection", "lasterGain", "scanGain"}, [this](int argn, const char **args) {
int32_t scanDirection = atoi(args[0]);
int32_t lasterGain = atoi(args[1]);
int32_t scanGain = atoi(args[2]);
ICM->callcmd3(getDeviceId(), ka8k_opt_v2_t_start_scan, scanDirection, lasterGain, scanGain);
});
box->newFunc("F光学-开始扫描", {"scanDirection", "lasterGain", "scanGain"}, [this](int argn, const char **args) {
int32_t scanDirection = atoi(args[0]);
int32_t lasterGain = atoi(args[1]);
int32_t scanGain = atoi(args[2]);
ICM->callcmd3(getDeviceId(), ka8k_opt_v2_f_start_scan, scanDirection, lasterGain, scanGain);
});
box->newSubButton("电机复位", [this](int argn, const char **args) {
ICM->callcmd0(getDeviceId() - 1, kstep_motor_easy_move_to_zero);
ICM->callcmd0(getDeviceId() - 2, kstep_motor_easy_move_to_zero);
@ -65,14 +57,76 @@ void A8kOptTab::construct(QTabWidget *fathertab) {
ICM->callcmd1(PUSH_AND_PULL_MOTOR, kstep_motor_easy_move_to, 1100);
});
box->newSubButton("入板", [this](int argn, const char **args) { //
ICM->callcmd1(CAMERA_MOTOR, kstep_motor_easy_move_to, 49);
ICM->callcmd1(PUSH_AND_PULL_MOTOR, kstep_motor_easy_move_to, 52);
});
box->newSubButton("推杆移动到待机位", [this](int argn, const char **args) { //
ICM->callcmd1(PUSH_AND_PULL_MOTOR, kstep_motor_easy_move_to, 1100);
});
box->newSubButtonEnd();
box->newSubButton("丢板", [this](int argn, const char **args) {
ICM->callcmd1(CAMERA_MOTOR, kstep_motor_easy_move_to, 0);
box->newSubButton("丢板", [this](int argn, const char **args) { ICM->callcmd1(CAMERA_MOTOR, kstep_motor_easy_move_to, 0); });
box->newSubButtonEnd();
box->newFunc("T光学-开始扫描", {"scanDirection", "lasterGain", "scanGain"}, [this](int argn, const char **args) {
int32_t scanDirection = atoi(args[0]);
int32_t lasterGain = atoi(args[1]);
int32_t scanGain = atoi(args[2]);
ICM->callcmd3(getDeviceId(), ka8k_opt_v2_t_start_scan, scanDirection, lasterGain, scanGain);
});
box->newFunc("F光学-开始扫描", {"scanDirection", "lasterGain", "scanGain"}, [this](int argn, const char **args) {
int32_t scanDirection = atoi(args[0]);
int32_t lasterGain = atoi(args[1]);
int32_t scanGain = atoi(args[2]);
ICM->callcmd3(getDeviceId(), ka8k_opt_v2_f_start_scan, scanDirection, lasterGain, scanGain);
});
box->newSubButton("读取扫描结果", [this](int argn, const char **args) {
// ka8000_optical_read_raw
uint8_t rdbuf[5000];
int32_t readsize = 0;
int i = 0;
while (true) {
ICM->callcmd1(getDeviceId(), ka8000_optical_read_raw, i);
if (ICM->getAckBufLen() == 0) {
break;
}
memcpy(rdbuf + readsize, ICM->getAckBuf(), ICM->getAckBufLen());
readsize += ICM->getAckBufLen();
i++;
}
int16_t *data = (int16_t *)rdbuf;
ZQUI::ins()->ishow("---------------------opt result(%d)---------------------", readsize / 2);
for (size_t i = 0; i < readsize / 2; i++) {
ZQUI::ins()->ishow("%5d,%d", i, data[i]);
}
opt_result_t optdata;
memcpy(optdata.data, data, readsize);
optdata.dataNum = readsize / 2;
DoInUi([this, optdata]() {
WidgetPlot2D *plot2d = new WidgetPlot2D();
QStringList lines;
lines.push_back("line1");
plot2d->initGraphName(lines);
for (int i = 0; i < optdata.dataNum; i++) {
plot2d->addData("line1", optdata.data[i]);
}
//250 个点的情况下,峰的标准位置在 40 80 120 160 200
//1200个点的情况下,峰的标准位置在 40*4.8 80*4.8 120*4.8 160*4.8 200*4.8
for (int i = 1; i < 6; i++) {
plot2d->addRefLine(4.8 * 40 * i);
}
plot2d->show();
});
// 打印读取到的结果
});
}

Loading…
Cancel
Save