/* * SysPara.cpp * * Created on: Jun 25, 2013 * Author: yiyu * QQ:1036184468 * Descriptoin: * * 2013-9-29 高压 */ #include "SysPara.h" #include #include #include #include #include #include //#include #include "LogInfo.h" #define VNLG SysPara::SysPara(void): devOp(new DevOp(this)){ memset(¶,0,sizeof(para)); memset(&status,0,sizeof(status)); //qDebug("start to loadParaFromFile."); loadParaFromFile(); //qDebug("loadParaFromFile ok."); //para.HVFaultCloseEn= 0; if(para.ReadFileErrorCnt<10) para.ReadFileErrorCnt++; if(para.PowerOnErrorCnt<10) para.PowerOnErrorCnt++; // PowerOnErrorCnt //qDebug()<<"cnt ++:"<3 || para.PowerOnErrorCnt>4) { //loadDefaultPara(); memset( para.lastOpenedFileName,0,sizeof(para.lastOpenedFileName)); if(para.ReadFileErrorCnt>=4 ) para.ReadFileErrorCnt=0; if(para.PowerOnErrorCnt>=4) para.PowerOnErrorCnt=0; //qDebug()<<"sys Star Error, cnt :"<writeFpgaPrintPara(true)会调用这个,所以忽略 //para.HVFaultCloseEn= 1; //开机默认为1,允许高压故障自动关闭回收功能 devOp->writeFpgaPrintPara(true); //系统起来的时候,将上次记录的配置写入fpga,比如晶振分频等信息 devOp->writeFpgaVariCtrl(); devOp->resumeFault(); status.lastProductCnt = status.productCnt ; //这会让产品计数显示出来 status.gearPumpRunStopFlag = false; status.detectBestOscillatorFreqAppending = false; status.isPumpValveControledByHand = false; //初始化为自动模式 status.forTemplateUse = false; status.lastHighVoltageFault = false; status.needPowerOffTimerout = 0; status.circleProductCnt = false; status.alterPrintCnt= 1; memset(para.reserved2,0,sizeof(para.reserved2)); #ifdef __RFID_CARD if(!loadRFIDPara()){ memset(&RFIDPara,0,sizeof(RFIDPara)); saveRFIDPara(); } #endif } void SysPara::loadParaFromFile(){ QFile file(PARA_FILE_PATH); QFile DeviceCodefile(DeviceCode_FILE_PATH); QDir dir; char buf[200]; //qDebug()<<"loadParaFromFile"; if(!dir.exists(DOC_ROOT_DIR)){ snprintf(buf,sizeof(buf),"mkdir -p %s",DOC_ROOT_DIR); system(buf); } if(!dir.exists(PARA_ROOT_DIR)){ snprintf(buf,sizeof(buf),"mkdir -p %s",PARA_ROOT_DIR); system(buf); } if(!dir.exists(PARA_ROOT_DIR)){ QMessageBox::warning(0,QString("warnning"),QString("Path") + PARA_ROOT_DIR + QString("not Found.")); return ; } if(file.exists(PARA_FILE_PATH)){ //qDebug("PARA_FILE_PATH"); if(!file.open(QIODevice::ReadOnly)){ //QMessageBox::warning(0,("警告"),QString("无法打开配置文件 ") + PARA_FILE_PATH); loadDefaultPara(); } else { //qDebug("PARA_FILE_PATH1"); #if 0 QMessageBox::StandardButton ret = QMessageBox::Ok; qint32 copy_len; if(file.size() != sizeof(para)){ #ifdef VNLG ; #else ret = QMessageBox::warning(NULL,QString("警告"),QString("配置文件大小不一致,按 确定 将采取兼容方式读取配置文件,否则将恢复成默认设置"), QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok ); #endif if(ret == QMessageBox::Ok){ if(file.size()>sizeof(print)) copy_len = sizeof(print); else copy_len = file.size(); file.seek(0); file.read((char *)¶,copy_len); file.close(); //qDebug("normal load para"); } else if(ret == QMessageBox::Cancel){ loadDefaultPara();//qDebug("loadDefaultPara"); file.close(); } } else #endif { file.seek(0); file.read((char *)¶,(long long int)sizeof(para)); file.close(); //////////////////// if (DeviceCodefile.isOpen()) { DeviceCodefile.close(); } //jdDataRwLock.lockForRead(); if(!DeviceCodefile.open(QIODevice::ReadOnly)){//怀疑是QIODevice::Truncate 引起参数错误,去掉试试看 //QMessageBox::warning(0,"警告",QString("无法打开文件") ); } else { DeviceCodefile.seek(0); //file.read((char *)&jd.addr,(long long int)sizeof(jd)); DeviceCodefile.read((char *)¶.Json_device_code,(qint64)sizeof(para.Json_device_code)); DeviceCodefile.close(); } ////////////// } } } else { #ifdef VNLG ; #else QMessageBox::information(0,QString("提示"),QString("这可能是你设备第一次上电,或是进行了出厂设置,我们将使用系统默认配置")); #endif loadDefaultPara(); //loadDefaultPara();//qDebug("loadDefaultPara2"); } //qDebug()<<"SYSPrar:"<sizeof(print)) copy_len = sizeof(print); else copy_len = file.size(); file.seek(0); file.read((char *)&print,copy_len); file.close(); } else { file.seek(0); file.read((char *)&print,(long long int)sizeof(print)); file.close(); memcpy( (char *)¶.alterPrint,(char *)&print.alterPrint,sizeof(alterPrint_t)) ; para.charBold = print.charBold ; #ifndef CABLEUSER para.SynCntEn = 0 ; para.autoSynSpeedEn =0 ; para.cnt1CurrValue =0 ; para.cnt1EndValue = 0 ; para.Cnt1NatureValue =0 ; #else para.SynCntEn = print.SynCntEn ; para.autoSynSpeedEn = print.autoSynSpeedEn ; para.newAmplifyPlate = print.newAmplifyPlate; para.cnt1CurrValue = print.cnt1CurrValue; // 20170313 cnt1StartValue;20191226 cnt1CurrValue para.cnt1EndValue = print.cnt1EndValue ; para.Cnt1NatureValue = print.Cnt1NatureValue ; #endif para.mixValveisNewVersion = 1; para.cnt1RepeateValue = print.cnt1RepeateValue ; para.cnt1StartValue = print.cnt1StartValue ; para.cnt1StepValue = print.cnt1StepValue ; para.cnt2CurrValue = print.cnt2CurrValue;//20170313 cnt2StartValue ; /// 20191226cnt2CurrValue para.cnt2EndValue = print.cnt2EndValue ; para.cnt2RepeateValue = print.cnt2RepeateValue ; para.cnt2StartValue = print.cnt2StartValue ; para.cnt2StepValue = print.cnt2StepValue ; // para.cnt3CurrValue = print.cnt3CurrValue;//20170313 cnt2StartValue ; /// 20191226cnt2CurrValue // para.cnt3EndValue = print.cnt3EndValue ; // para.cnt3RepeateValue = print.cnt3RepeateValue ; // para.cnt3StartValue = print.cnt3StartValue ; // para.cnt3StepValue = print.cnt3StepValue ; para.cnt4CurrValue = print.cnt4CurrValue; para.HiddenConditionValue = print.HiddenConditionValue; para.HiddenFuncEnable = print.HiddenFuncEnable; para.HiddenMeterEnable = print.HiddenMeterEnable; para.currPrintMode = print.currPrintMode ; para.elecEyeTriggerInterval = print.elecEyeTriggerInterval ; para.eleEyeClearCntInSynMode = print.eleEyeClearCntInSynMode ; para.eleEyeTriggerPrintDelay = print.eleEyeTriggerPrintDelay ; para.eleEyeTriggerSynPrintEn = print.eleEyeTriggerSynPrintEn ; para.endVoltage = print.endVoltage ; para.extClearAllCntEnable = print.extClearAllCntEnable ; para.HighVoltageAmplitude = print.HighVoltageAmplitude ; para.lastLineEndPointFixedDACValue = print.lastLineEndPointFixedDACValue ; para.lastLineEndPointFixedValue = print.lastLineEndPointFixedValue ; para.FullColFixVal = print.FullColFixVal ; para.leftRightInverse = print.leftRightInverse ; para.lineEndAdjustPointCnt = print.lineEndAdjustPointCnt ; para.lineEndAdjustPointDelay = print.lineEndAdjustPointDelay ; para.outputPulseDelayMs = print.outputPulseDelayMs ; para.photoElectricityRepeateNum = print.photoElectricityRepeateNum ; para.pixNumPerCol = print.pixNumPerCol ; para.pointVoltageAdjustPos = print.pointVoltageAdjustPos ; para.PointVoltageAdjustValue = print.PointVoltageAdjustValue ; para.printColDelay = print.printColDelay ; para.printDelayMs = print.printDelayMs ; para.printDirection = print.printDirection ; para.printRowDelay = print.printRowDelay ; para.printTotalColNum = print.printTotalColNum ; para.printTriggerMode = print.printTriggerMode ; //打印触发模式 para.productCntPerOutputPulse = print.productCntPerOutputPulse ; para.productNumToGenerateOutputPulse = print.productNumToGenerateOutputPulse ; para.pulseOutputEnable = print.pulseOutputEnable ; para.reducedPixelMode = print.reducedPixelMode ; para.reducedPixelNum = print.reducedPixelNum ; para.reducedPixelNumRatio = print.reducedPixelNumRatio ; para.scanInverse = print.scanInverse ;para.cnt1ByGroupEnalbe = print.cnt1ByGroupEnalbe; para.startVoltage = print.startVoltage ;para.cnt2ByGroupEnalbe = print.cnt2ByGroupEnalbe; //print.stepPrint = print.stepPrint ; memcpy( (char *)¶.stepPrint,(char *)&print.stepPrint,sizeof(stepPrint_t)) ; memcpy( (char *)¶.adjVolDacRate,(char *)&print.adjVolDacRate,sizeof(print.adjVolDacRate)) ; if(para.cnt1ByGroupEnalbe) memcpy( (char *)¶.Cnt1ByGroup,(char *)&print.Cnt1ByGroup,sizeof(print.Cnt1ByGroup)) ; else memset(¶.Cnt1ByGroup,0,sizeof(para.Cnt1ByGroup)); if(para.cnt2ByGroupEnalbe) memcpy( (char *)¶.Cnt2ByGroup,(char *)&print.Cnt2ByGroup,sizeof(print.Cnt2ByGroup)) ; else memset(¶.Cnt2ByGroup,0,sizeof(para.Cnt2ByGroup)); //edit-12.2 //para.synCharWidthRatio = print.synCharWidthRatio ; para.synClearCntInEleEyeMode = print.synClearCntInEleEyeMode ; #if 0 //不需要每个文件都存相位的参数 para.synPulseNumPerMm = print.synPulseNumPerMm ; para.synPulsePerMmX8 = print.synPulsePerMmX8 ; #endif para.synTriggerPrintLenMm = print.synTriggerPrintLenMm ; //喷印间隔 //para.synTriggerPrintLenRatio = print.synTriggerPrintLenRatio ; para.sysTriggerPrintMode = print.sysTriggerPrintMode ; para.timeTriggerPrintDelayMs = print.timeTriggerPrintDelayMs ; para.timeTriggerPrintMode = print.timeTriggerPrintMode ; //para.totalSynPulseNum = print.totalSynPulseNum ; para.upDownInverse = print.upDownInverse ; para.varLen = print.varLen; print.varLen1 = para.varLen1; para.varLenEn = print.varLenEn?1:0; para.headLen = print.headLen; para.endLen = print.endLen; para.set_HVData_Flag = 0; para.eleMaskTime = print.eleMaskTime; para.AltMirrorGap = print.AltMirrorGap; para.textEditLineSpace = print.textEditLineSpace; //para.weihu = print.wehu; //qDebug()<<"sysFile3:"<spinBoxHighLowRatio->value(); para.phaseHighLowRatio = print.phaseHighLowRatio; para.phaseShift = print.phaseShift; para.OuputPulseCol = print.OuputPulseCol; #ifndef FOR_PHASE_ADJUST print.phase_detect_pulse_num = 7; para.phaseDetectVol = 40; print.phaseDetectDelay = 100; #else para.phase_detect_pulse_num = print.phase_detect_pulse_num; if (print.phase_detect_pulse_num<3 || print.phase_detect_pulse_num>10) { print.phase_detect_pulse_num = 7; } para.phaseDetectVol = print.phaseDetectVol; if (print.phaseDetectVol < 28 || print.phaseDetectVol > 70) print.phaseDetectVol = 35; para.phaseDetectDelay = print.phaseDetectDelay;//120;// ui->spinBoxPhaseDetectDelay->value(); if (print.phaseDetectDelay < 70 || print.phaseDetectDelay > 150) print.phaseDetectDelay = 100; #endif para.enableChargeFullTime = 1; #endif } } } void SysPara::loadDefaultPrintPara(){ // memset(&print,0,sizeof(print)); // print.alterPrint.enable = 0; // print.stepPrint.enbale = 0; loadDefaultPara(); } void SysPara::savePrintParaToFile(){ //qDebug()<<"savePrintParaToFile"; if(sysFile=="") return; QString fileName = QString( PARA_ROOT_DIR+QFileInfo( sysFile).baseName()+".dpn"); //qDebug()<<"savePrintParaToFile1:"<> RFIDPara.PrintInkDots; in >> RFIDPara.InkEmptyCnt; in >> RFIDPara.SOLVEmptyCnt; in >> RFIDPara.InkRFIDCnt; in >> RFIDPara.SOLVRFIDCnt; in >> RFIDPara.solventNumber; file.close(); return true; } #endif