超级IC卡暂存

This commit is contained in:
2026-07-08 16:56:05 +08:00
parent 5b06da56a7
commit 4bb8d7dfa5
21 changed files with 4133 additions and 3811 deletions
+139 -26
View File
@@ -9,7 +9,7 @@
#include "runtimectrl.h"
#include "SysPara.h"
#define HLPDEBUG
// #define HLPDEBUG
RFIDManager::RFIDManager()
@@ -123,7 +123,7 @@ void RFIDManager::comForRFID_init()
#ifndef HLPDEBUG
comForRFID->setPortName("/dev/ttyAS1");
#else
// comForRFID->setPortName("/dev/ttyUSB0");
// comForRFID->setPortName("/dev/ttyUSB0");
#endif
comForRFID->setPortName("/dev/ttyAS1");
@@ -362,6 +362,8 @@ void RFIDManager::initRFIDMoudle(unsigned int addr, SysPara *sysPara)
setRFIDReaderWorkMode();
setRFIDReaderKey(addr,1);
setICReaderModeFlag = false;
//报警定时器一定要在初始化之后启动,不然就崩
warningTimer->start(1000);
}
void RFIDManager::handleCheck(unsigned int addr)
@@ -369,19 +371,24 @@ void RFIDManager::handleCheck(unsigned int addr)
if(!setICReaderModeFlag)
{
strRevdata ="";
receiveReadRFID_data();
auto res = receiveReadRFID_data();
// LogInfo::setRunStatusText(tr("receiveReadRFID_data res:%1, data:%2")
// .arg(res).arg(strRevdata));
if(strRevdata.length() > 3)
{
if((strRevdata.left(3) == QString::number(addr).left(3))\
|| strRevdata.left(3) == "100")
{
if(strRevdata.at(3) == 'A') {
if(!sysPara->RFIDPara.needInkCard && false){
if (sysPara->RFIDPara.cardInk) {
emit sig_showMsg(tr("已经刷过墨水卡,需添加墨水"));
}
if(!sysPara->RFIDPara.needInkCard){
emit sig_showMsg(tr("不需要刷墨水卡!"));
}
else if(sysPara->status.statWarn & WARN_STATUS_INK_WARN && false){
emit sig_showMsg(tr("请先添加墨水再刷墨水卡!"));
}
// else if(sysPara->status.statWarn & WARN_STATUS_INK_WARN){
// emit sig_showMsg(tr("请先添加墨水再刷墨水卡!"));
// }
else
{
auto ok = cardTouchConfirm(tr("确认要刷墨水卡吗?"), tr("确认要刷墨水卡吗? %1 秒后将自动确认"));
@@ -389,26 +396,23 @@ void RFIDManager::handleCheck(unsigned int addr)
LogInfo::setRunStatusText("The user has canceled the operation about marking the ink card.");
}
else if(RFIDmarkCardUsedAsync(0) == 1){
sysPara->RFIDPara.needInkCard = false;
sysPara->RFIDPara.inkCardTimeOut = false;
sysPara->saveRFIDPara();
emit sig_showMsg(tr("刷墨水卡成功!"));
sysPara->para.inkWarnDate = 0;
sysPara->para.inkWarnTime = 0;
sysPara->saveParaToFile();
sysPara->RFIDPara.cardInk = true;
sysPara->saveRFIDPara();
}
}
}
else if(strRevdata.at(3) == 'B')
{
sysPara->para.flagOfInkWarning = false;
if(!sysPara->RFIDPara.needSolventCard && false){
if (sysPara->RFIDPara.cardSolvent) {
emit sig_showMsg(tr("已经刷过溶剂卡,需添加溶剂"));
}
if(!sysPara->RFIDPara.needSolventCard){
emit sig_showMsg(tr("不需要刷溶剂卡!"));
}
else if(sysPara->status.statWarn & WARN_STATUS_SOLV_WARN && false){
emit sig_showMsg(tr("请先添加溶剂再刷溶剂卡!"));
}
// else if(sysPara->status.statWarn & WARN_STATUS_SOLV_WARN){
// emit sig_showMsg(tr("请先添加溶剂再刷溶剂卡!"));
// }
else
{
auto ok = cardTouchConfirm(tr("确认要刷溶剂卡吗?"), tr("确认要刷溶剂卡吗? %1 秒后将自动确认"));
@@ -416,14 +420,9 @@ void RFIDManager::handleCheck(unsigned int addr)
LogInfo::setRunStatusText("The user has canceled the operation about marking the solvent card.");
}
else if(RFIDmarkCardUsedAsync(1) == 1) {
sysPara->RFIDPara.needSolventCard = false;
sysPara->RFIDPara.solventCardTimeOut = false;
sysPara->saveRFIDPara();
emit sig_showMsg(tr("刷溶剂卡成功!"));
sysPara->para.flagOfSolventWarning = false;
sysPara->para.solventWarnDate = 0;
sysPara->para.solventWarnTime = 0;
sysPara->saveParaToFile();
sysPara->RFIDPara.cardSolvent = true;
sysPara->saveRFIDPara();
}
}
@@ -899,6 +898,12 @@ void RFIDManager::initTimer()
this, &RFIDManager::slt_timerHandle);
RFIDTimer->start(10 * 1000);
}
if (warningTimer == nullptr) {
warningTimer = new QTimer(this);
connect(warningTimer, &QTimer::timeout,
this, &RFIDManager::slt_intervalTimerHandle);
}
}
bool RFIDManager::cardTouchConfirm(QString msgTxt, QString variableMsgTxt)
@@ -928,6 +933,91 @@ bool RFIDManager::cardTouchConfirm(QString msgTxt, QString variableMsgTxt)
return box.result() == QMessageBox::Ok || box.result() == QMessageBox::Accepted;
}
void RFIDManager::updateStatus()
{
if (sysPara) {
status.addedInk = sysPara->RFIDPara.addedInk;
status.addedSolvent = sysPara->RFIDPara.addedSolvent;
status.cardInk = sysPara->RFIDPara.cardInk;
status.cardSolvent = sysPara->RFIDPara.cardSolvent;
}
}
bool RFIDManager::waitStatus()
{
updateStatus();
bool res = false;
bool inkFlag = !(sysPara->status.statWarn & WARN_STATUS_INK_WARN);
bool solventFlag = !(sysPara->status.statWarn & WARN_STATUS_SOLV_WARN);
if (status.addedInk && status.cardInk) {
if (sysPara && inkFlag) {
sysPara->RFIDPara.needInkCard = false;
sysPara->RFIDPara.inkCardTimeOut = false;
sysPara->RFIDPara.addedInk = false;
sysPara->RFIDPara.cardInk = false;
sysPara->saveRFIDPara();
sysPara->para.inkWarnDate = 0;
sysPara->para.inkWarnTime = 0;
sysPara->para.flagOfInkWarning = false;
sysPara->saveParaToFile();
res = true;
emit sig_showMsg(tr("已取消墨水提示"));
}
} else if (status.addedSolvent && status.cardSolvent) {
if (sysPara && solventFlag) {
sysPara->RFIDPara.needSolventCard = false;
sysPara->RFIDPara.solventCardTimeOut = false;
sysPara->RFIDPara.addedSolvent = false;
sysPara->RFIDPara.cardSolvent = false;
sysPara->saveRFIDPara();
sysPara->para.flagOfSolventWarning = false;
sysPara->para.solventWarnDate = 0;
sysPara->para.solventWarnTime = 0;
sysPara->saveParaToFile();
}
res = true;
emit sig_showMsg(tr("已取消溶剂提示"));
}
return res;
}
bool RFIDManager::waitCard()
{
updateStatus();
bool res = false;
if (status.addedInk) {
if (sysPara && status.cardInk) {
sysPara->RFIDPara.needInkCard = false;
sysPara->RFIDPara.inkCardTimeOut = false;
sysPara->RFIDPara.addedInk = false;
sysPara->RFIDPara.cardInk = false;
sysPara->saveRFIDPara();
sysPara->para.inkWarnDate = 0;
sysPara->para.inkWarnTime = 0;
sysPara->para.flagOfInkWarning = false;
sysPara->saveParaToFile();
res = true;
emit sig_showMsg(tr("先加墨水后刷卡:成功"));
}
} else if (status.addedSolvent) {
if (sysPara && status.cardSolvent) {
sysPara->RFIDPara.needSolventCard = false;
sysPara->RFIDPara.solventCardTimeOut = false;
sysPara->RFIDPara.addedSolvent = false;
sysPara->RFIDPara.cardSolvent = false;
sysPara->saveRFIDPara();
sysPara->para.flagOfSolventWarning = false;
sysPara->para.solventWarnDate = 0;
sysPara->para.solventWarnTime = 0;
sysPara->saveParaToFile();
res = true;
emit sig_showMsg(tr("先加溶剂后刷卡:成功"));
}
}
return res;
}
void RFIDManager::slt_readRFIDData()
{
QMutexLocker locker(&m_rfidMutex);
@@ -956,4 +1046,27 @@ void RFIDManager::slt_timerHandle()
}
}
static int totalTime = 0;
void RFIDManager::slt_intervalTimerHandle()
{
// QString type = curType == INK? "ink" : "solvent";
// if (totalTime % 5 == 0) // 提醒频率定为5s一次,后续可能加界面显示
// LogInfo::setRunStatusText(tr("定时器运行中,curType:%1, cardFlag:%2, time:%3")
// .arg(type).arg(cardFlag).arg(totalTime));
// if (waitCard()) {
// LogInfo::setRunStatusText(tr("waitCard sucess, timer stop"));
//// totalTime = 0;
// return;
// }
//不需要通知先后,成功即可
if (waitStatus()) {
LogInfo::setRunStatusText(tr("sucess"));
// totalTime = 0;
return;
}
}