超级IC卡暂存
This commit is contained in:
+139
-26
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -8,6 +8,25 @@
|
||||
#include <QMutex>
|
||||
|
||||
class SysPara;
|
||||
enum CARD_TYPE{
|
||||
INK = 1,
|
||||
SOLVENT = 2,
|
||||
MAINTENANCE = 3,
|
||||
};
|
||||
|
||||
struct StatuStruct
|
||||
{
|
||||
bool addedInk;
|
||||
bool addedSolvent;
|
||||
bool cardInk;
|
||||
bool cardSolvent;
|
||||
StatuStruct() {
|
||||
addedInk = false;
|
||||
addedSolvent = false;
|
||||
cardInk = false;
|
||||
cardSolvent = false;
|
||||
}
|
||||
};
|
||||
|
||||
typedef unsigned char UCHAR;
|
||||
class RFIDManager : public QObject
|
||||
@@ -67,6 +86,12 @@ private:
|
||||
|
||||
bool cardTouchConfirm(QString msgTxt, QString variableMsgTxt);
|
||||
|
||||
//刷卡新需求,刷卡和倒溶剂/墨水不分先后,都可以去除报警提示。
|
||||
StatuStruct status;
|
||||
void updateStatus();
|
||||
QTimer* warningTimer = nullptr;
|
||||
bool waitStatus();
|
||||
bool waitCard();
|
||||
signals:
|
||||
void sig_showMsg(QString msg);
|
||||
|
||||
@@ -79,6 +104,8 @@ private slots:
|
||||
//超时处理槽函数
|
||||
void slt_timerHandle();
|
||||
|
||||
//处理刷卡与溶剂/墨水报警标志
|
||||
void slt_intervalTimerHandle();
|
||||
};
|
||||
|
||||
#endif // RFIDMANAGER_H
|
||||
|
||||
Reference in New Issue
Block a user