Files
VX4-DiaphragmPump_WeiDaL/SystemSetting.cpp
T
2026-08-25 10:37:57 +08:00

895 lines
39 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"
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()));
timerAuto = new QTimer();
connect(timerAuto,SIGNAL(timeout()),this,SLOT(autoControlPressure()));
//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()<<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);
}
}
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;
}
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("正在关回收槽......"));
}
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);
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();
timer2->start(2000); // 暂时循环一下2s
}
else if (msgBox.clickedButton() == cancleCleanButton) {
enCleanUpAppendFlag=3;
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;
// 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
if(sysPara->para.gearPumpEnable && sysPara->para.flagOfReclaimPumEnable){
timerAuto->start(100);
}
}
else if(enCleanUpAppendFlag==4){
emit setRunStatus(tr("清洗完成"));
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()
{
#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"<<sysPara->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:"<<arg1;
sysPara->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(英文界面)"));
}
}