hlp:更新翻译、喷嘴到底后等至少3秒检查相检、状态机统一打印和回收槽状态、修复数字键盘输入bug
This commit is contained in:
@@ -31,17 +31,6 @@ PrinterStateManager::~PrinterStateManager()
|
||||
}
|
||||
}
|
||||
|
||||
void PrinterStateManager::initTimer()
|
||||
{
|
||||
if (m_updateUITimer == NULL) {
|
||||
m_updateUITimer = new QTimer();
|
||||
connect(m_updateUITimer, &QTimer::timeout, this,
|
||||
&PrinterStateManager::slt_timeout);
|
||||
m_updateUITimer->setInterval(50);
|
||||
m_updateUITimer->setSingleShot(true);
|
||||
}
|
||||
}
|
||||
|
||||
QString PrinterStateManager::stateName() const
|
||||
{
|
||||
switch (m_currentState) {
|
||||
@@ -149,30 +138,23 @@ void PrinterStateManager::requestTransition(PrinterEvent event)
|
||||
setState(trans->toState, trans->description);
|
||||
}
|
||||
|
||||
static int f = 0;
|
||||
void PrinterStateManager::checkReadyState()
|
||||
{
|
||||
// 自检完成后,随时检查能否进入READY状态
|
||||
if (m_currentState == PrinterState::SELF_CHECK) {
|
||||
if (m_sysPara) {
|
||||
if (f ++ > 50) {
|
||||
f = 0;
|
||||
LogInfo::setRunStatusText
|
||||
(QString("%3:%1---airPushing:%2")
|
||||
.arg(m_sysPara->status.reclaimTankstatus)
|
||||
.arg(m_sysPara->status.airPushing)
|
||||
.arg(stateName()));
|
||||
}
|
||||
|
||||
// 现在还有个压力稳定期,期间也不能切换状态
|
||||
if (m_sysPara->status.airPushing) {
|
||||
emit sig_enableOpenTank(false);
|
||||
emit sig_enableCloseTank(false);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (m_sysPara->status.reclaimTankstatus) {
|
||||
case 5:
|
||||
setState(PrinterState::READY, "READY");
|
||||
emit sig_updateReclaimStatus();
|
||||
// 检测压力波动 -10~10,检测 3 秒,相位故障 检测3秒,总时长不超过60秒
|
||||
if (!isState(PrinterState::READY)) {
|
||||
if (m_canReadyTimer) m_canReadyTimer->start();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// 回收槽状态变化后就更新一次
|
||||
@@ -202,8 +184,9 @@ void PrinterStateManager::setState(PrinterState newState, const QString& reason)
|
||||
|
||||
qDebug() << "State changed:" << stateName() << "Reason:" << reason;
|
||||
|
||||
if (m_updateUITimer && !m_updateUITimer->isActive())
|
||||
if (m_updateUITimer && !m_updateUITimer->isActive()) {
|
||||
m_updateUITimer->start();
|
||||
}
|
||||
|
||||
// 发送信号通知外部
|
||||
emit sig_stateChanged(newState, m_previousState, reason);
|
||||
@@ -227,30 +210,22 @@ QString PrinterStateManager::stateNameFromEnum(PrinterState state) const
|
||||
|
||||
// ============ 守卫条件函数 ============
|
||||
|
||||
static char times = 0;
|
||||
bool PrinterStateManager::guardReclaimTankOpen()
|
||||
{
|
||||
if (!m_sysPara) return false;
|
||||
if (times ++ > 50) {
|
||||
times = 0;
|
||||
LogInfo::setRunStatusText(QString("guardReclaimTankOpen:%1").arg(m_sysPara->status.reclainTankReachEnd));
|
||||
LogInfo::setRunStatusText(QString("reclaimTankstatus:%1").arg(m_sysPara->status.reclaimTankstatus));
|
||||
}
|
||||
|
||||
// 开完成和关完成后,回收槽状态会变成0
|
||||
return m_sysPara->status.reclainTankReachEnd || (m_sysPara->status.reclaimTankstatus == 5);
|
||||
}
|
||||
|
||||
bool PrinterStateManager::guardInkSwintOpen()
|
||||
{
|
||||
if (!m_sysPara) return false;
|
||||
LogInfo::setRunStatusText("guardInkSwintOpen:" + !(m_sysPara->status.statWarn & WARN_STATUS_INK_SWINT));
|
||||
return !(m_sysPara->status.statWarn & WARN_STATUS_INK_SWINT);
|
||||
}
|
||||
|
||||
bool PrinterStateManager::guardNoError()
|
||||
{
|
||||
if (!m_sysPara) return false;
|
||||
LogInfo::setRunStatusText("guardNoError:" + (m_sysPara->status.statWarn == 0));
|
||||
return m_sysPara->status.statWarn == 0;
|
||||
}
|
||||
|
||||
@@ -269,8 +244,7 @@ bool PrinterStateManager::guardNoSolventWarn()
|
||||
bool PrinterStateManager::guardSelfCheckDone()
|
||||
{
|
||||
if (!m_sysPara) return false;
|
||||
LogInfo::setRunStatusText("guardSelfCheckDone:" + m_sysPara->status.selfCheckDone);
|
||||
return m_sysPara->status.selfCheckDone == true;
|
||||
return m_sysPara->status.selfCheckDone;
|
||||
}
|
||||
|
||||
bool PrinterStateManager::guardCanStartPrint()
|
||||
@@ -282,15 +256,34 @@ bool PrinterStateManager::guardCanStartPrint()
|
||||
guardNoError() && guardSelfCheckDone();
|
||||
}
|
||||
|
||||
void PrinterStateManager::slt_timeout()
|
||||
void PrinterStateManager::initTimer()
|
||||
{
|
||||
if (m_updateUITimer == NULL) {
|
||||
m_updateUITimer = new QTimer();
|
||||
connect(m_updateUITimer, &QTimer::timeout, this,
|
||||
&PrinterStateManager::slt_timeoutUI);
|
||||
m_updateUITimer->setInterval(50);
|
||||
m_updateUITimer->setSingleShot(true);
|
||||
}
|
||||
if (m_canReadyTimer == NULL) {
|
||||
m_canReadyTimer = new QTimer();
|
||||
connect(m_canReadyTimer, &QTimer::timeout, this,
|
||||
&PrinterStateManager::slt_timeoutReady);
|
||||
m_canReadyTimer->setInterval(500);
|
||||
}
|
||||
}
|
||||
|
||||
void PrinterStateManager::slt_timeoutUI()
|
||||
{
|
||||
if (m_sysPara) {
|
||||
LogInfo::setRunStatusText(QString("slt_timeout ENTER:%1--state:%2--airPushing:%3")
|
||||
LogInfo::setRunStatusText(QString("slt_timeout ENTER:%1--state:%2")
|
||||
.arg(stateName())
|
||||
.arg(m_sysPara->status.reclaimTankstatus)
|
||||
.arg(m_sysPara->status.airPushing));
|
||||
.arg(m_sysPara->status.reclaimTankstatus));
|
||||
|
||||
switch (m_sysPara->status.reclaimTankstatus) {
|
||||
case 0:
|
||||
emit sig_updateReclaimStatus();
|
||||
break;
|
||||
case 1: // 开
|
||||
emit sig_enableOpenTank(false);
|
||||
emit sig_enableCloseTank(true);
|
||||
@@ -303,8 +296,6 @@ void PrinterStateManager::slt_timeout()
|
||||
case 4:
|
||||
break;
|
||||
case 5: // 开完成
|
||||
// emit sig_enableStartPrint(true);
|
||||
// emit sig_enableStopPrint(true);
|
||||
emit sig_enableOpenTank(false);
|
||||
emit sig_enableCloseTank(true);
|
||||
break;
|
||||
@@ -342,3 +333,32 @@ void PrinterStateManager::slt_timeout()
|
||||
// 避免发出太多信号
|
||||
if (m_updateUITimer) m_updateUITimer->stop();
|
||||
}
|
||||
|
||||
static short allTimes = 0;
|
||||
static short checkTimes = 0;
|
||||
void PrinterStateManager::slt_timeoutReady()
|
||||
{
|
||||
allTimes++; //3s(checkTimes=6)一个周期,不超过60秒
|
||||
if (allTimes > 120) {
|
||||
if (m_canReadyTimer) m_canReadyTimer->stop();
|
||||
|
||||
allTimes = 0;
|
||||
checkTimes = 0;
|
||||
emit sig_closeTank();
|
||||
emit sig_infoMsg(tr("相位故障,回收喷嘴"));
|
||||
}
|
||||
|
||||
emit sig_infoMsg(tr("检查相位中..."));
|
||||
|
||||
// 检查相位,如果有一个错误,就重新开始累计
|
||||
if (m_sysPara->status.lastPhaseFault) { checkTimes = 0; }
|
||||
|
||||
// 累计6次(3秒)后,再进入READY状态
|
||||
if (checkTimes++ > 5){
|
||||
if (m_canReadyTimer) m_canReadyTimer->stop();
|
||||
|
||||
checkTimes = 0;
|
||||
setState(PrinterState::READY, "READY");
|
||||
emit sig_infoMsg(tr("检查完毕"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user