/* * 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.flagOfWeiDaLiTCP = 0; status.flagOfWeiDaLiTCPClear = 0; status.flagLogInfo = 1; status.flagOfWeiDaLiTCPStartPrinting = 0; 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.startVoltage = print.startVoltage ; //print.stepPrint = print.stepPrint ; memcpy( (char *)¶.stepPrint,(char *)&print.stepPrint,sizeof(stepPrint_t)) ; memcpy( (char *)¶.adjVolDacRate,(char *)&print.adjVolDacRate,sizeof(print.adjVolDacRate)) ; //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:"<> 12; if(mode == FAST_PRINT ) { volParaFilePath = ":/conf/VoltParaHi.bin"; } else if(mode == STANDARD_PRINT) { volParaFilePath = PARA_ROOT_DIR"VoltParaStd.bin"; } if(status.build_dat.builTime == 73) volParaFilePath = ":/conf/VoltePara_No73.bin"; else if(type == 6){ if(status.currPrintRow<=21){ volParaFilePath = ":/conf/VoltDataStd21.bin"; } else if(status.currPrintRow <=25){ volParaFilePath = ":/conf/VoltDataStd25.bin"; } else if(para.flagOf5Row5Dot){ volParaFilePath = ":/conf/VoltDataStd5Row5Dot.bin"; } else volParaFilePath = ":/conf/VoltDataStd32.bin"; } QFile file(volParaFilePath); #if 1 QDir dir; char buf[200]; 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; } #endif if (file.exists(volParaFilePath)){ if (!file.open(QIODevice::ReadOnly)){ } else { QMessageBox::StandardButton ret = QMessageBox::Ok; qint32 copy_len; char *volteStruct = (char *)&voltePara; size_t sizeofVolteParaStruct = sizeof(voltePara); if(status.build_dat.builTime == 73){ volteStruct = (char *)&voltePara_No73; sizeofVolteParaStruct = sizeof(voltePara_No73); } else if(type == 6){ memset(&voltePara_25Dots,0,sizeof(voltePara_25Dots)); volteStruct = (char *)&voltePara_25Dots; sizeofVolteParaStruct = sizeof(voltePara_25Dots); } if (file.size() != sizeofVolteParaStruct){ qDebug()<<"注意,电压文件大小不对!"; LogInfo::setRunStatusText(QString("注意,电压文件大小不对!")); #ifdef VNLG ; #else ret = QMessageBox::warning(NULL, QString("警告"), QString("配置文件大小不一致,按 确定 将采取兼容方式读取配置文件"), QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok); #endif if (ret == QMessageBox::Ok){ copy_len = file.size() < sizeofVolteParaStruct?file.size():sizeofVolteParaStruct; file.seek(0); file.read(volteStruct, copy_len); file.close(); } else if (ret == QMessageBox::Cancel){ file.close(); } } else { file.seek(0); file.read(volteStruct, (long long int)sizeofVolteParaStruct); file.close(); } } } else{ qDebug()<<"There is no Volte Para File."; LogInfo::setRunStatusText(QString("There is no Volte Para File.")); } } #ifdef __RFID_CARD void SysPara::saveRFIDPara() { QFile file(RFID_FILE_PATH); if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { qDebug() << "Error: Could not open file for writing"; return; } QDataStream out(&file); out.setVersion(QDataStream::Qt_4_6); // Set the version compatible with Qt 4.8.5 out << RFIDPara.PrintInkDots; out << RFIDPara.InkEmptyCnt; out << RFIDPara.SOLVEmptyCnt; out << RFIDPara.InkRFIDCnt; out << RFIDPara.SOLVRFIDCnt; out << RFIDPara.solventNumber; file.close(); } bool SysPara::loadRFIDPara() { QFile file(RFID_FILE_PATH); if (!file.open(QIODevice::ReadOnly)) { qDebug() << "Error: Could not open file for reading"; return false; } QDataStream in(&file); in.setVersion(QDataStream::Qt_4_6); // Set the version compatible with Qt 4.8.5 in >> RFIDPara.PrintInkDots; in >> RFIDPara.InkEmptyCnt; in >> RFIDPara.SOLVEmptyCnt; in >> RFIDPara.InkRFIDCnt; in >> RFIDPara.SOLVRFIDCnt; in >> RFIDPara.solventNumber; file.close(); return true; } #endif