#include "PulseNumFix.h" #include "ui_pulsenumfix.h" #include #include #include PulseNumFix::PulseNumFix(QWidget *parent) : QDialog(parent), ui(new Ui::PulseNumFix) { ui->setupUi(this); this->setWindowTitle(tr("脉冲数修正")); setUIEnableStatus(); connect(this,SIGNAL(accepted()),this,SLOT(onButtonBoxAccepted())); ui->lineEditRate->setValidator(new QDoubleValidator(0)); ui->lineEditActualSynLength->setValidator(new QDoubleValidator(0)); ui->lineEditLength->setValidator(new QDoubleValidator(0)); ui->lineEditPulseNum->setValidator(new QDoubleValidator(0)); ui->lineEditDiameter->setValidator(new QDoubleValidator(0)); ui->lineEditPulsePerCycle->setValidator(new QDoubleValidator(0)); this->setFixedSize(this->geometry().width(),this->geometry().height()); ui->radioButtonAccordingRate->hide(); ui->radioButtonAccordingPulseNum->hide(); } PulseNumFix::~PulseNumFix() { delete ui; } void PulseNumFix::bindSysPara(SysPara *sysPara) { this->sysPara = sysPara; } void PulseNumFix::setUIEnableStatus(){ ui->lineEditRate->setEnabled(ui->radioButtonAccordingRate->isChecked()); ui->labelRate->setEnabled(ui->radioButtonAccordingRate->isChecked()); ui->lineEditActualSynLength->setEnabled(ui->radioButtonAccordingLength->isChecked()); ui->labelActualSynLength->setEnabled(ui->radioButtonAccordingLength->isChecked()); ui->lineEditLength->setEnabled(ui->radioButtonAccordingPulseNum->isChecked()); ui->labelLength->setEnabled(ui->radioButtonAccordingPulseNum->isChecked()); ui->lineEditPulseNum->setEnabled(ui->radioButtonAccordingPulseNum->isChecked()); ui->labelPulseNum->setEnabled(ui->radioButtonAccordingPulseNum->isChecked()); ui->lineEditDiameter->setEnabled(ui->radioButtonSynchonizerPara->isChecked()); ui->labelDiameter->setEnabled(ui->radioButtonSynchonizerPara->isChecked()); ui->lineEditPulsePerCycle->setEnabled(ui->radioButtonSynchonizerPara->isChecked()); ui->labelPulsePerCycle->setEnabled(ui->radioButtonSynchonizerPara->isChecked()); } void PulseNumFix::onButtonBoxAccepted() { float pulseNumPerMM = 0; if(sysPara){ if(ui->radioButtonAccordingRate->isChecked()){ float rate = ui->lineEditRate->text().toFloat(); if(rate != 0){ pulseNumPerMM = sysPara->status.synPulseCntPer1s/rate; } else { QMessageBox::critical(0,tr("错误"),tr("速度不应该为0")); } } else if(ui->radioButtonAccordingLength->isChecked()){ float length = ui->lineEditActualSynLength->text().toFloat(); if(length != 0){ pulseNumPerMM = sysPara->para.synPulseNumPerMm * sysPara->para.synTriggerPrintLenMm / length; } else { QMessageBox::critical(0,tr("错误"),tr("实际同步长度不应该为0")); } } else if(ui->radioButtonAccordingPulseNum->isChecked()){ float length = ui->lineEditLength->text().toFloat(); float pulse = ui->lineEditPulseNum->text().toFloat(); if(length != 0){ pulseNumPerMM = pulse/length; } else { QMessageBox::critical(0,tr("错误"),tr("长度不应该为0")); } } else if(ui->radioButtonSynchonizerPara->isChecked()){ float circle = ui->lineEditDiameter->text().toFloat() * 3.1415926; float pulseNum = ui->lineEditPulsePerCycle->text().toFloat(); if(circle != 0){ pulseNumPerMM = 4*pulseNum/circle; //电路和Fpga做了4倍频处理,这里乘以4是为了匹配4倍频的处理进行正确的显示 }else { QMessageBox::critical(0,tr("错误"),tr("直径不应该为0")); } } if(pulseNumPerMM != 0){ emit pulseNuxFixDone(pulseNumPerMM); } } } void PulseNumFix::on_radioButtonAccordingRate_released() { setUIEnableStatus(); } void PulseNumFix::on_radioButtonAccordingLength_released() { setUIEnableStatus(); } void PulseNumFix::on_radioButtonAccordingPulseNum_released() { setUIEnableStatus(); } void PulseNumFix::on_radioButtonSynchonizerPara_released() { setUIEnableStatus(); }