hlp:新建文件,内容从左下角开始,使用状态机,报警内容在自检和关机时不爆红提示
This commit is contained in:
+102
-100
@@ -38,6 +38,7 @@
|
||||
#include <QPainter>
|
||||
#include "MainWidget.h"
|
||||
#include "scene/ItemCommon.h"
|
||||
#include "StateMachine/PrinterStateManager.h"
|
||||
|
||||
extern MyInputMethod *myInputMethod;
|
||||
unsigned char test_flag,open_close;
|
||||
@@ -321,7 +322,7 @@ void MainWidget::checkForPowerOff(){
|
||||
{
|
||||
if(i==13)
|
||||
sysPara->devOp->controlReclaimTankOpen(false);
|
||||
this->setRunStatus(tr("正在准备关机,请等待%1秒...").arg(i*3), false);
|
||||
this->setRunStatus(tr("正在准备关机,请等待%1秒...").arg(i), false);
|
||||
MySleep(3000);
|
||||
}
|
||||
}
|
||||
@@ -334,7 +335,7 @@ void MainWidget::checkForPowerOff(){
|
||||
updateTotalCnt(0);
|
||||
sysPara->saveParaToFile(); // 关机前将相关配置保存
|
||||
}
|
||||
sysPara->status.powerOffAppending = false;
|
||||
|
||||
if(!TEST_MODE){
|
||||
for(int i=7;i>0;i--)
|
||||
{
|
||||
@@ -396,15 +397,22 @@ void MainWidget::powerOffConfirmed(){
|
||||
qApp->exit(0);
|
||||
}
|
||||
|
||||
void MainWidget::setRunStatus(QString str, bool enbRoll)
|
||||
void MainWidget::setRunStatus(QString str, bool enbRoll, bool warn)
|
||||
{
|
||||
//自检和关机时不显示报警logo
|
||||
if (warn) {
|
||||
if (sysPara && !sysPara->status.selfCheckDone
|
||||
|| sysPara->status.powerOffAppending) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 自检完成后,timerHandler中会发送停止打印的命令,导致“停止打印,自动关闭高压.”顶替掉“自检完成!!!”的情况
|
||||
if(ui.lb_nozzleState->text() == qApp->translate("InkJetPrinter", "自检完成!!!") &&
|
||||
str == qApp->translate("InkJetPrinter", "停止打印,自动关闭高压.")) {
|
||||
return;
|
||||
}
|
||||
|
||||
qDebug() << str;
|
||||
// 如果禁用走马灯(enbRoll == false),直接在label上显示文本(即使过长)
|
||||
if (!enbRoll) {
|
||||
if (ui.lb_nozzleState) {
|
||||
@@ -911,10 +919,6 @@ void MainWidget::enablePrintButton(bool enable){
|
||||
enable = true;
|
||||
#endif
|
||||
|
||||
#ifdef FPGA_TEST
|
||||
enable = true;
|
||||
#endif
|
||||
|
||||
m_StartBtn->setEnabled(enable);
|
||||
m_StopBtn->setEnabled(enable);
|
||||
}
|
||||
@@ -941,18 +945,6 @@ void MainWidget::updateTotalCnt(int en)
|
||||
|
||||
void MainWidget::on_m_StartBtn_clicked()
|
||||
{
|
||||
if(sysPara->status.isPrinting){
|
||||
qDebug("Mainwindow: Printing 开始打印");
|
||||
}else{
|
||||
qDebug("Mainwindow: Non printing 开始打印");
|
||||
}
|
||||
static int fileCount = 0;
|
||||
fileCount++;
|
||||
if(fileCount > 5)
|
||||
{
|
||||
fileCount = 1;
|
||||
}
|
||||
|
||||
if(sysPara){
|
||||
bool MaxCol4000;
|
||||
if(sysPara->status.flagOfNo67FPGA)
|
||||
@@ -960,68 +952,19 @@ void MainWidget::on_m_StartBtn_clicked()
|
||||
else
|
||||
MaxCol4000 = false;
|
||||
test_flag = 0;
|
||||
/******2020/2/29*****/
|
||||
if(sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER) //同步模式下,判断喷印间隔是否设置合理
|
||||
{
|
||||
QSizeF size = QSizeF(sysPara->status.currPrintCol, sysPara->status.currPrintRow);
|
||||
float stroke,print_len_min;
|
||||
stroke = sysPara->para.printColDelay/sysPara->para.synPulseNumPerMm;
|
||||
print_len_min = stroke * size.width();
|
||||
if(print_len_min > sysPara->para.synTriggerPrintLenMm && !sysPara->para.charWidthSetEnable)
|
||||
{
|
||||
QMessageBox::information(this,tr("错误"),tr("喷印间隔过短,应高于%1!").arg(print_len_min));
|
||||
return;
|
||||
}
|
||||
}
|
||||
/******2020/2/29 end*****/
|
||||
#ifndef QT_DEBUG
|
||||
if(!SIMULATE_PRINTING_MODE){
|
||||
if (!sysPara->status.reclainTankReachEnd) {
|
||||
return;
|
||||
}
|
||||
if((sysPara->status.statWarn & WARN_STATUS_HDINT)){
|
||||
QMessageBox::information(this,tr("错误"),tr("喷头盖未关,请先关喷头盖!"));
|
||||
return ;
|
||||
}
|
||||
if((sysPara->status.statWarn & WARN_STATUS_INK_SWINT)){
|
||||
QMessageBox::information(this,tr("错误"),tr("墨线未开,请先开墨线开关!"));
|
||||
return ;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
sysPara->devOp->highVoltageCtrl(1);
|
||||
sysPara->devOp->setHighVoltageAmplitudetoSTM32();
|
||||
sysPara->status.waitHightVolOff = 0;
|
||||
|
||||
if(sysPara->status.currPrintCol > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide)){
|
||||
QMessageBox::critical(0,tr("错误"),tr("当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度").arg(sysPara->status.currPrintCol).arg((MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide)));
|
||||
return ;
|
||||
}
|
||||
if(!((sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER)
|
||||
||((sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL
|
||||
||sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE)
|
||||
&& sysPara->para.eleEyeTriggerSynPrintEn))
|
||||
)
|
||||
{
|
||||
int dotNumPerCol = sysPara->status.currPrintRow*(1 + sysPara->para.printRowDelay) + sysPara->para.printColDelay;
|
||||
long printTmUs = 1.0f*dotNumPerCol*(1 + sysPara->para.charBold)*sysPara->status.currPrintCol*(2*sysPara->para.divideRatio)/(FPGA_SYS_HZ/1000000);
|
||||
if((printTmUs/1000 + 3) > (sysPara->para.printDelayMs)\
|
||||
&& (sysPara->para.timeTriggerPrintMode == TIME_TRIGGER_PRINT_MODE_HEAD_TO_HEAD)
|
||||
&& (sysPara->para.printTriggerMode == PRINT_TRIGGER_TIME )
|
||||
) // 在电眼方式下,是否需要判呢?
|
||||
{
|
||||
QMessageBox::critical(0,tr("错误"),tr("打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms").arg(printTmUs/1000).arg(sysPara->para.printDelayMs));
|
||||
return ;
|
||||
}
|
||||
}
|
||||
sysPara->status.isPrinting=false;
|
||||
if (!checkTriggerMode()) return;
|
||||
|
||||
// 打印状态交给状态机修改
|
||||
// sysPara->status.isPrinting=false;
|
||||
auto mgr = PrinterStateManager::instance();
|
||||
if (mgr && mgr->canStopPrint()) {
|
||||
mgr->requestTransition(PrinterEvent::StopPrint);
|
||||
} else {return;}
|
||||
|
||||
SendPrintDataToFpga(0); // 0--正常打印,1--打印交替部分信息1; 2--打印交替部分信息2,
|
||||
|
||||
/*-------------------------------------------------------------------*/
|
||||
// ui->labelSynColDelay->setText("");
|
||||
sysPara->status.lastSynColDelay = -1; //目的是为了清空原来的数据
|
||||
|
||||
/*---------------------------------开关回收槽------------------------------*/
|
||||
@@ -1038,32 +981,33 @@ void MainWidget::on_m_StartBtn_clicked()
|
||||
}
|
||||
|
||||
startPrintingFlag = true;
|
||||
sysPara->status.isPrinting=true;
|
||||
// sysPara->status.isPrinting=true;
|
||||
if (mgr->canStartPrint() || mgr->isState(PrinterState::PRINTING)) {
|
||||
mgr->requestTransition(PrinterEvent::StartPrint);
|
||||
}
|
||||
|
||||
// 高亮切换
|
||||
changeHighLight(true);
|
||||
|
||||
LogInfo::setRunStatusText("Start print...");
|
||||
}
|
||||
}
|
||||
|
||||
void MainWidget::on_m_StopBtn_clicked()
|
||||
{
|
||||
if(sysPara->status.isPrinting){
|
||||
qDebug("Mainwindow: Printing 停止打印");
|
||||
}else{
|
||||
qDebug("Mainwindow: Non printing 停止打印");
|
||||
}
|
||||
|
||||
if(sysPara){
|
||||
if (!sysPara->status.reclainTankReachEnd && !SIMULATE_PRINTING_MODE) {
|
||||
return;
|
||||
}
|
||||
// sysPara->status.flagOfAbnormalStatus = false;
|
||||
sysPara->status.isPrinting=false;
|
||||
// sysPara->status.isPrinting=false;// 打印状态交给状态机修改
|
||||
auto mgr = PrinterStateManager::instance();
|
||||
if (mgr && mgr->canStopPrint()) {
|
||||
mgr->requestTransition(PrinterEvent::StopPrint);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
sysPara->devOp->printCtrl2(1);
|
||||
sysPara->devOp->printCtrl( PRINT_CTRL_STOP);//:PRINT_CTRL_STOPSYNCNT
|
||||
// LogInfo::setRunStatusText(tr("停止打印"));
|
||||
|
||||
|
||||
setReclaimCloseBtnStatus(sysPara->status.currReclaimTankPos != 0);
|
||||
setReclaimOpenBtnStatus(sysPara->status.currReclaimTankPos == 0);
|
||||
@@ -1071,7 +1015,7 @@ void MainWidget::on_m_StopBtn_clicked()
|
||||
printintFlag = false;
|
||||
startPrintingFlag = false;
|
||||
updatePrintDisplayLabel();
|
||||
sysPara->status. waitHightVolOff = 1;
|
||||
sysPara->status.waitHightVolOff = 1;
|
||||
sysPara->saveParaToFile(); // 将相关配置保存
|
||||
|
||||
if(sysPara->status.RandomBackCnt>5 && (sysPara->status.RandomNum>0))
|
||||
@@ -1081,16 +1025,11 @@ void MainWidget::on_m_StopBtn_clicked()
|
||||
tr("随机码文本将展出到U盘,请插入U盘"),
|
||||
QMessageBox::Ok | QMessageBox::Cancel);
|
||||
if (ret == QMessageBox::Ok){
|
||||
// LogInfo::setRunStatusText("正在导出随机码文件到U盘......");
|
||||
sysPara->devOp->RandTxtBakup(0); //备份到U盘
|
||||
// LogInfo::setRunStatusText("随机码文件导出完成.");
|
||||
|
||||
}
|
||||
}
|
||||
// 高亮切换
|
||||
changeHighLight(false);
|
||||
|
||||
LogInfo::setRunStatusText("Stop print...");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1866,6 +1805,13 @@ void MainWidget::updateGeneralState(AlarmStatus status)
|
||||
}
|
||||
}
|
||||
|
||||
// 自检时设为正常, 关机设为正常
|
||||
if (!sysPara->status.selfCheckDone
|
||||
|| sysPara->status.powerOffAppending) {
|
||||
m_stateColor = DEV_STATUS_GREEN;
|
||||
m_stateStr= tr("正常");
|
||||
}
|
||||
|
||||
if (m_stateColor == DEV_STATUS_GREEN) {
|
||||
ui.fra_state->setStyleSheet("background-color: #ccffcc;");
|
||||
} else if (m_stateColor == DEV_STATUS_RED) {
|
||||
@@ -2336,15 +2282,15 @@ void MainWidget::RefreshStatusLight(){//100ms
|
||||
if(sysPara->para.RecycleWarnAction)
|
||||
{
|
||||
if((sysPara->status.currReclaimTankPos != 0) && !sysPara->devOp->isReclaimTankCloseEnable()){
|
||||
// on_pushButtonStopPrint_pressed();
|
||||
on_m_StopBtn_clicked();
|
||||
// on_pushButtonReclaimTankClose_pressed();
|
||||
on_m_LeftBtn_clicked();
|
||||
LogInfo::setRunStatusText(tr("回收故障,关闭回收槽,关墨线"));
|
||||
setRunStatus(tr("回收故障,关闭回收槽,关墨线"));
|
||||
if (m_warn) {
|
||||
LogInfo::setRunStatusText(tr("回收故障,关闭回收槽,关墨线"));
|
||||
setRunStatus(tr("回收故障,关闭回收槽,关墨线"),true,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else setRunStatus(tr("回收故障."));
|
||||
else if (m_warn) {setRunStatus(tr("回收故障."),true,true); }
|
||||
|
||||
}
|
||||
else
|
||||
@@ -2553,6 +2499,62 @@ bool MainWidget::isInExpandedRect(QWidget* widget, const QPoint& globalPos, int
|
||||
return rect.contains(globalPos);
|
||||
}
|
||||
|
||||
bool MainWidget::checkTriggerMode()
|
||||
{
|
||||
/******2020/2/29*****/
|
||||
if(sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER) //同步模式下,判断喷印间隔是否设置合理
|
||||
{
|
||||
QSizeF size = QSizeF(sysPara->status.currPrintCol, sysPara->status.currPrintRow);
|
||||
float stroke,print_len_min;
|
||||
stroke = sysPara->para.printColDelay/sysPara->para.synPulseNumPerMm;
|
||||
print_len_min = stroke * size.width();
|
||||
if(print_len_min > sysPara->para.synTriggerPrintLenMm && !sysPara->para.charWidthSetEnable)
|
||||
{
|
||||
QMessageBox::information(this,tr("错误"),tr("喷印间隔过短,应高于%1!").arg(print_len_min));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/******2020/2/29 end*****/
|
||||
#ifndef QT_DEBUG
|
||||
if(!SIMULATE_PRINTING_MODE){
|
||||
if (!sysPara->status.reclainTankReachEnd) {
|
||||
return;
|
||||
}
|
||||
if((sysPara->status.statWarn & WARN_STATUS_HDINT)){
|
||||
QMessageBox::information(this,tr("错误"),tr("喷头盖未关,请先关喷头盖!"));
|
||||
return ;
|
||||
}
|
||||
if((sysPara->status.statWarn & WARN_STATUS_INK_SWINT)){
|
||||
QMessageBox::information(this,tr("错误"),tr("墨线未开,请先开墨线开关!"));
|
||||
return ;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if(sysPara->status.currPrintCol > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide)){
|
||||
QMessageBox::critical(0,tr("错误"),tr("当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度").arg(sysPara->status.currPrintCol).arg((MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide)));
|
||||
return false;
|
||||
}
|
||||
if(!((sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER)
|
||||
||((sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL
|
||||
||sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE)
|
||||
&& sysPara->para.eleEyeTriggerSynPrintEn))
|
||||
)
|
||||
{
|
||||
int dotNumPerCol = sysPara->status.currPrintRow*(1 + sysPara->para.printRowDelay) + sysPara->para.printColDelay;
|
||||
long printTmUs = 1.0f*dotNumPerCol*(1 + sysPara->para.charBold)*sysPara->status.currPrintCol*(2*sysPara->para.divideRatio)/(FPGA_SYS_HZ/1000000);
|
||||
if((printTmUs/1000 + 3) > (sysPara->para.printDelayMs)\
|
||||
&& (sysPara->para.timeTriggerPrintMode == TIME_TRIGGER_PRINT_MODE_HEAD_TO_HEAD)
|
||||
&& (sysPara->para.printTriggerMode == PRINT_TRIGGER_TIME )
|
||||
) // 在电眼方式下,是否需要判呢?
|
||||
{
|
||||
QMessageBox::critical(0,tr("错误"),tr("打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms").arg(printTmUs/1000).arg(sysPara->para.printDelayMs));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void MainWidget::onLabelFaultRusumePressed(){
|
||||
if(sysPara){
|
||||
@@ -2640,4 +2642,4 @@ void MainWidget::UpdateUIVersion(){
|
||||
QString Mac = QString::number(sysPara->status.machineMac);
|
||||
LogInfo::setRunStatusText(QString("Mac:%1").arg(Mac));
|
||||
LogInfo::showVerionInformation(Mac,VernonBach,fpgaVersion,STM32Ver);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user