修复开机没有墨水也进自检的问题;为状态label添加长文本滚动逻辑
This commit is contained in:
+93
-47
@@ -271,6 +271,8 @@ void InkJetPrinter::init()
|
||||
sysPara->status.machineMac = m_MainInstruction->dlgInputAddr->jd.addr;
|
||||
sysPara->para.rfidCountDown = 5;
|
||||
|
||||
connect(this, &InkJetPrinter::pipingStatusChanged, this, &InkJetPrinter::checkStatusAndStartGearPump, Qt::QueuedConnection);
|
||||
|
||||
timer = new QTimer();
|
||||
connect(timer, SIGNAL(timeout()), this, SLOT(timerHandler()));
|
||||
timer->start(10);
|
||||
@@ -634,9 +636,7 @@ void InkJetPrinter::timerHandler(void){
|
||||
|
||||
static int tempFlag=0;
|
||||
static int save_weeknum = 0;
|
||||
static bool gearPumpRunFlag = false;
|
||||
static bool ControledSwitchFlag = false;
|
||||
static bool gearPumpStartFlag = false;
|
||||
static bool delay3s;
|
||||
bool InkSwintFlag = false,lastInkSwintFlag = false;
|
||||
static float gearPumpRunNormalValue = 0.0;
|
||||
@@ -689,22 +689,30 @@ void InkJetPrinter::timerHandler(void){
|
||||
pulse_300ms = (sysPara->status.delay100ms%3) == 0; //1秒3次,并非精确的300ms
|
||||
pulse_200ms = (sysPara->status.delay100ms%2) == 0;
|
||||
}
|
||||
if(pulse_300ms) tempFlag=1;
|
||||
if((sysPara->status.delay10ms%3) == 0) //读取状态后再检測
|
||||
{
|
||||
if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN) && !gearPumpRunFlag && !sysPara->status.isPumpValveControledByHand)//刚启动前3秒
|
||||
{
|
||||
if(sysPara->para.gearPumpEnable) {
|
||||
// 确保开机时控制字从 0 开始,让 pressureAdj 软启动从 0 爬坡,避免突变到高转速
|
||||
if(sysPara->para.gearPumpValue != 0) {
|
||||
sysPara->para.gearPumpValue = 0;
|
||||
u = 0.0f;
|
||||
sysPara->devOp->WriteMoterPump();
|
||||
}
|
||||
gearPumpStartFlag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// static QElapsedTimer *timer_3s_elapsed = nullptr;
|
||||
// if(timer_3s_elapsed == nullptr) {
|
||||
// timer_3s_elapsed = new QElapsedTimer();
|
||||
// timer_3s_elapsed->start();
|
||||
// }
|
||||
|
||||
// if(timer_3s_elapsed->elapsed() >= 3000) //读取状态后再检測
|
||||
// {
|
||||
// if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN) && !gearPumpRunFlag && !sysPara->status.isPumpValveControledByHand)//刚启动前3秒
|
||||
// {
|
||||
// if(sysPara->para.gearPumpEnable) {
|
||||
// // 确保开机时控制字从 0 开始,让 pressureAdj 软启动从 0 爬坡,避免突变到高转速
|
||||
// if(sysPara->para.gearPumpValue != 0) {
|
||||
// sysPara->para.gearPumpValue = 0;
|
||||
// u = 0.0f;
|
||||
// sysPara->devOp->WriteMoterPump();
|
||||
// }
|
||||
// gearPumpStartFlag = true;
|
||||
// }
|
||||
// }
|
||||
|
||||
// timer_3s_elapsed->restart();
|
||||
// }
|
||||
|
||||
if(pushButtonStartFlag && sysPara->status.selfCheckDone)
|
||||
{
|
||||
@@ -765,10 +773,10 @@ void InkJetPrinter::timerHandler(void){
|
||||
if(count_3s == 3)
|
||||
{
|
||||
count_3s = 0;
|
||||
// ui->tabMainWindow->setRunStatus(tr("压力泄漏或压力传感器故障!"));
|
||||
m_MainWidget->setRunStatus(tr("压力泄漏或压力传感器故障!"));
|
||||
sysPara->status.gearPumpRunStopFlag = true;
|
||||
gearPumpRunNormalFlag = false;
|
||||
// LogInfo::setRunStatusText(tr("运行中压力泄漏,停齿轮泵!"));
|
||||
LogInfo::setRunStatusText(tr("运行中压力泄漏,停齿轮泵!"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -779,23 +787,10 @@ void InkJetPrinter::timerHandler(void){
|
||||
}
|
||||
if(sysPara->para.gearPumpEnable && (sysPara->status.gearPumpRunSpeed < 100) && test_flag){
|
||||
if(test_flag % 2)
|
||||
// ui->tabMainWindow->on_pushButtonReclaimTankClose_pressed();
|
||||
m_MainWidget->on_m_LeftBtn_clicked();
|
||||
test_flag = 0;
|
||||
}
|
||||
if(pulse_1s) {
|
||||
// 回收泵模式切换时重置软启动和泄漏保护学习状态
|
||||
if(m_lastReclaimMode != sysPara->para.flagOfReclaimPumEnable)
|
||||
{
|
||||
m_lastReclaimMode = sysPara->para.flagOfReclaimPumEnable;
|
||||
gearPumpRunNormalFlag = false;
|
||||
gearPumpRunNormalValue = 0.0f;
|
||||
m_rampDone = false;
|
||||
m_adjSkip = 0;
|
||||
m_lastPressure = 0;
|
||||
m_stableCount = 0;
|
||||
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
||||
m_bufIdx = 0;
|
||||
}
|
||||
if(sysPara->status.selfCheckDone && sysPara->para.gearPumpEnable && sysPara->para.flagOfReclaimPumEnable)
|
||||
checkPressureControl();
|
||||
if((QTime::currentTime()>=QTime(00,00,00))&&(QTime::currentTime()<=QTime(00,00,02))&&sysPara->para.Reciclar){
|
||||
@@ -842,7 +837,7 @@ void InkJetPrinter::timerHandler(void){
|
||||
if(gearPumpStartFlag)
|
||||
{
|
||||
pulse_3s ++;
|
||||
if(pulse_3s == 3)
|
||||
if(pulse_3s == 6)
|
||||
{
|
||||
pulse_3s = 0;
|
||||
gearPumpRunFlag = true;
|
||||
@@ -1087,16 +1082,21 @@ void InkJetPrinter::timerHandler(void){
|
||||
if (!sysPara->status.airPushing || m_MainWidget->m_2sFlag) {
|
||||
autoControlValvePump();
|
||||
}
|
||||
static qint32 adjDbgCnt = 0;
|
||||
if(pulse_100ms && ++adjDbgCnt % 50 == 0){
|
||||
|
||||
// 调整压力算法时用这个追踪
|
||||
// qDebug()<<"[adjCond] gearPumpEnable="<<sysPara->para.gearPumpEnable
|
||||
// <<" isPumpValveControledByHand="<<sysPara->status.isPumpValveControledByHand
|
||||
// <<" ControledSwitchFlag="<<ControledSwitchFlag
|
||||
// <<" gearPumpRunFlag="<<gearPumpRunFlag
|
||||
// <<" gearPumpStartFlag="<<gearPumpStartFlag;
|
||||
// 检测回收泵模式切换,切换时重置泄漏保护学习状态和软启动状态
|
||||
if(m_lastReclaimMode != sysPara->para.flagOfReclaimPumEnable)
|
||||
{
|
||||
m_lastReclaimMode = sysPara->para.flagOfReclaimPumEnable;
|
||||
gearPumpRunNormalFlag = false; // 泄漏保护重新学习
|
||||
gearPumpRunNormalValue = 0.0f;
|
||||
m_rampDone = false; // 软启动重新爬坡适应新上限
|
||||
m_adjSkip = 0;
|
||||
m_lastPressure = 0;
|
||||
m_stableCount = 0;
|
||||
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
||||
m_bufIdx = 0;
|
||||
}
|
||||
|
||||
if(pulse_100ms && sysPara->para.gearPumpEnable && !sysPara->status.isPumpValveControledByHand && ControledSwitchFlag ) {
|
||||
pressureAdj();
|
||||
}
|
||||
@@ -1105,10 +1105,11 @@ void InkJetPrinter::timerHandler(void){
|
||||
else{
|
||||
static bool flag = 1;
|
||||
if(delay3s){
|
||||
if(flag){
|
||||
if(flag && gearPumpStartFlag){
|
||||
flag = 0;
|
||||
// LogInfo::setRunStatusText(tr("缺少墨水,喷码机不能正常工作!"));
|
||||
LogInfo::setRunStatusText(tr("缺少墨水,喷码机不能正常工作!"));
|
||||
qDebug()<<"缺少墨水,喷码机不能正常工作!";
|
||||
m_MainWidget->setRunStatus(tr("缺少墨水,喷码机不能正常工作!"));
|
||||
}
|
||||
// ui->tabMainWindow->setRunStatus(tr("缺少墨水,喷码机不能正常工作!"));
|
||||
}
|
||||
@@ -1437,6 +1438,46 @@ void InkJetPrinter::timerHandler(void){
|
||||
|
||||
}
|
||||
|
||||
void InkJetPrinter::checkStatusAndStartGearPump()
|
||||
{
|
||||
// 使用 QElapsedTimer 去抖:要求条件连续保持 >= 2000ms
|
||||
if(!sysPara)
|
||||
return;
|
||||
|
||||
bool cond = !(sysPara->status.statWarn & WARN_STATUS_INK_WARN)
|
||||
&& !gearPumpRunFlag
|
||||
&& !sysPara->status.isPumpValveControledByHand
|
||||
&& sysPara->para.gearPumpEnable;
|
||||
|
||||
if (cond) {
|
||||
// 若尚未开始计时,启动计时
|
||||
if (!m_pipingClearSince.isValid()) {
|
||||
m_pipingClearSince.start();
|
||||
return;
|
||||
}
|
||||
|
||||
// 若计时已到达阈值,再次确认条件并执行启动动作
|
||||
if (m_pipingClearSince.elapsed() >= 2000) {
|
||||
if (!(sysPara->status.statWarn & WARN_STATUS_INK_WARN)
|
||||
&& !gearPumpRunFlag
|
||||
&& !sysPara->status.isPumpValveControledByHand) {
|
||||
if (sysPara->para.gearPumpValue != 0) {
|
||||
sysPara->para.gearPumpValue = 0;
|
||||
u = 0.0f;
|
||||
sysPara->devOp->WriteMoterPump();
|
||||
}
|
||||
gearPumpStartFlag = true; // 设置标记位,让 timerHandler 启动齿轮泵
|
||||
}
|
||||
m_pipingClearSince.invalidate();
|
||||
}
|
||||
} else {
|
||||
// 条件不满足,取消计时
|
||||
if (m_pipingClearSince.isValid())
|
||||
m_pipingClearSince.invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 以下槽函数逻辑完全不变
|
||||
void InkJetPrinter::getTestPrintWidgetButtonClickedSlot(int index)
|
||||
{
|
||||
@@ -1905,6 +1946,9 @@ void InkJetPrinter::saveSTM32Status(unsigned char *data){
|
||||
else target[i]=data[4+i];
|
||||
}
|
||||
|
||||
// Always emit pipingStatusChanged so checkStatusAndStartGearPump can perform debounce
|
||||
emit pipingStatusChanged();
|
||||
|
||||
// emit showReclaimTankstatus(sysPara->status.reclaimTankstatus);
|
||||
// emit showMotorIsen(sysPara->status.MOTOR_ISEN,sysPara->status.AD_FIXED);
|
||||
}
|
||||
@@ -2825,8 +2869,7 @@ void InkJetPrinter::warningHandler(int type){
|
||||
if (dateTimeDiff > 60*60*24*2) {
|
||||
sysPara->RFIDPara.inkCardTimeOut = true;
|
||||
}
|
||||
if (!sysPara->RFIDPara.inkCardTimeOut)
|
||||
inkTime = 48- dateTimeDiff/60/60;
|
||||
inkTime = sysPara->RFIDPara.inkCardTimeOut ? 49 : (48 - dateTimeDiff/60/60);
|
||||
}
|
||||
if(sysPara->RFIDPara.inkCardTimeOut && flagOfWarning){
|
||||
if(++sysPara->status.showInkWarningNumber >= INTERVAL_AFTER48H){
|
||||
@@ -3082,6 +3125,9 @@ void InkJetPrinter::handleWarnInk()
|
||||
}
|
||||
|
||||
if(sysPara->status.inkWarningCnt >= DETECT_WARNING_TIME){
|
||||
|
||||
// TO RFIDManager
|
||||
|
||||
sysPara->para.flagOfInkWarning = true;
|
||||
manager_rfid->setInkCardFirstPrompt(true);
|
||||
QString strCurDateTime = QDateTime::currentDateTime().toString("yyMMddhhmmss");
|
||||
|
||||
Reference in New Issue
Block a user