#include "SystemSetting.h" #include "ui_systemsetting.h" #include #include #include #include #include #include #include #include #include "LogInfo.h" #include "myinclude.h" #include "QInputDialog" #include "dlgmutilanguage.h" //#define FINDVOL #include "InputMethod.h" static int detectValidHVCnt = 0; SystemSetting::SystemSetting(QWidget *parent) : QWidget(parent),progressBar(0), ui(new Ui::SystemSetting) { ui->setupUi(this); progressBar.setGeometry(200,200,300,40); //将其放在最中间 progressBar.hide(); timer = new QTimer(); connect(timer, SIGNAL(timeout()), this, SLOT(timerHandler())); timer2 = new QTimer(); connect(timer2, SIGNAL(timeout()), this, SLOT(timerHandler2())); //setInterfaceMode(); enCleanUpAppendFlag=0; // 0空闲,1关开回收槽,2手动,3清洗,4恢复,5停止,6 //ui->label_PulseCounterZero->hide();//隐藏界面无用信息 //ui->labelPulseCounterAtZero->hide();//隐藏界面无用信息 #ifdef SYSMIMA dialogUpateMm =new DialogAuthorization; connect(dialogUpateMm,SIGNAL(accepted()),this,SLOT(ondialogAuthorizationAccepted())); #endif // ui->pushButtonCleanUP->hide(); } SystemSetting::~SystemSetting() { delete ui; delete timer; delete timer2; } void SystemSetting::SystemupdateSysParaToUI(){ updateSysParaToUI(); } void SystemSetting::on_pushButtonApply_pressed() { applyUIPara(); SystemSettingLog(); } void SystemSetting::SystemSettingLog(){ qDebug()<spinBoxOscillatorVoltage->value()); qDebug()<spinBoxHighVoltageLevel->value()); qDebug()<spinBoxReclaimPumpPower->value()); qDebug()<ViscosityAdujstSelect->currentIndex()); qDebug()<spinBoxPumpInterval->value()); qDebug()<spinBoxReclaimTankTime->value()); qDebug()<spinBoxSeptalPostion->value()); qDebug()<comboBoxDiaphramOffset->currentIndex()); qDebug()<comboBoxEditMode->currentIndex()); qDebug()<spinBoxPressure->value()); qDebug()<spinBoxVIscosity->value()); qDebug()<spinBoxTemperature->value()); qDebug()<comboBoxOscillatorFreq->currentIndex()); qDebug()<spinBoxOscillatorFreqFix->value()); qDebug()<comboBoxDiameter->currentIndex()); } void SystemSetting::updateSysParaToUI(){ if(sysPara){ ui->spinBoxHighVoltageLevel->setValue(sysPara->para.highVoltageLevel); ui->spinBoxOscillatorVoltage->setValue((sysPara->para.oscillatorVoltage)); ui->spinBoxPressure->setValue(sysPara->para.pressure); ui->spinBoxPumpInterval->setValue(sysPara->para.viscosityPumpInterval); ui->spinBoxReclaimPumpPower->setValue(sysPara->para.reclaimPumpPWMWidth); ui->spinBoxReclaimTankTime->setValue(sysPara->para.reclaimTankTime); ui->spinBoxTemperature->setValue(sysPara->para.temperature); ui->spinBoxFanTemperature->setValue(sysPara->para.FanTemperature); ui->spinBoxVIscosity->setValue( sysPara->para.viscosity); ui->ViscosityAdujstSelect->setCurrentIndex(sysPara->para.viscosityAdjust); ui->comboBoxOscillatorFreq->setCurrentIndex(sysPara->para.oscillatoFreq); ui->spinBoxOscillatorFreqFix->setValue(sysPara->para.oscillatorFreqFix); ui->spinBoxSeptalPostion->setValue(sysPara->para.septalPostion); ui->comboBoxDiameter->setCurrentIndex(sysPara->para.diameter); ui->comboBoxDiaphramOffset->setCurrentIndex(sysPara->para.diaphramOffset/5-1); if(sysPara->para.EditMode>SCENE) sysPara->para.EditMode=TXTFILE; ui->comboBoxEditMode->setCurrentIndex(sysPara->para.EditMode); } } int convertFreq(int index){ // qDebug()<<"index="<para.highVoltageLevel = ui->spinBoxHighVoltageLevel->value(); sysPara->para.oscillatorVoltage = ui->spinBoxOscillatorVoltage->value(); sysPara->para.pressure = ui->spinBoxPressure->value(); gearPumpRunNormalFlag = false;//重新设置压力标志设置 sysPara->para.viscosityPumpInterval = ui->spinBoxPumpInterval->value(); sysPara->para.reclaimPumpPWMWidth = ui->spinBoxReclaimPumpPower->value(); sysPara->para.reclaimTankTime = ui->spinBoxReclaimTankTime->value(); sysPara->para.temperature = ui->spinBoxTemperature->value(); sysPara->para.viscosity = ui->spinBoxVIscosity->value(); //sysPara->para.viscosityAdjust = ui->spinBoxViscosityAdjust->value(); sysPara->para.viscosityAdjust = ui->ViscosityAdujstSelect->currentIndex(); sysPara->para.oscillatoFreq = ui->comboBoxOscillatorFreq->currentIndex(); sysPara->para.oscillatorFreqFix = ui->spinBoxOscillatorFreqFix->value(); sysPara->para.EditMode = ui->comboBoxEditMode->currentIndex(); sysPara->para.diameter = ui->comboBoxDiameter->currentIndex();// qDebug()<<"EditMode1"<para.EditMode; int freq = sysPara->para.oscillatorFreqFix+ convertFreq(sysPara->para.oscillatoFreq); if(freq > 0){ sysPara->para.divideRatio = (FPGA_SYS_HZ/freq)/2; } else { QMessageBox::critical(this,tr("错误"),tr("实际频率不能为%1").arg(freq)); } sysPara->para.FanTemperature = ui->spinBoxFanTemperature->value(); sysPara->para.septalPostion = ui->spinBoxSeptalPostion->value(); quint16 diaphramOffset = 5*(ui->comboBoxDiaphramOffset->currentIndex()+1); sysPara->para.diaphramOffset = diaphramOffset; //sysPara->para.mixValveisNewVersion = ui->radioButtonMixValveNewVersion->isChecked(); if(sysPara->devOp->writeFpgaPrintPara() != -1){ QMessageBox::information(this,tr("提示"),tr("应用成功")); } emit changeEditMode(sysPara->para.EditMode); //qDebug()<<"EditMode"<para.EditMode; } } void SystemSetting::updateSysStatusToUI(){ if(sysPara){ ui->pushButtonHighVoltageData->setEnabled( sysPara->status.currReclaimTankPos <5 ); //ui->pushButtonHighVoltageData->setEnabled( !sysPara->status.isPrinting); ui->spinBoxPressure->setEnabled( !sysPara->status.isPrinting); ui->labelHighVoltageValue->setText(QString::number(sysPara->status.HV_DETOUT) + "/" + QString::number(sysPara->para.maxHighVoltageDAC)); //ui->labelHighVoltageValue->setText(QString::number(sysPara->status.HV_DETOUT) + "/" + "600");//FPGA那边已固定600 ui->labelMotorCurrent->setText(QString::number(sysPara->status.MOTOR_ISEN)); ui->labelPressure->setText(QString::number(sysPara->status.PRESSURE)); ui->labelTemperature->setText(QString::number(sysPara->status.TEMP_ADIN/4)); ui->labelPulseCounter->setText(QString::number(sysPara->status.synTotalPulseCnt)); //ui->label_PulseCounterZero->setText(QString::number(sysPara->status.xor_sync.sync_counter_at_zero)); // if( sysPara->status.viscosityFaultCnt || sysPara->status.rWarnViscoReady ) // sysPara->status.viscosity = 0;//sysPara->status.rWarnViscoReady ui->labelVIscosity->setText(QString::number(sysPara->status.viscosity)); ui->labelReclaimTankCloseTime->setText(QString::number(sysPara->status.currReclaimTankPos/10)); //ui->labelTotalPulseNum->setText(QString::number(sysPara->status.synTotalPulseCnt));//不需要显示 ui->labelSpetalPosition->setText(QString::number(sysPara->status.SEPTAL_POSITION)); if(sysPara->para.gearPumpEnable) { setSpinBoxPressureMaxValue(900); } else { setSpinBoxPressureMaxValue(5000); } if(!sysPara->para.isCheckMagnet) { ui->pushButtonCleanUP->setEnabled( (sysPara->status.currReclaimTankPos<70) && (sysPara->status.statWarn & WARN_STATUS_HDINT)); // sysPara->status.currReclaimTankPos } else { ui->pushButtonCleanUP->setEnabled( (sysPara->status.currReclaimTankPos<70) ); } if(sysPara->status.currReclaimTankPos<55 && sysPara->status.currReclaimTankPos>44 && enCleanUpAppendFlag==2) { if(timer2->isActive()) timer2->stop(); enCleanUpAppendFlag=3; sysPara->devOp->controlReclaimTankOpen(0); emit onCleanUPNow();// start cleanup } else if(sysPara->status.currReclaimTankPos >0 && enCleanUpAppendFlag==4) //? { enCleanUpAppendFlag=5; //sysPara->devOp->controlReclaimTankClose(1); //ui->label_status->setText(tr("正在关回收槽......")); } else if(sysPara->status.currReclaimTankPos ==0 && (enCleanUpAppendFlag==5 ||enCleanUpAppendFlag==4)) //? { if(sysPara->status.reclaimCloseCnt)sysPara->status.reclaimCloseCnt--; else { sysPara->devOp->controlReclaimTankOpen(0); timerHandler2(); if(timer2->isActive()) timer2->stop(); enCleanUpAppendFlag=0; } } else { } } } void SystemSetting::on_pushButtonCleanUP_pressed() { if(sysPara){ QMessageBox msgBox(QMessageBox::Information,tr("提示"),tr("自动清洗时间约为一分钟,然后自动停止")); QPushButton *cleanButton; QPushButton *cancleCleanButton; cleanButton=NULL; cancleCleanButton=NULL; r_PumpValveControledByHand = false; if( enCleanUpAppendFlag==0) cleanButton = msgBox.addButton(tr("开始清洗"), QMessageBox::ActionRole); else cancleCleanButton = msgBox.addButton(tr("停止清洗"), QMessageBox::ActionRole); msgBox.addButton(QMessageBox::Cancel); msgBox.exec(); if (msgBox.clickedButton() == cleanButton) { r_PumpValveControledByHand = sysPara->status.isPumpValveControledByHand; //ui->label_status->setText(tr("正在进入手动模式......")); sysPara->status.isPumpValveControledByHand=true; sysPara->devOp->controlCompressPump(false); sysPara->devOp->controlCycleValve(true); sysPara->devOp->controlInkValve(false); sysPara->devOp->controlInkValvePWM(false); sysPara->devOp->controlMainInkPump(false); sysPara->devOp->controlMixValve(false); sysPara->devOp->controlReclaimPump(true,true); sysPara->devOp->controlViscosityPump(false); sysPara->devOp->controlReleaseValve(false); enCleanUpAppendFlag=1;// 开始启动手动模式 sysPara->devOp->mainInkCtrl(); timer2->start(2000); // 暂时循环一下2s } else if (msgBox.clickedButton() == cancleCleanButton) { enCleanUpAppendFlag=3; timerHandler2(); return ; } } } void SystemSetting::onCleanUPNow() { if(sysPara){ //QMessageBox msgBox(QMessageBox::Information,tr("提示"),tr("如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗")); //QPushButton *cleanButton = msgBox.addButton(tr("开始清洗"), QMessageBox::ActionRole); //QPushButton *cancleCleanButton = msgBox.addButton(tr("停止清洗"), QMessageBox::ActionRole); //msgBox.addButton(QMessageBox::Cancel); //msgBox.exec(); //if (msgBox.clickedButton() == cleanButton) { //ui->label_status->setText(tr("正在喷嘴逆清洗......")); emit setRunStatus(tr("正在喷嘴逆清洗......")); sysPara->devOp->controlCycleValve(true); //if(!sysPara->para.gearPumpEnable)//齿轮泵机器清洗时不开粘度泵 { sysPara->devOp->controlViscosityPump(true); } sysPara->devOp->controlReclaimPump(false,false); timer2->start(60000); //} else if (msgBox.clickedButton() == cancleCleanButton) { // timerHandler2(); // 3 //} //else { // timerHandler2(); // 3 //} } } void SystemSetting::timerHandler2(){ if(sysPara){ if(enCleanUpAppendFlag==1) { //2s循环结束 sysPara->devOp->controlCycleValve(false); sysPara->devOp->controlReclaimPump(false,false); if(timer2->isActive()) timer2->stop(); // 已经进入手动模式了 // 判断回收槽位置,并控制回收槽打开10mm以上; enCleanUpAppendFlag=2; if(sysPara->status.currReclaimTankPos<45) { sysPara->devOp->controlReclaimTankOpen(1); //ui->label_status->setText(tr("正在开回收槽......")); } else if(sysPara->status.currReclaimTankPos>55){ sysPara->devOp->controlReclaimTankClose(1); //ui->label_status->setText(tr("正在关回收槽......")); } timer2->start(5500); } else if(enCleanUpAppendFlag==2) // 正在开回收槽 { if(timer2->isActive()) timer2->stop(); enCleanUpAppendFlag=3; sysPara->devOp->controlReclaimTankOpen(0); emit onCleanUPNow();// start cleanup } else if(enCleanUpAppendFlag==3){// 清洗完成 enCleanUpAppendFlag=4; //ui->label_status->setText(tr("清洗完成")); emit setRunStatus(tr("清洗完成")); sysPara->devOp->controlCycleValve(false); sysPara->devOp->controlViscosityPump(false); sysPara->devOp->controlReclaimTankClose(1); sysPara->status.reclaimCloseCnt=10; if(timer2->isActive()) timer2->stop(); timer2->start(8300); // close reclaimTandk } else if(enCleanUpAppendFlag==4){ if(sysPara->status.currReclaimTankPos==0){ enCleanUpAppendFlag=0; if(timer2->isActive()) timer2->stop(); //ui->label_status->setText(""); sysPara->devOp->controlReclaimTankClose(0); //sysPara->status.isPumpValveControledByHand = r_PumpValveControledByHand; // sysPara->devOp->mainInkCtrl(); } sysPara->status.isPumpValveControledByHand = false; sysPara->devOp->mainInkCtrl(); } else if(enCleanUpAppendFlag==5){ if(timer2->isActive()) timer2->stop();enCleanUpAppendFlag=0; //ui->label_status->setText(""); sysPara->devOp->controlReclaimTankClose(0); sysPara->status.isPumpValveControledByHand =false; sysPara->devOp->mainInkCtrl(); } else if(enCleanUpAppendFlag==6){ if(timer2->isActive()) timer2->stop();enCleanUpAppendFlag=0; //ui->label_status->setText(""); sysPara->status.isPumpValveControledByHand =false ; } else {if(timer2->isActive()) timer2->stop();} } } void SystemSetting::on_spinBoxReclaimPumpPower_valueChanged(int arg1) { Q_UNUSED(arg1); if(sysPara){ if(sysPara->devOp->isReclaimPumpOpen()){ //在当前是开的情况下重设pwm sysPara->para.reclaimPumpPWMWidth = ui->spinBoxReclaimPumpPower->value(); sysPara->devOp->controlReclaimPump(true,false); } } } void SystemSetting::on_pushButtonHighVoltageData_pressed() { #if 0//def SYSMIMA if(sysPara->status.adjHightVolInitEN==0){ dialogUpateMm->clearAuth(); dialogUpateMm->show(); } else ondialogAuthorizationAccepted(); #else ondialogAuthorizationAccepted(); #endif } //void ondialogAuthorizationAccepted(); void SystemSetting::ondialogAuthorizationAccepted() { if(sysPara){ QMessageBox::StandardButton ret; #ifdef SYSMIMA if(sysPara->status.adjHightVolInitEN==0){ //QString authString= dialogUpateMm->getAuth(); //if(authString == "07710665") { sysPara->status.adjHightVolInitEN =1; } // else { // QMessageBox::warning(this,tr("提示"),tr(+"密码不正确!"),QMessageBox::Ok); // sysPara->status.adjHightVolInitEN =0; // return ; // } } //if(sysPara->status.adjHightVolInitEN==0) return; #endif ret = QMessageBox::information(this, tr("Application"), tr("是否更新高压包电流数据?"), QMessageBox::Ok | QMessageBox::Cancel); if (ret == QMessageBox::Ok){ if((sysPara->status.statWarn & WARN_STATUS_HDINT)){ QMessageBox::information(this,tr("错误"),tr("喷头盖未关,请先关喷头盖!")); return ; } sysPara->status.detectHighVoltageAppending = true; sysPara->status.detectedValidHighVoltage = false; sysPara->status.detectHighVoltageCnt = 0; detectValidHVCnt = 0; progressBar.setMaximum (ARRAY_SIZE(sysPara->para.highVoltageRecord)); progressBar.setMinimum (0); progressBar.setValue(sysPara->status.detectHighVoltageCnt); progressBar.show(); timer->start(1000); //ui->label_HVFlag->setText(tr("")); sysPara->para.set_HVData_Flag = 1; // sysPara->devOp->writeFpgaPrintPara(true); //--sysPara->devOp->setCtrlFlags(); //qDebug()<<"set_HVData_Flag"<para.set_HVData_Flag ; } } } //#define VOLDIV 5 // 原来的值 //#define VOLNUM 20 // 原来的值 #define VOLDIV 2 // 测试的值 #define VOLNUM 50 // 测试的值 void SystemSetting::on_pushButtonSearchBestOscillatorVoltage_pressed() { if(sysPara){ if((sysPara->status.statWarn & WARN_STATUS_INK_SWINT)){ QMessageBox::information(this,tr("错误"),tr("墨线开关未开,请先打开墨线开关!")); return ; } if((sysPara->status.statWarn & WARN_STATUS_HDINT)){ QMessageBox::information(this,tr("错误"),tr("喷头盖未关,请先关喷头盖!")); return ; } if(!sysPara->status.reclainTankReachEnd){ QMessageBox::information(this,tr("错误"),tr("回收槽未全部打开!")); return ; } QMessageBox::StandardButton ret; ret = QMessageBox::information(this, tr("Application"), tr("自动搜索耗时较长,期间请不要进行其他操作,是否确认自动搜索最佳晶振电压?"), QMessageBox::Ok | QMessageBox::Cancel); if (ret == QMessageBox::Ok){ sysPara->devOp->printCtrl(PRINT_CTRL_STOP); //停止打印 sysPara->devOp->highVoltageCtrl(0); // 关高压 progressBar.setMaximum (VOLNUM); progressBar.setMinimum (0); progressBar.setValue(0); progressBar.show(); sysPara->status.detectBestOscillatorVoltageAppending = true; sysPara->status.currentDetectBestOscillatorCnt = 0; sysPara->status.longestPhaseHightLevelTm = 0; sysPara->status.detectedBestOscillatorVoltage = 0; sysPara->devOp->setOscillatorVoltage(0); timer->start(6000); } } } void SystemSetting::on_pushButtonSearchBestOscillatorFreq_pressed() { if(sysPara){ if((sysPara->status.statWarn & WARN_STATUS_INK_SWINT)){ QMessageBox::information(this,tr("错误"),tr("墨线开关未开,请先打开墨线开关!")); return ; } if((sysPara->status.statWarn & WARN_STATUS_HDINT)){ QMessageBox::information(this,tr("错误"),tr("喷头盖未关,请先关喷头盖!")); return ; } if(!sysPara->status.reclainTankReachEnd){ QMessageBox::information(this,tr("错误"),tr("回收槽未全部打开!")); return ; } QMessageBox::StandardButton ret; ret = QMessageBox::information(this, tr("Application"), tr("自动搜索耗时较长,是否确认自动搜索当前频率2K范围内最佳晶振频率?"), QMessageBox::Ok | QMessageBox::Cancel); if (ret == QMessageBox::Ok){ sysPara->devOp->printCtrl(PRINT_CTRL_STOP); //停止打印 sysPara->devOp->highVoltageCtrl(0); // 关高压 progressBar.setMaximum (20); progressBar.setMinimum (0); progressBar.setValue(0); progressBar.show(); if(sysPara->para.divideRatio){ sysPara->status.detectedStartOscillatorFreq = FPGA_SYS_HZ/(2*sysPara->para.divideRatio); sysPara->status.detectedStartOscillatorFreq -= 2000; } else { sysPara->status.detectedStartOscillatorFreq = 63000; } if(sysPara->status.detectedStartOscillatorFreq < 50000 || sysPara->status.detectedStartOscillatorFreq > 110000){ QMessageBox::critical(this, tr("错误"), tr("搜索的起始频率%1 HZ超出范围?").arg(sysPara->status.detectedStartOscillatorFreq)); return ; } sysPara->status.detectBestOscillatorFreqAppending = true; sysPara->status.currentDetectBestOscillatorCnt = 0; sysPara->status.longestPhaseHightLevelTm = 0; sysPara->status.detectedBestOscillatorFreq = sysPara->status.detectedStartOscillatorFreq; sysPara->devOp->setDivideRatio(0); timer->start(6000); } } } //排序函数 void bubbleSort(unsigned short arr[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } void SystemSetting::timerHandler(){ if(sysPara){ /*-------------------------------------高压检测-----------------------------------*/ if(sysPara->status.detectHighVoltageAppending){ #if 1 if(sysPara->status.detectHighVoltageCnt < ARRAY_SIZE(sysPara->para.highVoltageRecord)-1){ sysPara->para.highVoltageRecord[sysPara->status.detectHighVoltageCnt] = sysPara->status.detectHighVoltageCnt?sysPara->status.HV_DETOUT:0; sysPara->devOp->maxHighVoltageDACCtrl(0); //将其detectHighVoltageCnt设置为零,不处理高压故障 sysPara->devOp->resumeFault(); //如果有高压故障,恢复高压故障 progressBar.setValue(sysPara->status.detectHighVoltageCnt); /* 应要求去掉多余到信息*/ LogInfo::setRunStatusText(QString("High voltage %1 --- value %2") .arg(sysPara->status.detectHighVoltageCnt).arg(sysPara->para.highVoltageRecord[sysPara->status.detectHighVoltageCnt])); if(sysPara->para.highVoltageRecord[sysPara->status.detectHighVoltageCnt] > 30) //起始电压太小不算 { if(sysPara->status.detectedValidHighVoltage) sysPara->status.detectHighVoltageCnt ++; else{ //从无到有第一次检测高压的话,计数不加1 } sysPara->status.detectedValidHighVoltage = true; } else sysPara->status.detectHighVoltageCnt ++; #ifdef __HV_FOR_WANG_DEBUG__ int actHvAmp = sysPara->status.detectHighVoltageCnt*10; #if 0 float tempHvAmp;// = sysPara->para.HighVoltageAmplitude * 1.73; if(sysPara->status.detectHighVoltageCnt*10 == 0) { tempHvAmp = 0; } else if(sysPara->status.detectHighVoltageCnt*10 == 1) { tempHvAmp = 63.5; } else { tempHvAmp = 63.5 + (sysPara->status.detectHighVoltageCnt*10 - 1) * 0.51; } sysPara->devOp->highVoltageCtrl(tempHvAmp); #endif //sysPara->para.HighVoltageAmplitude = (unsigned char)tempHvAmp; sysPara->devOp->highVoltageCtrl(actHvAmp); sysPara->para.HighVoltageAmplitude = actHvAmp; #else sysPara->devOp->highVoltageCtrl(sysPara->status.detectHighVoltageCnt*10); #endif #else if(detectValidHVCnt < ARRAY_SIZE(sysPara->para.highVoltageRecord) && sysPara->status.detectHighVoltageCnt<16){ // sysPara->para.highVoltageRecord[detectValidHVCnt] = // detectValidHVCnt?sysPara->status.HV_DETOUT:0; sysPara->para.highVoltageRecord[detectValidHVCnt] = sysPara->status.HV_DETOUT; sysPara->devOp->maxHighVoltageDACCtrl(0); //将其detectHighVoltageCnt设置为零,不处理高压故障 sysPara->devOp->resumeFault(); //如果有高压故障,恢复高压故障 progressBar.setValue(detectValidHVCnt); /* 应要求去掉多余到信息 LogInfo::setRunStatusText(QString("High voltage %1 --- value %2") .arg(sysPara->status.detectHighVoltageCnt).arg(sysPara->para.highVoltageRecord[sysPara->status.detectHighVoltageCnt])); */ //if(sysPara->para.highVoltageRecord[detectValidHVCnt] > 30) //起始电压太小不算 if(sysPara->status.HV_DETOUT > 30) //起始电压太小不算 { // if(sysPara->status.detectedValidHighVoltage) // detectValidHVCnt ++; // else{ //从无到有第一次检测高压的话,计数不加1 // } // sysPara->status.detectedValidHighVoltage = true; detectValidHVCnt ++; } //else sysPara->status.detectHighVoltageCnt ++; sysPara->devOp->highVoltageCtrl(sysPara->status.detectHighVoltageCnt*6); #endif }else { sysPara->para.highVoltageRecord[9] = sysPara->para.highVoltageRecord[8]; sysPara->status.detectHighVoltageAppending = 0; LogInfo::setRunStatusText(tr("高压设置完成")); sysPara->para.set_HVData_Flag = 0; // sysPara->devOp->writeFpgaPrintPara(true); //在这里面不能产生阻塞 progressBar.hide(); timer->stop(); } } else if(sysPara->status.detectBestOscillatorFreqAppending){ sysPara->devOp->readPhaseDetectHighTm(); int longestPhaseHightLevelTm = 0; if(!sysPara->status.detect_phase_error && !sysPara->status.flight_tm_error ){ #if 0 for(unsigned int i = 0; i < ARRAY_SIZE(sysPara->status.phaseDetectHighTm); i++){ if(sysPara->status.phaseDetectHighTm[i] > longestPhaseHightLevelTm){ longestPhaseHightLevelTm = sysPara->status.phaseDetectHighTm[i]; } } #else int n = ARRAY_SIZE(sysPara->status.phaseDetectHighTm); bubbleSort(sysPara->status.phaseDetectHighTm, n); int sum = 0; for (int i= 1; i < n -1; i++) { sum += sysPara->status.phaseDetectHighTm[i]; } longestPhaseHightLevelTm = sum / (n-2); #endif } LogInfo::setRunStatusText(tr("Oscillator Freq %1 --- 最长高电平时钟 %2") .arg( sysPara->status.detectedStartOscillatorFreq + sysPara->status.currentDetectBestOscillatorCnt*200).arg(longestPhaseHightLevelTm)); if(longestPhaseHightLevelTm > sysPara->status.longestPhaseHightLevelTm){ sysPara->status.longestPhaseHightLevelTm = longestPhaseHightLevelTm; sysPara->status.detectedBestOscillatorFreq = sysPara->status.detectedStartOscillatorFreq + sysPara->status.currentDetectBestOscillatorCnt*200; } sysPara->status.currentDetectBestOscillatorCnt++; sysPara->devOp->setDivideRatio((FPGA_SYS_HZ/(sysPara->status.detectedStartOscillatorFreq + sysPara->status.currentDetectBestOscillatorCnt*200))/2); progressBar.setValue(sysPara->status.currentDetectBestOscillatorCnt); if(sysPara->status.currentDetectBestOscillatorCnt == 20){ //100分了20份 sysPara->status.detectBestOscillatorFreqAppending= false; int bestRatio = (FPGA_SYS_HZ/(sysPara->status.detectedBestOscillatorFreq))/2; /*------------------------------------------------------------------------------------*/ ui->spinBoxOscillatorFreqFix->setValue(sysPara->status.detectedBestOscillatorFreq - convertFreq(sysPara->para.oscillatoFreq)); sysPara->para.oscillatorFreqFix = sysPara->status.detectedBestOscillatorFreq - convertFreq(sysPara->para.oscillatoFreq); /*------------------------------------------------------------------------------------*/ sysPara->devOp->setDivideRatio(bestRatio); sysPara->para.divideRatio = bestRatio; progressBar.hide(); timer->stop(); LogInfo::setRunStatusText(tr("最佳晶振频率完成")); } } #ifdef FINDVOL else if(sysPara->status.detectBestOscillatorVoltageAppending){// 最佳晶振电压 sysPara->devOp->readPhaseDetectHighTm(); int longestPhaseHightLevelTm = 0; if(!sysPara->status.detect_phase_error && !sysPara->status.flight_tm_error ){ for(int i = 0; i < ARRAY_SIZE(sysPara->status.phaseDetectHighTm); i++){ if(sysPara->status.phaseDetectHighTm[i] > longestPhaseHightLevelTm){ longestPhaseHightLevelTm = sysPara->status.phaseDetectHighTm[i]; } } } LogInfo::setRunStatusText(tr("Oscillator voltage %1 --- 最长高电平时钟 %2") .arg(sysPara->status.currentDetectBestOscillatorCnt*3).arg(longestPhaseHightLevelTm)); if(longestPhaseHightLevelTm > sysPara->status.longestPhaseHightLevelTm){ sysPara->status.longestPhaseHightLevelTm = longestPhaseHightLevelTm; sysPara->status.detectedBestOscillatorVoltage = sysPara->status.currentDetectBestOscillatorCnt*3; } sysPara->status.currentDetectBestOscillatorCnt++; sysPara->devOp->setOscillatorVoltage(sysPara->status.currentDetectBestOscillatorCnt*3); progressBar.setValue(sysPara->status.currentDetectBestOscillatorCnt); if(sysPara->status.currentDetectBestOscillatorCnt == 32){ //分了32份 sysPara->status.detectBestOscillatorVoltageAppending = false; ui->spinBoxOscillatorVoltage->setValue(sysPara->status.detectedBestOscillatorVoltage); sysPara->devOp->setOscillatorVoltage(sysPara->status.detectedBestOscillatorVoltage); sysPara->para.oscillatorVoltage = sysPara->status.detectedBestOscillatorVoltage; progressBar.hide(); timer->stop(); LogInfo::setRunStatusText(tr("最佳晶振电压完成")); } } #else else if(sysPara->status.detectBestOscillatorVoltageAppending){// 最佳晶振电压 sysPara->devOp->readPhaseDetectHighTm(); int longestPhaseHightLevelTm = 0; if(!sysPara->status.detect_phase_error && !sysPara->status.flight_tm_error ){ for(unsigned int i = 0; i < ARRAY_SIZE(sysPara->status.phaseDetectHighTm); i++){ if(sysPara->status.phaseDetectHighTm[i] > longestPhaseHightLevelTm){ longestPhaseHightLevelTm = sysPara->status.phaseDetectHighTm[i]; } } } LogInfo::setRunStatusText(tr("Oscillator voltage %1 --- 最长高电平时钟 %2") .arg(sysPara->status.currentDetectBestOscillatorCnt*VOLDIV).arg(longestPhaseHightLevelTm)); if(longestPhaseHightLevelTm > sysPara->status.longestPhaseHightLevelTm){ sysPara->status.longestPhaseHightLevelTm = longestPhaseHightLevelTm; sysPara->status.detectedBestOscillatorVoltage = sysPara->status.currentDetectBestOscillatorCnt*VOLDIV; } sysPara->status.currentDetectBestOscillatorCnt++; sysPara->devOp->setOscillatorVoltage(sysPara->status.currentDetectBestOscillatorCnt*VOLDIV); progressBar.setValue(sysPara->status.currentDetectBestOscillatorCnt); if(sysPara->status.currentDetectBestOscillatorCnt == VOLNUM){ //分了20份 sysPara->status.detectBestOscillatorVoltageAppending = false; ui->spinBoxOscillatorVoltage->setValue(sysPara->status.detectedBestOscillatorVoltage); sysPara->devOp->setOscillatorVoltage(sysPara->status.detectedBestOscillatorVoltage); sysPara->para.oscillatorVoltage = sysPara->status.detectedBestOscillatorVoltage; progressBar.hide(); timer->stop(); LogInfo::setRunStatusText(tr("最佳晶振电压完成")); } } #endif } } void SystemSetting::updateReclaimTime(int time){ if(sysPara){ ui->spinBoxReclaimTankTime->setValue(time); } } void SystemSetting::updateViscosityAdjust(int offset){ if(sysPara){ int viscostyRealValue; if(offset>0) { if(offset>5) offset = 5; if(sysPara->para.viscosityAdjust==1)//0.6% { //viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*3)/5/100; viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*3)/500; } else if(sysPara->para.viscosityAdjust==2)//1.0% { //viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*5)/5/100; viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*offset/100; } else if(sysPara->para.viscosityAdjust==3)//1.6% { //viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*8)/5/100; viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*offset*8/500; } else if(sysPara->para.viscosityAdjust==4)//2.0% { //viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*(offset*10)/5/100; viscostyRealValue = sysPara->para.viscosity - sysPara->para.viscosity*offset*2/100; } else { viscostyRealValue = sysPara->para.viscosity; } } else { viscostyRealValue = sysPara->para.viscosity; } if(sysPara->para.viscosityAdjust!=0) { ui->ViscosityAdjustText->setText(QString("%1").arg(viscostyRealValue)); } } } void SystemSetting::updateAuthorization(int auth){ Q_UNUSED(auth); if(sysPara){ //ui->labelMixValveVersion->setVisible(PRODUCT_VERSION(sysPara->status.fpgaVersionNum) == JETV1); //ui->radioButtonMixValveNewVersion->setVisible(PRODUCT_VERSION(sysPara->status.fpgaVersionNum) == JETV1); //ui->radioButtonMixValveOldVersion->setVisible(PRODUCT_VERSION(sysPara->status.fpgaVersionNum) == JETV1); } } void SystemSetting::setSpinBoxPressureMaxValue(int pressureVal) { ui->spinBoxPressure->setMaximum(pressureVal); } //简单的使用输入框值变化事件时,会在用户输入个位数(未输入完成时),就触发发送修改命令,造成断点不正常 void SystemSetting::on_spinBoxOscillatorVoltage_valueChanged(int arg1) { static int vol=0; // if(sysPara){ if(vol-1==arg1 || vol+1==arg1) { //qDebug()<<"OSCVOL:"<devOp->setOscillatorVoltage(ui->spinBoxOscillatorVoltage->value()); } vol = arg1; } } #include "Public.h" void SystemSetting::on_pushButtonInterFace_pressed() { QString s1 = Public::ReadLanguageName(); if(s1 =="English") { dlgLanguage.LangIndex =INPUT_METHOD_TYPE_ENGLISH; } //else if(s1 =="Vietnamese") { // dlgLanguage.LangIndex =INPUT_METHOD_TYPE_VIETNAM; // } else{ dlgLanguage.LangIndex =INPUT_METHOD_TYPE_CHINESE; } dlgLanguage.setCurrentLanguage(); dlgLanguage.show(); /* QFile file(SYS_ROOT_DIR"UseEn"); QMessageBox::StandardButton ret; ret = QMessageBox::information(this, tr("警告"), tr("确定要切换显示语言吗?\r\n(重启才能生效)"), QMessageBox::Ok | QMessageBox::Cancel); if (ret != QMessageBox::Ok){ return; } QString s1 = Public::ReadLanguageName(); if(file.open(QIODevice::ReadWrite| QIODevice::Truncate)) { QByteArray buf; buf.clear(); if(s1 =="English") {// English--> Vietnamese QMessageBox::information(this,tr("提示"),tr("重启后切换到越南语界面")); buf.append("Vietnamese\r\n"); buf.append("YN_utf8.txt\r\n"); } else if(s1 =="Vietnamese") {// Vietnamese--> Chinese QMessageBox::information(this,tr("提示"),tr("重启后切换到中文界面")); buf.append("Chinese\r\n"); buf.append("WINPY_utf8.txt\r\n"); } else{// Chinese--> English QMessageBox::information(this,tr("提示"),tr("重启后切换到英文界面")); buf.append("English\r\n"); buf.append("WINPY_utf8.txt\r\n"); } file.write(buf); file.close(); setInterfaceMode(); } */ } void SystemSetting::setInterfaceMode() { QString s1 = Public::ReadLanguageName(); if(s1 =="English") {// English--> Vietnamese ui->pushButtonInterFace->setText( tr("Tiếng Việt(Vietnamese interface)")); } else if(s1 =="Vietnamese") {// Vietnamese--> Chinese ui->pushButtonInterFace->setText( tr("Chinese interface(中文界面)")); } else{// Chinese--> English ui->pushButtonInterFace->setText( tr("English interface(英文界面)")); } }