speedcontroller/ui/dialog.cpp

275 lines
11 KiB
C++
Raw Normal View History

2022-03-26 05:49:56 +00:00
#include "dialog.h"
#include "ui_dialog.h"
#include <QMessageBox>
#include <QFile>
#include "GScanO1003399.h"
#include "GScanO400.h"
Dialog::Dialog(QWidget* parent)
: QDialog(parent)
, ui(new Ui::Dialog)
{
ui->setupUi(this);
ui->lineEdit_sp->setValidator(new QIntValidator(500, 10000, this));
ui->lineEdit_cuo_A->setValidator(new QIntValidator(1, 1000, this));
ui->lineEdit_cuo_FinalDelay->setValidator(new QIntValidator(1, 10000, this));
ui->lineEdit_cuo_FinalPeriod->setValidator(new QIntValidator(1, 1000000, this));
ui->lineEdit_cuo_Fmin->setValidator(new QIntValidator(1, 1000000, this));
ui->lineEdit_cuo_Offsct->setValidator(new QIntValidator(1, 10, this));
ui->lineEdit_cuo_StepNum->setValidator(new QIntValidator(1, 10, this));
ui->lineEdit_exposureB_B->setValidator(new QIntValidator(1, 10000, this));
ui->lineEdit_exposureB_G->setValidator(new QIntValidator(1, 10000, this));
ui->lineEdit_exposureB_R->setValidator(new QIntValidator(1, 10000, this));
ui->lineEdit_exposureF_B->setValidator(new QIntValidator(1, 10000, this));
ui->lineEdit_exposureF_G->setValidator(new QIntValidator(1, 10000, this));
ui->lineEdit_exposureF_R->setValidator(new QIntValidator(1, 10000, this));
ui->lineEdit_zuo_A->setValidator(new QIntValidator(1, 1000, this));
ui->lineEdit_zuo_FinalDelay->setValidator(new QIntValidator(1, 1000000, this));
ui->lineEdit_zuo_FinalPeriod->setValidator(new QIntValidator(1, 1000000, this));
ui->lineEdit_zuo_Fmin->setValidator(new QIntValidator(1, 1000000, this));
ui->lineEdit_zuo_Offsct->setValidator(new QIntValidator(1, 10, this));
ui->lineEdit_zuo_StepNum->setValidator(new QIntValidator(1, 10, this));
RefreshDevice();
}
void Dialog::RefreshDevice()
{
ui->comboBox_speedmode->clear();
m_usbinfo.clear();
m_usbinfo = UsbScan_List::find_all_usb();
if (m_usbinfo.size())
{
disconnect(ui->comboBox_online, SIGNAL(currentIndexChanged(int)), this, SLOT(on_comboBox_online_currentIndexChanged(int)));
ui->comboBox_online->clear();
connect(ui->comboBox_online, SIGNAL(currentIndexChanged(int)), this, SLOT(on_comboBox_online_currentIndexChanged(int)));
auto info = m_usbinfo.begin();
while (info != m_usbinfo.end())
{
QString strinfo = QString("vid04x1% pid04x%2").arg(QString::number(info->vid, 16)).arg(QString::number(info->pid, 16));
ui->comboBox_online->addItem(strinfo);
info++;
}
ui->comboBox_online->setCurrentIndex(0);
}
else {
QMessageBox::information(this, QString::fromLocal8Bit("<EFBFBD><EFBFBD>ʾ"), QString::fromLocal8Bit("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), QMessageBox::Ok);
}
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_pushButton_online_clicked()
{
RefreshDevice();
}
void Dialog::on_comboBox_online_currentIndexChanged(int index)
{
reinitdevice(m_usbinfo[index]);
if (m_usbinfo.size() && ((m_usbinfo.size() - 1) >= index))
{
if (m_dev->is_open())
m_dev->close();
m_dev->open(m_usbinfo[index].vid, m_usbinfo[index].pid);
}
}
void Dialog::on_pushButton_sp_get_clicked()
{
std::string Sp_json = m_dev->GetJson(cameraparam);
if (Sp_json.empty())
{
ui->lineEdit_sp->setText(QString::fromLocal8Bit("0"));
return;
}
auto param = DUNNAN_CorrectParam().GetFpgaparam(ui->comboBox_dpi->currentIndex() + 1, ui->comboBox_colormode->currentIndex() == 0 ? 1 : 0, json::parse(Sp_json));
ui->lineEdit_sp->setText(QString::number(param.Sp));
ui->lineEdit_exposureB_B->setText(QString::number(param.ExposureB[2]));
ui->lineEdit_exposureB_G->setText(QString::number(param.ExposureB[1]));
ui->lineEdit_exposureB_R->setText(QString::number(param.ExposureB[0]));
ui->lineEdit_exposureF_R->setText(QString::number(param.ExposureF[0]));
ui->lineEdit_exposureF_G->setText(QString::number(param.ExposureF[1]));
ui->lineEdit_exposureF_B->setText(QString::number(param.ExposureF[2]));
}
void Dialog::on_pushButton_sp_set_clicked()
{
if (!(ui->lineEdit_sp->text().size() && ui->lineEdit_exposureB_B->text().size() && ui->lineEdit_exposureB_G->text().size() && ui->lineEdit_exposureB_R->text().size() &&
ui->lineEdit_exposureF_R->text().size() && ui->lineEdit_exposureF_R->text().size() && ui->lineEdit_exposureF_R->text().size()))
return;
if (ui->lineEdit_sp->text().toUInt() < 100 && (ui->lineEdit_sp->text().toUInt() > 10000))
{
ui->lineEdit_sp->setText(QString::fromLocal8Bit("0"));
return;
}
std::string Sp_json = m_dev->GetJson(cameraparam);
if (Sp_json.size() < 1)
{
ui->lineEdit_sp->setText(QString::fromLocal8Bit("0"));
return;
}
auto param = DUNNAN_CorrectParam().GetFpgaparam(ui->comboBox_dpi->currentIndex() + 1, ui->comboBox_colormode->currentIndex() == 0 ? 1 : 0, json::parse(Sp_json));
param.Sp = ui->lineEdit_sp->text().toUInt();
param.ExposureB[2] = ui->lineEdit_exposureB_B->text().toUInt();
param.ExposureB[1] = ui->lineEdit_exposureB_G->text().toUInt();
param.ExposureB[0] = ui->lineEdit_exposureB_R->text().toUInt();
param.ExposureF[0] = ui->lineEdit_exposureF_R->text().toUInt();
param.ExposureF[1] = ui->lineEdit_exposureF_G->text().toUInt();
param.ExposureF[2] = ui->lineEdit_exposureF_B->text().toUInt();
m_dev->SetJson(cameraparam, DUNNAN_CorrectParam().SaveCorrectParam(param, json::parse(Sp_json)).dump());
}
void Dialog::on_pushButton_motor_get_clicked()
{
MotorSpeedParamEx param_cuo;
MotorSpeedParamEx param_zuo;
std::string mt_zuo_json;
std::string mt_cuo_json = m_dev->GetJson(ui->checkBox_motor_istmc->isChecked() ? MT_TMC216_CUO_PATH : MT_DRV888_CUO_PATH);
if (mt_cuo_json.empty()) {
goto Exit0;
}
param_cuo = MotorConfig().GetMotorSpeedParam(ui->comboBox_dpi->currentIndex() + 1, ui->comboBox_colormode->currentIndex() == 0 ? 1 : 0, ui->comboBox_speedmode->currentIndex() + 1, mt_cuo_json);
if (param_cuo.empty()) {
goto Exit0;
}
ui->lineEdit_cuo_A->setText(QString::number(param_cuo.mt_param.a));
ui->lineEdit_cuo_FinalDelay->setText(QString::number(param_cuo.mt_param.finalDelay));
ui->lineEdit_cuo_FinalPeriod->setText(QString::number(param_cuo.mt_param.finalPeriod));
ui->lineEdit_cuo_Fmin->setText(QString::number(param_cuo.mt_param.Fmin));
ui->lineEdit_cuo_Offsct->setText(QString::number(param_cuo.mt_param.offset));
ui->lineEdit_cuo_StepNum->setText(QString::number(param_cuo.mt_param.stepnum));
mt_zuo_json = m_dev->GetJson(ui->checkBox_motor_istmc->isChecked() ? MT_TMC216_ZOU_PATH : MT_DRV888_ZOU_PATH);
if (mt_zuo_json.empty()) {
goto Exit0;
}
param_zuo = MotorConfig().GetMotorSpeedParam(ui->comboBox_dpi->currentIndex() + 1, ui->comboBox_colormode->currentIndex() == 0 ? 1 : 0, ui->comboBox_speedmode->currentIndex() + 1, mt_zuo_json);
if (param_zuo.empty()) {
goto Exit0;
}
ui->lineEdit_zuo_A->setText(QString::number(param_zuo.mt_param.a));
ui->lineEdit_zuo_FinalDelay->setText(QString::number(param_zuo.mt_param.finalDelay));
ui->lineEdit_zuo_FinalPeriod->setText(QString::number(param_zuo.mt_param.finalPeriod));
ui->lineEdit_zuo_Fmin->setText(QString::number(param_zuo.mt_param.Fmin));
ui->lineEdit_zuo_Offsct->setText(QString::number(param_zuo.mt_param.offset));
ui->lineEdit_zuo_StepNum->setText(QString::number(param_zuo.mt_param.stepnum));
ui->lineEdit_sp->setText(QString::number(param_zuo.sp));
return;
Exit0:
{
ui->lineEdit_cuo_A->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_cuo_FinalDelay->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_cuo_FinalPeriod->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_cuo_Fmin->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_cuo_Offsct->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_cuo_StepNum->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_zuo_A->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_zuo_FinalDelay->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_zuo_FinalPeriod->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_zuo_Fmin->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_zuo_Offsct->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_zuo_StepNum->setText(QString::fromLocal8Bit("0"));
}
}
void Dialog::on_pushButton_motor_set_clicked()
{
MotorSpeedParamEx param_cuo;
MotorSpeedParamEx param_zuo;
std::string mt_zuo_json;
std::string mt_cuo_json;
mt_cuo_json = m_dev->GetJson(ui->checkBox_motor_istmc->isChecked() ? MT_TMC216_CUO_PATH : MT_DRV888_CUO_PATH);
if (mt_cuo_json.empty()) {
goto Exit0;
}
param_cuo = MotorConfig().GetMotorSpeedParam(ui->comboBox_dpi->currentIndex() + 1, ui->comboBox_colormode->currentIndex() == 0 ? 1 : 0, ui->comboBox_speedmode->currentIndex() + 1, mt_cuo_json);
if (param_cuo.empty()) {
goto Exit0;
}
param_cuo.mt_param.a = ui->lineEdit_cuo_A->text().toUInt();
param_cuo.mt_param.finalDelay = ui->lineEdit_cuo_FinalDelay->text().toUInt();
param_cuo.mt_param.finalPeriod = ui->lineEdit_cuo_FinalPeriod->text().toUInt();
param_cuo.mt_param.Fmin = ui->lineEdit_cuo_Fmin->text().toUInt();
param_cuo.mt_param.offset = ui->lineEdit_cuo_Offsct->text().toUInt();
param_cuo.mt_param.stepnum = ui->lineEdit_cuo_StepNum->text().toUInt();
m_dev->SetJson(ui->checkBox_motor_istmc->isChecked() ? MT_TMC216_CUO_PATH : MT_DRV888_CUO_PATH, MotorConfig().SetParams(param_cuo, json::parse(mt_cuo_json)).dump());
mt_zuo_json = m_dev->GetJson(ui->checkBox_motor_istmc->isChecked() ? MT_TMC216_ZOU_PATH : MT_DRV888_ZOU_PATH);
if (mt_zuo_json.empty()) {
goto Exit1;
}
param_zuo = MotorConfig().GetMotorSpeedParam(ui->comboBox_dpi->currentIndex() + 1, ui->comboBox_colormode->currentIndex() == 0 ? 1 : 0, ui->comboBox_speedmode->currentIndex() + 1, mt_zuo_json);
if (param_zuo.empty()) {
goto Exit1;
}
param_zuo.mt_param.a = ui->lineEdit_zuo_A->text().toUInt();
param_zuo.mt_param.finalDelay = ui->lineEdit_zuo_FinalDelay->text().toUInt();
param_zuo.mt_param.finalPeriod = ui->lineEdit_zuo_FinalPeriod->text().toUInt();
param_zuo.mt_param.Fmin = ui->lineEdit_zuo_Fmin->text().toUInt();
param_zuo.mt_param.offset = ui->lineEdit_zuo_Offsct->text().toUInt();
param_zuo.mt_param.stepnum = ui->lineEdit_zuo_StepNum->text().toUInt();
param_zuo.sp = ui->lineEdit_sp->text().toUInt();
m_dev->SetJson(ui->checkBox_motor_istmc->isChecked() ? MT_TMC216_ZOU_PATH : MT_DRV888_ZOU_PATH, MotorConfig().SetParams(param_zuo, json::parse(mt_zuo_json)).dump());
return;
Exit0:
{
ui->lineEdit_cuo_A->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_cuo_FinalDelay->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_cuo_FinalPeriod->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_cuo_Fmin->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_cuo_Offsct->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_cuo_StepNum->setText(QString::fromLocal8Bit("0"));
return;
}
Exit1:
{
ui->lineEdit_zuo_A->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_zuo_FinalDelay->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_zuo_FinalPeriod->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_zuo_Fmin->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_zuo_Offsct->setText(QString::fromLocal8Bit("0"));
ui->lineEdit_zuo_StepNum->setText(QString::fromLocal8Bit("0"));
}
}
void Dialog::reinitdevice(usb_scan_dev_info info)
{
if (m_dev.get())
m_dev.reset();
switch (info.pid) {
case 0x239:
ui->comboBox_speedmode->addItems({ "100ppm","110ppm","120ppm","130ppm" });
break;
case 0x139:
ui->comboBox_speedmode->addItems({ "70ppm","80ppm","90ppm","110ppm" });
break;
case 0x339:
case 0x0300:
ui->comboBox_speedmode->addItems({ "40ppm","50ppm","60ppm","70ppm" });
break;
case 0x439:
case 0x0400:
ui->comboBox_speedmode->addItems({ "40ppm","50ppm","60ppm","70ppm","80ppm" });
break;
default:
break;
}
if (info.pid == 0x0139 || info.pid == 0x0239 || info.pid == 0x0339 || info.pid == 0x0439)
m_dev.reset(new GScanO1003399());
else
m_dev.reset(new GScanO400());
}