From dea32299969b1e3673c7d57246b366eeb6072537 Mon Sep 17 00:00:00 2001 From: Byons Date: Thu, 30 Jul 2026 08:24:45 +0800 Subject: [PATCH] =?UTF-8?q?1042=E7=89=88=E6=9C=AC=E5=8F=91=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DevOp.cpp | 2 + InkJetPrinter.cpp | 53 ++- InkJetPrinter.h | 4 + Log/logger.cpp | 4 + LogInfo.cpp | 2 +- QtUI.pro | 1 + SysPara.cpp | 6 - SysPara.h | 2 + VerBVersion.h | 2 +- chinese.ts | 658 ++++++++++++++++---------------- docs/项目架构说明文档.md | 277 +++++++++----- english.ts | 658 ++++++++++++++++---------------- farsi.ts | 658 ++++++++++++++++---------------- korean.ts | 638 ++++++++++++++++--------------- loginfoctrl.cpp | 11 + loginfoctrl.h | 5 +- mainwidget.cpp | 805 ++++++++++++--------------------------- mainwidget.h | 4 +- spanish.ts | 658 ++++++++++++++++---------------- testprintwidget.cpp | 8 +- thai.ts | 658 ++++++++++++++++---------------- turkey.ts | 658 ++++++++++++++++---------------- vena.ts | 658 ++++++++++++++++---------------- 23 files changed, 3127 insertions(+), 3303 deletions(-) diff --git a/DevOp.cpp b/DevOp.cpp index 70f94a1..72d19a2 100644 --- a/DevOp.cpp +++ b/DevOp.cpp @@ -2756,6 +2756,8 @@ int DevOp::writeFpgaPrintPara(bool ignoreWarn){ writeSyncAndDelayPrintCount(sysPara->para.enbSyncAndTimeTriggerLimit, sysPara->para.syncAndTimeTriggerLimit); + LogInfo::setRunStatusText(QString("Sync and time trigger limit: %1, num: %2") + .arg(sysPara->para.enbSyncAndTimeTriggerLimit).arg(sysPara->para.syncAndTimeTriggerLimit)); /*---------------------------------------------------------------------------------------*/ setOscillatorVoltage(sysPara->para.oscillatorVoltage); //因为经过调整参数,所以开机也要多发送一次 diff --git a/InkJetPrinter.cpp b/InkJetPrinter.cpp index 7ca489f..64606ff 100644 --- a/InkJetPrinter.cpp +++ b/InkJetPrinter.cpp @@ -801,7 +801,7 @@ void InkJetPrinter::timerHandler(void){ if((QTime::currentTime()>=QTime(00,00,00))&&(QTime::currentTime()<=QTime(00,00,02))&&sysPara->para.Reciclar){ if(m_MainWidget->getCurrPrintStatus() != 1){ m_MainWidget->_on_pushButtonPowerOff_pressed(false); - LogInfo::setRunStatusText(tr("测试时间结束,准备关机")); + LogInfo::setRunStatusText(tr("定时开机循环完成,准备关机")); } } if(sysPara->status.selfCheckDone && sysPara->para.Reciclar && test_flag){ @@ -871,6 +871,23 @@ void InkJetPrinter::timerHandler(void){ if(sysPara->status.delay10s == 10){ pulse_100s = 1; sysPara->status.delay10s = 0; + +// if(sysPara->status.flagOfPowerOnMode && (ui->tabMainWindow->getCurrPrintStatus() != 1)) + if(sysPara->status.flagOfPowerOnMode) + { + qDebug()<<"waitPowerOffTime: "<status.waitPowerOffTime; + LogInfo::setRunStatusText(tr("waitPowerOffTime: %1").arg(sysPara->status.waitPowerOffTime)); + if(sysPara->status.waitPowerOffTime) + { + sysPara->status.waitPowerOffTime--; + if(!sysPara->status.waitPowerOffTime) + { + m_MainWidget->_on_pushButtonPowerOff_pressed(false); + LogInfo::setRunStatusText(tr("定时开机循环完成,准备关机")); + m_MainWidget->setRunStatus(tr("准备关机")); + } + } + } } } @@ -956,9 +973,7 @@ void InkJetPrinter::timerHandler(void){ // byons: 变量类图元现在优化为局部更新,避免每次都要把整个打印内容发送给FPGA,现在只发送被更新的列区间 2026年7月16日 auto updateAreas = m_MainWidget->variableItemsUpdate(); if(sysPara->status.isPrinting && !updateAreas.isEmpty()){ - for(const auto& area : updateAreas) { - m_MainWidget->SendPrintDataToFpga(0, area.left(), area.width()); - } + m_MainWidget->SendPrintDataToFpga(0, true); } if (!updateAreas.isEmpty() && m_StackedWidget->currentWidget() == m_MainWidget) { @@ -1804,6 +1819,7 @@ void InkJetPrinter::saveFPGAStatus(unsigned char *data){ if(sysPara->status.dummy != sysPara->status.isPrinting && sysPara->status.selfCheckDone){ sysPara->status.isPrinting = sysPara->status.dummy; m_MainWidget->updatePrintDisplayLabel(); + emit printStatusChanged(sysPara->status.isPrinting); } } @@ -1915,19 +1931,23 @@ void InkJetPrinter::savePulseCntVal(unsigned char *data){ } } -void InkJetPrinter::saveSTM32Version(unsigned char *data){ +void InkJetPrinter::saveSTM32Version(unsigned char *data) +{ qDebug()<<"saveSTM32Version"; static unsigned char STM32Verion[3] = {0}; //时间间隔内的脉冲累计数 unsigned char *target= ((unsigned char *)&sysPara->status.stm32Verion); for(int i=0;istatus.stm32Verion>>16)&0xFF) + sysPara->status.flagOfPowerOnMode = (sysPara->status.stm32Verion>>23) & 0x01; + if(sysPara->status.flagOfPowerOnMode) + sysPara->status.waitPowerOffTime = 18;//半个小时 + else + sysPara->status.waitPowerOffTime = 0; + LogInfo::setRunStatusText(tr("flagOfPowerOnMode: %1").arg(sysPara->status.flagOfPowerOnMode)); + QString STM32Ver = QString("%1.%2.%3").arg((sysPara->status.stm32Verion>>16)&0x7F) .arg((sysPara->status.stm32Verion>>8) & 0xFF).arg(sysPara->status.stm32Verion&0xFF); qDebug()<<"STM32Ver:"<on_m_StartBtn_clicked(); + auto ret = disconnect(this, &InkJetPrinter::printStatusChanged, this, &InkJetPrinter::restartPrintWhenSwitchedWorkFile); + LogInfo::setRunStatusText(QString("Printing has restarted: %1").arg(ret)); + } +} + bool InkJetPrinter::loadWorkFileAndPreparePrint(const QString &filename) { auto u8Filename = filename.toUtf8(); @@ -2678,7 +2707,10 @@ bool InkJetPrinter::loadWorkFileAndPreparePrint(const QString &filename) bool rePrint = false; if(sysPara->status.isPrinting && sysPara->status.selfCheckDone) { + // connect(this, &InkJetPrinter::printStatusChanged, + // this, &InkJetPrinter::restartPrintWhenSwitchedWorkFile, Qt::ConnectionType(Qt::DirectConnection | Qt::UniqueConnection)); m_MainWidget->on_m_StopBtn_clicked(); + LogInfo::setRunStatusText("Pause printing first, then write to the new file"); rePrint = true; } @@ -2713,7 +2745,6 @@ bool InkJetPrinter::loadWorkFileAndPreparePrint(const QString &filename) return true; } - static int highPressureCnt = 0; static unsigned int logCnt = 0; @@ -3226,4 +3257,4 @@ void InkJetPrinter::onDlgFileOpen(const QString& filename) } loadWorkFileAndPreparePrint(filename); -} \ No newline at end of file +} diff --git a/InkJetPrinter.h b/InkJetPrinter.h index d5bc17d..f2efb8c 100644 --- a/InkJetPrinter.h +++ b/InkJetPrinter.h @@ -156,6 +156,8 @@ private: private slots: void onDlgFileOpen(const QString& filename); + void restartPrintWhenSwitchedWorkFile(bool isPrinting); + void slt_showMsg(QString msg); void timerHandler(); void getMainWidgetButtonClickedSlot(int index); @@ -221,6 +223,8 @@ private slots: signals: void maintenanceShow(); + void printStatusChanged(bool isPrinting); + protected: void showEvent(QShowEvent* e) override; diff --git a/Log/logger.cpp b/Log/logger.cpp index ea8524b..37d3a1f 100644 --- a/Log/logger.cpp +++ b/Log/logger.cpp @@ -202,7 +202,11 @@ void Logger::log(const QtMsgType type, const QString& message, const QString &fi mutex.lock(); LogMessage* logMessage=new LogMessage(type,message,logVars.localData(),file,function,line); + + #ifndef BNS_DEBUG std::cout << qPrintable(logMessage->toString(msgFormat,"hh:mm:ss.zzz")) << std::flush; + #endif + if (bufferSize>0) { diff --git a/LogInfo.cpp b/LogInfo.cpp index c9ab018..47631aa 100644 --- a/LogInfo.cpp +++ b/LogInfo.cpp @@ -146,7 +146,7 @@ void LogInfo::showVerionInformation(QString Mac,QString VernonBachVer, QString F if(!flag){ QString machInfo; machInfo = "Mac:" + Mac + "\n"; - machInfo += "VernonBach Ver:" + VernonBachVer +"|"+STM32Ver+ "\n"; + machInfo += "QtUI Ver:" + VernonBachVer +"|"+STM32Ver+ "\n"; machInfo += "FPGA Ver: NO" + FpgaVer + "\n"; // machInfo += "PowerOnMode: " + QString::number(powerOnMode) + "\n"; textEditMachInfo->append(machInfo); diff --git a/QtUI.pro b/QtUI.pro index 1c9f069..1cdb00d 100644 --- a/QtUI.pro +++ b/QtUI.pro @@ -78,6 +78,7 @@ linux-aarch64-gnu-g++ { bns-linux-aarch64-gnu-g++ { DEFINES += ARCH_AARCH64_GNU DEFINES += ARCH_AARCH64 + DEFINES += BNS_DEBUG } HEADERS += Public.h \ diff --git a/SysPara.cpp b/SysPara.cpp index 2c58efa..2a10fc0 100644 --- a/SysPara.cpp +++ b/SysPara.cpp @@ -27,8 +27,6 @@ #define VNLG SysPara::SysPara(void): devOp(new DevOp(this)){ - - memset(¶,0,sizeof(para)); memset(&status,0,sizeof(status)); //qDebug("start to loadParaFromFile."); @@ -113,10 +111,6 @@ void SysPara::loadParaFromFile(){ if(para.gearPumpSpeedAlarm < 1000 || para.gearPumpSpeedAlarm > 2000) para.gearPumpSpeedAlarm = 1500; - // 将flagOfReclaimPumEnable强制设置为0。该参数影响的是压力控制算法,但现在已经不使用 byons@2026年5月12日 - if(!para.flagOfReclaimPumEnable) - para.flagOfReclaimPumEnable = true; - if (DeviceCodefile.isOpen()) { DeviceCodefile.close(); } diff --git a/SysPara.h b/SysPara.h index cf2aec0..40211d1 100644 --- a/SysPara.h +++ b/SysPara.h @@ -1266,6 +1266,8 @@ typedef struct{ unsigned int showInkWarningNumber; unsigned int showSolventWarningNumber; bool needMaintenanceRemind; + bool flagOfPowerOnMode; + unsigned int waitPowerOffTime; }sysStatus_t; #include diff --git a/VerBVersion.h b/VerBVersion.h index fd31d7f..e1c6953 100644 --- a/VerBVersion.h +++ b/VerBVersion.h @@ -6,7 +6,7 @@ */ #define UP_PRINTER_MAJOR_VER 6 #define UP_PRINTER_MINOR_VER 7 -#define UP_PRINTER_RIVISION_VER 4 +#define UP_PRINTER_RIVISION_VER 6 #define SUB_VERSION "_KOR" #ifdef __RFID_OLD #define SUB_RFID "_RO" diff --git a/chinese.ts b/chinese.ts index de146bd..ed26890 100644 --- a/chinese.ts +++ b/chinese.ts @@ -75,12 +75,12 @@ - + BarCode Format - + Qrcode Format @@ -774,7 +774,7 @@ - + No73 send DAC Data. @@ -1102,12 +1102,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -1922,161 +1922,175 @@ InkJetPrinter - - - - - TextLabel - - - - - + + color:#ffffff;font-size:14px;font-family:Microsoft YaHei; - + + LastWork.xml + + + + + E: QQBase + + + + 01.01.2006 18:58:12 - - %1/%2/%3 - - - - - 测试时间结束,准备关机 - - - - + 开始自检,请等待%1秒... - - - + + + 自检完成!!! - + 警告 - - + + 提示 - + 保养期还有%1小时到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1小时,请及时保养,否则喷码机容易损坏 - + 开始自检,请等待60秒... - - - + + + 正在准备重启,请等待%1秒...... - + ink Warning at: %1 - + solvent Warning at: %1 - + 压力泄漏或压力传感器故障! - - + + + 定时开机循环完成,准备关机 + + + + + waitPowerOffTime: %1 + + + + + 准备关机 + + + + + 停止打印,自动关闭高压. - - + + 电机故障 - + 回收槽到头 - - + + 回收槽卡住或者回收槽开关时间设置错误 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - - 当前正在使用 - %1 -确定要新建文件吗? + + File not found: %1 - + + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! + 当前正在使用 + %1 +确定要新建文件吗? + + + + 刷卡倒计时起始时间文件不存在 @@ -2859,7 +2873,7 @@ - + 额外设置 @@ -2880,7 +2894,7 @@ - + 系统授权 @@ -2900,33 +2914,33 @@ - + RFID Settings - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3049,14 +3063,14 @@ - + 喷嘴开启 - + 喷嘴关闭 @@ -3076,276 +3090,264 @@ - - - - - + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - + + + 正在准备关机,请等待%1秒... - + 准备关机... - + 关机失败!!! - - - 变量数大于8个,某些变量将不起作用!!! - - - - - 请减少信息中的变量(或计数器)数量. - - - - - - - - + + + + + 错误 - + 喷印间隔过短,应高于%1! - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - + 喷嘴已开启 - + 喷嘴开启中 - + 喷嘴已关闭 - + 喷嘴关闭中 - - + + 正在排气... - - + + 高压故障 - - + + 相位故障 - - + + 粘度故障 - - + + 回收故障 - - + + 溶液液位 - - + + 墨水液位 - - + + 墨水缸满 - - + + 墨线开关 - + 正常 - + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - - + + %1.%2 - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - + 高压故障,关回收槽和墨线 - - + + 回收故障,关闭回收槽,关墨线 - + 回收故障. - + 回收异常,墨线可能偏离.(%1) - + 正在喷印....... - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + + 相位故障,准备关机 - - - + + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + + 相位故障,屏蔽充电 @@ -3764,13 +3766,13 @@ p, li { white-space: pre-wrap; } - + 延时(毫秒): - - + + 触发延时(毫秒) @@ -3825,13 +3827,13 @@ p, li { white-space: pre-wrap; } - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) @@ -3969,25 +3971,25 @@ p, li { white-space: pre-wrap; } - + 提示 - + 应用成功 - - + + 延时(毫米): - - - + + + 触发延时(毫米) @@ -3997,30 +3999,30 @@ p, li { white-space: pre-wrap; } - - - + + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4304,183 +4306,179 @@ p, li { white-space: pre-wrap; } RFIDManager - + readB6Req - + readB6suc - + Super IC card, write back original data - + 写数据到数据块6 - + 已经刷过墨水卡,需添加墨水 - + 不需要刷墨水卡! - + 确认要刷墨水卡吗? - + 确认要刷墨水卡吗? %1 秒后将自动确认 - + 刷墨水卡成功! - + 刷墨水卡成功, 请及时将该墨水卡对应的墨水添加到机器中 - + 刷超级墨水卡失败,请联系厂商。 - + 已经刷过溶剂卡,需添加溶剂 - + 不需要刷溶剂卡! - + 确认要刷溶剂卡吗? - + 确认要刷溶剂卡吗? %1 秒后将自动确认 - + 刷溶剂卡成功! - + 刷溶剂卡成功, 请及时将该溶剂卡对应的溶剂添加到机器中 - + 刷超级溶剂水卡失败,请联系厂商。 - + 确认要刷保养卡吗? - + 确认要刷保养卡吗? %1 秒后将自动确认 - - 刷保养卡成功! - - - - + 刷超级保养卡失败,请联系厂商。 - + MAC无效卡! - + 无效卡,这张卡已经在%1时使用过 - + 设置读写器密码失败! - + 设置读写器密码成功! - + 设置读写器原始密码失败! - + 设置读写器工作模式失败! - + 设置读写器工作模式成功! - + 查询读写器地址失败 - + + 警告 - + 先加墨水后刷卡:成功 - + 先加溶剂后刷卡:成功 - + 13.读卡器故障! - + 请及时使用墨水盒附带的IC卡激活墨水盒 请及时刷墨水卡 - + 请及时使用溶剂盒附带的IC卡激活溶剂盒 @@ -4755,12 +4753,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 停止 @@ -4791,7 +4789,7 @@ p, li { white-space: pre-wrap; } - + 压缩机 @@ -4833,9 +4831,9 @@ p, li { white-space: pre-wrap; } - - - + + + 自动 @@ -4847,15 +4845,15 @@ p, li { white-space: pre-wrap; } - - - - - - - - - + + + + + + + + + 开 @@ -4867,16 +4865,16 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - + + + + + + + + + + 关 @@ -4884,12 +4882,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 警告 @@ -4905,26 +4903,26 @@ p, li { white-space: pre-wrap; } - - - + + + 手动 - + 请先移开喷头盖! - - - - - - + + + + + + 启动 @@ -4934,24 +4932,24 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + 提示 @@ -4959,7 +4957,7 @@ p, li { white-space: pre-wrap; } - + 密码不正确! @@ -5005,14 +5003,14 @@ p, li { white-space: pre-wrap; } - - - - - + + + + + 错误 @@ -5022,192 +5020,192 @@ p, li { white-space: pre-wrap; } - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - + 是否确认重启? - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 没有FPGA升级文件 - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -5615,12 +5613,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 字库导出完成! @@ -5905,12 +5903,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 是否保存文件? diff --git a/docs/项目架构说明文档.md b/docs/项目架构说明文档.md index aea1217..12a67c4 100644 --- a/docs/项目架构说明文档.md +++ b/docs/项目架构说明文档.md @@ -15,8 +15,8 @@ 3. [整体架构](#3-整体架构) 4. [目录结构](#4-目录结构) 5. [核心模块详解](#5-核心模块详解) -6. [数据流与通信机制](#6-数据流与通信机制) -7. [场景与打印渲染系统](#7-场景与打印渲染系统) +6. [场景与打印渲染系统](#6-场景与打印渲染系统) +7. [数据流与通信机制](#7-数据流与通信机制) 8. [RFID刷卡模块](#8-rfid刷卡模块) 9. [编译构建系统](#9-编译构建系统) 10. [关键配置与宏定义](#10-关键配置与宏定义) @@ -65,25 +65,25 @@ ``` ┌─────────────────────────────────────────────────────────┐ -│ UI 表现层 │ -│ InkJetPrinter (主窗口) + MainWidget (打印主界面) │ -│ 各功能页面: SystemManage, SystemSetting, LogInfo, ... │ +│ UI 表现层 │ +│ InkJetPrinter (主窗口) + MainWidget (打印主界面) │ +│ 各功能页面: SystemManage, SystemSetting, LogInfo, ... │ │ 场景编辑器: TestPrintWidget, PicScene │ ├─────────────────────────────────────────────────────────┤ │ 业务逻辑层 │ -│ SysPara (系统参数管理) │ +│ SysPara (系统参数管理) │ │ DevOp (设备操作) │ │ RunTimeCtrl (运行时间统计) │ │ RFIDManager (刷卡管理) │ ├─────────────────────────────────────────────────────────┤ │ 通信层 │ -│ Serial (串口通信封装) │ -│ Modbus (Modbus协议) │ +│ Serial (串口通信封装) │ +│ Modbus (Modbus协议) │ ├─────────────────────────────────────────────────────────┤ │ 硬件抽象层 │ │ FPGA (喷印控制、充电电压、相位检测) │ -│ STM32 (墨路控制、传感器采集) │ -│ RFID读卡器 (IC卡读写) │ +│ STM32 (墨路控制、传感器采集) │ +│ RFID读卡器 (IC卡读写) │ └─────────────────────────────────────────────────────────┘ ``` @@ -302,11 +302,7 @@ RunTimeCtrl (运行时间控制) - 计数器读写: 产品计数、同步计数 **FPGA地址空间**: -通信地址与定义位于[连续墨点喷码机通信协议](连续墨点喷码机通信地址.xlsx),大致内存分布如下 -- `0x0000-0x01FF`: 状态读取区 -- `0xA400-0xA5FF`: 打印控制寄存器 -- `0xB000-0xCFFF`: 数据写入区(DAC表、打印数据、日历数据等) -- `0xE000-0xFFFF`: 数字字符点阵数据 +通信地址与定义位于[连续墨点喷码机通信协议](连续墨点喷码机通信地址.xlsx) ### 5.6 串口通信 (Serial) @@ -328,7 +324,14 @@ RunTimeCtrl (运行时间控制) ### 5.7 日志系统 (Log) -**职责**: 提供分级日志记录功能。 +#### 5.7.1 基于LogInfo的用户日志系统 + +**主要类**: +- `LogInfo` - 用户日志的核心类,提供日志记录、显示和保存功能,跟踪用户操作和系统事件。 + +#### 5.7.2 基于QDebug的日志系统 + +**职责**: 提供程序运行时的日志记录功能,用于开发调试和问题排查。 **类层次**: - `Logger` - 日志基类,定义日志格式、级别过滤 @@ -356,20 +359,164 @@ qCritical() << "error"; // 错误日志 --- -## 6. 数据流与通信机制 -### 6.1 打印数据流 +## 6. 场景与打印渲染系统 + +### 6.1 架构概述 + +场景系统基于 Qt Graphics View 框架,用于编辑和预览喷码内容。 + +``` +PicScene (QGraphicsScene) # 场景,管理所有图元 + ├── 图元基类 + │ ├── PicTextItem # 普通文本 + │ ├── PicDateItem # 日期变量 (yyyy-MM-dd HH:mm:ss...) + │ ├── PicCounterItem # 计数器 (可变数字) + │ ├── PicImageItem # 图片 (Logo) + │ ├── PicCodeItem # 条码/二维码 + │ └── PicScheduleShiftItem # 班次 (班次代码替换) + │ + ├── 图元编辑器 + │ ├── ItemEditor # 普通文本编辑器 + │ ├── DateVarSet # 日期变量编辑器 + │ ├── CounterCarSet # 计数器编辑器 + │ ├── ImageLoader # 图片读取器 + │ ├── BarcodeEditor # 条码/二维码编辑器 + │ └── ScheduleShiftsEditor # 班次 (班次代码替换)编辑器 + │ + ├── 图元模型 + │ ├── ItemEditor # 普通文本编辑器 + │ ├── DateVarSet # 日期变量编辑器 + │ ├── CounterCarSet # 计数器编辑器 + │ ├── ImageLoader # 图片读取器 + │ ├── BarcodeEditor # 条码/二维码编辑器 + │ └── ScheduleShiftsEditor # 班次 (班次代码替换)编辑器 + +``` + +### 6.2 作业文件格式 + +作业文件使用XML格式(VBfiles结构),保存场景内容和打印设置: + +```xml + + + + + + 55 + 0 + ... + + + + + 55 + 0 + ... + + + + + 83 + 17 + ... + + + + + 0 + 0 + ... + + + + + 0 + 0 + ... + + + +``` + +### 6.3 关键类说明 + +- **PicSceneLoader** - 场景文件的加载/保存/预览,负责XML序列化/反序列化 +- **ViewModels** - 定义 `DateItemModel`、`CounterViewModel` 等视图模型,用于编辑器与图元之间的数据传递 +- **ItemCommon** - 图元工具函数,如根据日期模型生成文本字符串 +- **打印设置** - `PrintSettingModel` 与作业文件绑定,包含触发模式、字宽、同步器参数等 +- **TestPrintWidget** - 场景编辑器,提供图元的创建、编辑、删除、预览功能 + +--- + +## 7. 数据流与通信机制 + +### 7.1 打印内容数据流 ``` 用户编辑场景 (PicScene) - └── 图元 (PicTextItem, PicDateItem, PicCodeItem, ...) - └── 渲染为 QImage - └── imageToPrintData() 转换为点阵数据 - └── SendPrintDataToFpga() 通过 Serial 发送 - └── FPGA 接收并驱动喷头喷印 + ├── 普通静态图元 (PicTextItem, PicImageItem, ...) + │ └─── onPreviewScene() 静态文本或图片渲染为 QImage + │ └── imageToPrintData() 转换为点阵数据 + │ └── SendPrintDataToFpga() 在打印开始前一次性发送所有静态打印内容 + │ └── FPGA 接收并驱动喷头喷印 + │ + ├─── PicCounterItem 计数器图元 + │ └── onPreviewScene() 构建变量控制结构体(位置、大小、类型等) + │ └── DevOp::writeFpgaVariCtrl() 发送至FPGA,由FPGA直接硬件控制 + │ + └─── 软解动态图元 (PicDateItem PicScheduleShiftItem PicCodeItem) + └── onPreviewScene() 与静态图元一样,进入onPreviewScene() + └── variableItemsUpdate() 动态检查图元是否发生变化,更新数据 + └── SendPrintDataToFpga() 局部发送更新后的点阵数据至FPGA ``` -### 6.2 设备状态轮询 +**打印内容相关的几个重要的函数:** +[SendPrintDataToFpga()](../mainwidget.cpp#L935) 负责将打印数据、打印设置和变量控制通过串口发送给FPGA,FPGA接收后驱动喷头进行喷印。该函数被设计成支持全量更新与局部更新,静态图元在打印开始前一次性发送,而动态图元则在每次变化时局部更新。局部更新时,SendPrintDataToFpga不会发送打印设置和变量控制数据,只会按列为单位更新打印缓冲区的点阵数据。 + +[imageToPrintData()](../mainwidget.cpp#L675) 将 QImage 转换为点阵数据,该函数可将图像填充至打印缓冲区的指定位置,随后由 SendPrintDataToFpga() 发送至FPGA。动态软解图元(如日期、计数器、二维码)在每次变化时调用该函数刷新打印缓冲区。 + +[onPreviewScene()](../mainwidget.cpp#L1888) 是场景预览的核心函数,负责将场景中的所有图元渲染为 QImage,并调用 imageToPrintData() 全量写入打印缓冲区。 + +[variableItemsUpdate()](../mainwidget.cpp#L1024) 动态检查图元是否发生变化,配合 imageToPrintData()、SendPrintDataToFpga() 实现局部更新打印数据。 + + +### 7.2 从文件到打印的数据流向 +本节中 *发送打印设置与打印内容到FPGA* 的术语基本可以代指调用[MainWidget::SendPrintDataToFpga](../mainwidget.cpp#L933)函数。 + +区别于标准VX5,此韩国定制版中,明确了发送打印内容与打印设置到FPGA的时机与作用范围,所有发送打印内容与打印设置的动作只在[MainWidget::on_m_StartBtn_clicked()](../mainwidget.cpp#L756)中进行,除此之外其它时机发送打印内容与设置的行为继承自标准VX5,实际在韩国定制版中属于冗余设计。 + +QtUI 按工作文件为单位对喷码内容进行管理,工作文件使用 XML 格式保存场景内容和打印设置。用户在编辑界面(TestPrintWidget)中创建或修改工作文件后,点击“保存”按钮将场景数据序列化为 XML 文件。随后,用户在打印主界面(MainWidget)中选择工作文件并点击“打印”。 +重要的工作流程位于[InkjetPrinter::loadWorkFileAndPreparePrint](../InkJetPrinter.cpp#L12684)函数中,流程如下: + +``` +用户点击 [MainWidget::m_AddBtn](../MainWidget.cpp#L143) (调入文件喷印) 发送 sendButtonClickedSignal(2) 信号 + └── InkJetPrinter::getMainWidgetButtonClickedSlot() 接收信号打开 DialogFileOperation 对话框 + └── InkjetPrinter::loadWorkFileAndPreparePrint() 通过对话框输入的文件名打开文件 + └── PicSceneLoader::loadSceneFromFile() 解析 XML 文件,恢复场景内容和打印设置 + └── MainWidget::generatePrintContent() 将场景渲染为打印数据并写入缓冲区 + └── 等待用户按下 开始打印 + └── MainWidget::SendPrintDataToFpga() 全量发送打印数据与设置到FPGA,并开始打印 +``` +注意打开并解析工作文件的过程中不会直接发送打印数据到FPGA,只有在用户点击“打印”按钮后,才会调用 SendPrintDataToFpga() 将打印数据发送至FPGA。 + +### 7.3 工作文件编辑 +韩国QtUI中,*工作文件编辑* 被解耦为一个独立模块,它只负责对工作文件进行新建、编辑和调用[PicSceneLoader](../scene/PicSceneLoader.h)模块保存,其主要实现基本位于[TestPrintWidget](../testprintwidget.h),[TestPrintWidget](../testprintwidget.h)通过读取指定工作文件(或新建),在编辑完成后可以对文件进行保存。 +``` +用户点击 (新建文件) (编辑文件) 发送信号到InjkectPrinter + └── InkJetPrinter判断当前文件名,将文件名传给TestPrintWidget,并切换到TestPrintWidget视图 + └── TestPrintWidget完成编辑后询问用户是否保存已编辑的工作文件 + ├── 用户选择保存,TestPrintWidget 使用 PicSceneLoader 写入xml工作文件 + │ └─ 保存文件后发出信号通知 InjkectPrinter + │ └─ InkjectPrinter 切换到 MainWidget 并调用 loadWorkFileAndPreparePrint 载入刚刚保存的文件 + │ └─ 之后的流程与 7.2 小节一致 + │ + └── 用户选择不保存,TestPrintWidget 直接发出信号通知 InjkectPrinter + └─ InkjectPrinter 切换到 MainWidget,然后什么也不做 +``` + +### 7.4 设备状态轮询 ``` timerHandler() @@ -387,7 +534,7 @@ timerHandler() └── autoControlValvePump() # 自动控制执行 ``` -### 6.3 信号槽通信概览 +### 7.5 信号槽通信概览 ``` Serial::receivedFromFPGA ──→ InkJetPrinter::saveFPGAStatus() @@ -398,56 +545,7 @@ RunTimeCtrl::sig_alertTimeout ──→ InkJetPrinter::slt_warningMaintenance() RFIDManager::sig_showMsg ──→ InkJetPrinter::slt_showMsg() ``` ---- -## 7. 场景与打印渲染系统 - -### 7.1 架构概述 - -场景系统基于 Qt Graphics View 框架,用于编辑和预览喷码内容。 - -``` -PicScene (QGraphicsScene) # 场景,管理所有图元 - └── myView (QGraphicsView) # 视图,提供缩放和交互 - └── 图元基类 - ├── PicTextItem # 普通文本 - ├── PicDateItem # 日期变量 (yyyy-MM-dd HH:mm:ss...) - ├── PicCounterItem # 计数器 (可变数字) - ├── PicImageItem # 图片 (Logo) - ├── PicCodeItem # 条码/二维码 - └── PicScheduleShiftItem # 班次 (班次代码替换) -``` - -### 7.2 作业文件格式 - -作业文件使用XML格式(VBfiles结构),保存场景内容和打印设置: - -```xml - - - - - - - - - - - - - - - - -``` - -### 7.3 关键类说明 - -- **PicSceneLoader** - 场景文件的加载/保存/预览,负责XML序列化/反序列化 -- **ViewModels** - 定义 `DateItemModel`、`CounterViewModel` 等视图模型,用于编辑器与图元之间的数据传递 -- **ItemCommon** - 图元工具函数,如根据日期模型生成文本字符串 -- **ItemEditor** - 图元通用编辑器(字体、颜色、位置等) -- **打印设置** - `PrintSettingModel` 与作业文件绑定,包含触发模式、字宽、同步器参数等 --- @@ -464,6 +562,7 @@ PicScene (QGraphicsScene) # 场景,管理所有图元 - 保养卡识别与提醒 - 自动扣减卡内余额 - 卡片使用标记(防重复使用) +- 超级卡的识别与处理 **加密**: 使用SM3(哈希)+ SM4(对称加密)国密算法保护卡片数据。 @@ -541,10 +640,12 @@ make ```cpp #define UP_PRINTER_MAJOR_VER 6 #define UP_PRINTER_MINOR_VER 7 -#define UP_PRINTER_RIVISION_VER 4 +#define UP_PRINTER_RIVISION_VER 5 #define SUB_VERSION "_KOR" ``` +版本号分为年、月、本月第几次编译,SUB_VERSION表示是否是标准版,"_Std" 表示标准版,"_KOR" 表示韩国定制版、"_RFID" 表示是标准版基础上增加了刷卡功能,如果客户定制版本包含了刷卡功能,则显示客户后缀。 + --- ## 11. 上手指南 @@ -552,15 +653,15 @@ make ### 11.1 开发环境搭建 1. **安装Qt**: 推荐 Qt 5.12+ 用于桌面开发调试 -2. **获取代码**: 通过SVN或Git获取项目源码 -3. **编译运行**: - ```bash - cd 项目目录 - qmake - make - ./QtUI - ``` -4. **注意事项**: x86桌面版仅用于UI调试,硬件相关功能(串口、FPGA通信)不可用 +2. **获取代码**: 找到你的领导,通过SVN获取源码 +3. **编译运行**: + 1. 直接使用 InkjetUbuntu-T1 虚拟机中的 QtCreator 打开此项目,然后编译调试。 + 2. 使用 VSCode ssh 连接 InkjetUbuntu-T2(从T1升级至Ubuntu20.04,以支持VSCode SSH连接) 虚拟机,然后直接在windows上远程开发,此方式需要自行配置编译环境,编译为ARM版本的命令为: + ```bash + $ /home/inkjet/QtSDK/bin/qmake ./QtUI.pro -spec linux-aarch64-gnu-g++ CONFIG+=release + $ make -j8 + ``` +4. **注意事项**: x86桌面版仅用于UI调试,硬件相关功能(串口、FPGA通信)不可用。 ### 11.2 代码阅读顺序建议 @@ -581,6 +682,7 @@ make | 修改FPGA通信 | `DevOp.h/cpp` + `Serial/` | 注意地址空间分配和CRC校验 | | 修改UI样式 | `.ui` 文件 | 使用 Qt Designer 编辑 | | 添加新功能页面 | 仿照现有页面模式 | 创建 .h/.cpp/.ui 三件套 | +| 添加网络通信 || ### 11.4 关键设计模式 @@ -591,9 +693,9 @@ make ### 11.5 调试技巧 -1. **日志**: 使用 `qInfo()/qWarning()/qCritical()` 输出,日志文件位于 `/home/plg/conf/` +1. **日志**: Debug模式下使用 `qInfo()/qWarning()/qCritical()` 输出,日志文件位于 `/home/plg/conf/`,发行版使用`LogInfo::setRunStatus()` 2. **崩溃分析**: `dump.h/cpp` 安装了信号处理器,崩溃时会生成core dump -3. **FPGA调试**: 可通过 `SystemManage` 界面手动控制阀门和泵 +3. **泵阀手动控制**: 可通过 `SystemManage` 界面手动控制阀门和泵 4. **模拟模式**: 设置 `SIMULATE_PRINTING_MODE 1` 可在无硬件环境调试打印逻辑 ### 11.6 注意事项 @@ -611,5 +713,6 @@ make **文档更新记录** -- 2026-07-23: 创建此文档 — 卜永仕 +- 2026-07-29:继续完善了此文档 - 卜永仕 +- 2026-07-23:创建此文档 — 卜永仕 diff --git a/english.ts b/english.ts index de146bd..ed26890 100644 --- a/english.ts +++ b/english.ts @@ -75,12 +75,12 @@ - + BarCode Format - + Qrcode Format @@ -774,7 +774,7 @@ - + No73 send DAC Data. @@ -1102,12 +1102,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -1922,161 +1922,175 @@ InkJetPrinter - - - - - TextLabel - - - - - + + color:#ffffff;font-size:14px;font-family:Microsoft YaHei; - + + LastWork.xml + + + + + E: QQBase + + + + 01.01.2006 18:58:12 - - %1/%2/%3 - - - - - 测试时间结束,准备关机 - - - - + 开始自检,请等待%1秒... - - - + + + 自检完成!!! - + 警告 - - + + 提示 - + 保养期还有%1小时到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1小时,请及时保养,否则喷码机容易损坏 - + 开始自检,请等待60秒... - - - + + + 正在准备重启,请等待%1秒...... - + ink Warning at: %1 - + solvent Warning at: %1 - + 压力泄漏或压力传感器故障! - - + + + 定时开机循环完成,准备关机 + + + + + waitPowerOffTime: %1 + + + + + 准备关机 + + + + + 停止打印,自动关闭高压. - - + + 电机故障 - + 回收槽到头 - - + + 回收槽卡住或者回收槽开关时间设置错误 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - - 当前正在使用 - %1 -确定要新建文件吗? + + File not found: %1 - + + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! + 当前正在使用 + %1 +确定要新建文件吗? + + + + 刷卡倒计时起始时间文件不存在 @@ -2859,7 +2873,7 @@ - + 额外设置 @@ -2880,7 +2894,7 @@ - + 系统授权 @@ -2900,33 +2914,33 @@ - + RFID Settings - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3049,14 +3063,14 @@ - + 喷嘴开启 - + 喷嘴关闭 @@ -3076,276 +3090,264 @@ - - - - - + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - + + + 正在准备关机,请等待%1秒... - + 准备关机... - + 关机失败!!! - - - 变量数大于8个,某些变量将不起作用!!! - - - - - 请减少信息中的变量(或计数器)数量. - - - - - - - - + + + + + 错误 - + 喷印间隔过短,应高于%1! - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - + 喷嘴已开启 - + 喷嘴开启中 - + 喷嘴已关闭 - + 喷嘴关闭中 - - + + 正在排气... - - + + 高压故障 - - + + 相位故障 - - + + 粘度故障 - - + + 回收故障 - - + + 溶液液位 - - + + 墨水液位 - - + + 墨水缸满 - - + + 墨线开关 - + 正常 - + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - - + + %1.%2 - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - + 高压故障,关回收槽和墨线 - - + + 回收故障,关闭回收槽,关墨线 - + 回收故障. - + 回收异常,墨线可能偏离.(%1) - + 正在喷印....... - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + + 相位故障,准备关机 - - - + + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + + 相位故障,屏蔽充电 @@ -3764,13 +3766,13 @@ p, li { white-space: pre-wrap; } - + 延时(毫秒): - - + + 触发延时(毫秒) @@ -3825,13 +3827,13 @@ p, li { white-space: pre-wrap; } - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) @@ -3969,25 +3971,25 @@ p, li { white-space: pre-wrap; } - + 提示 - + 应用成功 - - + + 延时(毫米): - - - + + + 触发延时(毫米) @@ -3997,30 +3999,30 @@ p, li { white-space: pre-wrap; } - - - + + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4304,183 +4306,179 @@ p, li { white-space: pre-wrap; } RFIDManager - + readB6Req - + readB6suc - + Super IC card, write back original data - + 写数据到数据块6 - + 已经刷过墨水卡,需添加墨水 - + 不需要刷墨水卡! - + 确认要刷墨水卡吗? - + 确认要刷墨水卡吗? %1 秒后将自动确认 - + 刷墨水卡成功! - + 刷墨水卡成功, 请及时将该墨水卡对应的墨水添加到机器中 - + 刷超级墨水卡失败,请联系厂商。 - + 已经刷过溶剂卡,需添加溶剂 - + 不需要刷溶剂卡! - + 确认要刷溶剂卡吗? - + 确认要刷溶剂卡吗? %1 秒后将自动确认 - + 刷溶剂卡成功! - + 刷溶剂卡成功, 请及时将该溶剂卡对应的溶剂添加到机器中 - + 刷超级溶剂水卡失败,请联系厂商。 - + 确认要刷保养卡吗? - + 确认要刷保养卡吗? %1 秒后将自动确认 - - 刷保养卡成功! - - - - + 刷超级保养卡失败,请联系厂商。 - + MAC无效卡! - + 无效卡,这张卡已经在%1时使用过 - + 设置读写器密码失败! - + 设置读写器密码成功! - + 设置读写器原始密码失败! - + 设置读写器工作模式失败! - + 设置读写器工作模式成功! - + 查询读写器地址失败 - + + 警告 - + 先加墨水后刷卡:成功 - + 先加溶剂后刷卡:成功 - + 13.读卡器故障! - + 请及时使用墨水盒附带的IC卡激活墨水盒 请及时刷墨水卡 - + 请及时使用溶剂盒附带的IC卡激活溶剂盒 @@ -4755,12 +4753,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 停止 @@ -4791,7 +4789,7 @@ p, li { white-space: pre-wrap; } - + 压缩机 @@ -4833,9 +4831,9 @@ p, li { white-space: pre-wrap; } - - - + + + 自动 @@ -4847,15 +4845,15 @@ p, li { white-space: pre-wrap; } - - - - - - - - - + + + + + + + + + 开 @@ -4867,16 +4865,16 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - + + + + + + + + + + 关 @@ -4884,12 +4882,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 警告 @@ -4905,26 +4903,26 @@ p, li { white-space: pre-wrap; } - - - + + + 手动 - + 请先移开喷头盖! - - - - - - + + + + + + 启动 @@ -4934,24 +4932,24 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + 提示 @@ -4959,7 +4957,7 @@ p, li { white-space: pre-wrap; } - + 密码不正确! @@ -5005,14 +5003,14 @@ p, li { white-space: pre-wrap; } - - - - - + + + + + 错误 @@ -5022,192 +5020,192 @@ p, li { white-space: pre-wrap; } - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - + 是否确认重启? - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 没有FPGA升级文件 - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -5615,12 +5613,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 字库导出完成! @@ -5905,12 +5903,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 是否保存文件? diff --git a/farsi.ts b/farsi.ts index de146bd..ed26890 100644 --- a/farsi.ts +++ b/farsi.ts @@ -75,12 +75,12 @@ - + BarCode Format - + Qrcode Format @@ -774,7 +774,7 @@ - + No73 send DAC Data. @@ -1102,12 +1102,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -1922,161 +1922,175 @@ InkJetPrinter - - - - - TextLabel - - - - - + + color:#ffffff;font-size:14px;font-family:Microsoft YaHei; - + + LastWork.xml + + + + + E: QQBase + + + + 01.01.2006 18:58:12 - - %1/%2/%3 - - - - - 测试时间结束,准备关机 - - - - + 开始自检,请等待%1秒... - - - + + + 自检完成!!! - + 警告 - - + + 提示 - + 保养期还有%1小时到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1小时,请及时保养,否则喷码机容易损坏 - + 开始自检,请等待60秒... - - - + + + 正在准备重启,请等待%1秒...... - + ink Warning at: %1 - + solvent Warning at: %1 - + 压力泄漏或压力传感器故障! - - + + + 定时开机循环完成,准备关机 + + + + + waitPowerOffTime: %1 + + + + + 准备关机 + + + + + 停止打印,自动关闭高压. - - + + 电机故障 - + 回收槽到头 - - + + 回收槽卡住或者回收槽开关时间设置错误 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - - 当前正在使用 - %1 -确定要新建文件吗? + + File not found: %1 - + + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! + 当前正在使用 + %1 +确定要新建文件吗? + + + + 刷卡倒计时起始时间文件不存在 @@ -2859,7 +2873,7 @@ - + 额外设置 @@ -2880,7 +2894,7 @@ - + 系统授权 @@ -2900,33 +2914,33 @@ - + RFID Settings - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3049,14 +3063,14 @@ - + 喷嘴开启 - + 喷嘴关闭 @@ -3076,276 +3090,264 @@ - - - - - + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - + + + 正在准备关机,请等待%1秒... - + 准备关机... - + 关机失败!!! - - - 变量数大于8个,某些变量将不起作用!!! - - - - - 请减少信息中的变量(或计数器)数量. - - - - - - - - + + + + + 错误 - + 喷印间隔过短,应高于%1! - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - + 喷嘴已开启 - + 喷嘴开启中 - + 喷嘴已关闭 - + 喷嘴关闭中 - - + + 正在排气... - - + + 高压故障 - - + + 相位故障 - - + + 粘度故障 - - + + 回收故障 - - + + 溶液液位 - - + + 墨水液位 - - + + 墨水缸满 - - + + 墨线开关 - + 正常 - + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - - + + %1.%2 - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - + 高压故障,关回收槽和墨线 - - + + 回收故障,关闭回收槽,关墨线 - + 回收故障. - + 回收异常,墨线可能偏离.(%1) - + 正在喷印....... - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + + 相位故障,准备关机 - - - + + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + + 相位故障,屏蔽充电 @@ -3764,13 +3766,13 @@ p, li { white-space: pre-wrap; } - + 延时(毫秒): - - + + 触发延时(毫秒) @@ -3825,13 +3827,13 @@ p, li { white-space: pre-wrap; } - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) @@ -3969,25 +3971,25 @@ p, li { white-space: pre-wrap; } - + 提示 - + 应用成功 - - + + 延时(毫米): - - - + + + 触发延时(毫米) @@ -3997,30 +3999,30 @@ p, li { white-space: pre-wrap; } - - - + + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4304,183 +4306,179 @@ p, li { white-space: pre-wrap; } RFIDManager - + readB6Req - + readB6suc - + Super IC card, write back original data - + 写数据到数据块6 - + 已经刷过墨水卡,需添加墨水 - + 不需要刷墨水卡! - + 确认要刷墨水卡吗? - + 确认要刷墨水卡吗? %1 秒后将自动确认 - + 刷墨水卡成功! - + 刷墨水卡成功, 请及时将该墨水卡对应的墨水添加到机器中 - + 刷超级墨水卡失败,请联系厂商。 - + 已经刷过溶剂卡,需添加溶剂 - + 不需要刷溶剂卡! - + 确认要刷溶剂卡吗? - + 确认要刷溶剂卡吗? %1 秒后将自动确认 - + 刷溶剂卡成功! - + 刷溶剂卡成功, 请及时将该溶剂卡对应的溶剂添加到机器中 - + 刷超级溶剂水卡失败,请联系厂商。 - + 确认要刷保养卡吗? - + 确认要刷保养卡吗? %1 秒后将自动确认 - - 刷保养卡成功! - - - - + 刷超级保养卡失败,请联系厂商。 - + MAC无效卡! - + 无效卡,这张卡已经在%1时使用过 - + 设置读写器密码失败! - + 设置读写器密码成功! - + 设置读写器原始密码失败! - + 设置读写器工作模式失败! - + 设置读写器工作模式成功! - + 查询读写器地址失败 - + + 警告 - + 先加墨水后刷卡:成功 - + 先加溶剂后刷卡:成功 - + 13.读卡器故障! - + 请及时使用墨水盒附带的IC卡激活墨水盒 请及时刷墨水卡 - + 请及时使用溶剂盒附带的IC卡激活溶剂盒 @@ -4755,12 +4753,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 停止 @@ -4791,7 +4789,7 @@ p, li { white-space: pre-wrap; } - + 压缩机 @@ -4833,9 +4831,9 @@ p, li { white-space: pre-wrap; } - - - + + + 自动 @@ -4847,15 +4845,15 @@ p, li { white-space: pre-wrap; } - - - - - - - - - + + + + + + + + + 开 @@ -4867,16 +4865,16 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - + + + + + + + + + + 关 @@ -4884,12 +4882,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 警告 @@ -4905,26 +4903,26 @@ p, li { white-space: pre-wrap; } - - - + + + 手动 - + 请先移开喷头盖! - - - - - - + + + + + + 启动 @@ -4934,24 +4932,24 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + 提示 @@ -4959,7 +4957,7 @@ p, li { white-space: pre-wrap; } - + 密码不正确! @@ -5005,14 +5003,14 @@ p, li { white-space: pre-wrap; } - - - - - + + + + + 错误 @@ -5022,192 +5020,192 @@ p, li { white-space: pre-wrap; } - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - + 是否确认重启? - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 没有FPGA升级文件 - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -5615,12 +5613,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 字库导出完成! @@ -5905,12 +5903,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 是否保存文件? diff --git a/korean.ts b/korean.ts index 880444b..601a524 100644 --- a/korean.ts +++ b/korean.ts @@ -83,12 +83,12 @@ 바코드 편집 - + BarCode Format BarCode Format - + Qrcode Format Qrcode Format @@ -1020,7 +1020,7 @@ 인쇄 길이 부족, 문자열 길이 축소 또는 인쇄 설정에서 길이 증가 필요 - + No73 send DAC Data. No73 DAC 데이터 전송 @@ -1814,12 +1814,12 @@ 저장 - + 警告 경고 - + U盘未插入或U盘根目录下的doc文件夹不存在! USB 메모리가 삽입되지 않았거나 USB 메모리 루트에 doc 폴더가 존재하지 않습니다! @@ -3211,12 +3211,20 @@ 로그 정보 + + 定时开机循环完成,准备关机 - 타이머 가동 사이클 완료, 시스템 종료 준비 중 + 타이머 가동 사이클 완료, 시스템 종료 준비 중 + + waitPowerOffTime: %1 + waitPowerOffTime: %1 + + + 准备关机 - 시스템 종료 준비 중 + 시스템 종료 준비 중 与FPGA失去通信!!! @@ -3227,19 +3235,19 @@ FPGA 통신 복구 - + 开始自检,请等待60秒... 자체 진단 시작 60초 대기 - + 开始自检,请等待%1秒... 자체 진단 시작 %1초 대기 - - - + + + 自检完成!!! 자체 진단 완료!!! @@ -3276,8 +3284,8 @@ 압력 변동이 설정값 5 초과 - - + + 停止打印,自动关闭高压. 인쇄 중지, 고전압 자동 종료 @@ -3306,8 +3314,8 @@ 혼합 밸브 열기2 - - + + 提示 팁 @@ -3372,7 +3380,7 @@ 13.카드 리더기 고장! - + 压力泄漏或压力传感器故障! 압력 누출 또는 압력 센서 고장 @@ -3381,9 +3389,8 @@ 작동 중 압력 누출이 발생하여 기어 펌프를 정지합니다! - 测试时间结束,准备关机 - 테스트 시간이 종료되어 시스템 종료를 준비합니다. + 테스트 시간이 종료되어 시스템 종료를 준비합니다. 确认要刷墨水卡吗? %1 秒后将自动确认 @@ -3464,26 +3471,27 @@ 재부팅을 준비하는 중입니다. %1 초 동안 기다려 주십시오... - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 유지보수 주기 만료까지 %1일 남았습니다. 제때 유지보수를 실시하십시오. - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 유지보수 주기가 %1일 초과되었습니다. 잉크젯 프린터의 정상 사용을 복구하려면 유지보수를 실시하십시오. - 当前正在使用 + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! + 当前正在使用 %1 -确定要新建文件吗? +确定要新建文件吗? 현재 사용 중인 %1 새 파일을 생성하시겠습니까? - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 압력이 너무 높습니다. 배관이 막혔는지 확인한 후 오류 복구 버튼을 누르십시오. @@ -3588,31 +3596,36 @@ 기어 펌프 회전 속도가 너무 높습니다. 즉시 정지하고 공급업체에 연락하십시오. - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! 잉크 TAG를 리드하시고 정품 잉크를 사용하십시오. 그렇지 않으면 %1시간 후에 장비 사용이 금지됩니다! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! 잉크 레벨 경보가 48시간을 초과했습니다. 장비의 정상 작동을 복구하기 위해 잉크를 추가하고 잉크 TAG을 리드하세요 - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! 솔벤트 TAG를 리드하시고 정품 솔벤트를 사용하십시오. 그렇지 않으면 %1시간 후에 장비 사용이 금지됩니다! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! 솔벤트 수위 경보가 48시간을 초과했습니다. 장비의 정상 작동을 복구하기 위해 솔벤트를 추가하고 솔벤트 TAG를 리드하세요 + + + File not found: %1 + File not found: %1 + 保养期已超过%1天,请及时保养,否则喷码机容易损坏 유지보수 주기가 %1일 초과되었습니다. 제때 유지보수를 실시하십시오. 그렇지 않으면 잉크젯 프린터가 손상될 수 있습니다. - + 刷卡倒计时起始时间文件不存在 카드 사용 카운트다운 시작 시간 파일이 존재하지 않습니다. @@ -3797,7 +3810,7 @@ 잉크 선 빠른 닫기 완료 - + 警告 경고 @@ -3806,12 +3819,12 @@ 유지 보수 카드 사용 확인? - + 保养期还有%1小时到期,请及时保养,否则喷码机容易损坏 유지 보수 기간 %1시간 남았습니다, 유지 보수 해주세요. - + 保养期已超过%1小时,请及时保养,否则喷码机容易损坏 유 보수 기간 %1시간 초과, 유지 보수 해주세요. @@ -3872,24 +3885,23 @@ 인쇄 속도가 너무 빠릅니다! 완전히 인쇄할 수 없습니다! - %1/%2/%3 - %1/%2/%3 + %1/%2/%3 - - - + + + 正在准备重启,请等待%1秒...... 재시작 준비 중, %1초 대기... - + ink Warning at: %1 잉크 경보: %1 - + solvent Warning at: %1 솔벤트 경보: %1 @@ -3922,8 +3934,8 @@ 오류!!!!!!!!!!!점도 이상 - - + + 电机故障 모터 에러 @@ -3932,32 +3944,38 @@ 모터 에러!!! - + 回收槽到头 거터 최대 위치 도달 - - + + 回收槽卡住或者回收槽开关时间设置错误 거터가 걸렸거나 거터 개폐 시간 설정이 잘못되었습니다. - - - - TextLabel - 텍스트 라벨 + 텍스트 라벨 - - + + color:#ffffff;font-size:14px;font-family:Microsoft YaHei; color:#ffffff;font-size:14px;font-family:Microsoft YaHei; - + + LastWork.xml + LastWork.xml + + + + E: QQBase + E: QQBase + + + 01.01.2006 18:58:12 01.01.2006 18:58:12 @@ -4909,7 +4927,7 @@ Char - + 额外设置 추가 설정 @@ -4929,7 +4947,7 @@ Char - + 系统授权 시스템 권한 @@ -4970,33 +4988,33 @@ Char mtFlog1: %1 - + RFID Settings RFID 설정 - + 提示 팁 - + RFID卡清零! RFID 카드 초기화! - - + + 取消授权 권한 해제 - + 警告 경고 - + 密码错误:%1 비밀번호 오류:%1 @@ -5139,14 +5157,14 @@ Char - + 喷嘴开启 노즐 켜짐 - + 喷嘴关闭 노즐 닫힘 @@ -5182,21 +5200,20 @@ Char border:0px; - - - - - + + + + 警告 경고 - + 回收槽未关,是否关闭回收槽后关机! 거터 미복귀, 거터를 닫은 후 시스템을 종료하시겠습니까? - + 是否确认关机? 시스템을 종료하시겠습니까? @@ -5209,19 +5226,19 @@ Char 시스템 종료 준비 중...... - - - + + + 正在准备关机,请等待%1秒... 시스템 종료 준비 중, %1초 후 종료됩니다... - + 准备关机... 시스템 종료 준비 중... - + 关机失败!!! 시스템 종료 실패!!! @@ -5230,51 +5247,48 @@ Char 최대 지원 열 수: %1. 정보 길이를 줄여 주십시오. - - 变量数大于8个,某些变量将不起作用!!! - 변수 수가 8개를 초과하여 일부 변수가 작동하지 않습니다! + 변수 수가 8개를 초과하여 일부 변수가 작동하지 않습니다! - 请减少信息中的变量(或计数器)数量. - 인쇄 파일 내 변수(또는 카운터) 수를 줄이세요. + 인쇄 파일 내 변수(또는 카운터) 수를 줄이세요. warning,界面上有变量未显示完全 경고: 인터페이스에 일부 변수가 표시되지 않습니다. - - - - - + + + + + 错误 오류 - + 喷印间隔过短,应高于%1! 인쇄 간격이 너무 짧습니다. %1 이상으로 설정하세요! - + 喷头盖未关,请先关喷头盖! 헤드 커버 닫기 필요! - + 墨线未开,请先开墨线开关! 잉크 스위치 켜십시오! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 최대 %2열 지원, 현재 %1열 → 길이 축소 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms 트리거 간격 %1ms → %2ms 이상 필요 @@ -5283,81 +5297,81 @@ Char 열기 중지 - + 喷嘴已开启 노즐 열림 - + 喷嘴开启中 노즐 열기 중 - + 喷嘴已关闭 노즐 닫힘 - + 喷嘴关闭中 노즐 닫기 중 - - + + 正在排气... 블리딩 중... - - + + 高压故障 고전압에러 - - + + 相位故障 위상 에러 - - + + 粘度故障 점도 에러 - - + + 回收故障 석션 에러 - - + + 溶液液位 솔벤트 레벨 - - + + 墨水液位 잉크 레벨 오류 - - + + 墨水缸满 잉크 통 가득 참 - - + + 墨线开关 잉크선 스위치 - + 正常 정상 @@ -5366,12 +5380,12 @@ Char 인쇄 시작 1 - + 提示 팁 - + 随机码文本将展出到U盘,请插入U盘 랜덤 코드를 USB에 저장합니다. USB를 삽입하세요. @@ -5388,8 +5402,8 @@ Char 열기 중지 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? 거터가 이전에 걸렸거나 거터 개폐 시간 설정이 잘못되었습니다. 현재 위치를 강제로 상한 위치로 설정하시겠습니까? @@ -5402,8 +5416,8 @@ Char 닫기 중지 - - + + %1.%2 %1.%2 @@ -5424,94 +5438,94 @@ Char 프린트 헤드 커버가 열려 인쇄 불가! - + 墨水缸满报警 잉크통 만료 경보 - + 墨水液位报警 잉크 레벨 경보 - + 溶剂液位报警 솔벤트 레벨 경보 - - + + 高压故障,暂停打印 고전압 오류로 인쇄 일시 정지 - + 高压故障,暂停打印. 고전압 고장, 인쇄 일시정지 - + 高压故障,关回收槽 고전압 오류로 수집기 자동 종료 - + 高压故障,关回收槽和墨线 고압 오류가 발생했습니다. 거터를 닫고 잉크 선을 정지하십시오. - - + + 回收故障,关闭回收槽,关墨线 회수 오류가 발생했습니다. 거터를 닫고 잉크 선을 정지하십시오. - + 回收故障. 회수 에러 - + 回收异常,墨线可能偏离.(%1) 회수 이상, 잉크 선 편향 가능성 (%1) - + 正在喷印....... 인쇄 중... - + 相位故障:飞行时间错误! 위상 이상: 비행 시간 오류! - + 相位故障:相位检测错误! 위상 이상: 검출 오류! - - - + + + 相位故障,准备关机 위상 오류로 시스템 종료 준비 - - - + + + 相位故障,暂停打印 위상 오류로 인쇄 일시 정지 - + 相位故障,屏蔽DAC输出 위상 오류로 DAC 출력 차단 - - + + 相位故障,屏蔽充电 위상 오류로 충전 차단 @@ -7977,7 +7991,7 @@ configuration. - + 延时(毫秒): 지연(ms): @@ -7986,8 +8000,8 @@ configuration. 미러 교대 간격 - - + + 触发延时(毫秒) 트리거 지연(ms) @@ -8206,8 +8220,8 @@ configuration. 반복 횟수 - - + + 重复间隔(毫秒) 반복 간격(ms) @@ -8216,7 +8230,7 @@ configuration. 엔코더 인쇄 활성화 - + 封锁时间(毫秒) 잠금 시간(ms) @@ -8453,12 +8467,12 @@ configuration. - + 提示 팁 - + 应用成功 적용 성공 @@ -8471,15 +8485,15 @@ configuration. 요구사항: 트리거 길이는 인쇄 간격보다 작아야 함 - - + + 延时(毫米): 지연(mm): - - - + + + 触发延时(毫米) 트리거 지연(mm) @@ -8489,20 +8503,20 @@ configuration. 기본 설정 저장 - - - + + + 重复间隔(毫米) 반복 간격(mm) - - + + 抑止距离(毫米) 인쇄신호 제어 거리(mm) - + 抑止距离(毫秒) 인쇄 신호 제어 거리(ms) @@ -8515,12 +8529,12 @@ configuration. 잠금 간격(ms) - + 字符宽度 문자 너비 - + 喷印比例(%) 인쇄 비율(%) @@ -9132,17 +9146,17 @@ configuration. RFIDManager - + readB6Req readB6Req - + readB6suc readB6suc - + Super IC card, write back original data Super IC card, write back original data @@ -9151,17 +9165,17 @@ configuration. Cmd[%1]: %2 - + 写数据到数据块6 데이터 블록 6에 데이터 쓰기 - + 已经刷过墨水卡,需添加墨水 이미 잉크 TAG을 리드했습니다. 잉크를 추가해야 합니다. - + 不需要刷墨水卡! 잉크 TAG 리드 필요 없습니다! @@ -9170,37 +9184,37 @@ configuration. 먼저 잉크을 보충한 후 TAG을 사용하십시오! - + 确认要刷墨水卡吗? 잉크 TAG을 리드하겠습니까? - + 确认要刷墨水卡吗? %1 秒后将自动确认 잉크 TAG을 리드하겠습니까? %1초 후 자동 확인 - + 刷墨水卡成功! 잉크 TAG 리드 성공! - + 刷墨水卡成功, 请及时将该墨水卡对应的墨水添加到机器中 잉크 TAG 리드 성공, 해당 잉크 카드에 대응하는 잉크를 장비에 즉시 보충해 주세요 - + 刷超级墨水卡失败,请联系厂商。 슈퍼 잉크 TAG 리드 실패, 제조업체에 문의하십시오. - + 已经刷过溶剂卡,需添加溶剂 이미 솔벤트 TAG을 리드했습니다. 솔벤트를 추가해야 합니다. - + 不需要刷溶剂卡! 솔벤트 TAG 리드 필요 없습니다! @@ -9209,112 +9223,112 @@ configuration. 먼저 솔벤트을 보충한 후 TAG을 사용하십시오! - + 确认要刷溶剂卡吗? 솔벤트 TAG을 리드하겠습니까? - + 确认要刷溶剂卡吗? %1 秒后将自动确认 솔벤트 TAG을 리드하겠습니까? %1초 후 자동 확인 - + 刷溶剂卡成功! 솔벤트 TAG 리드 성공! - + 刷溶剂卡成功, 请及时将该溶剂卡对应的溶剂添加到机器中 솔벤트 TAG 리드 성공, 해당 솔벤트 카드에 대응하는 솔벤트를 장비에 즉시 보충해 주세요 - + 刷超级溶剂水卡失败,请联系厂商。 슈퍼 솔벤트 TAG 리드 실패, 제조업체에 문의하십시오. - + 确认要刷保养卡吗? 유지 보수 카드 사용 확인? - + 确认要刷保养卡吗? %1 秒后将自动确认 유지 보수 카드 사용 확인? %1초 후 자동 확인 - 刷保养卡成功! - 유지보수 카드 성공! + 유지보수 카드 성공! - + 刷超级保养卡失败,请联系厂商。 슈퍼 유지보수 카드 실패, 제조업체에 문의하십시오. - + MAC无效卡! MAC 무효 카드! - + 无效卡,这张卡已经在%1时使用过 무효 카드 %1시 사용됨 - + 设置读写器密码失败! 리더기 비밀번호 설정 실패! - + 设置读写器密码成功! 리더기 비밀번호 설정 성공! - + 设置读写器原始密码失败! 리더기 초기 비밀번호 설정 실패! - + 设置读写器工作模式失败! 리더기 작동 모드 설정 실패! - + 设置读写器工作模式成功! 리더기 작동 모드 설정 성공! - + 查询读写器地址失败 리더기 주소 조회 실패 - + + 警告 경고 - + 先加墨水后刷卡:成功 먼저 잉크를 추가한 후 카드 사용: 성공 - + 先加溶剂后刷卡:成功 먼저 솔벤트를 추가한 후 카드 사용: 성공 - + 13.读卡器故障! 13.카드 리더기 고장! - + 请及时使用墨水盒附带的IC卡激活墨水盒 잉크 용기에 동봉된 IC 카드로 잉크 용기를 즉시 활성화해 주세요 @@ -9323,7 +9337,7 @@ configuration. 해당 잉크 카드에 대응하는 잉크를 장비에 즉시 보충해 주세요 - + 请及时使用溶剂盒附带的IC卡激活溶剂盒 솔벤트 용기에 동봉된 IC 카드로 솔벤트 용기를 즉시 활성화해 주세요 @@ -9671,12 +9685,12 @@ configuration. - - - - - - + + + + + + 停止 정지 @@ -9719,7 +9733,7 @@ configuration. - + 压缩机 압축기 @@ -9837,7 +9851,7 @@ configuration. 기계 코드 설정 - + Cancel 취소 @@ -9853,15 +9867,15 @@ configuration. - - - - - - - - - + + + + + + + + + 开 열림 @@ -9873,16 +9887,16 @@ configuration. - - - - - - - - - - + + + + + + + + + + 关 꺼짐 @@ -9890,17 +9904,17 @@ configuration. - - - - - - + + + + + + 警告 경고 - + 请先移开喷头盖! 프린트 헤드 커버를 제거하세요! @@ -9916,30 +9930,30 @@ configuration. - - - + + + 手动 수동 - - - + + + 自动 자동 - - - - - - + + + + + + 启动 시작 @@ -9985,7 +9999,7 @@ configuration. - + 密码不正确! 비밀번호 오류! @@ -9995,20 +10009,20 @@ configuration. 소프트웨어를 업데이트하시겠습니까? - + 软件更新成功,重启后生效! 소프트웨어 업데이트 성공, 재시작 후 적용됩니다! - - - - - + + + + + 错误 오류 @@ -10023,122 +10037,122 @@ configuration. 업데이트 실패! - + 找不到更新软件! 업데이트 소프트웨어를 찾을 수 없습니다! - + 是否确认更新系统? 시스템을 업데이트하시겠습니까? - + 系统更新成功,重启后生效! 시스템 업데이트 성공, 재시작 후 적용됩니다! - + 文件不存在! 파일이 존재하지 않습니다! - + 压力 압력 - + autoclean cancel or status: 자동 세척 취소 또는 상태: - + (2/3) Cleaning (2/3) 세척 중 - + (3/3) Cleaning (3/3) 세척 완료 - + 是否确认重启? 재부팅을 확인하시겠습니까? - + 确定要升级FPGA软件吗? FPGA 소프트웨어를 업데이트하시겠습니까? - + 没有FPGA升级文件 FPGA 업데이트 파일이 없습니다 - + 找不到 lib.tar! lib.tar을 찾을 수 없습니다! - + 无法删除旧的 lib.tar! 이전 lib.tar을 삭제할 수 없습니다! - + 复制 tar 包失败! tar 패키지 복사 실패! - + 解压失败,请检查权限! 압축 해제 실패, 권한을 확인하세요! - + 移动库文件失败! 라이브러리 파일 이동 실패! - + 环境配置成功! 환경 설정 성공! - + 切换失败! 전환 실패! - + 切换成功,重启后生效! 전환 성공, 재시작 후 적용됩니다! - + 找不到软件! 소프트웨어를 찾을 수 없습니다! - + 找到多个软件,请删除多余的文件,只保留一个! 여러 소프트웨어를 찾았습니다, 중복 파일을 삭제하고 하나만 남겨주세요! - + 确定要升级单片机软件吗? 단일 칩 소프트웨어를 업데이트하시겠습니까? - + 升级成功,请重启QtUI! 업데이트 성공, QtUI를 재시작하세요! - + 升级失败! 업데이트 실패! @@ -10180,12 +10194,12 @@ configuration. 혼합 밸브 3 열기: - + 配置文件/udisk/sysPara.bin不存在! 설정 파일 /udisk/sysPara.bin이 존재하지 않습니다! - + autoclean start 자동 세척 시작 @@ -10214,12 +10228,12 @@ configuration. 폰트 라이브러리 내보내기 완료! - + 是否开始电机测试? 모터 테스트를 시작하시겠습니까? - + 正在排气,是否停止? 배기 중입니다. 중지하시겠습니까? @@ -10245,24 +10259,24 @@ configuration. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + 提示 팁 @@ -10287,37 +10301,37 @@ configuration. 잉크 공급 밸브 - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 세척 시작 시 거터가 10mm 이상 열려 있는지 확인하세요. 1분 후 중지됩니다. - + 开始清洗 세척 시작 - + 停止清洗 세척 중지 - + 是否确认导出配置到U盘? 설정을 USB로 내보내시겠습니까? - + 检测不到U盘 USB가 감지되지 않습니다. - + 成功导出配置到U盘 설정 USB로 내보내기 성공 - + 是否确认从U盘导入配置? USB에서 설정을 가져오시겠습니까? @@ -10326,7 +10340,7 @@ configuration. 설정 파일 /udisk/sysPara.bin이 존재하지 않습니다! - + 从U盘成功导入配置,重启后生效! 설정 가져오기 성공, 재시작 후 적용됩니다! @@ -10922,12 +10936,12 @@ configuration. USB 인식 불가! - + 提示 팁 - + 字库导出完成! 폰트 라이브러리 내보내기 완료! @@ -11248,12 +11262,12 @@ configuration. ✓ - + 提示 팁 - + 是否保存文件? 파일을 저장하시겠습니까? diff --git a/loginfoctrl.cpp b/loginfoctrl.cpp index ac075c5..77445ed 100644 --- a/loginfoctrl.cpp +++ b/loginfoctrl.cpp @@ -1,5 +1,16 @@ #include "loginfoctrl.h" + +LogInfoCtrl *LogInfoCtrl::instance() +{ + static LogInfoCtrl* ins = nullptr; + if (!ins) { + ins = new LogInfoCtrl(); + } + + return ins; +} + void LogInfoCtrl::emitSigClean() { emit sig_clean(); diff --git a/loginfoctrl.h b/loginfoctrl.h index eb21daa..3a8fded 100644 --- a/loginfoctrl.h +++ b/loginfoctrl.h @@ -8,10 +8,7 @@ class LogInfoCtrl : public QObject { Q_OBJECT public: - static LogInfoCtrl* instance() { - static LogInfoCtrl ins; - return &ins; - } + static LogInfoCtrl* instance(); void emitSigClean(); void emitSigCleanOver(bool flag); diff --git a/mainwidget.cpp b/mainwidget.cpp index 97be65b..2537d00 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -31,6 +31,7 @@ #include "scene/PicDateItem.h" #include "scene/PicScheduleShiftItem.h" #include "scene/piccodeitem.h" +#include "scene/PicCounterItem.h" #include #include @@ -530,6 +531,8 @@ QList MainWidget::variableItemsUpdate() return QList(); } + /* + 旧实现: int totalOfProcessedDots = 0; int totalOfDatetimeNumber = 0; int nbInvaliedDatetimePreview = 0; @@ -537,6 +540,38 @@ QList MainWidget::variableItemsUpdate() QList updateAreas; + auto items = pPicScene->items(); + for(auto i : items) { + PicTextItem* item = dynamic_cast(i); + if(!item) + continue; + + ... + + auto boundingRect = pPicScene->itemsBoundingRect().toRect(); + QRect itemRect(item->pos().x() - boundingRect.x(), item->pos().y() - boundingRect.y(), img.width(), img.height()); + ... + + QRect intersectRect = itemRect.intersected(sceneRect); + ... + } + */ + + int totalOfProcessedDots = 0; + int totalOfDatetimeNumber = 0; + int nbInvaliedDatetimePreview = 0; + int nbClipDatetimePreview = 0; + + QList updateAreas; + + const QRectF contentRect = pPicScene->itemsBoundingRect(); + if(contentRect.isEmpty()) + return updateAreas; + + const int maxPicWidth = sysPara->status.flagOfNo67FPGA ? MAX_PRINT_COL_NUM_Normal : MAX_PRINT_COL_NUM_Wide; + const int maxPicHeight = MAX_PRINT_ROW_NUM; + const QRectF outputRect(0, 0, maxPicWidth, maxPicHeight); + auto items = pPicScene->items(); for(auto i : items) { PicTextItem* item = dynamic_cast(i); @@ -570,8 +605,8 @@ QList MainWidget::variableItemsUpdate() auto codeItem = dynamic_cast(item); if(!codeItem) continue; - - QVector counterValus{QString::number(sysPara->status.calandar_and_dat.cnt1CurrValue,16).toInt(), + + QVector counterValus{QString::number(sysPara->status.calandar_and_dat.cnt1CurrValue,16).toInt(), QString::number(sysPara->status.calandar_and_dat.cnt2CurrValue,16).toInt()}; auto b = codeItem->updateVariants(counterValus); if(!b) @@ -584,34 +619,24 @@ QList MainWidget::variableItemsUpdate() continue; } - auto sceneRect = pPicScene->sceneRect().toRect(); - auto boundingRect = pPicScene->itemsBoundingRect().toRect(); - QRect itemRect(item->pos().x() - boundingRect.x(), item->pos().y() - boundingRect.y(), img.width(), img.height()); - totalOfDatetimeNumber++; - - // 裁剪item位置, 确保item位于场景内 - // 如果item超出了场景范围,则裁剪img并更新itemRect,只显示场景内的部分 - QRect intersectRect = itemRect.intersected(sceneRect); - - if(!intersectRect.isEmpty() && intersectRect != itemRect) { - // 计算裁剪区域在原图中的偏移 - int cropX = qMax(0, (int)(intersectRect.left() - itemRect.left())); - int cropY = qMax(0, (int)(intersectRect.top() - itemRect.top())); - int cropWidth = (int)intersectRect.width(); - int cropHeight = (int)intersectRect.height(); - - // 裁剪图像 - img = img.copy(cropX, cropY, cropWidth, cropHeight); - - // 更新itemRect为裁剪后的区域 - itemRect = intersectRect; + const QRectF itemSceneRect = item->sceneBoundingRect(); + const QRectF itemBufferRect = itemSceneRect.translated(-contentRect.topLeft()); + const QRectF clippedBufferRect = itemBufferRect.intersected(outputRect); + if(clippedBufferRect.isEmpty()) + continue; + QRect targetRect = clippedBufferRect.toAlignedRect(); + totalOfDatetimeNumber++; + + if(targetRect != itemBufferRect.toAlignedRect()) { + const int cropX = qMax(0, targetRect.left() - itemBufferRect.toAlignedRect().left()); + const int cropY = qMax(0, targetRect.top() - itemBufferRect.toAlignedRect().top()); + img = img.copy(cropX, cropY, targetRect.width(), targetRect.height()); ++nbClipDatetimePreview; } - totalOfProcessedDots += imageToPrintData(img, (int)itemRect.left(), (int)itemRect.top()); - - updateAreas.append(itemRect); + totalOfProcessedDots += imageToPrintData(img, targetRect.left(), targetRect.top()); + updateAreas.append(targetRect); } if(updateAreas.isEmpty()) @@ -667,12 +692,15 @@ int MainWidget::imageToPrintData(QImage &image, int startX, int startY) for(int k = 0; k < height; k++) { QRgb rgb = image.pixel(j, k); - if(((rgb >> 24) & 0xff) > 0x80) - { - c |= (1 << (hStart % 8)); - } - else - { + if (rgb & 0x80000000) { // 判断 alpha + // 灰度计算:Y = 0.299*R + 0.587*G + 0.114*B + int y = int((((rgb & 0xff) * 299 + ((rgb >> 8) & 0xff) * 587 + ((rgb >> 16) & 0xff) * 114)) / 1000.0f); + if (y < 125) { + c |= (1 << (hStart % 8)); + } else { + c &= ~(1 << (hStart % 8)); + } + } else { c &= ~(1 << (hStart % 8)); } @@ -795,6 +823,7 @@ void MainWidget::on_m_StartBtn_clicked() sysPara->saveParaToFile(); } + // onPreviewScene 没有必要再次调用,评估后删除 byons@2026年7月28日 if(sysPara->para.EditMode == SCENE) onPreviewScene(); @@ -899,19 +928,16 @@ void MainWidget::on_m_StopBtn_clicked() } unsigned char blankDat1[BLANK_COL_NUM*MAX_PRINT_ROW_BYTE_NUM]={0}; -void MainWidget::SendPrintDataToFpga(unsigned char alterMode, int startCol, int size) +void MainWidget::SendPrintDataToFpga(unsigned char alterEnable, bool isUpdate) { if(!sysPara) return ; // fileChange=false; - Q_UNUSED(alterMode); + Q_UNUSED(alterEnable); - // 看清楚,最后取反,也就是说,如果不是局部更新,则写入打印设置和变量控制 - if(!(startCol >= 0 && size > 0)) { + if(!isUpdate) { sysPara->devOp->writeFpgaPrintPara(1); sysPara->devOp->writeFpgaVariCtrl(); - startCol = 0; - size = sysPara->status.currPrintCol; } sysPara->devOp->fpgaWr(0,blankDat1,sizeof(blankDat1));//...所加的空白偏移地址 @@ -930,14 +956,11 @@ void MainWidget::SendPrintDataToFpga(unsigned char alterMode, int startCol, int 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); - dat = dat + startCol * MAX_PRINT_ROW_BYTE_NUM; - size = size * MAX_PRINT_ROW_BYTE_NUM; - - if(size <= 20000) - sysPara->devOp->fpgaWr(sizeof(blankDat1), dat, size); - else - sysPara->devOp->fpgaWrD2(sizeof(blankDat1), dat, size); static QElapsedTimer bnsTimer; static uint64_t nbRestartCount = 0; @@ -1822,8 +1845,30 @@ int MainWidget::getMaxSpeedCalcPara(){ return pulseNum; } + +QRect clipBottom(const QImage& img, const QRect& region) +{ + for(int y = region.bottom() - 1; y >= region.top(); --y) { + auto line = img.scanLine(y); + for(int x = region.left(); x < region.right(); ++x) { + auto rgb = *((const uint32_t*)(x * 4 + line)); + int y = int((((rgb & 0xff) * 299 + ((rgb >> 8) & 0xff) * 587 + ((rgb >> 16) & 0xff) * 114)) / 1000.0f); + if((rgb & 0x80000000) && y < 125) { + return QRect(QPoint(region.topLeft()), QPoint(region.right(), y + 1)); + } + } + } + + return QRect(region.topLeft(), QSize(region.width(), 0)); +} + void MainWidget::onPreviewScene() { + if(!sysPara){ + qCritical() << "SysPara is empty!"; + return; + } + sysPara->para.EditMode = SCENE; if(!pPicScene) { @@ -1831,547 +1876,176 @@ void MainWidget::onPreviewScene() } pPicScene->clearSelection(); + pPicScene->update(); - QRect sceneRect = pPicScene->itemsBoundingRect().toRect(); - QSize size = sceneRect.size(); + bool MaxCol4000; + if(sysPara->status.flagOfNo67FPGA) + MaxCol4000 = true; + else + MaxCol4000 = false; + + unsigned char *dat; + if(MaxCol4000){ + dat = sysPara->status.printDat_Normal; + memset(dat,0,sizeof(sysPara->status.printDat_Normal)); + }else{ + dat = sysPara->status.printDat; + memset(dat,0,sizeof(sysPara->status.printDat)); + } + + const QRectF contentRect = pPicScene->itemsBoundingRect(); + const QRect sceneRect = contentRect.toAlignedRect(); + qDebug() << "sceneRect: " << sceneRect; + + // 限定最大高度和宽度 + int coldot = qMin(sceneRect.width(), MaxCol4000 ? MAX_PRINT_COL_NUM_Normal : MAX_PRINT_COL_NUM_Wide); + int maxPicHeight = qMin(sceneRect.height(), int(sysPara->para.canvasHeight)); + QSize size(coldot,maxPicHeight); if(size.isEmpty()) { //场景为空时,渲染空场景并刷新界面 handleEmptySize(); return; } - QImage image(size,QImage::Format_ARGB32); + + QImage image(size, QImage::Format_ARGB32); image.fill(0x00ffffff);//填充白色 - //image.save("./printScene.jpg");//图片 + QPainter painter(&image); - pPicScene->render(&painter,QRectF(), sceneRect); - int coldot=0; - if(sysPara){ - bool MaxCol4000; - if(sysPara->status.flagOfNo67FPGA) - MaxCol4000 = true; - else - MaxCol4000 = false; - previewFlag=1; - sysPara->status.currPrintRow = 0; - sysPara->status.variNum = 0; - sysPara->status.QRvariNum = 0; - unsigned char *dat; - if(MaxCol4000){ - dat =sysPara->status.printDat_Normal; - memset(dat,0,sizeof(sysPara->status.printDat_Normal)); - }else{ - dat =sysPara->status.printDat; - memset(dat,0,sizeof(sysPara->status.printDat)); - } - //qDebug()<<"Preview:"; + int firstRow = 0; - { - sysPara->status.addSpace = sysPara->para.checkSpace; + int myvariNum=0; + int expiryVarNum = 0; - coldot = sceneRect.width(); - if(coldot > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide)) - coldot = MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide; - int maxPicHeight = MAX_PRINT_ROW_NUM + 12; - QSize size(coldot,maxPicHeight); + sysPara->status.variNum = 0; + sysPara->status.QRvariNum = 0; + sysPara->status.addSpace = sysPara->para.checkSpace; // 空列已经弃用 __attribute__((deprecated)) + sysPara->status.currPrintRow = 0; + sysPara->status.currPrintCol = coldot; + sysPara->status.ExpiryVarNum = 0; + sysPara->print.ExpiryVar.startColPos = 0; + sysPara->print.ExpiryVar.endRowPos = 0; + sysPara->print.ExpiryVar.letterSpace =0; + sysPara->print.CurDateVar.startColPos = 0; + sysPara->print.CurDateVar.endRowPos = 0; + sysPara->print.CurDateVar.letterSpace = 0; + sysPara->status.CurrDateVariNum = 0; - sysPara->status.currPrintRow =0; - sysPara->status.currPrintCol = coldot + ( sysPara->status.addSpace?coldot:0) ; //checkSpace + qDebug() << "Loading scene items: \r\n\r\n\r\n"; - QImage image(size,QImage::Format_ARGB32); - image.fill(0x00ffffff);//填充白色 - QPainter painter(&image); - QRectF validRectF(sceneRect.x(),sceneRect.y(),coldot,maxPicHeight); - pPicScene->render(&painter,QRectF(),validRectF); - int firstRow = 0; - int lastRow = firstRow + MAX_PRINT_ROW_NUM; - int TempVarNum=0; - int varLastRow=0; - lastRow = (lastRow>maxPicHeight)?maxPicHeight:lastRow; + QList items = pPicScene->items(); + foreach (QGraphicsItem *item, items) { - // 接下来就是要把打印到数据data填充以及确认变量的个数,变量对应的开始列和结束行 - for(int j = 0; j < lastRow - firstRow; j++){ // Y - for(int i = 0; i < coldot; i++){ // - QRgb rgb = image.pixel(i,j + firstRow); - if(rgb&0x80000000){ //判断alpha - if((rgb & 0xf0f0ff) == 0xf0f000){ //处理变量, 查找左下角,因为同一行的左下角是对齐的 看起来这个颜色是黄色 - - bool foundvar=0; - if(j>0){ - QRgb r_rgb = image.pixel(i,j + firstRow+1); - if((r_rgb & 0xf0f0ff) != 0xf0f000 ){foundvar =1;} - //QRgb r_rgb = image.pixel(i,j + firstRow-1);if((r_rgb & 0xf0f0ff) == 0xf0f000 )foundvar =0; - } - if(foundvar){ - if(sysPara->status.variNum < MAX_VARI_NUM){ - sysPara->status.vars[sysPara->status.variNum].startColPos = i+(sysPara->status.addSpace?i:0); - sysPara->status.vars[sysPara->status.variNum].endRowPos = j; - //if(varLastRowstatus.variNum ++;TempVarNum++; - //i+=5;//scene 每一行可能都包含变量 - //qDebug()<<"VARr:"<status.QRvariNum>=4)continue; - if((rgb & 0x00ffff0) == 0x00ff10) { //MDT - sysPara->print.QRvars[sysPara->status.QRvariNum].type=MDT; - sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1; - sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt; - sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0); - sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1; - if(varLastRowstatus.QRvariNum++; - } - else if((rgb & 0x00ffff0) == 0x00ff20) { //QR - sysPara->print.QRvars[sysPara->status.QRvariNum].type=QR; - sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1; - sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt; - sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0); - sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1; - if(varLastRowstatus.QRvariNum++; - } - else if((rgb & 0x00fffff0) == 0x00ff30) { //BAR - sysPara->print.QRvars[sysPara->status.QRvariNum].type=BAR; - sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1; - sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt; - - sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0); - - sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1; - - if(varLastRowstatus.QRvariNum++; - - } - if(sysPara->status.QRvariNum>=4)sysPara->status.QRvariNum=4; - - } - else if((rgb & 0x00ffffff)==EXPIRY_VARI_RECONISE) - { // 有效期变量 : 处理变量, 查找左下角,因为同一行的左下角是对齐的 - bool foundExVar=0; - if(j>0){ - QRgb r_rgb = image.pixel(i,j + firstRow+1); - if((r_rgb & 0x00ffffff) != EXPIRY_VARI_RECONISE ){foundExVar =1;} - } - if(foundExVar) - { - if(sysPara->status.ExpiryVarNum <2) - { - sysPara->print.ExpiryVar.startColPos = i+(sysPara->status.addSpace?i:0); - sysPara->print.ExpiryVar.endRowPos = j; - if(varLastRowstatus.ExpiryVarNum ++; - i+=5; - } - //else TempVarNum++; - //dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点 - } - } - else if((rgb & 0xfffff0)==0xff0cf0) - { // 有效期变量 : 处理变量, 查找左下角,因为同一行的左下角是对齐的 - bool foundExVar=0; - if(j>0){ - QRgb r_rgb = image.pixel(i,j + firstRow+1); - if((r_rgb & 0xfffff0) != 0xff0cf0 ){foundExVar =1;} - } - if(foundExVar) - { - if(sysPara->status.ExpiryVarNum <2) - { - sysPara->print.CurDateVar.startColPos = i+(sysPara->status.addSpace?i:0); - sysPara->print.CurDateVar.endRowPos = j; - if(varLastRowstatus.CurrDateVariNum ++; - i+=5; - } - //else TempVarNum++; - //dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点 - } - } - else if((rgb & 0xffffff)==0xff00ff) - { // 有效期变量 : 处理变量, 查找左下角,因为同一行的左下角是对齐的 - { - if(sysPara->status.classVariNum <3) { - EXPIRYVAR_t *currCLass = &sysPara->print.ClassVari ; - currCLass->day = QDateTime::currentDateTime().date().day(); - currCLass->startColPos = i+(sysPara->status.addSpace?i:0); - currCLass->endRowPos = j; - if(varLastRowstatus.classVariNum ++; - i+=5; - } - } - } - else - { //Y = 0.299*R' + 0.587*G' + 0.114*B //非变量 - int y = (((rgb&0xff)*299 + ((rgb>>8)&0xff)*587 + ((rgb>>16)&0xff)*114))/1000; - if(y < 125 ){ - dat[MAX_PRINT_ROW_BYTE_NUM*(i+(sysPara->status.addSpace?i:0)) + j/8] |= 1 << (j%8); //画黑点 - if((j+1) > sysPara->status.currPrintRow) { - sysPara->status.currPrintRow = j+1; - } - } - } - - }/*判断alpha end*/ - } - } - - if(TempVarNum>MAX_VARI_NUM){ - setRunStatus(tr("变量数大于8个,某些变量将不起作用!!!")); - strTitle= tr("变量数大于8个,某些变量将不起作用!!!"); - strTitle.append("\r\n"); - strTitle.append(tr("请减少信息中的变量(或计数器)数量.")); - QMessageBox::warning(this, tr("警告"),strTitle,QMessageBox::Ok); - } - - sysPara->status.variNum = 0; - sysPara->status.ExpiryVarNum = 0; - sysPara->print.ExpiryVar.startColPos = 0; - sysPara->print.ExpiryVar.endRowPos = 0; - sysPara->print.ExpiryVar.letterSpace =0; - sysPara->print.CurDateVar.startColPos = 0; - sysPara->print.CurDateVar.endRowPos = 0; - sysPara->print.CurDateVar.letterSpace = 0; - sysPara->status.CurrDateVariNum = 0; - sysPara->status.QRvariNum=0;//lch add - int myvariNum=0; - int expiryVarNum = 0; - - QList items = pPicScene->items(); - foreach (QGraphicsItem *item, items) { - PicTextItem *picText = qgraphicsitem_cast(item); - bool ok; - int textvariNum=0; - - int textColdot=0; - textColdot = picText->boundingRect().width(); - if(textColdot > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide)) - textColdot = MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide; - int maxTextHeight = MAX_PRINT_ROW_NUM + 12; - QSize textSize(textColdot, maxTextHeight); - QImage textImage(textSize,QImage::Format_ARGB32); - textImage.fill(0x00ffffff);//填充白色 - //image.fill(0x00f0f000);//填充白色 - QPainter textPainter(&textImage); - //textImage.save("./textImage.jpg"); - - //QRectF validtextRectF(picText->pos().x(),picText->pos().y(),textColdot,maxTextHeight); - QRectF validtextRectF(picText->pos().x(),picText->pos().y(),textColdot,picText->document()->size().height()); - pPicScene->render(&textPainter,QRectF(),validtextRectF); - //qDebug()<<"validtextRectF:"<pos().x() - sceneRect.x(); - textItemPosY = picText->pos().y() - sceneRect.y(); - - //接下来就是要把打印到数据data填充以及确认变量的个数,变量对应的开始列和结束行 - for(int j = 0; j < textLastRow - textFirstRow; j++){ // Y - for(int i = 0; i < textColdot; i++){ // - QRgb rgb = textImage.pixel(i,j + textFirstRow); - if((rgb&0x80000000)){ //判断alpha - if((rgb & 0xf0f0ff) == 0xf0f000){ //处理变量, 查找左下角,因为同一行的左下角是对齐的 看起来这个颜色是黄色 - - bool textfoundvar = 0; - if(j>0){ - QRgb r_rgb = textImage.pixel(i,j + textFirstRow+1); - if((r_rgb & 0xf0f0ff) != 0xf0f000 ) - { - textfoundvar =1; - } - - } - if(textfoundvar){ - if(sysPara->status.variNum < MAX_VARI_NUM){ - sysPara->status.vars[sysPara->status.variNum].startColPos = i+(sysPara->status.addSpace?i:0)+textItemPosX; - sysPara->status.vars[sysPara->status.variNum].endRowPos = j+textItemPosY; - //qDebug()<<"sysPara->status.variNum:"<status.variNum; - //qDebug()<<"startColPos:"<status.vars[sysPara->status.variNum].startColPos; - //qDebug()<<"endRowPos:"<status.vars[sysPara->status.variNum].endRowPos; - if(varLastRowstatus.variNum ++; - textvariNum++; - i+=5;//scene 每一行可能都包含变量 - //qDebug()<<"VARr:"<itemAt(i,j+firstRow); - //picText_var[i]= (PicTextItem*) gItem; - //picText_var_hash.insert(picText_var[i],i); - } - else - { - textvariNum++; - } - } - } - else if( ((rgb & 0xfffff0) == 0x00ff10) || ((rgb & 0xfffff0) == 0x00ff20) ||((rgb & 0xfffff0) == 0x00ff30) ){ - // 0xff00ff01(DMT) 0xff00ff02(QR) 0xff00ff03(BAR) - //qDebug()<<"FLAG:"<status.QRvariNum>=4)continue; - if((rgb & 0x00ffff0) == 0x00ff10) { //MDT - sysPara->print.QRvars[sysPara->status.QRvariNum].type=MDT; - sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1; - sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt; - sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0)+textItemPosX; - sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1+textItemPosY; - if(varLastRowstatus.QRvariNum++; - } - else if((rgb & 0x00ffff0) == 0x00ff20) { //QR - sysPara->print.QRvars[sysPara->status.QRvariNum].type=QR; - sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1; - sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt; - sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0)+textItemPosX; - sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1+textItemPosY; - if(varLastRowstatus.QRvariNum++; - } - else if((rgb & 0x00fffff0) == 0x00ff30) { //BAR - sysPara->print.QRvars[sysPara->status.QRvariNum].type=BAR; - sysPara->print.QRvars[sysPara->status.QRvariNum].countEn=1; - sysPara->print.QRvars[sysPara->status.QRvariNum].Counter=sysPara->status.productCnt; - - sysPara->print.QRvars[sysPara->status.QRvariNum].startColPos=i+(sysPara->status.addSpace?i:0)+textItemPosX; - - sysPara->print.QRvars[sysPara->status.QRvariNum].endRowPos=j+1+textItemPosY; - - if(varLastRowstatus.QRvariNum++; - - } - if(sysPara->status.QRvariNum>=4)sysPara->status.QRvariNum=4; - - } - //else if((rgb & 0xfffff0)==0xff00f0) - else if((rgb & 0x0000ffff)==EXPIRY_VARI_RECONISE) - { // 有效期变量 : 处理变量, 查找左下角,因为同一行的左下角是对齐的 - //qDebug()<<"found EXPIRY_VARI_RECONISE"; - bool foundExVar=0; - if(j>0){ - QRgb r_rgb = textImage.pixel(i,j + firstRow+1); - if(((r_rgb & 0x0000ffff) != EXPIRY_VARI_RECONISE )){foundExVar =1;} - } - if(foundExVar) - { - //if(sysPara->status.ExpiryVarNum <2) - { - //if(sysPara->print.ExpiryVar.endRowPos==0) - if(sysPara->status.ExpiryVarNum == 0) - { - sysPara->status.ExpiryVarNum ++; - } - sysPara->print.ExpiryVar.startColPos = i+(sysPara->status.addSpace?i:0)+textItemPosX; - sysPara->print.ExpiryVar.endRowPos = j+textItemPosY; - if(varLastRowprint.ExpiryVar.endRowPos:"<print.ExpiryVar.endRowPos; - } - //else TempVarNum++; - //dat[MAX_PRINT_ROW_BYTE_NUM*i + j/8] |= 1 << (j%8); //画黑点 - } - } - else if((rgb & 0xfffff0)==0xff0cf0) - { // 有效期变量 : 处理变量, 查找左下角,因为同一行的左下角是对齐的 - - bool foundExVar=0; - if(j>0){ - QRgb r_rgb = textImage.pixel(i,j + firstRow+1); - if((r_rgb & 0xfffff0) != 0xff0cf0 ){foundExVar =1;} - } - if(foundExVar) - { - //qDebug()<<"found CurDateVar"; - //if(sysPara->status.ExpiryVarNum <2) - { - //if(sysPara->print.CurDateVar.endRowPos==0) - if(sysPara->status.CurrDateVariNum == 0) - { - sysPara->status.CurrDateVariNum ++; - //setRunStatus(QString("CurrDateVariNum(%1)").arg(sysPara->status.CurrDateVariNum)); - } - sysPara->print.CurDateVar.startColPos = i+(sysPara->status.addSpace?i:0)+textItemPosX; - sysPara->print.CurDateVar.endRowPos = j + textItemPosY; - //qDebug()<<"CurDateVar ixj:"<print.CurDateVar.endRowPos:"<print.CurDateVar.endRowPos; - if(varLastRow sysPara->status.currPrintRow) { - sysPara->status.currPrintRow = j+textItemPosY; - } - }/*判断alpha end*/ - } - } - //qDebug()<<"ExpiryVarNum:"<status.ExpiryVarNum; - //===================一般变量===================== - //myvariNum = 0; - QString textVariPattern = ""; - QRegExp textrx(textVariPattern); - QString textHtml = picText->toHtml(); - int from = 0; - //int myvariNum=0; - while(from < textHtml.size() && from != -1){ - from = textHtml.indexOf(textrx,from); - - if(from != -1){//找到匹配的 - //qDebug()<<"found variable"; - from ++; - //if(myvariNum < textvariNum) - if(myvariNum < sysPara->status.variNum) - { - sysPara->status.vars[myvariNum].digitalNum = textrx.cap(3).toInt(&ok);//第二个匹配,数字到个数 - sysPara->status.vars[myvariNum].bold = (sysPara->status.vars[myvariNum].digitalNum%100) == 75; - if(sysPara->status.vars[myvariNum].bold) - sysPara->status.vars[myvariNum].digitalNum = sysPara->status.vars[myvariNum].digitalNum/100; - - sysPara->status.vars[myvariNum].type = textrx.cap(2).toInt(&ok);//第一个匹配 - - sysPara->status.vars[myvariNum].width = textrx.cap(4).toInt(&ok)*(sysPara->status.addSpace?2:1); - sysPara->status.vars[myvariNum].height = textrx.cap(5).toInt(&ok); - //qDebug()<<"myvariNum endRowPos:"<status.vars[myvariNum].endRowPos; - //qDebug()<<"myvariNum height:"<status.vars[myvariNum].height; - sysPara->status.vars[myvariNum].startRowPos = sysPara->status.vars[myvariNum].endRowPos - sysPara->status.vars[myvariNum].height+1; - //sysPara->status.vars[myvariNum].startRowPos = sysPara->status.vars[myvariNum].endRowPos - sysPara->status.vars[myvariNum].height; - //qDebug()<<"start row:"<status.vars[myvariNum].startRowPos; - if(sysPara->status.vars[myvariNum].startRowPos<0) - sysPara->status.vars[myvariNum].startRowPos=0; - - int item_x_start_pos = sysPara->status.vars[myvariNum].startColPos; - int item_x_end_pos = item_x_start_pos + sysPara->status.vars[myvariNum].width ; - if(item_x_end_pos > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide)) - item_x_end_pos = MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide; - int item_y_start_pos = sysPara->status.vars[myvariNum].startRowPos; - int item_y_end_pos = sysPara->status.vars[myvariNum].endRowPos+1 ; - if(item_y_start_pos < 0) - item_y_start_pos = 0; - for(int i = item_x_start_pos; i < item_x_end_pos; i++){ - for(int j = item_y_start_pos; j < item_y_end_pos; j++){ - dat[MAX_PRINT_ROW_BYTE_NUM*(i+(sysPara->status.addSpace?0:0)) + j/8] &= ~(1 << (j%8)); //将画点取消掉 - dat[MAX_PRINT_ROW_BYTE_NUM*(i+(sysPara->status.addSpace?0:0)) + j/8] &= ~(1 << (j%8)); - } - } - sysPara->status.vars[myvariNum].height = textrx.cap(5).toInt(&ok)-1; - if(sysPara->status.vars[myvariNum].height>16 ){ - if(sysPara->status.vars[myvariNum].height==24) - ; - else { - if(sysPara->status.vars[myvariNum].startRowPos) - { - sysPara->status.vars[myvariNum].endRowPos--; - sysPara->status.vars[myvariNum].startRowPos--; - } - } - } - - if(sysPara->status.vars[myvariNum].type == RANDOMNUM) - { - //qDebug()<<"RAND:"<status.vars[myvariNum].type<< sysPara->status.vars[myvariNum].digitalNum; - sysPara->status.RandomDigitNum = sysPara->status.vars[myvariNum].digitalNum; - } - int pixelSize = Public::derivePixelSizeFromHeight(sysPara->status.vars[myvariNum].height); - - //qDebug()<<"MainWindows"<status.vars[myvariNum].height<status.vars[myvariNum].letterSpace = 0; - if(sysPara->status.vars[myvariNum].digitalNum){ //算出letterspace - QFont font; - //font.setFamily(Public::getFontFamily(pixelSize)); - font.setFamily(Public::getFontFamily(pixelSize,sysPara->status.vars[myvariNum].type )); // 20160812 - //pixelSize==7? font.setFamily(ui->textEditOption->getLabelFontFamily()->text()):font.setFamily(Public::getFontFamily(pixelSize, 0)); - font.setPixelSize(pixelSize); - font.setWeight(sysPara->status.vars[myvariNum].bold?QFont::Bold:QFont::Normal); - //font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace); - QFontMetrics fontMetrics(font); - int charWidth = (fontMetrics.width("0123456789"))/10 ; - // sysPara->status.vars[myvariNum].letterSpace = sysPara->para.textEditCharSpace; - sysPara->status.vars[myvariNum].letterSpace = picText->letterSpace(); - //sysPara->status.vars[myvariNum].letterSpace = - //sysPara->status.vars[myvariNum].width/sysPara->status.vars[myvariNum].digitalNum/(sysPara->status.addSpace?2:1) - charWidth; - } - myvariNum++; - } - } - } - //==========================一般变量结束======================= - } - - /*--------------------------------------------------------------------------*/ - generateCharRamData(); - if(sysPara->status.currPrintRow>MAX_PRINT_ROW_NUM-1)sysPara->status.currPrintRow=MAX_PRINT_ROW_NUM-1; - bool found=0; - - lastRow = sysPara->status.currPrintRow; - //qDebug()<<"lastRow:"<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=1;//qDebug()<<"fOUND:"<status.currPrintRow; - break; - } - } - if(found) - break; - } - if(lastRow>MAX_PRINT_ROW_NUM-1)lastRow = MAX_PRINT_ROW_NUM-1; - if(lastRowstatus.currPrintRow =lastRow; + PicTextItem *picText = qgraphicsitem_cast(item); + if(!picText) + continue; + qDebug() << "Item propertices: "; + qDebug() << picText->pos(); + qDebug() << picText->boundingRect(); + QXmlStreamAttributes attrs; + picText->saveAttrs(attrs); + for(auto attr : attrs) { + qDebug() << attr.name() << ": " << attr.value(); } - if(sysPara->status.QRvariNum) { -// onUpdateDispQRCode(1); + const QRectF itemSceneRect = item->sceneBoundingRect(); + const QRectF clippedSceneRect = itemSceneRect.intersected(contentRect); + if(clippedSceneRect.isEmpty()) + continue; + + const QRect itemRect = clippedSceneRect.translated(-contentRect.topLeft()).toAlignedRect(); + const QRectF sourceRect = clippedSceneRect; + + if(picText && picText->sourceType() == SourceType::COUNTER) { + PicCounterItem* counterItem = qgraphicsitem_cast(picText); + if(!counterItem) + continue; + + if(sysPara->status.variNum >= 8) + continue; + + int varI = sysPara->status.variNum; + auto& varPara = sysPara->status.vars[varI]; + varPara.type = int(counterItem->counterType()); + varPara.digitalNum = counterItem->digitalNum(); + varPara.width = itemRect.width(); + varPara.height = itemRect.height(); + varPara.startColPos = itemRect.left(); + varPara.endRowPos = itemRect.bottom() + 1; + varPara.startRowPos = itemRect.top(); + varPara.currVal = 0; + varPara.bold = 0; + 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)); } - 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; + pPicScene->render(&painter, itemRect, sourceRect); } - /*-------------------------------切换到显示窗口-----------------------------------*/ - - 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(); - - auto rows = sysPara->para.AlterMode?sysPara->status.currAlterPrintRow : sysPara->status.currPrintRow; - rows = std::max(rows, (m_PrintDisplay->parentWidget()->height() / m_PrintDisplay->currScaleRatio())); - auto cols = sysPara->status.currPrintCol; - cols = std::max(cols, (m_PrintDisplay->parentWidget()->width() / m_PrintDisplay->currScaleRatio())); - m_PrintDisplay->setDisplaySize(cols, rows); - m_PrintDisplay->update(); } - previewFlag=0; + + sysPara->status.currPrintRow = sceneRect.height(); + sysPara->status.currPrintCol = sceneRect.width(); + + imageToPrintData(image, 0, 0); + + // /*--------------------------------------------------------------------------*/ + generateCharRamData(); + 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:"<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(); + + auto rows = sysPara->para.AlterMode?sysPara->status.currAlterPrintRow : sysPara->status.currPrintRow; + rows = std::max(rows, (m_PrintDisplay->parentWidget()->height() / m_PrintDisplay->currScaleRatio())); + auto cols = sysPara->status.currPrintCol; + cols = std::max(cols, (m_PrintDisplay->parentWidget()->width() / m_PrintDisplay->currScaleRatio())); + m_PrintDisplay->setDisplaySize(cols, rows); + m_PrintDisplay->update(); } void MainWidget::handleEmptySize() @@ -2387,7 +2061,6 @@ void MainWidget::handleEmptySize() // pPicScene->render(&emptyPainter, QRectF(), QRectF(0, 0, emptySize.width(), emptySize.height())); // 初始化打印参数,避免空场景导致的参数异常 - previewFlag = 1; sysPara->status.currPrintRow = 0; sysPara->status.currPrintCol = 0; // emptySize.width(); sysPara->status.variNum = 0; @@ -2405,7 +2078,6 @@ void MainWidget::handleEmptySize() rows = std::max(rows, (m_PrintDisplay->parentWidget()->height() / m_PrintDisplay->currScaleRatio())); m_PrintDisplay->setDisplaySize(m_PrintDisplay->parentWidget()->width() / m_PrintDisplay->currScaleRatio(), rows); m_PrintDisplay->update(); - previewFlag = 0; return; } @@ -2873,6 +2545,7 @@ void MainWidget::UpdateUIVersion(){ QString VernonBach; VernonBach.sprintf("A%d.%d.%02d%s%s", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID); + VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_"+ QString(__TIME__)+"_"; QString Mac = QString::number(sysPara->status.machineMac); LogInfo::setRunStatusText(QString("Mac:%1").arg(Mac)); diff --git a/mainwidget.h b/mainwidget.h index 776cddf..b197a5a 100644 --- a/mainwidget.h +++ b/mainwidget.h @@ -123,7 +123,7 @@ public: QTimer *timerShowItem,*timerPowerOff; - void SendPrintDataToFpga(unsigned char alterMode, int startCols = -1, int size = -1); + void SendPrintDataToFpga(unsigned char alterEnable, bool isUpdate = false); void updatePrintDisplayLabel(); @@ -155,8 +155,6 @@ private: QToolButton* m_LeftBtn; PrintTextDisplay* m_PrintDisplay; - - bool previewFlag; int r_ExpiryDay; QTimer *airPushTimer; diff --git a/spanish.ts b/spanish.ts index de146bd..ed26890 100644 --- a/spanish.ts +++ b/spanish.ts @@ -75,12 +75,12 @@ - + BarCode Format - + Qrcode Format @@ -774,7 +774,7 @@ - + No73 send DAC Data. @@ -1102,12 +1102,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -1922,161 +1922,175 @@ InkJetPrinter - - - - - TextLabel - - - - - + + color:#ffffff;font-size:14px;font-family:Microsoft YaHei; - + + LastWork.xml + + + + + E: QQBase + + + + 01.01.2006 18:58:12 - - %1/%2/%3 - - - - - 测试时间结束,准备关机 - - - - + 开始自检,请等待%1秒... - - - + + + 自检完成!!! - + 警告 - - + + 提示 - + 保养期还有%1小时到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1小时,请及时保养,否则喷码机容易损坏 - + 开始自检,请等待60秒... - - - + + + 正在准备重启,请等待%1秒...... - + ink Warning at: %1 - + solvent Warning at: %1 - + 压力泄漏或压力传感器故障! - - + + + 定时开机循环完成,准备关机 + + + + + waitPowerOffTime: %1 + + + + + 准备关机 + + + + + 停止打印,自动关闭高压. - - + + 电机故障 - + 回收槽到头 - - + + 回收槽卡住或者回收槽开关时间设置错误 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - - 当前正在使用 - %1 -确定要新建文件吗? + + File not found: %1 - + + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! + 当前正在使用 + %1 +确定要新建文件吗? + + + + 刷卡倒计时起始时间文件不存在 @@ -2859,7 +2873,7 @@ - + 额外设置 @@ -2880,7 +2894,7 @@ - + 系统授权 @@ -2900,33 +2914,33 @@ - + RFID Settings - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3049,14 +3063,14 @@ - + 喷嘴开启 - + 喷嘴关闭 @@ -3076,276 +3090,264 @@ - - - - - + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - + + + 正在准备关机,请等待%1秒... - + 准备关机... - + 关机失败!!! - - - 变量数大于8个,某些变量将不起作用!!! - - - - - 请减少信息中的变量(或计数器)数量. - - - - - - - - + + + + + 错误 - + 喷印间隔过短,应高于%1! - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - + 喷嘴已开启 - + 喷嘴开启中 - + 喷嘴已关闭 - + 喷嘴关闭中 - - + + 正在排气... - - + + 高压故障 - - + + 相位故障 - - + + 粘度故障 - - + + 回收故障 - - + + 溶液液位 - - + + 墨水液位 - - + + 墨水缸满 - - + + 墨线开关 - + 正常 - + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - - + + %1.%2 - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - + 高压故障,关回收槽和墨线 - - + + 回收故障,关闭回收槽,关墨线 - + 回收故障. - + 回收异常,墨线可能偏离.(%1) - + 正在喷印....... - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + + 相位故障,准备关机 - - - + + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + + 相位故障,屏蔽充电 @@ -3764,13 +3766,13 @@ p, li { white-space: pre-wrap; } - + 延时(毫秒): - - + + 触发延时(毫秒) @@ -3825,13 +3827,13 @@ p, li { white-space: pre-wrap; } - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) @@ -3969,25 +3971,25 @@ p, li { white-space: pre-wrap; } - + 提示 - + 应用成功 - - + + 延时(毫米): - - - + + + 触发延时(毫米) @@ -3997,30 +3999,30 @@ p, li { white-space: pre-wrap; } - - - + + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4304,183 +4306,179 @@ p, li { white-space: pre-wrap; } RFIDManager - + readB6Req - + readB6suc - + Super IC card, write back original data - + 写数据到数据块6 - + 已经刷过墨水卡,需添加墨水 - + 不需要刷墨水卡! - + 确认要刷墨水卡吗? - + 确认要刷墨水卡吗? %1 秒后将自动确认 - + 刷墨水卡成功! - + 刷墨水卡成功, 请及时将该墨水卡对应的墨水添加到机器中 - + 刷超级墨水卡失败,请联系厂商。 - + 已经刷过溶剂卡,需添加溶剂 - + 不需要刷溶剂卡! - + 确认要刷溶剂卡吗? - + 确认要刷溶剂卡吗? %1 秒后将自动确认 - + 刷溶剂卡成功! - + 刷溶剂卡成功, 请及时将该溶剂卡对应的溶剂添加到机器中 - + 刷超级溶剂水卡失败,请联系厂商。 - + 确认要刷保养卡吗? - + 确认要刷保养卡吗? %1 秒后将自动确认 - - 刷保养卡成功! - - - - + 刷超级保养卡失败,请联系厂商。 - + MAC无效卡! - + 无效卡,这张卡已经在%1时使用过 - + 设置读写器密码失败! - + 设置读写器密码成功! - + 设置读写器原始密码失败! - + 设置读写器工作模式失败! - + 设置读写器工作模式成功! - + 查询读写器地址失败 - + + 警告 - + 先加墨水后刷卡:成功 - + 先加溶剂后刷卡:成功 - + 13.读卡器故障! - + 请及时使用墨水盒附带的IC卡激活墨水盒 请及时刷墨水卡 - + 请及时使用溶剂盒附带的IC卡激活溶剂盒 @@ -4755,12 +4753,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 停止 @@ -4791,7 +4789,7 @@ p, li { white-space: pre-wrap; } - + 压缩机 @@ -4833,9 +4831,9 @@ p, li { white-space: pre-wrap; } - - - + + + 自动 @@ -4847,15 +4845,15 @@ p, li { white-space: pre-wrap; } - - - - - - - - - + + + + + + + + + 开 @@ -4867,16 +4865,16 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - + + + + + + + + + + 关 @@ -4884,12 +4882,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 警告 @@ -4905,26 +4903,26 @@ p, li { white-space: pre-wrap; } - - - + + + 手动 - + 请先移开喷头盖! - - - - - - + + + + + + 启动 @@ -4934,24 +4932,24 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + 提示 @@ -4959,7 +4957,7 @@ p, li { white-space: pre-wrap; } - + 密码不正确! @@ -5005,14 +5003,14 @@ p, li { white-space: pre-wrap; } - - - - - + + + + + 错误 @@ -5022,192 +5020,192 @@ p, li { white-space: pre-wrap; } - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - + 是否确认重启? - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 没有FPGA升级文件 - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -5615,12 +5613,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 字库导出完成! @@ -5905,12 +5903,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 是否保存文件? diff --git a/testprintwidget.cpp b/testprintwidget.cpp index ab067dd..9747877 100644 --- a/testprintwidget.cpp +++ b/testprintwidget.cpp @@ -444,6 +444,8 @@ void TestPrintWidget::openWorkFile(QString filePath){ } } + pViewer->centerOn(0, 0); + if(m_printSetting) { m_printSetting->setModel(m_printSettingModel); } @@ -661,10 +663,12 @@ void TestPrintWidget::showEvent(QShowEvent *event) pPicScene->update(); auto sceneRect = pPicScene->sceneRect(); // qreal sceneHeight = boundingRect.height() > (qreal)(sysPara->para.canvasHeight) ? SCENE_MAX_HEIGHT : (qreal)(sysPara->para.canvasHeight); - qreal sceneHeight = qMin(qreal(SCENE_MAX_HEIGHT), (qreal)(sysPara->para.canvasHeight)); - sceneRect.setHeight(sceneHeight); + int sceneHeight = qMin(int(SCENE_MAX_HEIGHT), (int)(sysPara->para.canvasHeight)); + sceneRect.setHeight((qreal)(sceneHeight)); pPicScene->setSceneRect(sceneRect); + // TODO:: 添加代码,只在sceneHeight高度为32时,才显示 字体大小选择框中的 32 dot选项 + // 以高度为基准 最大化显示场景到 视口 auto viewportHeight = pViewer->viewport()->height(); QTransform transform = pViewer->transform(); diff --git a/thai.ts b/thai.ts index de146bd..ed26890 100644 --- a/thai.ts +++ b/thai.ts @@ -75,12 +75,12 @@ - + BarCode Format - + Qrcode Format @@ -774,7 +774,7 @@ - + No73 send DAC Data. @@ -1102,12 +1102,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -1922,161 +1922,175 @@ InkJetPrinter - - - - - TextLabel - - - - - + + color:#ffffff;font-size:14px;font-family:Microsoft YaHei; - + + LastWork.xml + + + + + E: QQBase + + + + 01.01.2006 18:58:12 - - %1/%2/%3 - - - - - 测试时间结束,准备关机 - - - - + 开始自检,请等待%1秒... - - - + + + 自检完成!!! - + 警告 - - + + 提示 - + 保养期还有%1小时到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1小时,请及时保养,否则喷码机容易损坏 - + 开始自检,请等待60秒... - - - + + + 正在准备重启,请等待%1秒...... - + ink Warning at: %1 - + solvent Warning at: %1 - + 压力泄漏或压力传感器故障! - - + + + 定时开机循环完成,准备关机 + + + + + waitPowerOffTime: %1 + + + + + 准备关机 + + + + + 停止打印,自动关闭高压. - - + + 电机故障 - + 回收槽到头 - - + + 回收槽卡住或者回收槽开关时间设置错误 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - - 当前正在使用 - %1 -确定要新建文件吗? + + File not found: %1 - + + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! + 当前正在使用 + %1 +确定要新建文件吗? + + + + 刷卡倒计时起始时间文件不存在 @@ -2859,7 +2873,7 @@ - + 额外设置 @@ -2880,7 +2894,7 @@ - + 系统授权 @@ -2900,33 +2914,33 @@ - + RFID Settings - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3049,14 +3063,14 @@ - + 喷嘴开启 - + 喷嘴关闭 @@ -3076,276 +3090,264 @@ - - - - - + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - + + + 正在准备关机,请等待%1秒... - + 准备关机... - + 关机失败!!! - - - 变量数大于8个,某些变量将不起作用!!! - - - - - 请减少信息中的变量(或计数器)数量. - - - - - - - - + + + + + 错误 - + 喷印间隔过短,应高于%1! - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - + 喷嘴已开启 - + 喷嘴开启中 - + 喷嘴已关闭 - + 喷嘴关闭中 - - + + 正在排气... - - + + 高压故障 - - + + 相位故障 - - + + 粘度故障 - - + + 回收故障 - - + + 溶液液位 - - + + 墨水液位 - - + + 墨水缸满 - - + + 墨线开关 - + 正常 - + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - - + + %1.%2 - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - + 高压故障,关回收槽和墨线 - - + + 回收故障,关闭回收槽,关墨线 - + 回收故障. - + 回收异常,墨线可能偏离.(%1) - + 正在喷印....... - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + + 相位故障,准备关机 - - - + + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + + 相位故障,屏蔽充电 @@ -3764,13 +3766,13 @@ p, li { white-space: pre-wrap; } - + 延时(毫秒): - - + + 触发延时(毫秒) @@ -3825,13 +3827,13 @@ p, li { white-space: pre-wrap; } - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) @@ -3969,25 +3971,25 @@ p, li { white-space: pre-wrap; } - + 提示 - + 应用成功 - - + + 延时(毫米): - - - + + + 触发延时(毫米) @@ -3997,30 +3999,30 @@ p, li { white-space: pre-wrap; } - - - + + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4304,183 +4306,179 @@ p, li { white-space: pre-wrap; } RFIDManager - + readB6Req - + readB6suc - + Super IC card, write back original data - + 写数据到数据块6 - + 已经刷过墨水卡,需添加墨水 - + 不需要刷墨水卡! - + 确认要刷墨水卡吗? - + 确认要刷墨水卡吗? %1 秒后将自动确认 - + 刷墨水卡成功! - + 刷墨水卡成功, 请及时将该墨水卡对应的墨水添加到机器中 - + 刷超级墨水卡失败,请联系厂商。 - + 已经刷过溶剂卡,需添加溶剂 - + 不需要刷溶剂卡! - + 确认要刷溶剂卡吗? - + 确认要刷溶剂卡吗? %1 秒后将自动确认 - + 刷溶剂卡成功! - + 刷溶剂卡成功, 请及时将该溶剂卡对应的溶剂添加到机器中 - + 刷超级溶剂水卡失败,请联系厂商。 - + 确认要刷保养卡吗? - + 确认要刷保养卡吗? %1 秒后将自动确认 - - 刷保养卡成功! - - - - + 刷超级保养卡失败,请联系厂商。 - + MAC无效卡! - + 无效卡,这张卡已经在%1时使用过 - + 设置读写器密码失败! - + 设置读写器密码成功! - + 设置读写器原始密码失败! - + 设置读写器工作模式失败! - + 设置读写器工作模式成功! - + 查询读写器地址失败 - + + 警告 - + 先加墨水后刷卡:成功 - + 先加溶剂后刷卡:成功 - + 13.读卡器故障! - + 请及时使用墨水盒附带的IC卡激活墨水盒 请及时刷墨水卡 - + 请及时使用溶剂盒附带的IC卡激活溶剂盒 @@ -4755,12 +4753,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 停止 @@ -4791,7 +4789,7 @@ p, li { white-space: pre-wrap; } - + 压缩机 @@ -4833,9 +4831,9 @@ p, li { white-space: pre-wrap; } - - - + + + 自动 @@ -4847,15 +4845,15 @@ p, li { white-space: pre-wrap; } - - - - - - - - - + + + + + + + + + 开 @@ -4867,16 +4865,16 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - + + + + + + + + + + 关 @@ -4884,12 +4882,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 警告 @@ -4905,26 +4903,26 @@ p, li { white-space: pre-wrap; } - - - + + + 手动 - + 请先移开喷头盖! - - - - - - + + + + + + 启动 @@ -4934,24 +4932,24 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + 提示 @@ -4959,7 +4957,7 @@ p, li { white-space: pre-wrap; } - + 密码不正确! @@ -5005,14 +5003,14 @@ p, li { white-space: pre-wrap; } - - - - - + + + + + 错误 @@ -5022,192 +5020,192 @@ p, li { white-space: pre-wrap; } - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - + 是否确认重启? - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 没有FPGA升级文件 - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -5615,12 +5613,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 字库导出完成! @@ -5905,12 +5903,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 是否保存文件? diff --git a/turkey.ts b/turkey.ts index de146bd..ed26890 100644 --- a/turkey.ts +++ b/turkey.ts @@ -75,12 +75,12 @@ - + BarCode Format - + Qrcode Format @@ -774,7 +774,7 @@ - + No73 send DAC Data. @@ -1102,12 +1102,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -1922,161 +1922,175 @@ InkJetPrinter - - - - - TextLabel - - - - - + + color:#ffffff;font-size:14px;font-family:Microsoft YaHei; - + + LastWork.xml + + + + + E: QQBase + + + + 01.01.2006 18:58:12 - - %1/%2/%3 - - - - - 测试时间结束,准备关机 - - - - + 开始自检,请等待%1秒... - - - + + + 自检完成!!! - + 警告 - - + + 提示 - + 保养期还有%1小时到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1小时,请及时保养,否则喷码机容易损坏 - + 开始自检,请等待60秒... - - - + + + 正在准备重启,请等待%1秒...... - + ink Warning at: %1 - + solvent Warning at: %1 - + 压力泄漏或压力传感器故障! - - + + + 定时开机循环完成,准备关机 + + + + + waitPowerOffTime: %1 + + + + + 准备关机 + + + + + 停止打印,自动关闭高压. - - + + 电机故障 - + 回收槽到头 - - + + 回收槽卡住或者回收槽开关时间设置错误 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - - 当前正在使用 - %1 -确定要新建文件吗? + + File not found: %1 - + + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! + 当前正在使用 + %1 +确定要新建文件吗? + + + + 刷卡倒计时起始时间文件不存在 @@ -2859,7 +2873,7 @@ - + 额外设置 @@ -2880,7 +2894,7 @@ - + 系统授权 @@ -2900,33 +2914,33 @@ - + RFID Settings - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3049,14 +3063,14 @@ - + 喷嘴开启 - + 喷嘴关闭 @@ -3076,276 +3090,264 @@ - - - - - + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - + + + 正在准备关机,请等待%1秒... - + 准备关机... - + 关机失败!!! - - - 变量数大于8个,某些变量将不起作用!!! - - - - - 请减少信息中的变量(或计数器)数量. - - - - - - - - + + + + + 错误 - + 喷印间隔过短,应高于%1! - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - + 喷嘴已开启 - + 喷嘴开启中 - + 喷嘴已关闭 - + 喷嘴关闭中 - - + + 正在排气... - - + + 高压故障 - - + + 相位故障 - - + + 粘度故障 - - + + 回收故障 - - + + 溶液液位 - - + + 墨水液位 - - + + 墨水缸满 - - + + 墨线开关 - + 正常 - + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - - + + %1.%2 - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - + 高压故障,关回收槽和墨线 - - + + 回收故障,关闭回收槽,关墨线 - + 回收故障. - + 回收异常,墨线可能偏离.(%1) - + 正在喷印....... - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + + 相位故障,准备关机 - - - + + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + + 相位故障,屏蔽充电 @@ -3764,13 +3766,13 @@ p, li { white-space: pre-wrap; } - + 延时(毫秒): - - + + 触发延时(毫秒) @@ -3825,13 +3827,13 @@ p, li { white-space: pre-wrap; } - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) @@ -3969,25 +3971,25 @@ p, li { white-space: pre-wrap; } - + 提示 - + 应用成功 - - + + 延时(毫米): - - - + + + 触发延时(毫米) @@ -3997,30 +3999,30 @@ p, li { white-space: pre-wrap; } - - - + + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4304,183 +4306,179 @@ p, li { white-space: pre-wrap; } RFIDManager - + readB6Req - + readB6suc - + Super IC card, write back original data - + 写数据到数据块6 - + 已经刷过墨水卡,需添加墨水 - + 不需要刷墨水卡! - + 确认要刷墨水卡吗? - + 确认要刷墨水卡吗? %1 秒后将自动确认 - + 刷墨水卡成功! - + 刷墨水卡成功, 请及时将该墨水卡对应的墨水添加到机器中 - + 刷超级墨水卡失败,请联系厂商。 - + 已经刷过溶剂卡,需添加溶剂 - + 不需要刷溶剂卡! - + 确认要刷溶剂卡吗? - + 确认要刷溶剂卡吗? %1 秒后将自动确认 - + 刷溶剂卡成功! - + 刷溶剂卡成功, 请及时将该溶剂卡对应的溶剂添加到机器中 - + 刷超级溶剂水卡失败,请联系厂商。 - + 确认要刷保养卡吗? - + 确认要刷保养卡吗? %1 秒后将自动确认 - - 刷保养卡成功! - - - - + 刷超级保养卡失败,请联系厂商。 - + MAC无效卡! - + 无效卡,这张卡已经在%1时使用过 - + 设置读写器密码失败! - + 设置读写器密码成功! - + 设置读写器原始密码失败! - + 设置读写器工作模式失败! - + 设置读写器工作模式成功! - + 查询读写器地址失败 - + + 警告 - + 先加墨水后刷卡:成功 - + 先加溶剂后刷卡:成功 - + 13.读卡器故障! - + 请及时使用墨水盒附带的IC卡激活墨水盒 请及时刷墨水卡 - + 请及时使用溶剂盒附带的IC卡激活溶剂盒 @@ -4755,12 +4753,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 停止 @@ -4791,7 +4789,7 @@ p, li { white-space: pre-wrap; } - + 压缩机 @@ -4833,9 +4831,9 @@ p, li { white-space: pre-wrap; } - - - + + + 自动 @@ -4847,15 +4845,15 @@ p, li { white-space: pre-wrap; } - - - - - - - - - + + + + + + + + + 开 @@ -4867,16 +4865,16 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - + + + + + + + + + + 关 @@ -4884,12 +4882,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 警告 @@ -4905,26 +4903,26 @@ p, li { white-space: pre-wrap; } - - - + + + 手动 - + 请先移开喷头盖! - - - - - - + + + + + + 启动 @@ -4934,24 +4932,24 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + 提示 @@ -4959,7 +4957,7 @@ p, li { white-space: pre-wrap; } - + 密码不正确! @@ -5005,14 +5003,14 @@ p, li { white-space: pre-wrap; } - - - - - + + + + + 错误 @@ -5022,192 +5020,192 @@ p, li { white-space: pre-wrap; } - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - + 是否确认重启? - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 没有FPGA升级文件 - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -5615,12 +5613,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 字库导出完成! @@ -5905,12 +5903,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 是否保存文件? diff --git a/vena.ts b/vena.ts index de146bd..ed26890 100644 --- a/vena.ts +++ b/vena.ts @@ -75,12 +75,12 @@ - + BarCode Format - + Qrcode Format @@ -774,7 +774,7 @@ - + No73 send DAC Data. @@ -1102,12 +1102,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -1922,161 +1922,175 @@ InkJetPrinter - - - - - TextLabel - - - - - + + color:#ffffff;font-size:14px;font-family:Microsoft YaHei; - + + LastWork.xml + + + + + E: QQBase + + + + 01.01.2006 18:58:12 - - %1/%2/%3 - - - - - 测试时间结束,准备关机 - - - - + 开始自检,请等待%1秒... - - - + + + 自检完成!!! - + 警告 - - + + 提示 - + 保养期还有%1小时到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1小时,请及时保养,否则喷码机容易损坏 - + 开始自检,请等待60秒... - - - + + + 正在准备重启,请等待%1秒...... - + ink Warning at: %1 - + solvent Warning at: %1 - + 压力泄漏或压力传感器故障! - - + + + 定时开机循环完成,准备关机 + + + + + waitPowerOffTime: %1 + + + + + 准备关机 + + + + + 停止打印,自动关闭高压. - - + + 电机故障 - + 回收槽到头 - - + + 回收槽卡住或者回收槽开关时间设置错误 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - - 当前正在使用 - %1 -确定要新建文件吗? + + File not found: %1 - + + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! + 当前正在使用 + %1 +确定要新建文件吗? + + + + 刷卡倒计时起始时间文件不存在 @@ -2859,7 +2873,7 @@ - + 额外设置 @@ -2880,7 +2894,7 @@ - + 系统授权 @@ -2900,33 +2914,33 @@ - + RFID Settings - + 提示 - + RFID卡清零! - - + + 取消授权 - + 警告 - + 密码错误:%1 @@ -3049,14 +3063,14 @@ - + 喷嘴开启 - + 喷嘴关闭 @@ -3076,276 +3090,264 @@ - - - - - + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - + + + 正在准备关机,请等待%1秒... - + 准备关机... - + 关机失败!!! - - - 变量数大于8个,某些变量将不起作用!!! - - - - - 请减少信息中的变量(或计数器)数量. - - - - - - - - + + + + + 错误 - + 喷印间隔过短,应高于%1! - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - + 喷嘴已开启 - + 喷嘴开启中 - + 喷嘴已关闭 - + 喷嘴关闭中 - - + + 正在排气... - - + + 高压故障 - - + + 相位故障 - - + + 粘度故障 - - + + 回收故障 - - + + 溶液液位 - - + + 墨水液位 - - + + 墨水缸满 - - + + 墨线开关 - + 正常 - + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - - + + %1.%2 - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - + 高压故障,关回收槽和墨线 - - + + 回收故障,关闭回收槽,关墨线 - + 回收故障. - + 回收异常,墨线可能偏离.(%1) - + 正在喷印....... - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + + 相位故障,准备关机 - - - + + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + + 相位故障,屏蔽充电 @@ -3764,13 +3766,13 @@ p, li { white-space: pre-wrap; } - + 延时(毫秒): - - + + 触发延时(毫秒) @@ -3825,13 +3827,13 @@ p, li { white-space: pre-wrap; } - - + + 重复间隔(毫秒) - + 封锁时间(毫秒) @@ -3969,25 +3971,25 @@ p, li { white-space: pre-wrap; } - + 提示 - + 应用成功 - - + + 延时(毫米): - - - + + + 触发延时(毫米) @@ -3997,30 +3999,30 @@ p, li { white-space: pre-wrap; } - - - + + + 重复间隔(毫米) - - + + 抑止距离(毫米) - + 抑止距离(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -4304,183 +4306,179 @@ p, li { white-space: pre-wrap; } RFIDManager - + readB6Req - + readB6suc - + Super IC card, write back original data - + 写数据到数据块6 - + 已经刷过墨水卡,需添加墨水 - + 不需要刷墨水卡! - + 确认要刷墨水卡吗? - + 确认要刷墨水卡吗? %1 秒后将自动确认 - + 刷墨水卡成功! - + 刷墨水卡成功, 请及时将该墨水卡对应的墨水添加到机器中 - + 刷超级墨水卡失败,请联系厂商。 - + 已经刷过溶剂卡,需添加溶剂 - + 不需要刷溶剂卡! - + 确认要刷溶剂卡吗? - + 确认要刷溶剂卡吗? %1 秒后将自动确认 - + 刷溶剂卡成功! - + 刷溶剂卡成功, 请及时将该溶剂卡对应的溶剂添加到机器中 - + 刷超级溶剂水卡失败,请联系厂商。 - + 确认要刷保养卡吗? - + 确认要刷保养卡吗? %1 秒后将自动确认 - - 刷保养卡成功! - - - - + 刷超级保养卡失败,请联系厂商。 - + MAC无效卡! - + 无效卡,这张卡已经在%1时使用过 - + 设置读写器密码失败! - + 设置读写器密码成功! - + 设置读写器原始密码失败! - + 设置读写器工作模式失败! - + 设置读写器工作模式成功! - + 查询读写器地址失败 - + + 警告 - + 先加墨水后刷卡:成功 - + 先加溶剂后刷卡:成功 - + 13.读卡器故障! - + 请及时使用墨水盒附带的IC卡激活墨水盒 请及时刷墨水卡 - + 请及时使用溶剂盒附带的IC卡激活溶剂盒 @@ -4755,12 +4753,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 停止 @@ -4791,7 +4789,7 @@ p, li { white-space: pre-wrap; } - + 压缩机 @@ -4833,9 +4831,9 @@ p, li { white-space: pre-wrap; } - - - + + + 自动 @@ -4847,15 +4845,15 @@ p, li { white-space: pre-wrap; } - - - - - - - - - + + + + + + + + + 开 @@ -4867,16 +4865,16 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - + + + + + + + + + + 关 @@ -4884,12 +4882,12 @@ p, li { white-space: pre-wrap; } - - - - - - + + + + + + 警告 @@ -4905,26 +4903,26 @@ p, li { white-space: pre-wrap; } - - - + + + 手动 - + 请先移开喷头盖! - - - - - - + + + + + + 启动 @@ -4934,24 +4932,24 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + 提示 @@ -4959,7 +4957,7 @@ p, li { white-space: pre-wrap; } - + 密码不正确! @@ -5005,14 +5003,14 @@ p, li { white-space: pre-wrap; } - - - - - + + + + + 错误 @@ -5022,192 +5020,192 @@ p, li { white-space: pre-wrap; } - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - + 是否确认重启? - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 没有FPGA升级文件 - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -5615,12 +5613,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 字库导出完成! @@ -5905,12 +5903,12 @@ p, li { white-space: pre-wrap; } - + 提示 - + 是否保存文件?