768 lines
32 KiB
C++
768 lines
32 KiB
C++
#include "SystemSetting.h"
|
|
#include "ui_systemsetting.h"
|
|
#include <QFileDialog>
|
|
#include <QList>
|
|
#include <QUrl>
|
|
#include <QMessageBox>
|
|
#include <QProcess>
|
|
#include <QDebug>
|
|
#include <QTime>
|
|
#include <QDate>
|
|
//#include "LogInfo.h"
|
|
#include "myinclude.h"
|
|
#include "QInputDialog"
|
|
#include "dlgmutilanguage.h"
|
|
//#define FINDVOL
|
|
#include "InputMethod.h"
|
|
|
|
int convertFreq(int index){
|
|
// qDebug()<<"index="<<index;
|
|
switch(index){
|
|
case 0:return 64000;break; //64k,pwm波,占空比50%
|
|
case 1:return 76000;break; //76k
|
|
// case 2:return 83000;break; //83k
|
|
case 2:return 96000;break; //96k
|
|
case 3:return 128000;break; //128k
|
|
case 4:return 145000;break; //145k
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int detectValidHVCnt = 0;
|
|
SystemSetting::SystemSetting(QWidget *parent) :
|
|
QWidget(parent),progressBar(0),
|
|
ui(new Ui::SystemSetting)
|
|
{
|
|
|
|
ui->setupUi(this);
|
|
|
|
if (sysPara == nullptr) {
|
|
sysPara = SysPara::ins();
|
|
}
|
|
|
|
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()));
|
|
timerAuto = new QTimer();
|
|
connect(timerAuto,SIGNAL(timeout()),this,SLOT(autoControlPressure()));
|
|
enCleanUpAppendFlag=0; // 0空闲,1关开回收槽,2手动,3清洗,4恢复,5停止,6
|
|
dialogUpateMm =new DialogAuthorization;
|
|
connect(dialogUpateMm,SIGNAL(accepted()),this,SLOT(ondialogAuthorizationAccepted()));
|
|
|
|
if (ctrl_loginfo == nullptr) {
|
|
ctrl_loginfo = LogInfoCtrl::instance();
|
|
connect(ctrl_loginfo, &LogInfoCtrl::sig_clean,
|
|
this, &SystemSetting::on_pushButtonCleanUP_pressed);
|
|
}
|
|
|
|
init();
|
|
|
|
ui->label->hide();
|
|
ui->comboBoxEditMode->hide();
|
|
}
|
|
|
|
SystemSetting::~SystemSetting()
|
|
{
|
|
delete ui;
|
|
delete timer;
|
|
delete timer2;
|
|
|
|
}
|
|
|
|
void SystemSetting::init()
|
|
{
|
|
// 应用样式表
|
|
applyStyleSheet();
|
|
|
|
// 连接信号槽
|
|
connect(ui->closeBtn, &QPushButton::clicked, this, &SystemSetting::buttonClickedSlot);
|
|
|
|
connect(ui->checkBtn,&QPushButton::clicked, this, &SystemSetting::buttonClickedSlot);
|
|
}
|
|
|
|
void SystemSetting::buttonClickedSlot()
|
|
{
|
|
QPushButton* btn = qobject_cast<QPushButton*>(sender());
|
|
if (btn == ui->closeBtn)
|
|
{
|
|
emit sendButtonClickedSignal(1);
|
|
}else if(btn == ui->checkBtn){
|
|
emit sendButtonClickedSignal(2);
|
|
applyUIPara();
|
|
// SystemSettingLog();
|
|
|
|
int freq = sysPara->para.oscillatorFreqFix+ convertFreq(sysPara->para.oscillatoFreq);
|
|
sysPara->para.divideRatio = (FPGA_SYS_HZ/freq)/2;
|
|
sysPara->devOp->setDivideRatio(sysPara->para.divideRatio);
|
|
}
|
|
}
|
|
|
|
void SystemSetting::lockUI()
|
|
{
|
|
ui->checkBtn->setEnabled(false);
|
|
ui->closeBtn->setEnabled(false);
|
|
ui->pushButtonHighVoltageData->setEnabled(false);
|
|
}
|
|
|
|
void SystemSetting::unlockUI()
|
|
{
|
|
ui->checkBtn->setEnabled(true);
|
|
ui->closeBtn->setEnabled(true);
|
|
ui->pushButtonHighVoltageData->setEnabled(true);
|
|
}
|
|
|
|
|
|
void SystemSetting::SystemupdateSysParaToUI(){
|
|
updateSysParaToUI();
|
|
}
|
|
|
|
void SystemSetting::on_pushButtonApply_pressed()
|
|
{
|
|
applyUIPara();
|
|
SystemSettingLog();
|
|
|
|
int freq = sysPara->para.oscillatorFreqFix+ convertFreq(sysPara->para.oscillatoFreq);
|
|
sysPara->para.divideRatio = (FPGA_SYS_HZ/freq)/2;
|
|
sysPara->devOp->setDivideRatio(sysPara->para.divideRatio);
|
|
}
|
|
|
|
void SystemSetting::SystemSettingLog(){
|
|
|
|
qDebug()<<QString("SystemSetting 晶振电压(%): %1").arg(ui->spinBoxOscillatorVoltage->value());
|
|
qDebug()<<QString("SystemSetting 高压包容差: %1").arg(ui->spinBoxHighVoltageLevel->value());
|
|
qDebug()<<QString("SystemSetting 回收泵力度(%): %1").arg(ui->spinBoxReclaimPumpPower->value());
|
|
qDebug()<<QString("SystemSetting 粘度校正(%): %1").arg(ui->ViscosityAdujstSelect->currentIndex());
|
|
qDebug()<<QString("SystemSetting 粘度泵动作间隔(秒): %1").arg(ui->spinBoxPumpInterval->value());
|
|
qDebug()<<QString("SystemSetting 回收槽开关时间: %1").arg(ui->spinBoxReclaimTankTime->value());
|
|
qDebug()<<QString("SystemSetting 隔膜位置: %1").arg(ui->spinBoxSeptalPostion->value());
|
|
qDebug()<<QString("SystemSetting 隔膜位置偏移:: %1").arg(ui->comboBoxDiaphramOffset->currentIndex());
|
|
qDebug()<<QString("SystemSetting 信息编辑模式: %1").arg(ui->comboBoxEditMode->currentIndex());
|
|
qDebug()<<QString("SystemSetting 压力:: %1").arg(ui->spinBoxPressure->value());
|
|
qDebug()<<QString("SystemSetting 粘度: %1").arg(ui->spinBoxVIscosity->value());
|
|
qDebug()<<QString("SystemSetting 喷头温度: %1").arg(ui->spinBoxTemperature->value());
|
|
qDebug()<<QString("SystemSetting 晶振频率: %1").arg(ui->comboBoxOscillatorFreq->currentIndex());
|
|
qDebug()<<QString("SystemSetting 频率修正: %1").arg(ui->spinBoxOscillatorFreqFix->value());
|
|
qDebug()<<QString("SystemSetting 喷嘴直径: %1").arg(ui->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);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
extern bool gearPumpRunNormalFlag;
|
|
void SystemSetting::applyUIPara(){
|
|
if(sysPara){
|
|
sysPara->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"<<sysPara->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"<<sysPara->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("正在关回收槽......"));
|
|
if(ctrl_loginfo) ctrl_loginfo->emitSigCleanOver(false);
|
|
unlockUI();
|
|
}
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
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);
|
|
|
|
if(sysPara->para.gearPumpEnable && sysPara->para.flagOfReclaimPumEnable){
|
|
sysPara->devOp->controlCycleValve(true);
|
|
sysPara->devOp->controlViscosityPump(true);
|
|
sysPara->devOp->controlReclaimPump(true,false);
|
|
sysPara->para.gearPumpValue = 0;
|
|
sysPara->devOp->WriteMoterPump();
|
|
sysPara->devOp->controlInkValvePWM(false);
|
|
}
|
|
|
|
enCleanUpAppendFlag=1;// 开始启动手动模式
|
|
sysPara->devOp->mainInkCtrl();
|
|
if (ctrl_loginfo) ctrl_loginfo->emitSigCleanOver(true);
|
|
lockUI();
|
|
timer2->start(2000); // 暂时循环一下2s
|
|
}
|
|
else if (msgBox.clickedButton() == cancleCleanButton) {
|
|
enCleanUpAppendFlag=3;
|
|
if (ctrl_loginfo) ctrl_loginfo->emitSigCleanOver(false);
|
|
unlockUI();
|
|
timerHandler2();
|
|
return ;
|
|
}
|
|
}
|
|
|
|
}
|
|
void SystemSetting::onCleanUPNow()
|
|
{
|
|
if(sysPara){
|
|
emit setRunStatus(tr("正在喷嘴逆清洗......"));
|
|
if(!(sysPara->para.gearPumpEnable && sysPara->para.flagOfReclaimPumEnable)){
|
|
sysPara->devOp->controlCycleValve(true);
|
|
sysPara->devOp->controlViscosityPump(true);
|
|
sysPara->devOp->controlReclaimPump(true,false);
|
|
}
|
|
timer2->start(60000);
|
|
}
|
|
}
|
|
|
|
void SystemSetting::autoControlPressure(){
|
|
emit pressureAdjust();
|
|
}
|
|
|
|
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;
|
|
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
|
|
if(sysPara->para.gearPumpEnable && sysPara->para.flagOfReclaimPumEnable){
|
|
timerAuto->start(100);
|
|
}
|
|
}
|
|
else if(enCleanUpAppendFlag==4){
|
|
emit setRunStatus(tr("清洗完成"));
|
|
if (ctrl_loginfo) ctrl_loginfo->emitSigCleanOver(false);
|
|
unlockUI();
|
|
|
|
if(sysPara->status.currReclaimTankPos==0){
|
|
enCleanUpAppendFlag=0;
|
|
if(timer2->isActive()) timer2->stop();
|
|
sysPara->devOp->controlReclaimTankClose(0);
|
|
}
|
|
sysPara->status.isPumpValveControledByHand = false;
|
|
if(timerAuto->isActive()) timerAuto->stop();
|
|
sysPara->devOp->mainInkCtrl();
|
|
}
|
|
else if(enCleanUpAppendFlag==5){
|
|
if(timer2->isActive()) timer2->stop();enCleanUpAppendFlag=0;
|
|
sysPara->devOp->controlReclaimTankClose(0);
|
|
sysPara->status.isPumpValveControledByHand =false;
|
|
sysPara->devOp->mainInkCtrl();
|
|
}
|
|
else if(enCleanUpAppendFlag==6){
|
|
if(timer2->isActive()) timer2->stop();enCleanUpAppendFlag=0;
|
|
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()
|
|
{
|
|
ondialogAuthorizationAccepted();
|
|
}
|
|
|
|
void SystemSetting::ondialogAuthorizationAccepted()
|
|
{
|
|
if(sysPara){
|
|
QMessageBox::StandardButton ret;
|
|
if(sysPara->status.adjHightVolInitEN==0){
|
|
{
|
|
sysPara->status.adjHightVolInitEN =1;
|
|
}
|
|
}
|
|
|
|
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 ;
|
|
}
|
|
lastHighVoltageOpen = sysPara->devOp->isHighVoltageOpen();
|
|
|
|
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"<<sysPara->para.set_HVData_Flag ;
|
|
|
|
}
|
|
}
|
|
}
|
|
//#define VOLDIV 5 // 原来的值
|
|
//#define VOLNUM 20 // 原来的值
|
|
#define VOLDIV 2 // 测试的值
|
|
#define VOLNUM 50 // 测试的值
|
|
|
|
//排序函数
|
|
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(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 ++;
|
|
int actHvAmp = sysPara->status.detectHighVoltageCnt*10;
|
|
sysPara->devOp->highVoltageCtrl(actHvAmp);
|
|
sysPara->para.HighVoltageAmplitude = actHvAmp;
|
|
}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();
|
|
|
|
if(lastHighVoltageOpen){
|
|
sysPara->devOp->highVoltageCtrl(1);
|
|
}else{
|
|
sysPara->devOp->highVoltageCtrl(0);
|
|
}
|
|
|
|
}
|
|
}
|
|
else if(sysPara->status.detectBestOscillatorFreqAppending){
|
|
sysPara->devOp->readPhaseDetectHighTm();
|
|
int longestPhaseHightLevelTm = 0;
|
|
if(!sysPara->status.detect_phase_error && !sysPara->status.flight_tm_error ){
|
|
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);
|
|
|
|
}
|
|
// 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:"<<arg1;
|
|
sysPara->devOp->setOscillatorVoltage(ui->spinBoxOscillatorVoltage->value());
|
|
|
|
}
|
|
vol = arg1;
|
|
}
|
|
}
|
|
#include "Public.h"
|
|
|
|
|
|
//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(英文界面)"));
|
|
// }
|
|
//}
|
|
|
|
void SystemSetting::applyStyleSheet()
|
|
{
|
|
QString styleSheet = R"(
|
|
|
|
QPushButton#closeBtn, QPushButton#checkBtn{
|
|
background-color: #E6F7FF;
|
|
border: 1px solid #87CEEB;
|
|
border-radius: 4px;
|
|
font-size: 24px;
|
|
color: #228B22;
|
|
}
|
|
QPushButton#closeBtn:hover,QPushButton#checkBtn:hover{
|
|
background-color: #D1E9FF;
|
|
}
|
|
|
|
QPushButton#closeBtn:pressed,QPushButton#checkBtn:pressed{
|
|
background-color: #BAE7FF;
|
|
}
|
|
|
|
|
|
)";
|
|
|
|
this->setStyleSheet(styleSheet);
|
|
}
|