diff --git a/InkJetPrinter.cpp b/InkJetPrinter.cpp index 8c29f89..72bf05f 100644 --- a/InkJetPrinter.cpp +++ b/InkJetPrinter.cpp @@ -26,7 +26,7 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) : ui(new Ui::InkJetPrinter) { // 隐藏系统任务栏,隐藏后,如果需要激活任务栏,则需要呼出QtUI中的任意弹出式、非全屏窗口,然后使用鼠标将光标移动至屏幕最左侧或最顶部则可以呼出任务栏 - int ret = system("xfconf-query -c xfce4-panel -p /panels/panel-0/autohide-behavior -s 2"); + int ret = system("xfconf-query -c xfce4-panel -p /panels/panel-1/autohide-behavior -s 2"); qInfo() << "Hide system panel ret:" << ret; // system("ifconfig eth1 down"); @@ -52,13 +52,14 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) : m_serialThreadFPGA = new QThread; serialFPGA = new Serial("/dev/ttyAS5"); + connect(m_serialThreadFPGA,&QThread::started,serialFPGA,&Serial::startInitSlot); serialFPGA->moveToThread(m_serialThreadFPGA); connect(serialFPGA,SIGNAL(sendQueueData(int,int,unsigned char*,int,int)),sysPara->devOp,SLOT(resendFPGADate(int,int,unsigned char*,int,int))); connect(serialFPGA,SIGNAL(resendFPGAData(int,int,unsigned char*,int,int)),sysPara->devOp,SLOT(resendFPGADate(int,int,unsigned char*,int,int))); connect(sysPara->devOp,SIGNAL(sendSerialDataToFPGA(int,int,unsigned char*,int,int)),serialFPGA,SLOT(sendSerialData(int,int,unsigned char*,int,int)),Qt::QueuedConnection); connect(serialFPGA,SIGNAL(getFPGAVersion(uint)),this,SLOT(saveFPGAVersionNum(uint))); - connect(m_serialThreadFPGA,&QThread::started,serialFPGA,&Serial::startInitSlot); + connect(serialFPGA,SIGNAL(stopSendData(bool)),this,SLOT(stopSendFPGAData(bool))); connect(serialFPGA,SIGNAL(getFPGAPhaseDetectHighTm(unsigned char*)),this,SLOT(saveFPGAPhaseDetectHighTm(unsigned char*))); connect(serialFPGA,SIGNAL(getFPGAStatus(unsigned char*)),this,SLOT(saveFPGAStatus(unsigned char*))); @@ -74,6 +75,9 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) : m_serialThreadSTM32 = new QThread(); serialSTM32 = new Serial("/dev/ttyAS2"); + + connect(m_serialThreadSTM32,&QThread::started,serialSTM32,&Serial::startInitSlot); + serialSTM32->moveToThread(m_serialThreadSTM32); connect(serialSTM32,SIGNAL(sendQueueData(int,int,unsigned char*,int,int)),sysPara->devOp,SLOT(resendSTM32Date(int,int,unsigned char*,int,int))); connect(sysPara->devOp,SIGNAL(sendSerialDataToSTM32(int,int,unsigned char*,int,int)),serialSTM32,SLOT(sendSerialData(int,int,unsigned char*,int,int))); @@ -84,7 +88,7 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) : connect(serialSTM32,SIGNAL(getSTM32Time(unsigned char*)),this,SLOT(saveSTM32Time(unsigned char*))); connect(serialSTM32,SIGNAL(stopSendData(bool)),this,SLOT(stopSendSTM32Data(bool))); connect(serialSTM32,SIGNAL(powerOffReady()),ui->tabMainWindow,SLOT(powerOffConfirmed())); - connect(m_serialThreadSTM32,&QThread::started,serialSTM32,&Serial::startInitSlot); + connect(serialSTM32,SIGNAL(queueSizeSTM32(int)),ui->tabMainWindow,SLOT(showSTM32queuesize(int))); connect(ui->tabSystemManage,SIGNAL(upgradeSTM32(QString)),serialSTM32,SLOT(upgradeSTM32File(QString))); connect(ui->tabSystemManage,SIGNAL(enableClick(bool)),this,SLOT(enableInkJetTabClick(bool))); @@ -183,9 +187,11 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) : connect(ui->tabSystemSetting,SIGNAL(pressureAdjust()),this,SLOT(pressureAdjustForsystemseeting())); #ifdef COUNTER1_BY_GROUP /* 分段计米 */ - connect(this,SIGNAL(updateCnt1GroupDisp(bool)),ui->tabPrintSetting,SLOT(onUpdateCnt1GroupDisp(bool))); + connect(this,SIGNAL(updateCnt1GroupDisp(bool)), + ui->tabPrintSetting,SLOT(onUpdateCnt1GroupDisp(bool))); #endif -initCntGroup(); + initCntGroup(); + msgtest = new QMessageBox(this); connect(msgtest, SIGNAL(finished(int)), this, SLOT(OnFinished(int))); msgBox1 = new QMessageBox(this); @@ -253,7 +259,7 @@ initCntGroup(); sysPara->status.FileChangeRestCntFlag=0; sysPara->status.HVFaultCloseEn=0; sysPara->devOp->printCtrl( PRINT_CTRL_STOP); - sysPara->devOp->writeFpgaCalandar(1);// + sysPara->devOp->writeFpgaCalandar(1); //qDebug()<para.calandar_and_dat.year; sysPara->status.cnt1GroupRunningIndex=0; //sysPara->status.cnt1RepeatCurrent=0; @@ -267,31 +273,31 @@ initCntGroup(); //JSON data #ifdef MODBUS - modbus = NULL; - memset((uint8_t *)&sysPara->modbusParas, 0, sizeof(sysPara->modbusParas)); - sysPara->modbusStatus.receiveEnbleFlag = 1; - snprintf((char *)sysPara->modbusParas.selectFileName, sizeof(sysPara->modbusParas.selectFileName), "%s",QFileInfo(sysPara->para.lastOpenedFileName).fileName().toLatin1().constData()); - modbus = new ModbusTcp(&sysPara->modbusParas, &sysPara->modbusStatus); - m_thread = new QThread(); - modbus->moveToThread(m_thread); - connect(m_thread, SIGNAL(started()),modbus,SLOT(pvPollingThread())); - connect(modbus, SIGNAL(updateQRcode()), ui->tabMainWindow, SLOT(modbusUpdateQRCode()), Qt::QueuedConnection); - connect(modbus, SIGNAL(openFile(QString,bool)), ui->tabMainWindow->getTexteditOption(), SLOT(onFileOpen(QString,bool)), Qt::QueuedConnection); - connect(modbus, SIGNAL(startPrint()), ui->tabMainWindow, SLOT(on_pushButtonStartPrint_pressed()), Qt::QueuedConnection); - connect(modbus, SIGNAL(pausePrint()), ui->tabMainWindow, SLOT(on_pushButtonPausePrint_pressed()), Qt::QueuedConnection);//暂时屏蔽排除问题 - connect(modbus,SIGNAL(stopPrint()),ui->tabMainWindow,SLOT(on_pushButtonStopPrint_pressed()), Qt::QueuedConnection); - connect(modbus,SIGNAL(writeCalendar()),this,SLOT(onModbusWriteCalendar()), Qt::QueuedConnection); - connect(modbus,SIGNAL(writeCalendar1()),this,SLOT(onModbusWriteCalendar1CurrValue()), Qt::QueuedConnection); - connect(modbus,SIGNAL(writeCalendar1EndValue()),this,SLOT(onModbusWriteCalendar1EndValue()), Qt::QueuedConnection); - connect(modbus,SIGNAL(writeCalendar2EndValue()),this,SLOT(onModbusWriteCalendar2EndValue()), Qt::QueuedConnection); - connect(modbus,SIGNAL(writeCalendar2RepeatValue()),this,SLOT(onModbusWriteCalendar2RepeatValue()), Qt::QueuedConnection); - connect(modbus,SIGNAL(writeCalendar2InitValue()),this,SLOT(onModbusWriteCalendar2InitValue()), Qt::QueuedConnection); - connect(modbus,SIGNAL(CNTResetNow()),ui->tabMainWindow,SLOT(onModbusCNTResetNowPressed()), Qt::QueuedConnection); - connect(modbus,SIGNAL(faultResume()),ui->tabMainWindow,SLOT(onLabelFaultRusumePressed()), Qt::QueuedConnection); - connect(modbus,SIGNAL(mbLineAndCharSpace(int, int)),ui->tabMainWindow->getTexteditOption(),SLOT(onMbSetLineAndChar(int, int)), Qt::QueuedConnection); - connect(this,SIGNAL(updataPara2UI()),ui->tabPrintSetting,SLOT( PrintupdateSysParaToUI() ), Qt::QueuedConnection); - connect(this, SIGNAL(openFile(QString,bool)), ui->tabMainWindow->getTexteditOption(), SLOT(onFileOpen(QString,bool)), Qt::QueuedConnection); - connect(this, SIGNAL(startPrint()), ui->tabMainWindow, SLOT(on_pushButtonStartPrint_pressed()), Qt::QueuedConnection); + modbus = NULL; + memset((uint8_t *)&sysPara->modbusParas, 0, sizeof(sysPara->modbusParas)); + sysPara->modbusStatus.receiveEnbleFlag = 1; + snprintf((char *)sysPara->modbusParas.selectFileName, sizeof(sysPara->modbusParas.selectFileName), "%s",QFileInfo(sysPara->para.lastOpenedFileName).fileName().toLatin1().constData()); + modbus = new ModbusTcp(&sysPara->modbusParas, &sysPara->modbusStatus); + m_thread = new QThread(); + modbus->moveToThread(m_thread); + connect(m_thread, SIGNAL(started()),modbus,SLOT(pvPollingThread())); + connect(modbus, SIGNAL(updateQRcode()), ui->tabMainWindow, SLOT(modbusUpdateQRCode()), Qt::QueuedConnection); + connect(modbus, SIGNAL(openFile(QString,bool)), ui->tabMainWindow->getTexteditOption(), SLOT(onFileOpen(QString,bool)), Qt::QueuedConnection); + connect(modbus, SIGNAL(startPrint()), ui->tabMainWindow, SLOT(on_pushButtonStartPrint_pressed()), Qt::QueuedConnection); + connect(modbus, SIGNAL(pausePrint()), ui->tabMainWindow, SLOT(on_pushButtonPausePrint_pressed()), Qt::QueuedConnection);//暂时屏蔽排除问题 + connect(modbus,SIGNAL(stopPrint()),ui->tabMainWindow,SLOT(on_pushButtonStopPrint_pressed()), Qt::QueuedConnection); + connect(modbus,SIGNAL(writeCalendar()),this,SLOT(onModbusWriteCalendar()), Qt::QueuedConnection); + connect(modbus,SIGNAL(writeCalendar1()),this,SLOT(onModbusWriteCalendar1CurrValue()), Qt::QueuedConnection); + connect(modbus,SIGNAL(writeCalendar1EndValue()),this,SLOT(onModbusWriteCalendar1EndValue()), Qt::QueuedConnection); + connect(modbus,SIGNAL(writeCalendar2EndValue()),this,SLOT(onModbusWriteCalendar2EndValue()), Qt::QueuedConnection); + connect(modbus,SIGNAL(writeCalendar2RepeatValue()),this,SLOT(onModbusWriteCalendar2RepeatValue()), Qt::QueuedConnection); + connect(modbus,SIGNAL(writeCalendar2InitValue()),this,SLOT(onModbusWriteCalendar2InitValue()), Qt::QueuedConnection); + connect(modbus,SIGNAL(CNTResetNow()),ui->tabMainWindow,SLOT(onModbusCNTResetNowPressed()), Qt::QueuedConnection); + connect(modbus,SIGNAL(faultResume()),ui->tabMainWindow,SLOT(onLabelFaultRusumePressed()), Qt::QueuedConnection); + connect(modbus,SIGNAL(mbLineAndCharSpace(int, int)),ui->tabMainWindow->getTexteditOption(),SLOT(onMbSetLineAndChar(int, int)), Qt::QueuedConnection); + connect(this,SIGNAL(updataPara2UI()),ui->tabPrintSetting,SLOT( PrintupdateSysParaToUI() ), Qt::QueuedConnection); + connect(this, SIGNAL(openFile(QString,bool)), ui->tabMainWindow->getTexteditOption(), SLOT(onFileOpen(QString,bool)), Qt::QueuedConnection); + connect(this, SIGNAL(startPrint()), ui->tabMainWindow, SLOT(on_pushButtonStartPrint_pressed()), Qt::QueuedConnection); #endif ui->tabMainWindow->enableReclaimCtrlButton(false); @@ -574,7 +580,7 @@ void InkJetPrinter::loadVoltageValue() ui->vol7SpinBox->setValue(sysPara->para.printed_adj_dac[7]); ui->vol8SpinBox->setValue(sysPara->para.printed_adj_dac[8]); ui->vol9SpinBox->setValue(sysPara->para.printed_adj_dac[9]); - + ui->vol10SpinBox->setValue(sysPara->para.printed_adj_dac[10]); ui->vol11SpinBox->setValue(sysPara->para.printed_adj_dac[11]); ui->vol12SpinBox->setValue(sysPara->para.printed_adj_dac[12]); @@ -618,7 +624,7 @@ void InkJetPrinter::loadVoltageValue() ui->cVol7SpinBox->setValue(sysPara->para.printed_continue_col_dac[7]); ui->cVol8SpinBox->setValue(sysPara->para.printed_continue_col_dac[8]); ui->cVol9SpinBox->setValue(sysPara->para.printed_continue_col_dac[9]); - + ui->cVol10SpinBox->setValue(sysPara->para.printed_continue_col_dac[10]); ui->cVol11SpinBox->setValue(sysPara->para.printed_continue_col_dac[11]); ui->cVol12SpinBox->setValue(sysPara->para.printed_continue_col_dac[12]); @@ -662,7 +668,7 @@ void InkJetPrinter::loadVoltageValue() ui->fvol7SpinBox->setValue(sysPara->para.printed_full_col_dac[7]); ui->fvol8SpinBox->setValue(sysPara->para.printed_full_col_dac[8]); ui->fvol9SpinBox->setValue(sysPara->para.printed_full_col_dac[9]); - + ui->fvol10SpinBox->setValue(sysPara->para.printed_full_col_dac[10]); ui->fvol11SpinBox->setValue(sysPara->para.printed_full_col_dac[11]); ui->fvol12SpinBox->setValue(sysPara->para.printed_full_col_dac[12]); @@ -704,6 +710,7 @@ void InkJetPrinter::initCntGroup() connect(this, &InkJetPrinter::sig_updateDisp, SectionalManager::instance(), &SectionalManager::sig_updateCntGroupDisp); } + float PID_realize(float speed); struct _pid{ @@ -757,7 +764,7 @@ float PID_realize2(float speed, float act){ pid.err = pid.SetSpeed - pid.ActualSpeed; float delta_u = pid.Kp * (pid.err - pid.err_last) - + pid.Ki * pid.err; + + pid.Ki * pid.err; // 自适应非对称限幅: // 压力严重偏高(err < -30):允许快速减速,限制慢速加速 @@ -836,7 +843,7 @@ void InkJetPrinter::pressureAdj() if(m_pumpState != DPUMP_STOPPED) { u = 0.0f; sysPara->para.gearPumpValue = 0; - sysPara->devOp->WriteMoterPump(); + sysPara->devOp->WriteMoterPump(); m_pumpState = DPUMP_STOPPED; m_stateChangeCount = 0; m_adjSkip = 0; @@ -880,7 +887,7 @@ void InkJetPrinter::handleStoppedState(int err, bool canSwitch) // 启动爬升状态处理:从低转速逐步提升到工作转速 void InkJetPrinter::handleStartingState(int err, int actual, int target) -{ + { const int STARTING_TO_RUNNING_RANGE = 30; // 进入目标±50范围转到运行状态 const float MAX_WORKING_SPEED = 350.0f; // 最大工作转速 const float START_SPEED_STEP_LARGE = 40.0f; @@ -891,11 +898,11 @@ void InkJetPrinter::handleStartingState(int err, int actual, int target) // 每800ms调整一次(8个100ms周期) if(m_adjSkip < 8) { - sysPara->para.gearPumpValue = (unsigned short)(int)u; - sysPara->devOp->WriteMoterPump(); - return; - } - m_adjSkip = 0; + sysPara->para.gearPumpValue = (unsigned short)(int)u; + sysPara->devOp->WriteMoterPump(); + return; + } + m_adjSkip = 0; // 判断是否进入运行状态 int absErr = (err >= 0) ? err : -err; @@ -908,15 +915,15 @@ void InkJetPrinter::handleStartingState(int err, int actual, int target) m_lastActualPressure = actual; m_stateChangeCount = 0; // 重置计数器 return; - } + } // 继续爬升:根据误差自适应增速 - float step; + float step; if(err > 100) step = START_SPEED_STEP_LARGE; else if(err > 50) step = START_SPEED_STEP_MED; else step = START_SPEED_STEP_SMALL; - u += step; + u += step; if(u > MAX_WORKING_SPEED) u = MAX_WORKING_SPEED; sysPara->para.gearPumpValue = (unsigned short)(int)u; @@ -926,7 +933,7 @@ void InkJetPrinter::handleStartingState(int err, int actual, int target) // 运行微调状态处理:使用增量式控制算法 void InkJetPrinter::handleRunningState(int err, bool canSwitch) -{ + { const int RUN_TO_STOP_THRESHOLD = 5; // 压力高于目标10准备停泵(扩大滞环) const int EMERGENCY_STOP_THRESHOLD = 10; // 压力高于目标20立即停泵(不受800ms限制) @@ -950,7 +957,7 @@ void InkJetPrinter::handleRunningState(int err, bool canSwitch) m_stateChangeCount = 0; m_adjSkip = 0; return; - } + } // === 增量式微调控制(每200ms调整一次)=== m_adjSkip++; @@ -968,10 +975,10 @@ void InkJetPrinter::handleRunningState(int err, bool canSwitch) // 死区:误差≤0.5不调整 if(absErr < 0.5f) { m_lastActualPressure = actual; - sysPara->para.gearPumpValue = (unsigned short)(int)u; - sysPara->devOp->WriteMoterPump(); - return; - } + sysPara->para.gearPumpValue = (unsigned short)(int)u; + sysPara->devOp->WriteMoterPump(); + return; + } // 计算压力变化率(微分项) int pressureChange = actual - m_lastActualPressure; @@ -1002,7 +1009,7 @@ void InkJetPrinter::handleRunningState(int err, bool canSwitch) if(delta_u < -maxDelta) delta_u = -maxDelta; // 更新控制量 - u += delta_u; + u += delta_u; // 限制范围 const float MIN_RUNNING_SPEED = 30.0f; // 最低运行转速(低于此值泵不转) @@ -1012,7 +1019,7 @@ void InkJetPrinter::handleRunningState(int err, bool canSwitch) if(u > MAX_WORKING_SPEED) u = MAX_WORKING_SPEED; sysPara->para.gearPumpValue = (unsigned short)(int)u; - sysPara->devOp->WriteMoterPump(); + sysPara->devOp->WriteMoterPump(); } @@ -1223,10 +1230,6 @@ void InkJetPrinter::timerHandler(void){ static float gearPumpRunNormalValue = 0.0; if(sysPara){ xxxm=1; - if(sysPara->para.flagOfModuleDecimal || sysPara->para.flagOfModuleHide){ - sysPara->para.flagOfModuleDecimal = 0; - sysPara->para.flagOfModuleHide = 0; - } sysPara->para.ReadFileErrorCnt=0; // 正常打开文件 @@ -1552,47 +1555,57 @@ void InkJetPrinter::timerHandler(void){ } } - if(gearPumpRunFlag || sysPara->para.gearPumpEnable == 0) - { - if(!sysPara->status.selfCheckDone && sysPara->status.isPrinting){ + if(gearPumpRunFlag || sysPara->para.gearPumpEnable == 0) + { + if(!sysPara->status.selfCheckDone && sysPara->status.isPrinting){ sysPara->status.selfCheckDone = true; ui->tabMainWindow->updatePrintDisplayLabel(); - sysPara->status.flagOfAbnormalStatus = true; + sysPara->status.flagOfAbnormalStatus = true; + + static bool onceLog = true; + if(onceLog) { LogInfo::setRunStatusText(tr("打印过程中死机了!!!")); qDebug()<<"打印过程中死机了!!!"; + onceLog = false; + + ui->tabMainWindow->updatePrintDisplayLabel(); } - if(!sysPara->status.selfCheckDone) + + ui->tabMainWindow->on_pushButtonStopPrint_pressed(); + + } + if(!sysPara->status.selfCheckDone) + { + /*开机自检*/ + autoControlValvePump(); + if(pulse_100ms){ + pressureAdj(); + } + /*-----------------------------------------------------*/ + if(!sysPara->status.selfCheckCnt) { + LogInfo::setRunStatusText(tr("开始自检,请等待60秒...............")); + ui->tabMainWindow->enableReclaimCtrlButton(false); + ui->tabMainWindow->enablePrintButton(false); + sysPara->devOp->mainInkCtrl(); + sysPara->para.TrunOnPowerCnt++;// 20151218 开机次数加1 + sysPara->saveParaToFile(); // 保存开机次数值 + + sysPara->status.lastProductCnt = sysPara->status.productCnt ; //这会让产品计数显示出来 + + ui->tabMainWindow->updateTotalCnt(0); + + + } + if((++sysPara->status.selfCheckCnt % 100) == 0){ + ui->tabMainWindow->setRunStatus(tr("开始自检,请等待%1秒...............").arg((MAX_SELF_CHECK_CNT - sysPara->status.selfCheckCnt)/100)); + } + + if(sysPara->status.selfCheckCnt >= MAX_SELF_CHECK_CNT) { - /*开机自检*/ - autoControlValvePump(); - if(pulse_100ms){ - pressureAdj(); - } - /*-----------------------------------------------------*/ - if(!sysPara->status.selfCheckCnt) { - LogInfo::setRunStatusText(tr("开始自检,请等待60秒...............")); - ui->tabMainWindow->enableReclaimCtrlButton(false); - ui->tabMainWindow->enablePrintButton(false); - sysPara->devOp->mainInkCtrl(); - sysPara->para.TrunOnPowerCnt++;// 20151218 开机次数加1 - sysPara->saveParaToFile(); // 保存开机次数值 - - sysPara->status.lastProductCnt = sysPara->status.productCnt ; //这会让产品计数显示出来 - - ui->tabMainWindow->updateTotalCnt(0); - - - } - if((++sysPara->status.selfCheckCnt % 100) == 0){ - ui->tabMainWindow->setRunStatus(tr("开始自检,请等待%1秒...............").arg((MAX_SELF_CHECK_CNT - sysPara->status.selfCheckCnt)/100)); - } - - if(sysPara->status.selfCheckCnt >= MAX_SELF_CHECK_CNT) - { - sysPara->status.selfCheckDone = 1; - u = (float)sysPara->para.gearPumpValue; + sysPara->status.selfCheckDone = 1; + u = (float)sysPara->para.gearPumpValue; // 自检完成后管道恢复正常阻力,重置状态机让压力重新平稳收敛 - // 不清零 u,从当前控制字开始,避免突变 + // 不清零 u,从当前控制字开始,避免突变 if(u > 40.0f) { m_pumpState = DPUMP_RUNNING; // 如果当前有转速,进入运行状态 } else { @@ -1602,68 +1615,68 @@ void InkJetPrinter::timerHandler(void){ m_adjSkip = 0; m_lastActualPressure = 0; m_bufValidCount = 0; - for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0; - m_bufIdx = 0; - LogInfo::setRunStatusText(tr("自检完成!!!")); - ui->tabMainWindow->setRunStatus(tr("自检完成!!!")); - qDebug()<<"自检完成!!!"; - ui->tabPrintSetting->PrintSettingLog(); - ui->tabMainWindow->enableReclaimCtrlButton(true); - sysPara->devOp->mainInkCtrl(); - sysPara->status.canRunAirPushing = true; - - if(sysPara->para.Reciclar) - test_flag = 1; - } - else { - if((sysPara->status.selfCheckCnt % 200) == 0) - // sysPara->devOp->controlReclaimTankOpen(false); - ui->tabMainWindow->enableReclaimCtrlButton(false); - } + for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0; + m_bufIdx = 0; + LogInfo::setRunStatusText(tr("自检完成!!!")); + ui->tabMainWindow->setRunStatus(tr("自检完成!!!")); + qDebug()<<"自检完成!!!"; + ui->tabPrintSetting->PrintSettingLog(); + ui->tabMainWindow->enableReclaimCtrlButton(true); + sysPara->devOp->mainInkCtrl(); + sysPara->status.canRunAirPushing = true; + if(sysPara->para.Reciclar) + test_flag = 1; } - else{ - // 开机自检完成的前提下 - if (!sysPara->status.airPushing || ui->tabMainWindow->m_2sFlag) { - autoControlValvePump(); - } - // 检测回收泵模式切换,切换时重置泄漏保护学习状态和软启动状态 - if(m_lastReclaimMode != sysPara->para.flagOfReclaimPumEnable) - { - m_lastReclaimMode = sysPara->para.flagOfReclaimPumEnable; - gearPumpRunNormalFlag = false; // 泄漏保护重新学习 - gearPumpRunNormalValue = 0.0f; + else { + if((sysPara->status.selfCheckCnt % 200) == 0) + // sysPara->devOp->controlReclaimTankOpen(false); + ui->tabMainWindow->enableReclaimCtrlButton(false); + } + + } + else{ + // 开机自检完成的前提下 + if (!sysPara->status.airPushing || ui->tabMainWindow->m_2sFlag) { + autoControlValvePump(); + } + // 检测回收泵模式切换,切换时重置泄漏保护学习状态和软启动状态 + if(m_lastReclaimMode != sysPara->para.flagOfReclaimPumEnable) + { + m_lastReclaimMode = sysPara->para.flagOfReclaimPumEnable; + gearPumpRunNormalFlag = false; // 泄漏保护重新学习 + gearPumpRunNormalValue = 0.0f; // 重置隔膜泵状态机,适应新模式 m_pumpState = DPUMP_STOPPED; m_stateChangeCount = 0; m_adjSkip = 0; m_lastActualPressure = 0; m_bufValidCount = 0; - for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0; - m_bufIdx = 0; - } - if(pulse_100ms && sysPara->para.gearPumpEnable && !sysPara->status.isPumpValveControledByHand && ControledSwitchFlag ) { - pressureAdj(); + for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0; + m_bufIdx = 0; + } + if(pulse_100ms && sysPara->para.gearPumpEnable && !sysPara->status.isPumpValveControledByHand && ControledSwitchFlag ) { + pressureAdj(); - } } } - else{ - static bool flag = 1; - if(delay3s){ - if(flag){ - flag = 0; - LogInfo::setRunStatusText(tr("缺少墨水,喷码机不能正常工作!")); - qDebug()<<"缺少墨水,喷码机不能正常工作!"; - } - ui->tabMainWindow->setRunStatus(tr("缺少墨水,喷码机不能正常工作!")); + } + else{ + static bool flag = 1; + if(delay3s){ + if(flag){ + flag = 0; + LogInfo::setRunStatusText(tr("缺少墨水,喷码机不能正常工作!")); + qDebug()<<"缺少墨水,喷码机不能正常工作!"; } + ui->tabMainWindow->setRunStatus(tr("缺少墨水,喷码机不能正常工作!")); } - /*----------------------------控制温度--------------------------------------*/ - if(pulse_300ms){ - autoControlHeater(); - sysPara->devOp->readSyncCounterAtZero(); - } + } + /*----------------------------控制温度--------------------------------------*/ + if(pulse_300ms){ + autoControlHeater(); + sysPara->devOp->readSyncCounterAtZero(); + } sysPara->status.lostCommuFlag = lostCommuFlag; //务必放在后面 static unsigned int lastProductCnt =0; @@ -1697,18 +1710,17 @@ void InkJetPrinter::timerHandler(void){ if(pulse_300ms){ if (manager_rfid) manager_rfid->handleCheck(addr); - } + } #endif - if(pulse_300ms){ + if(pulse_300ms){ sysPara->devOp->readCalandarDat(); //务必读一下此数据 if(sysPara->status.RandomNum>0) sysPara->devOp->Read_RanddomFromFpga(); #ifdef COUNTER1_BY_GROUP /* 分段计米 */ -// cnt1GroupCheck();//分段计米 - cntGroupCheck();//分段计米 + cnt1GroupCheck();//分段计米 #endif - + cntGroupCheck();//分段计米 QWidget *widget = this->currentWidget(); static bool read_flag = false; @@ -1775,12 +1787,12 @@ void InkJetPrinter::timerHandler(void){ if(sysPara->para.speedoverPaushPrint) { ui->tabMainWindow->on_pushButtonPausePrint_pressed();// 2014-03-19 -// emit OnSpeedOver(2);//QMessageBox::warning(NULL,tr("警告"),tr("喷印速度过快!无法喷印完全,自动暂停喷印!!!")); + // emit OnSpeedOver(2);//QMessageBox::warning(NULL,tr("警告"),tr("喷印速度过快!无法喷印完全,自动暂停喷印!!!")); ui->tabMainWindow->setRunStatus(tr("喷印速度过快!无法喷印完全,自动暂停喷印!!!")); } else { -// emit OnSpeedOver(1);//QMessageBox::warning(NULL,tr("警告"),tr("喷印速度过快!无法喷印完全!!!")); + // emit OnSpeedOver(1);//QMessageBox::warning(NULL,tr("警告"),tr("喷印速度过快!无法喷印完全!!!")); ui->tabMainWindow->setRunStatus(tr("喷印速度过快!无法喷印完全!!!")); } @@ -1814,14 +1826,14 @@ void InkJetPrinter::timerHandler(void){ } #ifdef __RFID_CARD - /*****************墨水刷卡控制start**********************************************/ + /*****************墨水刷卡控制start**********************************************/ /*墨水刷卡新的控制逻辑*/ - /* 1.任何时候,打印墨点数达到2.3billion之后,提示24小时内刷卡,否则禁止使用机器*/ + /* 1.任何时候,打印墨点数达到2.3billion之后,提示24小时内刷卡,否则禁止使用机器*/ /*2.当墨水液位后,持续提示刷卡,24小时后如果还没有刷卡,禁止使用机器*/ static bool logFlag4 = 1; static int warnNum1 = 0; if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN)) - warnNum1 = 0; + warnNum1 = 0; if((sysPara->status.statWarn & WARN_STATUS_INK_WARN) || sysPara->para.RFIDInkWarn){ if(!sysPara->para.RFIDInkWarn){ if(++warnNum1 >6){ @@ -1861,28 +1873,28 @@ void InkJetPrinter::timerHandler(void){ if(sysPara->RFIDPara.PrintInkDots >= MAX_INK_DOTS || sysPara->para.RFIDInkWarn){ sysPara->status.flagOfNeedInkCard = true; if(sysPara->RFIDPara.InkRFIDCnt == 0){ - msgtest->setText(tr("请使用原厂墨水,然后刷墨水卡,否则机器将在24小时后禁止使用!")); - msgtest->show(); - ui->tabMainWindow->setRunStatus(tr("请使用原厂墨水,然后刷墨水卡,否则机器将在24小时后禁止使用!")); - LogInfo::setRunStatusText(tr("请使用原厂墨水,然后刷墨水卡,否则机器将在24小时后禁止使用!")); - } - int timeRemain = (MAX_INK_RFIDTIME - sysPara->RFIDPara.InkRFIDCnt)/60; - if(timeRemain > 60){ - if(sysPara->RFIDPara.PrintInkDots >= MAX_INK_DOTS) - ui->tabMainWindow->setRunStatus(tr("1.请使用原厂墨水,然后刷墨水卡,否则机器将在%1小时后禁止使用!").arg(timeRemain/60)); - else - ui->tabMainWindow->setRunStatus(tr("2.请使用原厂墨水,然后刷墨水卡,否则机器将在%1小时后禁止使用!").arg(timeRemain/60)); - } - else if(timeRemain > 0){ - if(sysPara->RFIDPara.PrintInkDots >= MAX_INK_DOTS) - ui->tabMainWindow->setRunStatus(tr("1.请使用原厂墨水,然后刷墨水卡,否则机器将在%1分钟后禁止使用!").arg(timeRemain)); - else - ui->tabMainWindow->setRunStatus(tr("2.请使用原厂墨水,然后刷墨水卡,否则机器将在%1分钟后禁止使用!").arg(timeRemain)); - } - if(sysPara->RFIDPara.InkRFIDCnt % 300 == 0) - sysPara->saveRFIDPara(); - if(++sysPara->RFIDPara.InkRFIDCnt >= MAX_INK_RFIDTIME) - sysPara->status.flagOfInkMaxDot = true; + msgtest->setText(tr("请使用原厂墨水,然后刷墨水卡,否则机器将在24小时后禁止使用!")); + msgtest->show(); + ui->tabMainWindow->setRunStatus(tr("请使用原厂墨水,然后刷墨水卡,否则机器将在24小时后禁止使用!")); + LogInfo::setRunStatusText(tr("请使用原厂墨水,然后刷墨水卡,否则机器将在24小时后禁止使用!")); + } + int timeRemain = (MAX_INK_RFIDTIME - sysPara->RFIDPara.InkRFIDCnt)/60; + if(timeRemain > 60){ + if(sysPara->RFIDPara.PrintInkDots >= MAX_INK_DOTS) + ui->tabMainWindow->setRunStatus(tr("1.请使用原厂墨水,然后刷墨水卡,否则机器将在%1小时后禁止使用!").arg(timeRemain/60)); + else + ui->tabMainWindow->setRunStatus(tr("2.请使用原厂墨水,然后刷墨水卡,否则机器将在%1小时后禁止使用!").arg(timeRemain/60)); + } + else if(timeRemain > 0){ + if(sysPara->RFIDPara.PrintInkDots >= MAX_INK_DOTS) + ui->tabMainWindow->setRunStatus(tr("1.请使用原厂墨水,然后刷墨水卡,否则机器将在%1分钟后禁止使用!").arg(timeRemain)); + else + ui->tabMainWindow->setRunStatus(tr("2.请使用原厂墨水,然后刷墨水卡,否则机器将在%1分钟后禁止使用!").arg(timeRemain)); + } + if(sysPara->RFIDPara.InkRFIDCnt % 300 == 0) + sysPara->saveRFIDPara(); + if(++sysPara->RFIDPara.InkRFIDCnt >= MAX_INK_RFIDTIME) + sysPara->status.flagOfInkMaxDot = true; } if(sysPara->status.flagOfInkMaxDot){ @@ -1914,7 +1926,7 @@ void InkJetPrinter::timerHandler(void){ /*****************溶剂刷卡控制start**********************************************/ /*溶剂刷卡新的控制逻辑*/ - /* 1.任何时候,混合阀打开次数达到360次,提示2小时关机,必须刷卡才能恢复*/ + /* 1.任何时候,混合阀打开次数达到360次,提示2小时关机,必须刷卡才能恢复*/ /*2.溶剂液位报警后,提示刷卡,允许有10次的混合阀打开次数,必须刷卡才能恢复*/ if(sysPara->RFIDPara.solventNumber >= MAX_SOLV_OPENNUM){ //混合阀打开次数达到360次 sysPara->status.flagOfNeedSolventCard = true; @@ -1935,7 +1947,7 @@ void InkJetPrinter::timerHandler(void){ static bool logFlag5 = 1; static int warnNum2 = 0; if(!(sysPara->status.statWarn & WARN_STATUS_SOLV_WARN)) - warnNum2 = 0; + warnNum2 = 0; if((sysPara->status.statWarn & WARN_STATUS_SOLV_WARN) || sysPara->para.RFIDSolventWarn){ if(!sysPara->para.RFIDSolventWarn){ if(++warnNum2 > 6){ @@ -1983,7 +1995,7 @@ void InkJetPrinter::timerHandler(void){ ui->tabMainWindow->on_pushButtonStopPrint_pressed(); static bool logFlag3 = true; if(sysPara->para.RFIDSolventWarnMixCnt>=10){ - ui->tabMainWindow->setRunStatus(tr("请刷溶剂卡以恢复机器的正常功能")); + ui->tabMainWindow->setRunStatus(tr("请刷溶剂卡以恢复机器的正常功能")); if(logFlag3){ logFlag3 = false; msgtest->setText(tr("请刷溶剂卡以恢复机器的正常功能!")); @@ -2101,7 +2113,7 @@ void InkJetPrinter::timerHandler(void){ if(pulse_100ms) { if(pre_hvcurrent>150 && ( sysPara->status.HV_DETOUT> pre_hvcurrent+20) && (sysPara->status.waitHightVolOn==8 || sysPara->status.waitHightVolOff==1) && sysPara->status.isPrinting ) - pre_hvcurrent = sysPara->status.HV_DETOUT; + pre_hvcurrent = sysPara->status.HV_DETOUT; if(sysPara->status.waitHightVolOn<8)sysPara->status.waitHightVolOn++; if(sysPara->status.isPrinting==0) sysPara->status.waitHightVolOn=0; @@ -2125,16 +2137,16 @@ void InkJetPrinter::timerHandler(void){ else{ pulse_30s++; if(pulse_30s >= 30){ - sysPara->status.flagOfSpeedAlarm = true; - sysPara->devOp->color_flag = 2; - if(pulse_30s % 500 == 0){ + sysPara->status.flagOfSpeedAlarm = true; + sysPara->devOp->color_flag = 2; + if(pulse_30s % 500 == 0){ LogInfo::setRunStatusText(tr("泵转速异常过高,请立即停机并联系供应商!")); qDebug()<<"泵转速异常过高,请立即停机并联系供应商!"; - } + } ui->tabMainWindow->setRunStatus(tr("泵转速异常过高,请立即停机并联系供应商!")); - sysPara->devOp->controlRedLight(true); - if(sysPara->status.isPrinting) - ui->tabMainWindow->on_pushButtonStopPrint_pressed(); + sysPara->devOp->controlRedLight(true); + if(sysPara->status.isPrinting) + ui->tabMainWindow->on_pushButtonStopPrint_pressed(); } if(pulse_30s % 10 == 0) qDebug()<<"粘度: "<status.viscosity); @@ -2352,34 +2364,34 @@ void InkJetPrinter::autoControlValvePump(void) } /*-----------------------------------主墨泵------------------------------------------*/ - if(sysPara->status.SEPTAL_POSITION < (sysPara->para.septalPostion - DIFF_SEPTAL_POSITION)) - sysPara->status.septalPositionOverFlowCnt ++; - else - sysPara->status.septalPositionOverFlowCnt = 0; - if(sysPara->status.septalPositionOverFlowCnt > 2 && !sysPara->status.mainInkPumpError){ //主墨泵 - if(!sysPara->devOp->isMainInkPumpOpen()){ - sysPara->devOp->controlMainInkPump(true); - sysPara->status.mainInkPumpRunTmCnt = 0; + if(sysPara->status.SEPTAL_POSITION < (sysPara->para.septalPostion - DIFF_SEPTAL_POSITION)) + sysPara->status.septalPositionOverFlowCnt ++; + else + sysPara->status.septalPositionOverFlowCnt = 0; + if(sysPara->status.septalPositionOverFlowCnt > 2 && !sysPara->status.mainInkPumpError){ //主墨泵 + if(!sysPara->devOp->isMainInkPumpOpen()){ + sysPara->devOp->controlMainInkPump(true); + sysPara->status.mainInkPumpRunTmCnt = 0; + } + else if(sysPara->status.selfCheckDone){ + if(sysPara->status.mainInkPumpRunTmCnt < MAX_MAIN_INK_PUMP_RUN_TIME){ // + sysPara->status.mainInkPumpRunTmCnt ++; } - else if(sysPara->status.selfCheckDone){ - if(sysPara->status.mainInkPumpRunTmCnt < MAX_MAIN_INK_PUMP_RUN_TIME){ // - sysPara->status.mainInkPumpRunTmCnt ++; - } - else { - if(!sysPara->para.gearPumpEnable) - { - sysPara->status.mainInkPumpError = true; - sysPara->devOp->controlMainInkPump(false); - LogInfo::setRunStatusText(tr("错误!!!!!!!!!!!主墨泵故障")); - ui->tabMainWindow->setRunStatus(tr("主墨泵故障!!!")); - } + else { + if(!sysPara->para.gearPumpEnable) + { + sysPara->status.mainInkPumpError = true; + sysPara->devOp->controlMainInkPump(false); + LogInfo::setRunStatusText(tr("错误!!!!!!!!!!!主墨泵故障")); + ui->tabMainWindow->setRunStatus(tr("主墨泵故障!!!")); } } } - else if(sysPara->status.SEPTAL_POSITION > sysPara->para.septalPostion){ - if(sysPara->devOp->isMainInkPumpOpen()) - sysPara->devOp->controlMainInkPump(false); - } + } + else if(sysPara->status.SEPTAL_POSITION > sysPara->para.septalPostion){ + if(sysPara->devOp->isMainInkPumpOpen()) + sysPara->devOp->controlMainInkPump(false); + } /*-----------------------------------压缩机------------------------------------------*/ if((sysPara->para.pressure - sysPara->status.PRESSURE > MAX_PRESSURE_DIFF) && !sysPara->status.compressPumpError){ //压缩机 @@ -2411,130 +2423,130 @@ void InkJetPrinter::autoControlValvePump(void) /*------------------------------------粘度泵,混合阀-----------------------------------------*/ /*-----------------------------每30s打开一次粘度泵以及相关处理--------------------------------------*/ - static bool hasDetectedBellow = false; // 检测到下位灯 - static bool hasDetectedTop = false; // 检测到上位灯 - static int viscosity_low = 0; //统计粘度连续偏低10%次数 - static unsigned char Mixing_valve_open = 0; //统计粘度连续偏高5%次数 - static unsigned char viscosity_faulty_num = 0; //统计粘度连续偏高13%次数 - static bool flag = 0; + static bool hasDetectedBellow = false; // 检测到下位灯 + static bool hasDetectedTop = false; // 检测到上位灯 + static int viscosity_low = 0; //统计粘度连续偏低10%次数 + static unsigned char Mixing_valve_open = 0; //统计粘度连续偏高5%次数 + static unsigned char viscosity_faulty_num = 0; //统计粘度连续偏高13%次数 + static bool flag = 0; - if(sysPara->status.cycleValveOpenCntAfterSWintOff) { //关闭墨线的时候要提前开粘度泵 - sysPara->status.viscosityDelayCnt = sysPara->para.viscosityPumpInterval*100 + 100; - } - ++sysPara->status.viscosityDelayCnt; - int mixer_open_threshold = (105*sysPara->para.viscosity)/100; - int viscosity_faulty_threshold =(113*sysPara->para.viscosity)/100; - if(sysPara->status.viscosityDelayCnt >= sysPara->para.viscosityPumpInterval*100 && flag == 0) + if(sysPara->status.cycleValveOpenCntAfterSWintOff) { //关闭墨线的时候要提前开粘度泵 + sysPara->status.viscosityDelayCnt = sysPara->para.viscosityPumpInterval*100 + 100; + } + ++sysPara->status.viscosityDelayCnt; + int mixer_open_threshold = (105*sysPara->para.viscosity)/100; + int viscosity_faulty_threshold =(113*sysPara->para.viscosity)/100; + if(sysPara->status.viscosityDelayCnt >= sysPara->para.viscosityPumpInterval*100 && flag == 0) + { + flag=1; + if (!sysPara->devOp->isViscosityPumpOpen()) { - flag=1; - if (!sysPara->devOp->isViscosityPumpOpen()) - { - sysPara->devOp->controlViscosityPump(true); - viscosity_timer->start(10000); - qDebug()<<"粘度: "<status.viscosity); - } - if((sysPara->status.viscosity >= 90*sysPara->para.viscosity/100) && (sysPara->status.viscosity <= mixer_open_threshold)) - { - sysPara->status.viscosityFault = 0; - viscosity_low=0; - Mixing_valve_open = 0; - viscosity_faulty_num = 0; - } - if(sysPara->status.viscosity < 90*sysPara->para.viscosity/100) - { - viscosity_low++; - viscosity_faulty_num = 0; - Mixing_valve_open = 0; - } - if(sysPara->status.viscosity > mixer_open_threshold && sysPara->status.viscosity <= viscosity_faulty_threshold) - { - Mixing_valve_open++; - viscosity_low = 0; - viscosity_faulty_num = 0; - } - if(sysPara->status.viscosity > viscosity_faulty_threshold){ - Mixing_valve_open++; - viscosity_faulty_num++; - viscosity_low = 0; - } - - if((!sysPara->devOp->isMixValveOpen()) && (((Mixing_valve_open > 1) && (!sysPara->para.gearPumpEnable)) || ((Mixing_valve_open > 4) && sysPara->para.gearPumpEnable))) { // - sysPara->devOp->controlMixValve(true); - Mixing_valve_open = 0; - LogInfo::setRunStatusText(tr("添加溶剂:")+QString::number(sysPara->status.viscosity)); - qDebug()<<"添加溶剂"; - } - - if(viscosity_low >= 60) - { - LogInfo::setRunStatusText(tr("警告!!!!!!!!!!!粘度值偏低")+QString::number(sysPara->status.viscosity)); - qDebug()<<"粘度值偏低"; - sysPara->status.viscosityFault = 2; - if(sysPara->devOp->isMixValveOpen()) { - sysPara->devOp->controlMixValve(false); - } - } - if(viscosity_faulty_num >= 5) - { - LogInfo::setRunStatusText(tr("错误!!!!!!!!!!!粘度偏大故障")+QString::number(sysPara->status.viscosity)); - qDebug()<<"粘度偏大故障"; - sysPara->status.viscosityFault = 1; - } - + sysPara->devOp->controlViscosityPump(true); + viscosity_timer->start(10000); + qDebug()<<"粘度: "<status.viscosity); } - if((sysPara->status.viscosityDelayCnt >= (sysPara->para.viscosityPumpInterval*100+120)) && flag==1) + if((sysPara->status.viscosity >= 90*sysPara->para.viscosity/100) && (sysPara->status.viscosity <= mixer_open_threshold)) { + sysPara->status.viscosityFault = 0; + viscosity_low=0; + Mixing_valve_open = 0; + viscosity_faulty_num = 0; + } + if(sysPara->status.viscosity < 90*sysPara->para.viscosity/100) + { + viscosity_low++; + viscosity_faulty_num = 0; + Mixing_valve_open = 0; + } + if(sysPara->status.viscosity > mixer_open_threshold && sysPara->status.viscosity <= viscosity_faulty_threshold) + { + Mixing_valve_open++; + viscosity_low = 0; + viscosity_faulty_num = 0; + } + if(sysPara->status.viscosity > viscosity_faulty_threshold){ + Mixing_valve_open++; + viscosity_faulty_num++; + viscosity_low = 0; + } + + if((!sysPara->devOp->isMixValveOpen()) && (((Mixing_valve_open > 1) && (!sysPara->para.gearPumpEnable)) || ((Mixing_valve_open > 4) && sysPara->para.gearPumpEnable))) { // + sysPara->devOp->controlMixValve(true); + Mixing_valve_open = 0; + LogInfo::setRunStatusText(tr("添加溶剂:")+QString::number(sysPara->status.viscosity)); + qDebug()<<"添加溶剂"; + } + + if(viscosity_low >= 60) + { + LogInfo::setRunStatusText(tr("警告!!!!!!!!!!!粘度值偏低")+QString::number(sysPara->status.viscosity)); + qDebug()<<"粘度值偏低"; + sysPara->status.viscosityFault = 2; if(sysPara->devOp->isMixValveOpen()) { sysPara->devOp->controlMixValve(false); } } - - if((sysPara->status.viscosityDelayCnt >= (sysPara->para.viscosityPumpInterval*100+130)) && flag==1) + if(viscosity_faulty_num >= 5) { - if (sysPara->devOp->isViscosityPumpOpen()) { - sysPara->devOp->controlViscosityPump(false); - } - sysPara->status.viscosityDelayCnt = 0; - flag=0; + LogInfo::setRunStatusText(tr("错误!!!!!!!!!!!粘度偏大故障")+QString::number(sysPara->status.viscosity)); + qDebug()<<"粘度偏大故障"; + sysPara->status.viscosityFault = 1; } - if(sysPara->status.statWarn & WARN_STATUS_VISCOTITY_MEASURE_READY){ //上位灯检测标志位 - viscosity_timer->stop(); + } + if((sysPara->status.viscosityDelayCnt >= (sysPara->para.viscosityPumpInterval*100+120)) && flag==1) + { + if(sysPara->devOp->isMixValveOpen()) { + sysPara->devOp->controlMixValve(false); } + } - if(sysPara->status.viscosityDelayCnt < sysPara->para.viscosityPumpInterval*100) { - static int detectBelow = 0; - if (++detectBelow%400 == 0) { - if(sysPara->status.statWarn & WARN_STATUS_VISCOTITY_MEASURE_READY) - { - if(sysPara->status.rWarnViscoReady>=15){ - sysPara->status.viscosityFault = 1; - sysPara->status.viscosity=0; - if(!firstTime) - qDebug()<<"错误!粘度计下位灯故障."+QString::number(sysPara->status.viscosity); - // LogInfo::setRunStatusText(tr("错误!粘度计下位灯故障.")+QString::number(sysPara->status.viscosity)); - hasDetectedBellow = true; - } - else sysPara->status.rWarnViscoReady++; - } - else { - sysPara->status.rWarnViscoReady = 0; - sysPara->status.viscosityFault = 0; + if((sysPara->status.viscosityDelayCnt >= (sysPara->para.viscosityPumpInterval*100+130)) && flag==1) + { + if (sysPara->devOp->isViscosityPumpOpen()) { + sysPara->devOp->controlViscosityPump(false); + } + sysPara->status.viscosityDelayCnt = 0; + flag=0; + } + + if(sysPara->status.statWarn & WARN_STATUS_VISCOTITY_MEASURE_READY){ //上位灯检测标志位 + viscosity_timer->stop(); + } + + if(sysPara->status.viscosityDelayCnt < sysPara->para.viscosityPumpInterval*100) { + static int detectBelow = 0; + if (++detectBelow%400 == 0) { + if(sysPara->status.statWarn & WARN_STATUS_VISCOTITY_MEASURE_READY) + { + if(sysPara->status.rWarnViscoReady>=15){ + sysPara->status.viscosityFault = 1; + sysPara->status.viscosity=0; + if(!firstTime) + qDebug()<<"错误!粘度计下位灯故障."+QString::number(sysPara->status.viscosity); + // LogInfo::setRunStatusText(tr("错误!粘度计下位灯故障.")+QString::number(sysPara->status.viscosity)); + hasDetectedBellow = true; } + else sysPara->status.rWarnViscoReady++; + } + else { + sysPara->status.rWarnViscoReady = 0; + sysPara->status.viscosityFault = 0; } } - if(hasDetectedBellow && hasDetectedTop) - { - if(sysPara->devOp->isMixValveOpen()) { // - sysPara->devOp->controlMixValve(false); //如果检测不到上下位灯就关掉混合阀 - } + } + if(hasDetectedBellow && hasDetectedTop) + { + if(sysPara->devOp->isMixValveOpen()) { // + sysPara->devOp->controlMixValve(false); //如果检测不到上下位灯就关掉混合阀 } - if(sysPara->status.viscosityFault==0) - { - hasDetectedBellow = false; - hasDetectedTop = false; - } -// } + } + if(sysPara->status.viscosityFault==0) + { + hasDetectedBellow = false; + hasDetectedTop = false; + } + // } /*-----------------------------------回收泵------------------------------------------*/ if(!sysPara->status.autoCtlReclaimAfterSWintOff) @@ -2650,10 +2662,10 @@ void InkJetPrinter::detectAndcontrolReclaimTank(){ sysPara->status.currReclaimTankPos =10*sysPara->status.curr_reclaimTankTime; sysPara->status.reclaimTankBlockedAppending =0; //qDebug()<status.reclaimTankstatus; -// if(sysPara->status.currReclaimTankPos == 0) -// ui->tabMainWindow->setReBootQtUIEnable(false); -// else -// ui->tabMainWindow->setReBootQtUIEnable(true); + // if(sysPara->status.currReclaimTankPos == 0) + // ui->tabMainWindow->setReBootQtUIEnable(false); + // else + // ui->tabMainWindow->setReBootQtUIEnable(true); if(sysPara->status.reclaimTankstatus == 0x10) //7 故障,6 关完成,5开完成,4 保持, 3 停止, 2 关, 1 开,0-无操作 { @@ -3035,10 +3047,10 @@ void InkJetPrinter::enableInkJetTabClick(bool flag){ } bool InkJetPrinter::eventFilter(QObject *watched, QEvent *event) -{ +{ if(sysPara->status.flagOfKeyBoardType) - return QTabWidget::eventFilter(watched,event); + return QTabWidget::eventFilter(watched,event); QSpinBox *qsb=dynamic_cast(watched); QLineEdit *qle=dynamic_cast(watched); @@ -3069,19 +3081,19 @@ void InkJetPrinter::sendDataManual(QString cmdstr,QString addrstr,QString datast QByteArray data; data.resize(datastr.length() / 2); - for (int i = 0; i < datastr.length(); i += 2) { - // 提取每两个字符 - QString byteString = datastr.mid(i, 2); - // 将16进制字符串转换为unsigned char - bool ok; - unsigned char byte = static_cast(byteString.toUInt(&ok, 16)); - data[i / 2] = byte; - } -// quint16 data1[] = {68, 90, 108, 125, 141, 156, 170, 170, 180, 193, 204, 214}; - const char* charData = data.constData(); + for (int i = 0; i < datastr.length(); i += 2) { + // 提取每两个字符 + QString byteString = datastr.mid(i, 2); + // 将16进制字符串转换为unsigned char + bool ok; + unsigned char byte = static_cast(byteString.toUInt(&ok, 16)); + data[i / 2] = byte; + } + // quint16 data1[] = {68, 90, 108, 125, 141, 156, 170, 170, 180, 193, 204, 214}; + const char* charData = data.constData(); - // 转换为 unsigned char 指针 - const unsigned char* unsignedCharData = reinterpret_cast(charData); + // 转换为 unsigned char 指针 + const unsigned char* unsignedCharData = reinterpret_cast(charData); } void InkJetPrinter::slt_showMsg(QString msg) @@ -3293,14 +3305,14 @@ void InkJetPrinter::checkPressureControl(){ //1s highPressureCnt = 0; if(highPressureCnt >= 4 && sysPara->status.PRESSURE > 1000){ - QString str = tr("压力过高,请检查管路是否堵塞,然后点击故障恢复按钮"); - showMessage(str); - sysPara->para.gearPumpValue = 0; - sysPara->devOp->WriteMoterPump(); - sysPara->status.isPumpValveControledByHand = true; - sysPara->devOp->mainInkCtrl(); - sysPara->status.flagOfPressureFault = true; - } + QString str = tr("压力过高,请检查管路是否堵塞,然后点击故障恢复按钮"); + showMessage(str); + sysPara->para.gearPumpValue = 0; + sysPara->devOp->WriteMoterPump(); + sysPara->status.isPumpValveControledByHand = true; + sysPara->devOp->mainInkCtrl(); + sysPara->status.flagOfPressureFault = true; + } } void InkJetPrinter::showMessage(QString str){ @@ -3392,4 +3404,3 @@ void InkJetPrinter::restartSerialPort(){ flagOfSerialThreadStratEn = true; } - diff --git a/PrintSetting.cpp b/PrintSetting.cpp index 8e71a9c..e50450b 100644 --- a/PrintSetting.cpp +++ b/PrintSetting.cpp @@ -417,13 +417,13 @@ void PrintSetting::showMachInfo(QString Mac) { QString VernonBach; VernonBach.sprintf("%s.%s.", MACHINAE_VER, PUMP_VER); - VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_";//+UP_PRINTER_STAGE_VER; + VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_"+SUB_VER; } void PrintSetting::showRemoteControl(QString SuperNodeIP,QString EdgeIP) { QString VernonBach; VernonBach.sprintf("%s.%s.", MACHINAE_VER, PUMP_VER); - VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_";//+UP_PRINTER_STAGE_VER; + VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_"+SUB_VER; } void PrintSetting::applyUIPara(){ diff --git a/SectionalCounting/sectionalwid.cpp b/SectionalCounting/sectionalwid.cpp index 1d92539..8d018f5 100644 --- a/SectionalCounting/sectionalwid.cpp +++ b/SectionalCounting/sectionalwid.cpp @@ -434,6 +434,11 @@ void SectionalWid::on_Cnt3AddRowBtn_2_clicked() } ui->tableWidget_2->setRowCount(rowCnt+1); rowWidgetCreate2(rowCnt); + // 获取新行第2列(索引为1)的 QSpinBox,设置值为 1 + QSpinBox *spinBox = qobject_cast(ui->tableWidget_2->cellWidget(rowCnt, 1)); + if (spinBox) { + spinBox->setValue(1); + } } void SectionalWid::on_Cnt3InsertRowBtn_2_clicked() diff --git a/TextEditOption.cpp b/TextEditOption.cpp index 9289247..68e9c53 100644 --- a/TextEditOption.cpp +++ b/TextEditOption.cpp @@ -648,10 +648,8 @@ bool TextEditOption::maybeSave(){ SectionalManager::instance()->emitCancelSection(); return true; } - else { + else return false; - } - return true; } @@ -666,12 +664,13 @@ void TextEditOption::on_bottonNew_pressed() textEdit->clear(); fileName = ""; sysPara->sysFile = ""; - QFile file(fileName); + QFile file(fileName); emit fileNameChanged(QFileInfo(fileName).fileName()); } #ifdef VARCOLOR textEdit->insertHtml(QString("  ")); #endif + } void TextEditOption::onOpenNewFile() @@ -756,6 +755,9 @@ void TextEditOption::on_buttonInsertVari_pressed() unsigned char splitMode = sysPara->para.ExpirySplitMode; dialogInsertVari->getValue(&varType,&digitalNum,&splitMode); + if(sysPara->para.flagOfModuleDecimal || sysPara->para.flagOfModuleHide){ + digitalNum += 1; + } fmt = textEdit->currentCharFormat(); diff --git a/VerBVersion.h b/VerBVersion.h index 59cb5be..4886d79 100644 --- a/VerBVersion.h +++ b/VerBVersion.h @@ -2,12 +2,13 @@ #define VERBVERSION_H #include "myinclude.h" /* - VX5.D.0826.0100-C + VX5.D.0826.0100_Std(-C) MACHINAE_VER.PUMP_VER.MMdd.SUB_VER+SUB_RFID */ #define MACHINAE_VER "VX5" #define PUMP_VER "D" -#define SUB_VER "0100" +//#define SUB_VER "0100" +#define SUB_VER "GuiLin" #ifdef __RFID_OLD #define SUB_RFID "_RO" @@ -17,14 +18,9 @@ #ifdef __RFID_CARD #undef SUB_RFID -#define SUB_RFID "_RFID" +#define SUB_RFID "-C" #endif -//#define UP_PRINTER_STAGE_VER "Std" -//#define UP_PRINTER_STAGE_VER "Beta" -//#define UP_PRINTER_STAGE_VER "RC" -//#define UP_PRINTER_STAGE_VER "Release" - #define VERNONBACH_VERSION(a,b,c) (((a)<<16) + ((b)<<8) + (c)) diff --git a/mainwindow.cpp b/mainwindow.cpp index 9bcfe1b..c88b241 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -2046,20 +2046,15 @@ void MainWindow::enablePrintButton(bool enable){ ui->pushButtonStopPrint->setEnabled(enable); } -static int mainInkPumpCtrlStatus = 0; -static int mainInkPumpCtrlCnt = 0; -//100ms 为单位 void MainWindow::airPushingProcess() { if(sysPara){ if (sysPara->status.airPushing) { - setRunStatus(tr("正在排气 ...............")); - //qDebug()<< "start airPushingProcess "<status.airPushingOnTime; // 执行排气 4 秒 sysPara->status.airPushingOnTime += 100; - + if(sysPara->para.airPushDurationSec <= 0 || sysPara->para.airPushDurationSec > 30) { sysPara->para.airPushDurationSec = 4; sysPara->saveParaToFile(); @@ -4590,8 +4585,9 @@ void MainWindow::UpdateUIVersion(){ QString STM32Ver = QString("S:%1.%2.%3_B%4").arg((sysPara->status.stm32Verion>>16)&0x7F) .arg((sysPara->status.stm32Verion>>8) & 0xFF).arg(sysPara->status.stm32Verion&0xFF).arg(baudRateValue); - QString VernonBach = SUB_RFID; -// VernonBach.sprintf("A%d.%d.%02d%s%s", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID); + QString VernonBach; + VernonBach.sprintf("%s.%s.", MACHINAE_VER, PUMP_VER); + VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_"+SUB_VER; QString Mac = QString::number(sysPara->status.machineMac); LogInfo::showVerionInformation(Mac,VernonBach,fpgaVersion,STM32Ver,sysPara->status.flagOfPowerOnMode);