完善RFID卡

This commit is contained in:
2026-07-10 11:44:25 +08:00
parent 4bb8d7dfa5
commit 31726535b0
1668 changed files with 717 additions and 312522 deletions
+86 -27
View File
@@ -112,6 +112,7 @@ void InkJetPrinter::init()
// TestPrintWidget::sendButtonClickedSignal(16) 转由 openDatetimeEditor 处理
connect(m_TestPrintWidget, &TestPrintWidget::sig_showEditDateTime, this, &InkJetPrinter::openDatetimeEditor);
connect(m_TestPrintWidget, &TestPrintWidget::sig_updatePrintContent, this, &InkJetPrinter::slt_updatePrintContent);
// 班时元素与编辑 连接
connect(m_TestPrintWidget, &TestPrintWidget::sig_showScheduleShiftsEditor, this, &InkJetPrinter::showScheduleShiftsEditor);
@@ -140,7 +141,7 @@ void InkJetPrinter::init()
connect(m_MainInstruction,&MainInstruction::newFileBtnClick,m_TestPrintWidget,&TestPrintWidget::on_newfileButton_pressed);
// connect(myInputMethod,&MyInputMethod::sendEnterClickedSignal,&TestPrintWidget::onEditItemDone);
connect(myInputMethod,SIGNAL(sendEnterClickedSignal()),m_TestPrintWidget,SLOT(onEditItemDone()));
// connect(myInputMethod,SIGNAL(sendEnterClickedSignal()),m_TestPrintWidget,SLOT(onEditItemDone()));
connect(m_DateVarSet,SIGNAL(backSpaceBtn()),myInputMethod,SLOT(backSapceButtonDel()));
connect(m_TestPrintWidget,SIGNAL(sendUpdateFontSignl(int)),m_FontSetWidget,SLOT(updateFontSelect(int)));
@@ -283,12 +284,13 @@ void InkJetPrinter::init()
connect(m_SystemUpdate,&SystemUpdate::sendButtonClickedSignal,this,&InkJetPrinter::getSystemManageWidgetButtonClickSlot);
connect(m_SystemUpdate,&SystemUpdate::sig_reboot,this,&InkJetPrinter::rebootApp);
// 原注释的默认页面设置(按需启用)
sysPara->status.machineMac = m_MainInstruction->dlgInputAddr->jd.addr;
sysPara->para.rfidCountDown = 5;
if (m_TestPrintWidget)
m_TestPrintWidget->loadLastWork();
timer = new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(timerHandler()));
timer->start(10);
@@ -330,7 +332,22 @@ void InkJetPrinter::slt_warningMaintenance()
}
void InkJetPrinter::enableInkJetTabClick(bool flag){
void InkJetPrinter::showEvent(QShowEvent *e)
{
static bool firstShow = true;
QWidget::showEvent(e);
if(firstShow) {
if (m_TestPrintWidget)
m_TestPrintWidget->loadLastWork();
firstShow = false;
}
}
void InkJetPrinter::enableInkJetTabClick(bool flag)
{
this->setEnabled(flag);
}
@@ -667,7 +684,8 @@ void InkJetPrinter::timerHandler(void){
}
if(!gearPumpRunFlag)
{
m_MainWidget->enableReclaimCtrlButton(false);
m_MainWidget->setReclaimOpenBtnStatus(false);
m_MainWidget->setReclaimCloseBtnStatus(false);
}
}
else
@@ -1010,7 +1028,10 @@ void InkJetPrinter::timerHandler(void){
/*-----------------------------------------------------*/
if(!sysPara->status.selfCheckCnt) {
LogInfo::setRunStatusText(tr("开始自检,请等待60秒..."));
m_MainWidget->enableReclaimCtrlButton(false);
m_MainWidget->setReclaimOpenBtnStatus(false);
m_MainWidget->setReclaimCloseBtnStatus(false);
m_MainWidget->enablePrintButton(false);
sysPara->devOp->mainInkCtrl();
sysPara->para.TrunOnPowerCnt++;// 20151218 开机次数加1
@@ -1026,8 +1047,11 @@ void InkJetPrinter::timerHandler(void){
m_MainWidget->setRunStatus(tr("开始自检,请等待%1秒...").
arg((MAX_SELF_CHECK_CNT - sysPara->status.selfCheckCnt)/100));
}
#ifdef QT_DEBUG
if(sysPara->status.selfCheckCnt >= 1500) // 测试自检改为15s
#else
if(sysPara->status.selfCheckCnt >= MAX_SELF_CHECK_CNT)
#endif
{
sysPara->status.selfCheckDone = 1;
// 自检完成后管道恢复正常阻力,重置软启动让压力重新平稳收敛
@@ -1042,7 +1066,10 @@ void InkJetPrinter::timerHandler(void){
LogInfo::setRunStatusText(tr("自检完成!!!"));
m_MainWidget->setRunStatus(tr("自检完成!!!"));
qDebug()<<"自检完成!!!";
m_MainWidget->enableReclaimCtrlButton(true);
m_MainWidget->setReclaimOpenBtnStatus(true);
m_MainWidget->setReclaimCloseBtnStatus(false);
sysPara->devOp->mainInkCtrl();
sysPara->status.canRunAirPushing = true;
@@ -1052,12 +1079,23 @@ void InkJetPrinter::timerHandler(void){
sysPara->devOp->writeFpgaCalandar(0);
sysPara->devOp->writeFpgaPrintPara(true);
#ifdef __RFID_CARD
// 刷卡判定
if(sysPara->RFIDPara.inkCardTimeOut
|| sysPara->RFIDPara.solventCardTimeOut
|| sysPara->RFIDPara.needMaintenance) {
m_MainWidget->setReclaimOpenBtnStatus(false);
LogInfo::setRunStatusText(tr("Need maintenance."));
}
#endif
if(sysPara->para.Reciclar)
test_flag = 1;
}
else {
if((sysPara->status.selfCheckCnt % 200) == 0)
m_MainWidget->enableReclaimCtrlButton(false);
m_MainWidget->setReclaimOpenBtnStatus(false);
m_MainWidget->setReclaimCloseBtnStatus(false);
}
}
@@ -1456,7 +1494,6 @@ void InkJetPrinter::getTestPrintWidgetButtonClickedSlot(int index)
{
m_StackedWidget->setCurrentWidget(m_MainWidget);
MySleep(200);
// m_MainWidget->PreviewPressed();
m_MainWidget->onPreviewScene();
break;
}
@@ -1484,6 +1521,12 @@ void InkJetPrinter::openDatetimeEditor(DateItemModel dateModel, TextItemModel te
m_StackedWidget->setCurrentWidget(m_DateVarSet);
}
void InkJetPrinter::slt_updatePrintContent()
{
m_MainWidget->onPreviewScene();
m_MainWidget->SendPrintDataToFpga(0);
}
void InkJetPrinter::getFontSetWidgetButtonClickedSlot(int index)
{
switch (index)
@@ -2445,6 +2488,8 @@ void InkJetPrinter::detectAndcontrolReclaimTank(){
qDebug()<<"reclaimTankOpenDone currReclaimTankPos:"<<sysPara->status.currReclaimTankPos;
qDebug()<<"reclaimTankOpenDone curr_reclaimTankTime:"<<sysPara->status.curr_reclaimTankTime;
LogInfo::setRunStatusText("reclaimTankOpenDone currReclaimTankPos:"+QString::number(sysPara->status.currReclaimTankPos));
}
else if(sysPara->status.reclaimTankstatus == 0x11 )//7 故障,6 关完成,5开完成,4 保持, 3 停止, 2 关, 1 开,0-无操作
{
@@ -2453,8 +2498,11 @@ void InkJetPrinter::detectAndcontrolReclaimTank(){
}
else if(sysPara->status.reclaimTankstatus == 1 || sysPara->status.reclaimTankstatus == 2)//7 故障,6 关完成,5开完成,4 保持, 3 停止, 2 关, 1 开,0-无操作
{
sysPara->status.reclaimBlockedCnt = 0;
auto recliamTime = (sysPara->para.reclaimTankTime != 0 ? sysPara->para.reclaimTankTime : 15.0f) * 10.0f;
int rate = qBound(0, 100, int((sysPara->status.currReclaimTankPos / recliamTime) * 100));
m_MainWidget->setReclaimStatus(sysPara->status.reclaimTankstatus == 1, rate);
sysPara->status.reclaimBlockedCnt = 0;
}
else if(sysPara->status.reclaimTankstatus == 6 )//7 故障,6 关完成,5开完成,4 保持, 3 停止, 2 关, 1 开,0-无操作
{
@@ -2468,9 +2516,7 @@ void InkJetPrinter::detectAndcontrolReclaimTank(){
sysPara->status.reclainCloseAppending=false;
sysPara->status.canRunAirPushing = true; //下次开回收槽就执行排气程序
// 过度占用日志,由Byons注释于2026年4月22日
// qDebug()<<"reclaimTankCloseDone currReclaimTankPos:"<<sysPara->status.currReclaimTankPos;
// qDebug()<<"reclaimTankCloseDone curr_reclaimTankTime:"<<sysPara->status.curr_reclaimTankTime;
LogInfo::setRunStatusText("reclaimTankCloseDone currReclaimTankPos:"+QString::number(sysPara->status.currReclaimTankPos));
}
else if(sysPara->status.reclaimTankstatus == 0x12 )//7 故障,6 关完成,5开完成,4 保持, 3 停止, 2 关, 1 开,0-无操作
{
@@ -2656,7 +2702,7 @@ void InkJetPrinter::warningHandler(int type){
static int i = 1;
int elasped = curPowerOnDateTime.secsTo(QDateTime::currentDateTime());// 本次开机运行秒数
if(elasped >= 60*60*i){ //开机后1小时提醒一次,测试时可以缩短
// if (elasped > 30*i) {//test
// if (elasped > 10*i) {//test
i++;
flagOfmtWarning = true;
flagOfWarning = true;
@@ -2723,9 +2769,9 @@ void InkJetPrinter::warningHandler(int type){
// 超过48小时后,不会执行这一段
if(flagOfWarning){
//48小时后禁用,小时=第一次提示时间到当前时间的间隔秒数/60/60
if (type = INK && sysPara->para.flagOfInkWarning)
if (type == INK && sysPara->para.flagOfInkWarning)
warningShow(type,inkTime);
else if (type = SOLVENT && sysPara->para.flagOfSolventWarning)
else if (type == SOLVENT && sysPara->para.flagOfSolventWarning)
warningShow(type,solventTime);
flagOfWarning = false;
@@ -2740,8 +2786,7 @@ void InkJetPrinter::warningShow(int type,int num){
str = tr("请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用!").arg(num);
else if(num == 49)
str = tr("墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作!");
msgtest->setText(str);
msgtest->show();
slt_showMsg(str);
// m_MainWidget->setRunStatus(str);
LogInfo::setRunStatusText(str);
qDebug()<<str;
@@ -2751,8 +2796,7 @@ void InkJetPrinter::warningShow(int type,int num){
str = tr("请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用!").arg(num);
else if(num == 49)
str = tr("溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作!");
msgtest->setText(str);
msgtest->show();
slt_showMsg(str);
// m_MainWidget->setRunStatus(str);
LogInfo::setRunStatusText(str);
qDebug()<<str;
@@ -2762,8 +2806,7 @@ void InkJetPrinter::warningShow(int type,int num){
str = tr("保养期还有%1天到期,请及时保养,否则喷码机容易损坏").arg(num);
else
str = tr("保养期已超过%1天,请进行保养以恢复喷码机的正常使用").arg(num*(-1));
msgtest->setText(str);
msgtest->show();
slt_showMsg(str);
LogInfo::setRunStatusText(str);
qDebug()<<str;
}
@@ -2775,7 +2818,7 @@ void InkJetPrinter::warningShow(int type,int num){
void InkJetPrinter::createNewJobFile()
{
auto currentFile = m_TestPrintWidget->currentFile();
if(!currentFile.isEmpty()) {
if(!currentFile.isEmpty() && !currentFile.contains("LastWork.xml")) {
QFileInfo fileInfo(currentFile);
auto ret = QMessageBox::information(nullptr, "", tr("当前正在使用\r\n %1 \r\n确定要新建文件吗?").arg(fileInfo.baseName()),
QMessageBox::Ok, QMessageBox::Cancel);
@@ -2797,7 +2840,9 @@ int InkJetPrinter::updateWarningTime(int type){
file.setFileName("/home/plg/inkRFIDTime.txt");
else if(type == 2)
file.setFileName("/home/plg/solventRFIDTime.txt");
else return;
else
return -1;
if(!file.exists()){
LogInfo::setRunStatusText(tr("刷卡倒计时起始时间文件不存在"));
return -1;
@@ -2923,6 +2968,8 @@ void InkJetPrinter::handleWarnInk()
if(sysPara->status.inkWarningCnt >= DETECT_WARNING_TIME){
sysPara->para.flagOfInkWarning = true;
sysPara->RFIDPara.needInkCard = true;
manager_rfid->setInkCardFirstPrompt(true);
QString strCurDateTime = QDateTime::currentDateTime().toString("yyMMddhhmmss");
LogInfo::setRunStatusText("Ink warning.");
qDebug()<<"墨水液位报警";
@@ -2930,6 +2977,9 @@ void InkJetPrinter::handleWarnInk()
sysPara->para.inkWarnDate = strCurDateTime.mid(0,6).toInt();
sysPara->para.inkWarnTime = strCurDateTime.mid(6,6).toInt();
}
warningShow(1, 48);
sysPara->saveParaToFile();
}
}
@@ -2975,7 +3025,9 @@ void InkJetPrinter::handleWarnInk()
// 状态正常但是需要刷卡,说明此时先加的墨水,后面再刷卡
if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN)
&& sysPara->RFIDPara.needInkCard){
sysPara->RFIDPara.addedInk = true;
sysPara->saveRFIDPara();
}
}
@@ -2994,6 +3046,8 @@ void InkJetPrinter::handleWarnSolvent()
if(sysPara->status.solventWarningCnt >= DETECT_WARNING_TIME){
sysPara->para.flagOfSolventWarning = true;
sysPara->RFIDPara.needSolventCard = true;
manager_rfid->setSolventCardFirstPrompt(true);
QDateTime curDateTime = QDateTime::currentDateTime();
QString strCurDateTime = curDateTime.toString("yyMMddhhmmss");
LogInfo::setRunStatusText("Solvent warning.");
@@ -3002,6 +3056,9 @@ void InkJetPrinter::handleWarnSolvent()
sysPara->para.solventWarnDate = strCurDateTime.mid(0,6).toInt();
sysPara->para.solventWarnTime = strCurDateTime.mid(6,6).toInt();
}
warningShow(2, 48);
sysPara->saveParaToFile();
}
}
@@ -3045,6 +3102,7 @@ void InkJetPrinter::handleWarnSolvent()
// 如果溶剂报警,说明此时先加的溶剂,后面再刷卡
if(!(sysPara->status.statWarn & WARN_STATUS_SOLV_WARN)
&& sysPara->RFIDPara.needSolventCard){
sysPara->RFIDPara.addedSolvent = true;
sysPara->saveRFIDPara();
}
@@ -3055,7 +3113,8 @@ void InkJetPrinter::handleWarnSolvent()
void InkJetPrinter::slt_showMsg(QString msg)
{
msgtest->setText(msg);
msgtest->show();
QMessageBox * msgBox = new QMessageBox(QMessageBox::NoIcon, tr("提示"), msg, QMessageBox::StandardButton::Ok);
connect(msgBox, &QMessageBox::finished, msgBox, &QMessageBox::deleteLater);
msgBox->show();
LogInfo::setRunStatusText(msg);
}