speedcontroller/ui/dialog.cpp

275 lines
11 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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