#include "dialog.h" #include "ui_dialog.h" #include #include #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("提示"), QString::fromLocal8Bit("未找到设备!"), 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()); }