From 831fc0d639cfbee349ff3a02ad1fbdbcf61b36b8 Mon Sep 17 00:00:00 2001 From: Byons Date: Wed, 9 Sep 2026 14:31:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=8A=B6=E6=80=81=E6=9C=BA?= =?UTF-8?q?=E7=9A=84=E9=83=A8=E5=88=86=E5=BC=82=E5=B8=B8=E3=80=81=E8=AE=A1?= =?UTF-8?q?=E6=95=B0=E5=99=A8=E7=BC=96=E8=BE=91=E4=B8=8E=E9=A2=84=E8=A7=88?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=81=E4=BF=AE=E5=A4=8D=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E3=80=81=E8=BD=AE=E7=8F=AD=E5=9B=BE=E5=85=83=E7=9A=84=E9=AB=98?= =?UTF-8?q?=E5=BA=A6=E5=A4=9A=E4=B8=80=E8=A1=8C=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CounterVarSet.cpp | 58 --- CounterVarSet.h | 10 +- DevOp.cpp | 5 + InkJetPrinter.cpp | 27 +- PrintTextDisplay.cpp | 6 +- Printsetting.cpp | 8 - StateMachine/printerstatemanager.cpp | 1 - StateMachine/printerstatemanager.h | 2 +- countervarset.ui | 559 +++++---------------------- mainwidget.cpp | 20 +- scene/CounterEditor.cpp | 18 - scene/CounterEditor.h | 1 - scene/CounterEditor.ui | 195 +++------- scene/PicCounterItem.cpp | 41 +- scene/PicCounterItem.h | 3 +- scene/PicDateItem.cpp | 26 +- scene/PicScheduleShiftItem.cpp | 15 +- testprintwidget.cpp | 44 ++- 18 files changed, 271 insertions(+), 768 deletions(-) diff --git a/CounterVarSet.cpp b/CounterVarSet.cpp index d6878e9..1b29243 100644 --- a/CounterVarSet.cpp +++ b/CounterVarSet.cpp @@ -11,11 +11,6 @@ CounterVarSet::CounterVarSet(QWidget *parent) : { ui->setupUi(this); - ui->label_35->hide(); - ui->spinBoxdecimalpointnum->hide(); - ui->pushButtonVAR->hide(); - ui->checkVARLEN->hide(); - init(); } @@ -34,16 +29,6 @@ void CounterVarSet::init() void CounterVarSet::buttonClickedSlot() { - // 编辑 - // if (editFlag) { - // m_textEdit->clear(); - // on_buttonInsertVari_pressed(); - // applyUIPara(); - // emit sig_updateSelectedCounter(); - // editFlag = false; - // return; - // } - // 添加 QPushButton* btn = qobject_cast(sender()); if (btn == ui->checkBtn) @@ -61,8 +46,6 @@ CounterViewModel CounterVarSet::getCounterConfig() unsigned char splitMode = 0; getValue(&viewModel.counterType, &viewModel.digitalNum, &splitMode); viewModel.letterSpace = ui->letterSpaceSpinBox->value(); - viewModel.charWidth = ui->charWidthSpinBox->value(); - viewModel.enbCustomCharWidth = ui->enbCharWidthSpinBox->isChecked(); applyUIPara(); @@ -78,8 +61,6 @@ void CounterVarSet::setCounterConfig(CounterViewModel viewModel) ui->radioButtonVar2->setChecked(viewModel.counterType == COUNTER_TYPE_2 ? true : false); ui->tabWidget->setCurrentIndex(viewModel.counterType == COUNTER_TYPE_1 ? 1 : 2); ui->letterSpaceSpinBox->setValue(viewModel.letterSpace); - ui->charWidthSpinBox->setValue(viewModel.charWidth); - ui->enbCharWidthSpinBox->setChecked(viewModel.enbCustomCharWidth); updateSysParaToUI(); } @@ -111,17 +92,12 @@ void CounterVarSet::applyUIPara() m_vm.cnt1Settings.startValue = ui->spinBoxCnt1StartValue->value(); m_vm.cnt1Settings.stepValue = ui->spinBoxCnt1StepValue->value(); m_vm.cnt1Settings.currValue = ui->spinBoxCnt1CurrValue->value(); - m_vm.cnt1Settings.editCurrValue = ui->checkBoxResetCnt1CurrValue->isChecked(); m_vm.cnt2Settings.endValue = ui->spinBoxCnt2EndValue->value(); m_vm.cnt2Settings.repeatValue = ui->spinBoxCnt2RepeateCnt->value(); m_vm.cnt2Settings.startValue = ui->spinBoxCnt2StartValue->value(); m_vm.cnt2Settings.stepValue = ui->spinBoxCnt2StepValue->value(); m_vm.cnt2Settings.currValue = ui->spinBoxCnt2CurrValue->value(); - m_vm.cnt2Settings.editCurrValue = ui->checkBoxResetCnt2CurrValue->isChecked(); - - ui->checkBoxResetCnt1CurrValue->setChecked(false); - ui->checkBoxResetCnt2CurrValue->setChecked(false); } void CounterVarSet::updateSysParaToUI() @@ -137,16 +113,6 @@ void CounterVarSet::updateSysParaToUI() ui->spinBoxCnt2StartValue->setValue(m_vm.cnt2Settings.startValue); ui->spinBoxCnt2StepValue->setValue(m_vm.cnt2Settings.stepValue); ui->spinBoxCnt2CurrValue->setValue(m_vm.cnt2Settings.currValue); - - // 电眼触发计数器动作 选择 - // ui->eleCNT1IncEn->setChecked( (sysPara->para.eleEyeClearCntInSynMode & 0x10)?1:0); - // ui->radCNT1ResetEn->setChecked( (sysPara->para.eleEyeClearCntInSynMode & 0x10)?0:1); - - // ui->eleCNT2IncEn->setChecked( (sysPara->para.eleEyeClearCntInSynMode & 0x20)?1:0); - // ui->radCNT2ResetEn->setChecked( (sysPara->para.eleEyeClearCntInSynMode & 0x20)?0:1); - - ui->checkBoxResetCnt1CurrValue->setChecked(false); - ui->checkBoxResetCnt2CurrValue->setChecked(false); } void CounterVarSet::applyStyleSheet() @@ -348,28 +314,4 @@ void CounterVarSet::applyStyleSheet() )"; this->setStyleSheet(styleSheet); -} - -void CounterVarSet::on_checkBoxResetCnt1CurrValue_released() -{ - bool checked = ui->checkBoxResetCnt1CurrValue->isChecked(); - ui->spinBoxCnt1CurrValue->setEnabled(checked); -} - -void CounterVarSet::on_checkBoxResetCnt2CurrValue_released() -{ - bool checked = ui->checkBoxResetCnt2CurrValue->isChecked(); - ui->spinBoxCnt2CurrValue->setEnabled(checked); -} - -void CounterVarSet::on_pushOnlyCNT1Clear_pressed() -{ - // 转由主界面实现清零 byons@2026年4月25日 - // sysPara->devOp->clearProductCnt(1<<2); // 计数器1单独清零 -} - - -void CounterVarSet::on_pushOnlyCNT2Clear_pressed() -{ - // sysPara->devOp->clearProductCnt(1<<3);// 计数器2单独清零 } \ No newline at end of file diff --git a/CounterVarSet.h b/CounterVarSet.h index 4eeff4a..bd48bb5 100644 --- a/CounterVarSet.h +++ b/CounterVarSet.h @@ -10,6 +10,8 @@ namespace Ui { class CounterVarSet; } +class CounterEditor; + class CounterVarSet : public QWidget { Q_OBJECT @@ -40,14 +42,6 @@ signals: private slots: void buttonClickedSlot(); - void on_checkBoxResetCnt1CurrValue_released(); - - void on_checkBoxResetCnt2CurrValue_released(); - - void on_pushOnlyCNT1Clear_pressed(); - - void on_pushOnlyCNT2Clear_pressed(); - private: Ui::CounterVarSet *ui; diff --git a/DevOp.cpp b/DevOp.cpp index a22b9fd..6909172 100644 --- a/DevOp.cpp +++ b/DevOp.cpp @@ -3228,6 +3228,11 @@ void DevOp::writeFpgaCalandar(bool Enable){ step = 1; step = step < 0?(100000000 + step):step; sysPara->para.calandar_and_dat.cnt2Step = QString::number(step).toUInt(0,16); + + sysPara->status.cnt3CurrentValueInitDoneFlag = true; + sysPara->status.cnt2CurrentValueInitDoneFlag = true; + sysPara->status.cnt1CurrentValueInitDoneFlag = true; + // 与vx5相反,调换过值位置,比如0:4改为4:0 sysPara->para.calandar_and_dat.cntCurrValueInitEnable = (sysPara->status.cnt3CurrentValueInitDoneFlag?4:0)+ diff --git a/InkJetPrinter.cpp b/InkJetPrinter.cpp index 1ff9d39..5cdd6ec 100644 --- a/InkJetPrinter.cpp +++ b/InkJetPrinter.cpp @@ -298,8 +298,24 @@ void InkJetPrinter::showEvent(QShowEvent *e) QWidget::showEvent(e); if(firstShow) { - loadLastWorkAndPreparePrint(); + firstShow = false; + + static QTimer* fpgaReadyTimer = new QTimer(this); + fpgaReadyTimer->setInterval(1000); + connect(fpgaReadyTimer, &QTimer::timeout, this, [this](){ + if(sysPara->status.build_dat.builTime != 0) { + loadLastWorkAndPreparePrint(); + fpgaReadyTimer->stop(); + fpgaReadyTimer->deleteLater(); + fpgaReadyTimer = nullptr; + } + else { + qDebug() << "FPGA not connected yet."; + } + }); + + fpgaReadyTimer->start(); } } @@ -1011,7 +1027,7 @@ void InkJetPrinter::timerHandler(void){ arg((MAX_SELF_CHECK_CNT - sysPara->status.selfCheckCnt)/100)); } #ifdef QT_DEBUG - if(sysPara->status.selfCheckCnt >= 1500) // 测试自检改为15s + if(sysPara->status.selfCheckCnt >= 500) // 测试自检改为15s #else if(sysPara->status.selfCheckCnt >= MAX_SELF_CHECK_CNT) #endif @@ -2932,12 +2948,7 @@ bool InkJetPrinter::loadWorkFileAndPreparePrint(const QString &filename) } PrintSettingModel::applyToSysPara(model, sysPara); - - // 应用完数据之后,将当前值编辑标志位清除,避免下次读取时为 true - model.cnt1Settings.editCurrValue = false; - model.cnt2Settings.editCurrValue = false; - PicSceneLoader::saveSceneToXmlFile(filename, scene, &model); - + ret = m_MainWidget->generatePrintContent(scene); if(!ret) { LogInfo::setRunStatusText(QString("Failed to generate print content from work file: %1").arg(filename)); diff --git a/PrintTextDisplay.cpp b/PrintTextDisplay.cpp index dbedebc..9e8be6c 100644 --- a/PrintTextDisplay.cpp +++ b/PrintTextDisplay.cpp @@ -219,9 +219,9 @@ void PrintTextDisplay::paintEvent(QPaintEvent *event){ vars_t *p_var = &sysPara->status.vars[i]; int val = p_var->currVal; -#ifdef QT_DEBUG - val = 123078; -#endif +// #ifdef QT_DEBUG +// val = 123078; +// #endif int x = p_var->startColPos; int y = p_var->startRowPos; int rowDiff = p_var->endRowPos - p_var->startRowPos; diff --git a/Printsetting.cpp b/Printsetting.cpp index d74848d..c34c4a8 100644 --- a/Printsetting.cpp +++ b/Printsetting.cpp @@ -755,7 +755,6 @@ void PrintSettingModel::loadFromXml(PrintSettingModel& model, const QXmlStreamAt model.cnt1Settings.repeatValue = readIntAttrOrDefault("cnt1RepeatValue", model.cnt1Settings.repeatValue); model.cnt1Settings.stepValue = readIntAttrOrDefault("cnt1StepValue", model.cnt1Settings.stepValue); model.cnt1Settings.currValue = readIntAttrOrDefault("cnt1CurrValue", model.cnt1Settings.currValue); - model.cnt1Settings.editCurrValue = readBoolAttrOrDefault("cnt1EditCurrValue", model.cnt1Settings.editCurrValue); model.cnt1Settings.eleEyeIncEn = readBoolAttrOrDefault("cnt1EleEyeIncEn", model.cnt1Settings.eleEyeIncEn); model.cnt2Settings.startValue = readIntAttrOrDefault("cnt2StartValue", model.cnt2Settings.startValue); @@ -763,7 +762,6 @@ void PrintSettingModel::loadFromXml(PrintSettingModel& model, const QXmlStreamAt model.cnt2Settings.repeatValue = readIntAttrOrDefault("cnt2RepeatValue", model.cnt2Settings.repeatValue); model.cnt2Settings.stepValue = readIntAttrOrDefault("cnt2StepValue", model.cnt2Settings.stepValue); model.cnt2Settings.currValue = readIntAttrOrDefault("cnt2CurrValue", model.cnt2Settings.currValue); - model.cnt2Settings.editCurrValue = readBoolAttrOrDefault("cnt2EditCurrValue", model.cnt2Settings.editCurrValue); model.cnt2Settings.eleEyeIncEn = readBoolAttrOrDefault("cnt2EleEyeIncEn", model.cnt2Settings.eleEyeIncEn); } @@ -798,7 +796,6 @@ void PrintSettingModel::saveToXml(const PrintSettingModel& model, QXmlStreamWrit writer.writeAttribute("cnt1RepeatValue", QString::number(model.cnt1Settings.repeatValue)); writer.writeAttribute("cnt1StepValue", QString::number(model.cnt1Settings.stepValue)); writer.writeAttribute("cnt1CurrValue", QString::number(model.cnt1Settings.currValue)); - writer.writeAttribute("cnt1EditCurrValue", QString::number(model.cnt1Settings.editCurrValue)); writer.writeAttribute("cnt1EleEyeIncEn", QString::number(model.cnt1Settings.eleEyeIncEn)); writer.writeAttribute("cnt2StartValue", QString::number(model.cnt2Settings.startValue)); @@ -806,7 +803,6 @@ void PrintSettingModel::saveToXml(const PrintSettingModel& model, QXmlStreamWrit writer.writeAttribute("cnt2RepeatValue", QString::number(model.cnt2Settings.repeatValue)); writer.writeAttribute("cnt2StepValue", QString::number(model.cnt2Settings.stepValue)); writer.writeAttribute("cnt2CurrValue", QString::number(model.cnt2Settings.currValue)); - writer.writeAttribute("cnt2EditCurrValue", QString::number(model.cnt2Settings.editCurrValue)); writer.writeAttribute("cnt2EleEyeIncEn", QString::number(model.cnt2Settings.eleEyeIncEn)); } @@ -883,14 +879,12 @@ void PrintSettingModel::applyToSysPara(const PrintSettingModel &model, SysPara * sysPara->para.cnt1StepValue = model.cnt1Settings.stepValue; sysPara->para.cnt1RepeateValue = model.cnt1Settings.repeatValue; sysPara->para.cnt1CurrValue = model.cnt1Settings.currValue; - sysPara->status.cnt1CurrentValueInitDoneFlag = model.cnt1Settings.editCurrValue; sysPara->para.cnt2EndValue = model.cnt2Settings.endValue; sysPara->para.cnt2StartValue = model.cnt2Settings.startValue; sysPara->para.cnt2StepValue = model.cnt2Settings.stepValue; sysPara->para.cnt2RepeateValue = model.cnt2Settings.repeatValue; sysPara->para.cnt2CurrValue = model.cnt2Settings.currValue; - sysPara->status.cnt2CurrentValueInitDoneFlag = model.cnt2Settings.editCurrValue; } PrintSettingModel PrintSettingModel::fromSysPara(SysPara *sysPara) @@ -947,14 +941,12 @@ PrintSettingModel PrintSettingModel::fromSysPara(SysPara *sysPara) model.cnt1Settings.repeatValue = sysPara->para.cnt1RepeateValue; model.cnt1Settings.stepValue = sysPara->para.cnt1StepValue; model.cnt1Settings.currValue = sysPara->para.cnt1CurrValue; - model.cnt1Settings.editCurrValue = sysPara->status.cnt1CurrentValueInitDoneFlag; model.cnt2Settings.startValue = sysPara->para.cnt2StartValue; model.cnt2Settings.endValue = sysPara->para.cnt2EndValue; model.cnt2Settings.repeatValue = sysPara->para.cnt2RepeateValue; model.cnt2Settings.stepValue = sysPara->para.cnt2StepValue; model.cnt2Settings.currValue = sysPara->para.cnt2CurrValue; - model.cnt2Settings.editCurrValue = sysPara->status.cnt2CurrentValueInitDoneFlag; return model; } diff --git a/StateMachine/printerstatemanager.cpp b/StateMachine/printerstatemanager.cpp index d00fd65..3a72217 100644 --- a/StateMachine/printerstatemanager.cpp +++ b/StateMachine/printerstatemanager.cpp @@ -104,7 +104,6 @@ void PrinterStateManager::requestTransition(PrinterEvent event) qDebug() << "Request event:" << static_cast(event) << "Current:" << stateName(); - m_currentState = PrinterState::READY; Transition* trans = findTransition(event); if (!trans) { qDebug() << "Invalid transition, ignored"; diff --git a/StateMachine/printerstatemanager.h b/StateMachine/printerstatemanager.h index 3ec0323..ec87b9e 100644 --- a/StateMachine/printerstatemanager.h +++ b/StateMachine/printerstatemanager.h @@ -1,6 +1,6 @@ #ifndef PRINTERSTATEMANAGER_H #define PRINTERSTATEMANAGER_H -#pragma once + #include #include #include "SysPara.h" diff --git a/countervarset.ui b/countervarset.ui index cb9b78a..949413f 100644 --- a/countervarset.ui +++ b/countervarset.ui @@ -293,6 +293,9 @@ 50 + + QAbstractSpinBox::NoButtons + 1 @@ -321,6 +324,9 @@ 50 + + QAbstractSpinBox::NoButtons + 99999999 @@ -328,65 +334,9 @@ 9999 - - - - 263 - 197 - 100 - 50 - - - - - 0 - 0 - - - - - 100 - 50 - - - - - 100 - 50 - - - - 可变长度 - - - - - - 369 - 197 - 100 - 50 - - - - - 100 - 50 - - - - - 100 - 50 - - - - - - - false + true @@ -408,6 +358,9 @@ 50 + + QAbstractSpinBox::NoButtons + 0 @@ -455,31 +408,6 @@ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - 51 - 197 - 100 - 50 - - - - - 100 - 50 - - - - - 100 - 50 - - - - 小数点位数 - - @@ -501,6 +429,9 @@ 50 + + QAbstractSpinBox::NoButtons + 9999999 @@ -628,6 +559,9 @@ Qt::ImhDigitsOnly + + QAbstractSpinBox::NoButtons + -49999999 @@ -638,17 +572,17 @@ 1 - + - 156 - 200 + 50 + 140 100 50 - + 0 0 @@ -665,19 +599,31 @@ 50 - - 3 + + Qt::LeftToRight + + + 增量值: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - + - 270 - 139 + 260 + 140 100 50 + + + 0 + 0 + + 100 @@ -693,120 +639,12 @@ Qt::LeftToRight - - - - - Qt::Horizontal - - - - 37 - 17 - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 100 - 100 - - - - Qt::LeftToRight - - - false - - - - - - 当前值: - - - - - - - - - 56 - 139 - 100 - 50 - + + 当前值: - - - 100 - 50 - + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 100 - 50 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - - - - 增量值: - - - - @@ -846,6 +684,9 @@ + + QAbstractSpinBox::NoButtons + 9999999 @@ -917,6 +758,9 @@ 50 + + QAbstractSpinBox::NoButtons + 1 @@ -951,6 +795,9 @@ 50 + + QAbstractSpinBox::NoButtons + -49999999 @@ -1070,6 +917,9 @@ 50 + + QAbstractSpinBox::NoButtons + 999999 @@ -1116,7 +966,7 @@ - false + true @@ -1144,6 +994,9 @@ 50 + + QAbstractSpinBox::NoButtons + 0 @@ -1154,15 +1007,21 @@ 1 - + - 270 - 139 + 260 + 140 100 50 + + + 0 + 0 + + 100 @@ -1175,62 +1034,31 @@ 50 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 0 - 32 - - - - - 100 - 50 - - - - QRadioButton::indicator { -width: 25px; -height: 25px; -} - - - 当前值: - - - - + + Qt::LeftToRight + + + 当前值: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + - + - 56 - 139 + 50 + 140 100 50 + + + 0 + 0 + + 100 @@ -1243,127 +1071,14 @@ height: 25px; 50 - - - - - Qt::Horizontal - - - - 6 - 20 - - - - - - - - - 0 - 0 - - - - - 0 - 32 - - - - - 100 - 50 - - - - - - - 增量值: - - - - - - - - - 额外设置 - - - - false - - - - 280 - 130 - 101 - 31 - - - - QAbstractSpinBox::NoButtons - - - - - false - - - - 390 - 130 - 31 - 31 - + + Qt::LeftToRight - ← + 增量值: - - - - false - - - - 430 - 130 - 31 - 31 - - - - → - - - - - - 40 - 30 - 661 - 41 - - - - 如果预览与打印显示不正确,调整此设置可能恢复。 - - - - - - 280 - 90 - 171 - 31 - - - - 自定义字符宽度 + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -1397,38 +1112,6 @@ height: 25px; - - pushButton - clicked() - charWidthSpinBox - stepDown() - - - 430 - 175 - - - 336 - 176 - - - - - pushButton_2 - clicked() - charWidthSpinBox - stepUp() - - - 472 - 175 - - - 336 - 174 - - - pushButton_3 clicked() @@ -1461,69 +1144,5 @@ height: 25px; - - enbCharWidthSpinBox - clicked(bool) - charWidthSpinBox - setEnabled(bool) - - - 337 - 135 - - - 347 - 177 - - - - - enbCharWidthSpinBox - clicked(bool) - pushButton - setEnabled(bool) - - - 392 - 134 - - - 429 - 167 - - - - - enbCharWidthSpinBox - clicked(bool) - pushButton_2 - setEnabled(bool) - - - 409 - 130 - - - 461 - 183 - - - - - checkBoxResetCnt1CurrValue - toggled(bool) - spinBoxCnt1CurrValue - setDisabled(bool) - - - 335 - 198 - - - 453 - 198 - - - diff --git a/mainwidget.cpp b/mainwidget.cpp index 5f51d01..2845d4a 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -199,7 +199,7 @@ bool MainWidget::generatePrintContent(PicScene *scene) this->pPicScene = scene; onPreviewScene(); - // SendPrintDataToFpga(0); + SendPrintDataToFpga(0); return true; } @@ -946,11 +946,6 @@ void MainWidget::updateTotalCnt(int en) void MainWidget::on_m_StartBtn_clicked() { if(sysPara){ - bool MaxCol4000; - if(sysPara->status.flagOfNo67FPGA) - MaxCol4000 = true; - else - MaxCol4000 = false; test_flag = 0; if (!checkTriggerMode()) return; @@ -958,11 +953,13 @@ void MainWidget::on_m_StartBtn_clicked() // 打印状态交给状态机修改 // sysPara->status.isPrinting=false; auto mgr = PrinterStateManager::instance(); +#if !defined(FPGA_TEST) && !defined(QT_DEBUG) if (mgr && mgr->canStopPrint()) { mgr->requestTransition(PrinterEvent::StopPrint); } else {return;} +#endif - SendPrintDataToFpga(0); // 0--正常打印,1--打印交替部分信息1; 2--打印交替部分信息2, + // SendPrintDataToFpga(0); // 0--正常打印,1--打印交替部分信息1; 2--打印交替部分信息2, /*-------------------------------------------------------------------*/ sysPara->status.lastSynColDelay = -1; //目的是为了清空原来的数据 @@ -999,11 +996,13 @@ void MainWidget::on_m_StopBtn_clicked() } // sysPara->status.isPrinting=false;// 打印状态交给状态机修改 auto mgr = PrinterStateManager::instance(); +#if !defined(FPGA_TEST) && !defined(QT_DEBUG) if (mgr && mgr->canStopPrint()) { mgr->requestTransition(PrinterEvent::StopPrint); } else { return; } +#endif sysPara->devOp->printCtrl2(1); sysPara->devOp->printCtrl( PRINT_CTRL_STOP);//:PRINT_CTRL_STOPSYNCNT @@ -2373,8 +2372,6 @@ bool MainWidget::updatePhaseIndicatorLight(){ LogInfo::setRunStatusText(tr("相位故障,准备关机")); setRunStatus(tr("相位故障,准备关机")); strTitle = tr("相位故障,准备关机"); - - } } else if(sysPara->para.suspendAfterPhaseFault){ @@ -2531,6 +2528,11 @@ bool MainWidget::checkTriggerMode() } #endif + bool MaxCol4000; + if(sysPara->status.flagOfNo67FPGA) + MaxCol4000 = true; + else + MaxCol4000 = false; if(sysPara->status.currPrintCol > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide)){ QMessageBox::critical(0,tr("错误"),tr("当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度").arg(sysPara->status.currPrintCol).arg((MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide))); return false; diff --git a/scene/CounterEditor.cpp b/scene/CounterEditor.cpp index 2e8d5f3..177fecc 100644 --- a/scene/CounterEditor.cpp +++ b/scene/CounterEditor.cpp @@ -8,9 +8,6 @@ CounterEditor::CounterEditor(QWidget *parent) : { ui->setupUi(this); - connect(ui->checkBoxResetCnt2CurrValue, &QCheckBox::toggled, - this, &CounterEditor::onEditCurrValueToggled); - connect(ui->cbBoxCounterType, QOverload::of(&QComboBox::currentIndexChanged), this, &CounterEditor::onCounterTypeChanged); connect(ui->cbBoxDigitalNum, QOverload::of(&QComboBox::currentIndexChanged), this, &CounterEditor::onDigitalNumChanged); @@ -20,9 +17,6 @@ CounterEditor::CounterEditor(QWidget *parent) : connect(ui->spinBoxCnt2StepValue, QOverload::of(&QSpinBox::valueChanged), this, [this](int) {fetchCounterConfigFromView();} ); connect(ui->spinBoxCnt2CurrValue, QOverload::of(&QSpinBox::valueChanged), this, [this](int) {fetchCounterConfigFromView();} ); - connect(ui->checkBoxResetCnt2CurrValue, &QCheckBox::clicked, this, [this](bool) {fetchCounterConfigFromView();} ); - connect(ui->eleCNT2IncEn, &QCheckBox::clicked, this, [this](bool) {fetchCounterConfigFromView();} ); - setViewModel(m_vm); } @@ -63,15 +57,6 @@ void CounterEditor::setViewModel(CounterEditorVM vm) ui->spinBoxCnt2CurrValue->setValue(cnt.currValue); ui->spinBoxCnt2CurrValue->blockSignals(b); - b = ui->checkBoxResetCnt2CurrValue->blockSignals(true); - ui->checkBoxResetCnt2CurrValue->setChecked(cnt.editCurrValue); - ui->checkBoxResetCnt2CurrValue->blockSignals(b); - - b = ui->eleCNT2IncEn->blockSignals(true); - ui->eleCNT2IncEn->setChecked(cnt.eleEyeIncEn); - ui->eleCNT2IncEn->blockSignals(b); - - ui->spinBoxCnt2CurrValue->setEnabled(cnt.editCurrValue); ui->labelCnt2CurrValue->setText(QString::number(cnt.currValue)); b = ui->cbBoxCounterType->blockSignals(true); @@ -124,8 +109,6 @@ void CounterEditor::fetchCounterConfigFromView() cnt.repeatValue = ui->spinBoxCnt2RepeateCnt->value(); cnt.stepValue = ui->spinBoxCnt2StepValue->value(); cnt.currValue = ui->spinBoxCnt2CurrValue->value(); - cnt.editCurrValue = ui->checkBoxResetCnt2CurrValue->isChecked(); - cnt.eleEyeIncEn = ui->eleCNT2IncEn->isChecked(); } /** @@ -134,5 +117,4 @@ void CounterEditor::fetchCounterConfigFromView() */ void CounterEditor::onEditCurrValueToggled() { - ui->spinBoxCnt2CurrValue->setEnabled(ui->checkBoxResetCnt2CurrValue->isChecked()); } \ No newline at end of file diff --git a/scene/CounterEditor.h b/scene/CounterEditor.h index 3b6343a..a60e88d 100644 --- a/scene/CounterEditor.h +++ b/scene/CounterEditor.h @@ -24,7 +24,6 @@ struct CounterEditorVM { int repeatValue = 1; int stepValue = 1; int currValue = 1; - bool editCurrValue = false; // 对应 checkBoxResetCnt2CurrValue:勾选才允许重置/编辑当前值 bool eleEyeIncEn = false; // 对应 eleCNT2IncEn:电眼触发使计数器+1 }; diff --git a/scene/CounterEditor.ui b/scene/CounterEditor.ui index 5a7214e..53638ac 100644 --- a/scene/CounterEditor.ui +++ b/scene/CounterEditor.ui @@ -238,6 +238,9 @@ + + QAbstractSpinBox::NoButtons + 9999999 @@ -309,6 +312,9 @@ 50 + + QAbstractSpinBox::NoButtons + 1 @@ -343,6 +349,9 @@ 50 + + QAbstractSpinBox::NoButtons + -49999999 @@ -462,6 +471,9 @@ 50 + + QAbstractSpinBox::NoButtons + 999999 @@ -536,6 +548,9 @@ 50 + + QAbstractSpinBox::NoButtons + 0 @@ -546,154 +561,6 @@ 1 - - - - 270 - 179 - 100 - 50 - - - - - 100 - 50 - - - - - 100 - 50 - - - - - 1 - - - 1 - - - 1 - - - 1 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 100 - 50 - - - - QRadioButton::indicator { -width: 25px; -height: 25px; -} - - - 当前值: - - - - - - - - - 56 - 179 - 100 - 50 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 100 - 50 - - - - QRadioButton::indicator { -width: 25px; -height: 25px; -} - - - 增量值: - - - - - @@ -790,6 +657,38 @@ height: 25px; + + + + 260 + 180 + 100 + 50 + + + + 当前值: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 50 + 180 + 100 + 50 + + + + 增量值: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + diff --git a/scene/PicCounterItem.cpp b/scene/PicCounterItem.cpp index 0d7f9e1..28dd71d 100644 --- a/scene/PicCounterItem.cpp +++ b/scene/PicCounterItem.cpp @@ -4,6 +4,7 @@ #include #include #include +#include QHash defCharWidthMap; @@ -27,10 +28,10 @@ QVariant PicCounterItem::source() void PicCounterItem::setSource(QVariant var) { PicTextItem::setSource(var); - setCounter(counterType(), digitalNum()); + setCounter(counterType(), digitalNum(), m_displayNum); } -void PicCounterItem::setCounter(COUNTER_TYPE type, int digitalNum) +void PicCounterItem::setCounter(COUNTER_TYPE type, int digitalNum, int displayNum) { if(type != COUNTER_TYPE_1 && type != COUNTER_TYPE_2) { qWarning() << "Missing counter type: " << type; @@ -63,9 +64,30 @@ void PicCounterItem::setCounter(COUNTER_TYPE type, int digitalNum) int height = font.pixelSize(); width += letterSpace(); + // 计算像素长度最长的数字 0 - 9 + int digital = 0; + int digitalWidth = 0; + for(int i = 0; i <= 9; ++i) { + auto w = fontMetrics.horizontalAdvance(QString::number(i)); + if(w > digitalWidth) { + digitalWidth = w; + digital = i; + } + } + m_counterType = type; m_digitalNum = qBound(1, digitalNum, 8); - m_digitalImg = strToImage(QString("8").repeated(m_digitalNum)); + m_digitalImg = strToImage(QString::number(digital).repeated(m_digitalNum)); + m_displayNum = displayNum; + + // 临时使用这种手法显示当前值吧 + m_digitalImg.fill(0x00000000); + auto displayNumImage = strToImage(QString::number(displayNum).rightJustified(m_digitalNum, '0').right(m_digitalNum)); + QPainter p; + p.begin(&m_digitalImg); + p.drawImage(QPoint(0, 0), displayNumImage); + p.end(); + applyModify(); qInfo() << "Counter item set to " << type ; @@ -84,7 +106,7 @@ int PicCounterItem::charWidth() void PicCounterItem::setCharWidth(int width) { m_charWidthMap[font().family()] = width; - setCounter(counterType(), digitalNum()); + setCounter(counterType(), digitalNum(), m_displayNum); } QImage PicCounterItem::itemImage() @@ -96,6 +118,7 @@ void PicCounterItem::setCustomAttrs(const QXmlStreamAttributes &attrs) { auto typeRef = attrs.value("counter_type"); auto digitalNumRef = attrs.value("digital_num"); + auto displayNumRef = attrs.value("display_num"); bool ok = false; int counterType = typeRef.toInt(&ok); @@ -111,7 +134,14 @@ void PicCounterItem::setCustomAttrs(const QXmlStreamAttributes &attrs) return; } - setCounter(static_cast(counterType), digitalNum); + ok = false; + int displayNum = displayNumRef.toInt(&ok); + if(!ok || displayNum <= 0) { + qWarning() << "Invalied counter display number: " << displayNum; + return; + } + + setCounter(static_cast(counterType), digitalNum, displayNum); qInfo() << "Loaded attrs from xml: " << " counter type: " << counterType << ", digitalNum: " << digitalNum; } @@ -119,6 +149,7 @@ void PicCounterItem::saveCustomAttrs(QXmlStreamAttributes &attrs) { attrs.append("counter_type", QString::number(counterType())); attrs.append("digital_num", QString::number(digitalNum())); + attrs.append("display_num", QString::number(m_displayNum)); qInfo() << "Set attrs to xml: " << " counter type: " << counterType() << ", digitalNum: " << digitalNum(); } diff --git a/scene/PicCounterItem.h b/scene/PicCounterItem.h index 9e7b634..37208f4 100644 --- a/scene/PicCounterItem.h +++ b/scene/PicCounterItem.h @@ -13,7 +13,7 @@ public: virtual QVariant source() override; virtual void setSource(QVariant var) override; - void setCounter(COUNTER_TYPE type, int digitalNum); + void setCounter(COUNTER_TYPE type, int digitalNum, int displayNum); COUNTER_TYPE counterType() const { return m_counterType; } @@ -43,6 +43,7 @@ private: int m_digitalNum; QImage m_digitalImg; QHash m_charWidthMap; + int m_displayNum = 0; }; #endif // _PIC_COUNTER_ITEM_H_ diff --git a/scene/PicDateItem.cpp b/scene/PicDateItem.cpp index 9fc1ad3..52339b0 100644 --- a/scene/PicDateItem.cpp +++ b/scene/PicDateItem.cpp @@ -191,7 +191,7 @@ QImage PicDateItem::itemImage() return currImg; int width = qMax(currImg.width(), m_maxSize.width()); - int height = qMax(currImg.height(), m_maxSize.height()); + int height = currImg.height(); QImage img(width, height, QImage::Format_ARGB32); img.fill(QColor(0,0,0,0).rgba()); @@ -206,17 +206,19 @@ QImage PicDateItem::itemImage() QRectF PicDateItem::boundingRect() const { - // 优先使用已经应用变换后的 m_itemImage(与 PicTextItem 保持一致) - if (!m_itemImage.isNull()) { - return QRectF(0, 0, m_itemImage.width(), m_itemImage.height()); - } + return PicTextItem::boundingRect(); - // 否则基于缓存的最大像素尺寸和粗体倍数估算 - int w = m_maxSize.width(); - int h = m_maxSize.height(); - if (w <= 0 || h <= 0) - return QGraphicsTextItem::boundingRect(); + // // 优先使用已经应用变换后的 m_itemImage(与 PicTextItem 保持一致) + // if (!m_itemImage.isNull()) { + // return QRectF(0, 0, m_itemImage.width(), m_itemImage.height()); + // } - qreal bw = qreal(w) * qMax(1, m_boldMultiple); - return QRectF(0, 0, bw, qreal(h)); + // // 否则基于缓存的最大像素尺寸和粗体倍数估算 + // int w = m_maxSize.width(); + // int h = m_maxSize.height(); + // if (w <= 0 || h <= 0) + // return QGraphicsTextItem::boundingRect(); + + // qreal bw = qreal(w) * qMax(1, m_boldMultiple); + // return QRectF(0, 0, bw, qreal(h)); } \ No newline at end of file diff --git a/scene/PicScheduleShiftItem.cpp b/scene/PicScheduleShiftItem.cpp index 76ca3a3..45b5516 100644 --- a/scene/PicScheduleShiftItem.cpp +++ b/scene/PicScheduleShiftItem.cpp @@ -104,7 +104,16 @@ QImage PicScheduleShiftItem::itemImage() if(str.isEmpty()) { return QImage(); } - return strToImage(str); + auto forceImg = strToImage(str); + QImage backgroundImg(m_maxSize.width(), forceImg.height(), QImage::Format_ARGB32); + backgroundImg.fill(0x00000000); + + QPainter p; + p.begin(&backgroundImg); + p.drawImage(QPoint(0, 0), forceImg); + p.end(); + + return backgroundImg; } QSize PicScheduleShiftItem::calcMaxSize() @@ -123,6 +132,10 @@ QSize PicScheduleShiftItem::calcMaxSize() QRectF PicScheduleShiftItem::boundingRect() const { + auto r = PicTextItem::boundingRect(); + r.setWidth(m_maxSize.width()); + return r; + if (!m_itemImage.isNull()) { return QRectF(0, 0, m_itemImage.width(), m_itemImage.height()); } diff --git a/testprintwidget.cpp b/testprintwidget.cpp index a668066..ba9f7df 100644 --- a/testprintwidget.cpp +++ b/testprintwidget.cpp @@ -447,6 +447,20 @@ void TestPrintWidget::openWorkFile(QString filePath){ m_printSetting->setModel(m_printSettingModel); } + for(auto item : pPicScene->items()) { + auto txtItem = dynamic_cast(item); + if(!txtItem || txtItem->sourceType() != SourceType::COUNTER) + continue; + + auto cntItem = dynamic_cast(item); + if(!cntItem) + continue; + + auto currValue = cntItem->counterType() == COUNTER_TYPE_1 ? + m_printSettingModel.cnt1Settings.currValue : m_printSettingModel.cnt2Settings.currValue; + cntItem->setCounter(cntItem->counterType(), cntItem->digitalNum(), currValue); + } + qDebug() << "xmlfileName:" << xmlfileName; } @@ -553,7 +567,9 @@ void TestPrintWidget::pasteCopiedLayer() if (dstCounter) { dstCounter->setCustomFont(m_copiedCounterFontFamily); dstCounter->setLetterSpace(m_copiedCounterLetterSpace); - dstCounter->setCounter(static_cast(m_copiedCounterType), m_copiedCounterDigitalNum); + + int displayNum = static_cast(m_copiedCounterType) == COUNTER_TYPE_1 ? m_printSettingModel.cnt1Settings.currValue : m_printSettingModel.cnt2Settings.currValue; + dstCounter->setCounter(static_cast(m_copiedCounterType), m_copiedCounterDigitalNum, displayNum); } } @@ -780,13 +796,8 @@ void TestPrintWidget::onItemEditorAccepted() { if(!itemEditor || !itemEditor->currentItem()) return; - if(itemEditor->currentItem()->source() == SourceType::UNKNOWN) { - // Nothing.... - } - else { - PicTextItem* textItem = itemEditor->currentItem(); - textItem->applyModify(); - } + PicTextItem* textItem = itemEditor->currentItem(); + textItem->applyModify(); } void TestPrintWidget::onSceneFocusedItemPosChanged(QPoint p) @@ -1069,8 +1080,9 @@ void TestPrintWidget::addCounterItem(CounterViewModel vm, QSharedPointer if(item->sourceType() == SourceType::COUNTER) { auto counterItem = dynamic_cast(item); - counterItem->setCounter(static_cast(vm.counterType), vm.digitalNum); counterItem->setLetterSpace(int(font.letterSpacing())); + int displayNum = static_cast(vm.counterType) == COUNTER_TYPE_1 ? vm.cnt1Settings.currValue : vm.cnt2Settings.currValue; + counterItem->setCounter(static_cast(vm.counterType), vm.digitalNum, displayNum); if(vm.enbCustomCharWidth) { counterItem->setCharWidth(vm.charWidth); } @@ -1088,18 +1100,18 @@ void TestPrintWidget::addCounterItem(CounterViewModel vm, QSharedPointer pPicScene->clearSelection(); PicCounterItem* item = new PicCounterItem(); pPicScene->addItem(item); - item->setCounter(static_cast(vm.counterType), vm.digitalNum); + + item->setLetterSpace(static_cast(font.letterSpacing())); + + int displayNum = static_cast(vm.counterType) == COUNTER_TYPE_1 ? vm.cnt1Settings.currValue : vm.cnt2Settings.currValue; + item->setCounter(static_cast(vm.counterType), vm.digitalNum, displayNum); + auto boundingRect = pPicScene->itemsBoundingRect(); int y = sysPara->para.canvasHeight - item->boundingRect().height(); item->setPos(x_item, y); x_item = x_item + boundingRect.right() + 5; item->setSelected(true); - item->setLetterSpace(static_cast(font.letterSpacing())); - // item->setCustomFont(font.family()); - if(vm.enbCustomCharWidth) { - item->setCharWidth(vm.charWidth); - } - + m_printSettingModel.cnt1Settings = vm.cnt1Settings; m_printSettingModel.cnt2Settings = vm.cnt2Settings; }