修复RFID导致回收槽关闭;修复新建文件后不自动切换的问题
This commit is contained in:
+118
-74
@@ -15,6 +15,33 @@ constexpr char* SUPER_CARD_ID = "397F4A8E5B9F6CA07D395B28E4A6";
|
||||
RFIDManager::RFIDManager()
|
||||
{
|
||||
comForRFID_init();
|
||||
|
||||
m_confirmBox = new QMessageBox(QMessageBox::Warning, tr("警告"), QString(),
|
||||
QMessageBox::Ok | QMessageBox::Cancel);
|
||||
m_confirmBox->setWindowModality(Qt::ApplicationModal);
|
||||
m_confirmTimer = new QTimer(this);
|
||||
|
||||
connect(m_confirmTimer, &QTimer::timeout, this, [this]() {
|
||||
int count = m_confirmBox->property("rfidCountDown").toInt();
|
||||
m_confirmBox->setText(m_confirmBoxTxt.arg(count));
|
||||
m_confirmBox->update();
|
||||
count--;
|
||||
m_confirmBox->setProperty("rfidCountDown", count);
|
||||
if(count == 0) {
|
||||
m_confirmBox->accept();
|
||||
}
|
||||
});
|
||||
|
||||
connect(m_confirmBox, &QMessageBox::accepted, this, [this]() {
|
||||
if(m_confirmCallback) {
|
||||
m_confirmCallback();
|
||||
}
|
||||
});
|
||||
|
||||
connect(m_confirmBox, &QMessageBox::finished, this, [this](int result) {
|
||||
m_confirmTimer->stop();
|
||||
m_confirmCallback = nullptr;
|
||||
});
|
||||
}
|
||||
|
||||
void RFIDManager::CheckSumOut(UCHAR *buf, UCHAR len)
|
||||
@@ -531,8 +558,6 @@ void RFIDManager::handleCheck(unsigned int addr)
|
||||
{
|
||||
strRevdata ="";
|
||||
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))
|
||||
@@ -549,27 +574,11 @@ void RFIDManager::handleCheck(unsigned int addr)
|
||||
if(!sysPara->RFIDPara.needInkCard){
|
||||
emit sig_showMsg(tr("不需要刷墨水卡!"));
|
||||
}
|
||||
// else if(sysPara->status.statWarn & WARN_STATUS_INK_WARN){
|
||||
// emit sig_showMsg(tr("请先添加墨水再刷墨水卡!"));
|
||||
// }
|
||||
else
|
||||
{
|
||||
auto ok = cardTouchConfirm(tr("确认要刷墨水卡吗?"), tr("确认要刷墨水卡吗? %1 秒后将自动确认"));
|
||||
if (!ok){
|
||||
LogInfo::setRunStatusText("The user has canceled the operation about marking the ink card.");
|
||||
}
|
||||
else {
|
||||
auto ret = RFIDmarkCardUsedAsync(0, strRevdata);
|
||||
if(ret >= 0 || ret == -11){
|
||||
const QString msg = sysPara->RFIDPara.addedInk ? tr("刷墨水卡成功!") : tr("刷墨水卡成功, 请及时将该墨水卡对应的墨水添加到机器中");
|
||||
emit sig_showMsg(msg);
|
||||
sysPara->RFIDPara.cardInk = true;
|
||||
sysPara->saveRFIDPara();
|
||||
}
|
||||
else if(ret == -10) {
|
||||
emit sig_showMsg(tr("刷超级墨水卡失败,请联系厂商。"));
|
||||
}
|
||||
}
|
||||
else {
|
||||
auto blockData = strRevdata;
|
||||
cardTouchConfirmAsync(tr("确认要刷墨水卡吗?"), tr("确认要刷墨水卡吗? %1 秒后将自动确认"), [this, blockData]{
|
||||
markInkCard(blockData);
|
||||
});
|
||||
}
|
||||
}
|
||||
else if(strRevdata.at(3) == 'B')
|
||||
@@ -582,61 +591,20 @@ void RFIDManager::handleCheck(unsigned int addr)
|
||||
if(!sysPara->RFIDPara.needSolventCard){
|
||||
emit sig_showMsg(tr("不需要刷溶剂卡!"));
|
||||
}
|
||||
// else if(sysPara->status.statWarn & WARN_STATUS_SOLV_WARN){
|
||||
// emit sig_showMsg(tr("请先添加溶剂再刷溶剂卡!"));
|
||||
// }
|
||||
else
|
||||
{
|
||||
auto ok = cardTouchConfirm(tr("确认要刷溶剂卡吗?"), tr("确认要刷溶剂卡吗? %1 秒后将自动确认"));
|
||||
if (!ok){
|
||||
LogInfo::setRunStatusText("The user has canceled the operation about marking the solvent card.");
|
||||
}
|
||||
else {
|
||||
auto ret = RFIDmarkCardUsedAsync(1, strRevdata);
|
||||
if(ret >= 0 || ret == -11) {
|
||||
const QString msg = sysPara->RFIDPara.addedSolvent ? tr("刷溶剂卡成功!") : tr("刷溶剂卡成功, 请及时将该溶剂卡对应的溶剂添加到机器中");
|
||||
emit sig_showMsg(msg);
|
||||
sysPara->RFIDPara.cardSolvent = true;
|
||||
sysPara->saveRFIDPara();
|
||||
}
|
||||
else if(ret == -10) {
|
||||
emit sig_showMsg(tr("刷超级溶剂水卡失败,请联系厂商。"));
|
||||
}
|
||||
}
|
||||
else {
|
||||
auto blockData = strRevdata;
|
||||
cardTouchConfirmAsync(tr("确认要刷溶剂卡吗?"), tr("确认要刷溶剂卡吗? %1 秒后将自动确认"), [this, blockData](){
|
||||
markSolventCard(blockData);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
else if(strRevdata.at(3) == 'C')
|
||||
{
|
||||
auto ok = cardTouchConfirm(tr("确认要刷保养卡吗?"), tr("确认要刷保养卡吗? %1 秒后将自动确认"));
|
||||
if (ok){
|
||||
auto ret = RFIDmarkCardUsedAsync(2, strRevdata);
|
||||
if(ret >= 0 || ret == -11) {//把卡数据清零
|
||||
|
||||
emit sig_maintenanceShow();
|
||||
|
||||
sysPara->RFIDPara.needMaintenance = false;
|
||||
sysPara->status.needMaintenanceRemind = false;
|
||||
|
||||
QDate curDate = QDate::currentDate();
|
||||
sysPara->RFIDPara.maintenanceDate = curDate.toString("yyMMdd").toInt();
|
||||
QDate mtEndDate = curDate.addMonths(sysPara->RFIDPara.maintenanceInterval);
|
||||
sysPara->RFIDPara.maintenanceEndDate = mtEndDate.toString("yyMMdd").toInt();
|
||||
sysPara->RFIDPara.runTime = 0;
|
||||
RunTimeCtrl::instance()->updatePara(&sysPara->RFIDPara);
|
||||
sysPara->saveRFIDPara();
|
||||
emit sig_showMsg(tr("刷保养卡成功!"));
|
||||
}
|
||||
else if(ret == -10) {
|
||||
emit sig_showMsg(tr("刷超级保养卡失败,请联系厂商。"));
|
||||
}
|
||||
else {
|
||||
LogInfo::setRunStatusText("Failed to mark maintenance card!");
|
||||
}
|
||||
}
|
||||
else {
|
||||
qDebug() << "用户取消了刷卡";
|
||||
}
|
||||
auto blockData = strRevdata;
|
||||
cardTouchConfirmAsync(tr("确认要刷保养卡吗?"), tr("确认要刷保养卡吗? %1 秒后将自动确认"), [this, blockData](){
|
||||
markMaintenanceCard(blockData);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1117,6 +1085,82 @@ bool RFIDManager::cardTouchConfirm(QString msgTxt, QString variableMsgTxt)
|
||||
return box.result() == QMessageBox::Ok || box.result() == QMessageBox::Accepted;
|
||||
}
|
||||
|
||||
void RFIDManager::cardTouchConfirmAsync(QString msgTxt, QString variableMsgTxt, std::function<void()> callback)
|
||||
{
|
||||
if(m_confirmBox->isVisible()) {
|
||||
qDebug() << "A dialog is already being displayed. Ignoring the new request.";
|
||||
return;
|
||||
}
|
||||
|
||||
int rfidCountDown = sysPara->para.rfidCountDown;
|
||||
m_confirmBoxTxt = variableMsgTxt;
|
||||
m_confirmCallback = callback;
|
||||
m_confirmBox->setText(msgTxt);
|
||||
m_confirmBox->setProperty("rfidCountDown", rfidCountDown);
|
||||
|
||||
if(rfidCountDown > 0) {
|
||||
m_confirmBox->setText(m_confirmBoxTxt.arg(rfidCountDown));
|
||||
m_confirmTimer->start(1000);
|
||||
}
|
||||
|
||||
m_confirmBox->show();
|
||||
}
|
||||
|
||||
void RFIDManager::markInkCard(const QString &blockData)
|
||||
{
|
||||
auto ret = RFIDmarkCardUsedAsync(0, blockData);
|
||||
if(ret >= 0 || ret == -11){
|
||||
const QString msg = sysPara->RFIDPara.addedInk ? tr("刷墨水卡成功!") : tr("刷墨水卡成功, 请及时将该墨水卡对应的墨水添加到机器中");
|
||||
emit sig_showMsg(msg);
|
||||
sysPara->RFIDPara.cardInk = true;
|
||||
sysPara->saveRFIDPara();
|
||||
}
|
||||
else if(ret == -10) {
|
||||
emit sig_showMsg(tr("刷超级墨水卡失败,请联系厂商。"));
|
||||
}
|
||||
}
|
||||
|
||||
void RFIDManager::markSolventCard(const QString &blockData)
|
||||
{
|
||||
auto ret = RFIDmarkCardUsedAsync(1, blockData);
|
||||
if(ret >= 0 || ret == -11) {
|
||||
const QString msg = sysPara->RFIDPara.addedSolvent ? tr("刷溶剂卡成功!") : tr("刷溶剂卡成功, 请及时将该溶剂卡对应的溶剂添加到机器中");
|
||||
emit sig_showMsg(msg);
|
||||
sysPara->RFIDPara.cardSolvent = true;
|
||||
sysPara->saveRFIDPara();
|
||||
}
|
||||
else if(ret == -10) {
|
||||
emit sig_showMsg(tr("刷超级溶剂水卡失败,请联系厂商。"));
|
||||
}
|
||||
}
|
||||
|
||||
void RFIDManager::markMaintenanceCard(const QString &blockData)
|
||||
{
|
||||
auto ret = RFIDmarkCardUsedAsync(2, blockData);
|
||||
if(ret >= 0 || ret == -11) {//把卡数据清零
|
||||
|
||||
emit sig_maintenanceShow();
|
||||
|
||||
sysPara->RFIDPara.needMaintenance = false;
|
||||
sysPara->status.needMaintenanceRemind = false;
|
||||
|
||||
QDate curDate = QDate::currentDate();
|
||||
sysPara->RFIDPara.maintenanceDate = curDate.toString("yyMMdd").toInt();
|
||||
QDate mtEndDate = curDate.addMonths(sysPara->RFIDPara.maintenanceInterval);
|
||||
sysPara->RFIDPara.maintenanceEndDate = mtEndDate.toString("yyMMdd").toInt();
|
||||
sysPara->RFIDPara.runTime = 0;
|
||||
RunTimeCtrl::instance()->updatePara(&sysPara->RFIDPara);
|
||||
sysPara->saveRFIDPara();
|
||||
emit sig_showMsg(tr("刷保养卡成功!"));
|
||||
}
|
||||
else if(ret == -10) {
|
||||
emit sig_showMsg(tr("刷超级保养卡失败,请联系厂商。"));
|
||||
}
|
||||
else {
|
||||
LogInfo::setRunStatusText("Failed to mark maintenance card!");
|
||||
}
|
||||
}
|
||||
|
||||
void RFIDManager::updateStatus()
|
||||
{
|
||||
if (sysPara) {
|
||||
@@ -1381,4 +1425,4 @@ int RFIDManager::RFIDQueryWalletAsync()
|
||||
LogInfo::setRunStatusText(("Failed to query card balance, logic error"));
|
||||
qDebug() << "Failed to query card balance, logic error";
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user