修复因场景模式修改为绝对坐标引起的打印补全、蜂鸣器报警改为常响、添加相位故障关闭回收槽功能、取消翻转上下颠倒,与莱宾格行为同步、修改场景模式默认字体为7点、取消变量占位图设计

This commit is contained in:
2026-08-28 16:42:19 +08:00
parent 9564bd107e
commit 665c0fd81a
25 changed files with 2396 additions and 2538 deletions
+22 -86
View File
@@ -993,25 +993,6 @@ void MainWidget::on_m_StartBtn_clicked()
sysPara->devOp->highVoltageCtrl(1);
sysPara->devOp->setHighVoltageAmplitudetoSTM32();
sysPara->status.waitHightVolOff = 0;
// if(!printintFlag)setRunStatus(tr("正在加高压..."));
// 复位计数器
if(sysPara->status.FileChangeRestCntFlag){
if(sysPara->para.ResetAllProductCntEn)
{
sysPara->devOp->clearProductCnt(3 | 0x10); // [3]总产品计数器清零FPGA
sysPara->para.totalProductCnt=0;
}
else if(sysPara->para.ResetProductCntEn)
{
sysPara->devOp->clearProductCnt(3);
}
sysPara->status.FileChangeRestCntFlag=0;
sysPara->saveParaToFile();
}
// onPreviewScene 没有必要再次调用,评估后删除 byons@2026年7月28日
if(sysPara->para.EditMode == SCENE)
onPreviewScene();
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)));
@@ -1025,7 +1006,7 @@ void MainWidget::on_m_StartBtn_clicked()
{
int dotNumPerCol = sysPara->status.currPrintRow*(1 + sysPara->para.printRowDelay) + sysPara->para.printColDelay;
long printTmUs = 1.0f*dotNumPerCol*(1 + sysPara->para.charBold)*sysPara->status.currPrintCol*(2*sysPara->para.divideRatio)/(FPGA_SYS_HZ/1000000);
if((printTmUs/1000 + 3) > (sysPara->para.printDelayMs)
if((printTmUs/1000 + 3) > (sysPara->para.printDelayMs)\
&& (sysPara->para.timeTriggerPrintMode == TIME_TRIGGER_PRINT_MODE_HEAD_TO_HEAD)
&& (sysPara->para.printTriggerMode == PRINT_TRIGGER_TIME )
) // 在电眼方式下,是否需要判呢?
@@ -1127,7 +1108,7 @@ void MainWidget::SendPrintDataToFpga(unsigned char alterEnable, bool isUpdate)
}
sysPara->devOp->fpgaWr(0,blankDat1,sizeof(blankDat1));//...所加的空白偏移地址
// 交替打印处理
unsigned char *dat;
size_t sizeofdat;
bool MaxCol4000;
@@ -1142,10 +1123,11 @@ void MainWidget::SendPrintDataToFpga(unsigned char alterEnable, bool isUpdate)
dat =sysPara->status.printDat;
sizeofdat = sizeof(sysPara->status.printDat);
}
if(sysPara->status.currPrintCol* MAX_PRINT_ROW_BYTE_NUM <= 20000)
sysPara->devOp->fpgaWr(sizeof(blankDat1),dat, sysPara->status.currPrintCol* MAX_PRINT_ROW_BYTE_NUM);
else
sysPara->devOp->fpgaWrD2(sizeof(blankDat1),dat, sysPara->status.currPrintCol* MAX_PRINT_ROW_BYTE_NUM);
if(sysPara->status.currPrintCol* MAX_PRINT_ROW_BYTE_NUM <= 20000)
sysPara->devOp->fpgaWr(sizeof(blankDat1),dat, sysPara->status.currPrintCol* MAX_PRINT_ROW_BYTE_NUM);
else
sysPara->devOp->fpgaWrD2(sizeof(blankDat1),dat, sysPara->status.currPrintCol* MAX_PRINT_ROW_BYTE_NUM);
static QElapsedTimer bnsTimer;
@@ -2047,7 +2029,7 @@ void MainWidget::onPreviewScene()
// int maxPicHeight = qMin(sceneRect.height(), int(sysPara->para.canvasHeight));
// QSize size(coldot,maxPicHeight);
int coldot = qMin(int(contentRect.right()), MaxCol4000 ? MAX_PRINT_COL_NUM_Normal : MAX_PRINT_COL_NUM_Wide);
QSize size(MAX_PRINT_COL_NUM_Normal,sysPara->para.canvasHeight);
QSize size(coldot, sysPara->para.canvasHeight);
if(size.isEmpty()) {
@@ -2131,67 +2113,26 @@ void MainWidget::onPreviewScene()
varPara.letterSpace = counterItem->letterSpace();
++sysPara->status.variNum;
// // 将变量序号、类型、数字个数、大小位置打印到日志
// LogInfo::setRunStatusText("Variable " + QString::number(varI) + ": type=" + QString::number(varPara.type) +
// "\n digitalNum=" + QString::number(varPara.digitalNum) +
// "\n width=" + QString::number(varPara.width) +
// "\n height=" + QString::number(varPara.height) +
// "\n startColPos=" + QString::number(varPara.startColPos) +
// "\n endRowPos=" + QString::number(varPara.endRowPos) +
// "\n startRowPos=" + QString::number(varPara.startRowPos) +
// "\n letterSpace=" + QString::number(varPara.letterSpace));
}
pPicScene->render(&painter, itemRect, sourceRect);
}
sysPara->status.currPrintRow = contentRect.bottom();
sysPara->status.currPrintCol = contentRect.right();
sysPara->status.currPrintRow = size.height();
sysPara->status.currPrintCol = size.width();
imageToPrintData(image, 0, 0);
// /*--------------------------------------------------------------------------*/
// generateCharRamData();
generateCharRamDataV2();
if(sysPara->status.currPrintRow>MAX_PRINT_ROW_NUM-1)sysPara->status.currPrintRow=MAX_PRINT_ROW_NUM-1;
sysPara->status.currPrintRow = qMin(sysPara->status.currPrintRow, MAX_PRINT_ROW_NUM-1);
// 计算末行位置
bool found = false;
int lastRow = sysPara->status.currPrintRow;
for(int j = sysPara->status.currPrintRow; j > 2 ; j--){
for(int i = 0; i < coldot; i++){
if(dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] & (1 << (j%8))){
lastRow = j+1;
found = true;//qDebug()<<"fOUND:"<<i<<j<<dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8]<<sysPara->status.currPrintRow;
break;
}
}
if(found)
break;
}
sysPara->status.currPrintRow = qBound(1, lastRow, MAX_PRINT_ROW_NUM - 1);
int wmax = sysPara->status.currPrintRow;
sysPara->status.currAlterPrintRow = sysPara->status.currPrintRow/2;
if(sysPara->para.alterPrint.enable<1) sysPara->para.AlterMode=0;
else {
if(sysPara->para.AlterMode==0)sysPara->para.AlterMode=1;
wmax = sysPara->status.currAlterPrintRow;
}
/*-------------------------------切换到显示窗口-----------------------------------*/
qDebug() << "currPrintCol: " << sysPara->status.currPrintCol;
LogInfo::setRunStatusText("currPrintCol: " + QString::number(sysPara->status.currPrintCol));
LogInfo::setRunStatusText("currPrintRow: " + QString::number(sysPara->status.currPrintRow));
LogInfo::setRunStatusText(QString("Items bounding rect: {%1, %2}").arg(sceneRect.width()).arg(sceneRect.height()));
// sysPara->status.currPrintRow = sceneRect.height();
sysPara->status.currPrintCol = sceneRect.width();
// sysPara->status.currPrintCol = sceneRect.width();
auto rows = sysPara->para.AlterMode?sysPara->status.currAlterPrintRow : sysPara->status.currPrintRow;
rows = std::max(rows, (m_PrintDisplay->parentWidget()->height() / m_PrintDisplay->currScaleRatio()));
@@ -2207,12 +2148,6 @@ void MainWidget::handleEmptySize()
bool MaxCol4000 = sysPara->status.flagOfNo67FPGA ? true : false;
QSize emptySize(MaxCol4000 ? MAX_PRINT_COL_NUM_Normal : MAX_PRINT_COL_NUM_Wide, MAX_PRINT_ROW_NUM);
// 不是,渲染这个有什么用处吗?byons@2026年7月21日
// QImage emptyImage(emptySize, QImage::Format_ARGB32);
// emptyImage.fill(0x00ffffff); // 填充白色背景,与正常场景渲染一致
// QPainter emptyPainter(&emptyImage);
// pPicScene->render(&emptyPainter, QRectF(), QRectF(0, 0, emptySize.width(), emptySize.height()));
// 初始化打印参数,避免空场景导致的参数异常
sysPara->status.currPrintRow = 0;
sysPara->status.currPrintCol = 0; // emptySize.width();
@@ -2496,15 +2431,11 @@ bool MainWidget::updatePhaseIndicatorLight(){
}
}
else if(sysPara->para.suspendAfterPhaseFault){
if(sysPara->para.stopCounterMeterAfterFault){
if(startPrintingFlag && printintFlag){ //已经在打印,则暂停打印
// on_pushButtonPausePrint_pressed();
on_m_StopBtn_clicked();
LogInfo::setRunStatusText(tr("相位故障,暂停打印"));
setRunStatus(tr("相位故障,暂停打印"));
strTitle = tr("相位故障,暂停打印");
}
if(sysPara->status.isPrinting){ //已经在打印,则暂停打印
on_m_StopBtn_clicked();
LogInfo::setRunStatusText(tr("相位故障,暂停打印"));
setRunStatus(tr("相位故障,暂停打印"));
strTitle = tr("相位故障,暂停打印");
}
else if(!sysPara->status.DACDisable){
sysPara->devOp->printCtrl(PRINT_CTRL_DAC_DISABLE);
@@ -2512,9 +2443,14 @@ bool MainWidget::updatePhaseIndicatorLight(){
LogInfo::setRunStatusText(tr("相位故障,屏蔽DAC输出"));
setRunStatus(tr("相位故障,屏蔽充电"));
strTitle = tr("相位故障,屏蔽充电");
}
}
if(sysPara->para.closeReclaimTankWhenPhaseFault) {
on_m_LeftBtn_clicked();
LogInfo::setRunStatusText(tr("相位故障, 关闭回收槽"));
setRunStatus(tr("相位故障,关闭回收槽"));
strTitle = tr("相位故障,关闭回收槽");
}
}
}