抽离printsettings前的暂存

This commit is contained in:
2026-06-26 15:29:45 +08:00
parent 864b60020e
commit 7c25953cef
7 changed files with 478 additions and 155 deletions
+197 -23
View File
@@ -3,6 +3,7 @@
#include <QMessageBox>
#include <QDebug>
#include "LogInfo.h"
PrintSetting::PrintSetting(QWidget *parent) :
QWidget(parent),
@@ -29,9 +30,17 @@ PrintSetting::PrintSetting(QWidget *parent) :
ui->checkBoxPulseOutputEnable->hide();
ui->comboBoxEleEyeMakeClean->setCurrentIndex(0);
ui->comboBoxEleEyeMakeClean->hide();
ui->labelSynTriggerPrintLen->hide();
ui->spinBoxSynTriggerPrintLen->hide();
ui->labelSynPrintMode->hide();
ui->comboBoxSynPrintMode->hide();
// 间隔模式默认行末对行首
ui->comboBoxTimeTriggerMode->setEnabled(false);
ui->comboBoxTimeTriggerMode->hide();
ui->spinBoxpluseSinal->hide();
ui->labelTimeTriggerMode->hide();
ui->label_6->hide();
init();
@@ -84,26 +93,13 @@ void PrintSetting::buttonClickedSlot()
{
emit sendButtonClickedSignal(1);
}else if(btn == m_checkBtn){
emit sendButtonClickedSignal(2);
on_pushButtonApply_pressed();
emit sendButtonClickedSignal(2);
}
}
void PrintSetting::on_pushButtonApply_pressed(){
applyUIPara();
applyUITriggerPara();
if(sysPara->devOp->writeFpgaPrintPara(true) != -1) {
QMessageBox box(QMessageBox::Icon::Information, tr("提示"), tr("应用成功"), QMessageBox::Ok, nullptr);
auto btn = box.button(QMessageBox::Ok);
// btn->setFixedSize(80, 40);
box.exec();
}
if(sysPara)
sysPara->saveParaToFile ();
applyPrintSettingsToSysPara(true);
}
void PrintSetting::applyUIPara(){
@@ -158,7 +154,6 @@ void PrintSetting::updateSysParaToUI(){
}
}
void PrintSetting::TriggerupdateSysParaToUI(){
if(sysPara)
{
@@ -294,8 +289,8 @@ void PrintSetting::applyUITriggerPara(){
{
ui->labelOutputPulseDelayMs->setText(tr("延时(毫米):"));
}
else ui->labelOutputPulseDelayMs->setText(tr("延时(毫秒):"));
else
ui->labelOutputPulseDelayMs->setText(tr("延时(毫秒):"));
}
}
@@ -303,19 +298,19 @@ void PrintSetting::applyUITriggerPara(){
void PrintSetting::GetTriggerUIPara(){
if(sysPara){
sysPara->para.eleEyeTriggerPrintDelay = ui->spinBoxEleEyeTriggerPrintDelay->value();
sysPara->para.timeTriggerPrintMode = ui->comboBoxTimeTriggerMode->currentIndex();
sysPara->para.timeTriggerPrintMode = 0; // ui->comboBoxTimeTriggerMode->currentIndex();
sysPara->para.elecEyeTriggerInterval = ui->spinBoxEleEyeTriggerIntervalMs->value(); //电眼触发的重复间隔
int value = 0;
if (ui->cb_unlimited->isChecked()) value = UINT_MAX / 2;
if (ui->cb_unlimited->isChecked()) value = UINT16_MAX;
else value = ui->spinBoxEleEyeTriggerRepeatCnt->value();
sysPara->para.photoElectricityRepeateNum = value;
sysPara->para.synTriggerPrintLenMm = ui->spinBoxSynTriggerPrintLen->text().toFloat();
sysPara->para.synTriggerPrintLenMm = ui->spinBoxEleEyeTriggerIntervalMs->value();
//sysPara->para.synTriggerPrintLenMm = ui->spinBoxSynTriggerPrintLen->value();
sysPara->para.synPulseNumPerMm = ui->lineEditTriggerPulsePerMm->text().toFloat();
sysPara->para.sysTriggerPrintMode = ui->comboBoxSynPrintMode->currentIndex();
sysPara->para.sysTriggerPrintMode = SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH; // ui->comboBoxSynPrintMode->currentIndex();
if(sysPara->para.sysTriggerPrintMode == SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH)
//edit@11-19
;//sysPara->para.synCharWidthRatio = ui->spinBoxSynTriggerPrintLenRatio->value();
@@ -751,6 +746,36 @@ void PrintSetting::setEnableSynTriggerSetting(bool flag){
ui->comboBoxSynPrintMode->setEnabled(flag);
}
void PrintSetting::applyPrintSettingsToSysPara(bool showTip)
{
applyUIPara();
applyUITriggerPara();
if(sysPara->devOp->writeFpgaPrintPara(true) != -1 && showTip) {
QMessageBox box(QMessageBox::Icon::Information, tr("提示"), tr("应用成功"), QMessageBox::Ok, nullptr);
auto btn = box.button(QMessageBox::Ok);
// btn->setFixedSize(80, 40);
box.exec();
}
if(sysPara)
sysPara->saveParaToFile ();
}
PrintSettingModel PrintSetting::model()
{
return PrintSettingModel::fromSysPara(sysPara);
}
void PrintSetting::setModel(const PrintSettingModel &model)
{
PrintSettingModel::applyToSysPara(model, sysPara);
updateSysParaToUI();
LogInfo::setRunStatusText("Print settings: " + PrintSettingModel::toString(model));
}
void PrintSetting::on_radioButtonSynTriggerInner_clicked()
{
setEnableSynTriggerSetting(false);
@@ -803,3 +828,152 @@ void PrintSetting::on_cb_unlimited_clicked(bool checked)
{
// ui->spinBoxEleEyeTriggerRepeatCnt->setEnabled(!checked);
}
void PrintSettingModel::loadFromXml(PrintSettingModel& model, const QXmlStreamAttributes& attrs)
{
model.timeTriggerPrintMode = attrs.value("timeTriggerPrintMode").toInt();
model.triggerInterval = attrs.value("triggerInterval").toUInt();
model.eleEyeRepeatCnt = attrs.value("eleEyeRepeatCnt").toUInt();
model.triggerMode = attrs.value("triggerMode").toUInt();
model.encoderPulsePerMm = attrs.value("encoderPulsePerMm").toFloat();
model.printColDelay = attrs.value("printColDelay").toUInt();
model.volParaIndex = (unsigned short)attrs.value("volParaIndex").toUInt();
model.eleEyeTriggerPrintDelay = (unsigned short)attrs.value("eleEyeTriggerPrintDelay").toUInt();
model.altMirrorGap = (unsigned short)attrs.value("altMirrorGap").toUInt();
model.eleMaskTime = (unsigned short)attrs.value("eleMaskTime").toUInt();
model.syncTriggerMode = (unsigned char)attrs.value("syncTriggerMode").toUInt();
model.mode0211 = (unsigned char)attrs.value("mode0211").toUInt();
model.highVoltageAmplitude = (unsigned char)attrs.value("highVoltageAmplitude").toUInt();
model.altMirrorType = (unsigned char)attrs.value("altMirrorType").toUInt();
model.leftRightInverse = attrs.value("leftRightInverse").toInt() != 0;
model.upDownInverse = attrs.value("upDownInverse").toInt() != 0;
model.eleEyeTriggerSynPrintEn = attrs.value("eleEyeTriggerSynPrintEn").toInt() != 0;
}
void PrintSettingModel::saveToXml(const PrintSettingModel& model, QXmlStreamWriter& writer)
{
writer.writeAttribute("timeTriggerPrintMode", QString::number(model.timeTriggerPrintMode));
writer.writeAttribute("triggerInterval", QString::number(model.triggerInterval));
writer.writeAttribute("eleEyeRepeatCnt", QString::number(model.eleEyeRepeatCnt));
writer.writeAttribute("triggerMode", QString::number(model.triggerMode));
writer.writeAttribute("encoderPulsePerMm", QString::number((double)model.encoderPulsePerMm));
writer.writeAttribute("printColDelay", QString::number(model.printColDelay));
writer.writeAttribute("volParaIndex", QString::number(model.volParaIndex));
writer.writeAttribute("eleEyeTriggerPrintDelay", QString::number(model.eleEyeTriggerPrintDelay));
writer.writeAttribute("altMirrorGap", QString::number(model.altMirrorGap));
writer.writeAttribute("eleMaskTime", QString::number(model.eleMaskTime));
writer.writeAttribute("syncTriggerMode", QString::number(model.syncTriggerMode));
writer.writeAttribute("mode0211", QString::number(model.mode0211));
writer.writeAttribute("highVoltageAmplitude", QString::number(model.highVoltageAmplitude));
writer.writeAttribute("altMirrorType", QString::number(model.altMirrorType));
writer.writeAttribute("leftRightInverse", QString::number(model.leftRightInverse));
writer.writeAttribute("upDownInverse", QString::number(model.upDownInverse));
writer.writeAttribute("eleEyeTriggerSynPrintEn", QString::number(model.eleEyeTriggerSynPrintEn));
}
void PrintSettingModel::applyToSysPara(const PrintSettingModel &model, SysPara *sysPara)
{
// 喷印风格相关
sysPara->para.leftRightInverse = model.leftRightInverse;
sysPara->para.upDownInverse = model.upDownInverse;
sysPara->para.currSelectVolPara = model.volParaIndex;
sysPara->para.printColDelay = model.printColDelay;
sysPara->para.HighVoltageAmplitude = model.highVoltageAmplitude;
sysPara->para.mode0211 = model.mode0211;
sysPara->para.printTriggerMode = model.triggerMode;
sysPara->para.eleEyeTriggerPrintDelay = model.eleEyeTriggerPrintDelay;
sysPara->para.timeTriggerPrintMode = model.timeTriggerPrintMode;
sysPara->para.elecEyeTriggerInterval = model.triggerInterval;
sysPara->para.photoElectricityRepeateNum = model.eleEyeRepeatCnt;
sysPara->para.synTriggerPrintLenMm = (float)model.triggerInterval;
sysPara->para.synPulseNumPerMm = model.encoderPulsePerMm;
sysPara->para.sysTriggerPrintMode = SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH;
sysPara->para.AltMirrorGap = (model.altMirrorType << 12) | ((uint32_t)(model.altMirrorGap) & 0x0fff);
sysPara->para.printDelayMs = (int)model.triggerInterval;
sysPara->para.eleEyeTriggerSynPrintEn = model.eleEyeTriggerSynPrintEn;
// 韩国版本不需要电眼清零 byons@2026年6月23日
sysPara->para.eleEyeClearCntInSynMode = 0x20;
sysPara->para.syncRevCompDisable = 0;
sysPara->para.synPulsePerMmX8 = (unsigned short)((unsigned int)sysPara->para.synPulseNumPerMm <<8);
sysPara->para.eleMaskTime = model.eleMaskTime;
// 带补偿的正反转打印选项,位于最后两个comboBox item
sysPara->para.synchronizorActType = model.syncTriggerMode > 2 ?
model.syncTriggerMode - 2 : model.syncTriggerMode;
sysPara->para.syncRevCompDisable = model.syncTriggerMode <= 2;
sysPara->para.eleEyeEdgetTriggerInner =
model.triggerMode != PRINT_TRIGGER_ELEC_EYE_EDGE
&& model.triggerMode != PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL;
sysPara->para.eleEyeEdgetTriggerExternal = !sysPara->para.eleEyeEdgetTriggerInner;
bool isEyeMode = (model.triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE
|| model.triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL);
sysPara->para.synTriggerInner =
model.triggerMode != PRINT_TRIGGER_SYNCHRONIZER
&& !(isEyeMode && model.eleEyeTriggerSynPrintEn);
sysPara->para.synTriggerExternal = !sysPara->para.synTriggerInner;
}
PrintSettingModel PrintSettingModel::fromSysPara(SysPara *sysPara)
{
PrintSettingModel model;
model.leftRightInverse = sysPara->para.leftRightInverse;
model.upDownInverse = sysPara->para.upDownInverse;
model.mode0211 = sysPara->para.mode0211;
model.printColDelay = sysPara->para.printColDelay;
model.highVoltageAmplitude = sysPara->para.HighVoltageAmplitude;
model.volParaIndex = sysPara->para.currSelectVolPara;
model.triggerMode = sysPara->para.printTriggerMode;
model.eleEyeTriggerSynPrintEn = sysPara->para.eleEyeTriggerSynPrintEn;
model.eleMaskTime = sysPara->para.eleMaskTime;
int idx = int(sysPara->para.synchronizorActType);
if (!sysPara->para.syncRevCompDisable && sysPara->para.synchronizorActType != 0) {
idx = int(sysPara->para.synchronizorActType) + 2;
}
model.syncTriggerMode = idx;
if(sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE ||
sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL) {
model.triggerInterval = (unsigned)sysPara->para.elecEyeTriggerInterval;
}
else if(sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER) {
model.triggerInterval = (unsigned)sysPara->para.synTriggerPrintLenMm;
}
else {
model.triggerInterval = (unsigned)sysPara->para.printDelayMs;
}
model.timeTriggerPrintMode = sysPara->para.timeTriggerPrintMode;
model.eleEyeRepeatCnt = sysPara->para.photoElectricityRepeateNum;
model.eleEyeTriggerPrintDelay = sysPara->para.eleEyeTriggerPrintDelay;
model.encoderPulsePerMm = sysPara->para.synPulseNumPerMm;
model.altMirrorType = sysPara->para.AltMirrorGap >> 12;
model.altMirrorGap = sysPara->para.AltMirrorGap & 0x0fff;
return model;
}
QString PrintSettingModel::toString(const PrintSettingModel &model)
{
QString str = QString::asprintf("LRInverse: %d, UpDownInverse: %d, printColDelay: %d, \r\n"
"highVoltageAmplitude: %d, volParaIndex: %d, triggerMode: %d, eleEyeTriggerSynPrintEn: %d, \r\n"
"eleMaskTime: %d, triggerInterval: %d, timeTriggerPrintMode: %d, eleEyeRepeatCnt: %d, \r\n"
"eleEyeTriggerPrintDelay: %d, encoderPulsePerMm: %d, altMirrorType: %d, altMirrorGap: %d. \r\n",
model.leftRightInverse, model.upDownInverse, model.printColDelay, model.highVoltageAmplitude, model.volParaIndex, model.triggerMode,
model.eleEyeTriggerSynPrintEn, model.eleMaskTime, model.triggerInterval, model.timeTriggerPrintMode, model.eleEyeRepeatCnt,
model.eleEyeTriggerPrintDelay, model.encoderPulsePerMm, model.altMirrorType, model.altMirrorGap);
return str;
}