last week

This commit is contained in:
2026-06-15 09:57:51 +08:00
parent a9341db9c8
commit be39714c5e
16 changed files with 423 additions and 181 deletions
+157 -33
View File
@@ -53,25 +53,27 @@ InkJetPrinter::InkJetPrinter(QWidget* parent)
InkJetPrinter::~InkJetPrinter()
{
if(m_serialThreadFPGA->isRunning()){
m_serialThreadFPGA->requestInterruption();
m_serialThreadFPGA->quit();
m_serialThreadFPGA->wait();
}
if(m_serialThreadSTM32->isRunning()){
m_serialThreadSTM32->requestInterruption();
m_serialThreadSTM32->quit();
m_serialThreadSTM32->wait();
}
if(serialFPGA)
if(serialFPGA){
delete serialFPGA;
if(serialSTM32)
serialFPGA = nullptr;
}
if(serialSTM32){
delete serialSTM32;
serialSTM32 = nullptr;
}
}
void InkJetPrinter::init()
{
timer = new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(timerHandler()));
timer->start(10);
{
// 创建自定义子控件(原逻辑不变)
m_MainWidget = new MainWidget(this);
m_TestPrintWidget = new TestPrintWidget(this);
@@ -214,6 +216,11 @@ void InkJetPrinter::init()
connect(serialFPGA,SIGNAL(getFPGAXXXDay(unsigned char*)),this,SLOT(saveFPGAXXXDay(unsigned char*)));
connect(serialFPGA,SIGNAL(queueSizeFPGA(int)),this,SLOT(showFPGAqueuesize(int)));
connect(serialFPGA,SIGNAL(queueFPGASizeSIG(int)),this,SLOT(showqueueFPGAsize(int)));
connect(serialFPGA, &Serial::FPGABuildDat, this, [this](int buildTime){
sysPara->status.build_dat.builTime = quint16(buildTime);
qDebug() << "FPGA build time: " << buildTime;
LogInfo::setRunStatusText(QString("FPGA build time: %1").arg(buildTime));
});
m_serialThreadSTM32 = new QThread();
serialSTM32 = new Serial("/dev/ttyAS2");
@@ -232,10 +239,19 @@ void InkJetPrinter::init()
connect(serialSTM32,SIGNAL(powerOffReady()),m_MainWidget,SLOT(powerOffConfirmed()));
connect(serialSTM32,SIGNAL(queueSizeSTM32(int)),this,SLOT(showSTM32queuesize(int)));
connect(serialSTM32, &Serial::STM32Connected, this, [this](bool ok, QString errorMsg){
if(ok){
LogInfo::setRunStatusText("Connected to STM32 serial port");
}
else{
LogInfo::setRunStatusText("STM32 serial port connection failed: " + errorMsg);
}
});
connect(m_SystemManage,SIGNAL(sigToCloseSerialFPGA()),this,SLOT(closeSerialFPGA()));
connect(m_SystemManage,SIGNAL(sigToCloseSerialSTM32()),this,SLOT(closeSerialSTM32()));
connect(m_SystemManage,SIGNAL(restartSerial()),this,SLOT(restartSerialPort()));
connect(m_SystemManage, &SystemManage::rebootAppAcquired, this, &InkJetPrinter::rebootApp);
flagOfSerialThreadStratEn = true;
connect(m_SystemManage,SIGNAL(enableClick(bool)),this,SLOT(enableInkJetTabClick(bool)));
@@ -252,25 +268,15 @@ void InkJetPrinter::init()
connect(m_SystemUpdate,&SystemUpdate::sendUpDateChARLIBSignal,m_SystemManage,&SystemManage::on_pushButtonUpdateCharLib_pressed);
connect(m_SystemUpdate,&SystemUpdate::sendButtonClickedSignal,this,&InkJetPrinter::getSystemManageWidgetButtonClickSlot);
// 原注释的默认页面设置(按需启用)
//m_StackedWidget->setCurrentWidget(m_ErCodeSettingsWidget);
//m_StackedWidget->setCurrentWidget(m_MainInterfaceWidget);
connect(m_BarCodeDlg, &QBarCode::sig_barCodeClose, this, [=](){
m_StackedWidget->setCurrentWidget(m_TestPrintWidget);
});
connect(m_BarCodeDlg, &QBarCode::sig_barCodeClose,
m_TestPrintWidget, &TestPrintWidget::slt_BarCodeItemDone);
connect(m_QRCodeDlg, &dlgQrCode::sig_qrCodeClose, this, [=](){
m_StackedWidget->setCurrentWidget(m_TestPrintWidget);
});
connect(m_QRCodeDlg, &dlgQrCode::sig_qrCodeClose,
m_TestPrintWidget, &TestPrintWidget::slt_QRCodeItemDone);
sysPara->status.machineMac = m_MainInstruction->dlgInputAddr->jd.addr;
sysPara->para.rfidCountDown = 5;
timer = new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(timerHandler()));
timer->start(10);
}
// type 1,2: 分别显示计数器1或2的界面
@@ -747,10 +753,6 @@ void InkJetPrinter::timerHandler(void){
// sysPara->devOp->controlRedLight(false);
}
if(pulse_1s) {
qDebug() << "FPGA version: build time: " << sysPara->status.build_dat.builTime << " inkDot: " << sysPara->status.build_dat.inkDot;
}
sysPara->status.gearPumpRunSpeed = (PulseCnt * 60 * 1000) / (500 * 2);
if(!sysPara->para.gearPumpEnable)
sysPara->status.PRESSURE *= 5; //响应群众号召,数值放大五倍
@@ -1253,7 +1255,7 @@ void InkJetPrinter::timerHandler(void){
sysPara->status.waitHightVolOff--;
if(sysPara->status.waitHightVolOff==0){
sysPara->devOp->highVoltageCtrl(0);
// ui->tabMainWindow->setRunStatus(tr("停止打印,自动关闭高压."));
m_MainWidget->setRunStatus(tr("停止打印,自动关闭高压."));
}
}
@@ -1679,7 +1681,7 @@ void InkJetPrinter::saveFPGAStatus(unsigned char *data){
}
else target[i]=data[7+i];
}
if(sysPara->status.dummy != sysPara->status.isPrinting){
if(sysPara->status.dummy != sysPara->status.isPrinting && sysPara->status.selfCheckDone){
sysPara->status.isPrinting = sysPara->status.dummy;
m_MainWidget->updatePrintDisplayLabel();
}
@@ -1795,6 +1797,8 @@ void InkJetPrinter::saveSTM32Version(unsigned char *data){
QString STM32Ver = QString("%1.%2.%3").arg((sysPara->status.stm32Verion>>16)&0xFF)
.arg((sysPara->status.stm32Verion>>8) & 0xFF).arg(sysPara->status.stm32Verion&0xFF);
qDebug()<<"STM32Ver:"<<STM32Ver;
LogInfo::setRunStatusText(QString("STM32Ver: %1").arg(STM32Ver));
}
void InkJetPrinter::saveSTM32Time(unsigned char *data){
@@ -1819,8 +1823,8 @@ void InkJetPrinter::saveSTM32Time(unsigned char *data){
QString Second = QString("%1").arg(datatime[7], 2, 10, QChar('0'));
QString date = Year+"-"+Month+"-"+Day+" "+Hour+":"+Minute+":"+Second;
qDebug()<<QString("readSTM32Date: %1").arg(date);
// LogInfo::setRunStatusText(QString("readSTM32Date: %1").arg(date));
// LogInfo::setRunStatusText(QString("readSTM32Week: %1").arg(Week));
LogInfo::setRunStatusText(QString("readSTM32Date: %1").arg(date));
LogInfo::setRunStatusText(QString("readSTM32Week: %1").arg(Week));
m_SystemManage->PowerOnSetTime(date);
}
@@ -1846,24 +1850,34 @@ void InkJetPrinter::closedSerial(){
void InkJetPrinter::closeSerialFPGA(){
if(m_serialThreadFPGA->isRunning()){
m_serialThreadFPGA->requestInterruption();
m_serialThreadFPGA->quit();
m_serialThreadFPGA->wait();
}
if(serialFPGA)
if(serialFPGA){
delete serialFPGA;
serialFPGA = nullptr;
}
}
void InkJetPrinter::closeSerialSTM32(){
if(m_serialThreadSTM32->isRunning()){
m_serialThreadSTM32->requestInterruption();
m_serialThreadSTM32->quit();
m_serialThreadSTM32->wait();
}
if(serialSTM32)
if(serialSTM32){
delete serialSTM32;
serialSTM32 = nullptr;
}
}
void InkJetPrinter::restartSerialPort(){
closeSerialFPGA();
closeSerialSTM32();
serialFPGA = new Serial("/dev/ttyAS5");
serialFPGA->moveToThread(m_serialThreadFPGA);
connect(serialFPGA,SIGNAL(sendQueueData(int,int,unsigned char*,int,int)),sysPara->devOp,SLOT(resendFPGADate(int,int,unsigned char*,int,int)));
@@ -1879,7 +1893,11 @@ void InkJetPrinter::restartSerialPort(){
connect(serialFPGA,SIGNAL(getFPGAXXXDay(unsigned char*)),this,SLOT(saveFPGAXXXDay(unsigned char*)));
connect(serialFPGA,SIGNAL(queueSizeFPGA(int)),this,SLOT(showFPGAqueuesize(int)));
connect(serialFPGA,SIGNAL(queueFPGASizeSIG(int)),this,SLOT(showqueueFPGAsize(int)));
connect(serialFPGA, &Serial::FPGABuildDat, this, [this](int buildTime){
sysPara->status.build_dat.builTime = quint16(buildTime);
qDebug() << "FPGA build time: " << buildTime;
LogInfo::setRunStatusText(QString("FPGA build time: %1").arg(buildTime));
});
serialSTM32 = new Serial("/dev/ttyAS2");
serialSTM32->moveToThread(m_serialThreadSTM32);
@@ -1894,6 +1912,14 @@ void InkJetPrinter::restartSerialPort(){
connect(serialSTM32,SIGNAL(powerOffReady()),m_MainWidget,SLOT(powerOffConfirmed()));
connect(m_serialThreadSTM32,&QThread::started,serialSTM32,&Serial::startInitSlot);
connect(serialSTM32,SIGNAL(queueSizeSTM32(int)),this,SLOT(showSTM32queuesize(int)));
connect(serialSTM32, &Serial::STM32Connected, this, [this](bool ok, QString errorMsg){
if(ok){
LogInfo::setRunStatusText("Connected to STM32 serial port");
}
else{
LogInfo::setRunStatusText("STM32 serial port connection failed: " + errorMsg);
}
});
flagOfSerialThreadStratEn = true;
}
@@ -2356,6 +2382,104 @@ void InkJetPrinter::viscosity_timerHandler()
firstTime = 0;
}
void InkJetPrinter::rebootApp()
{
if(!sysPara->status.selfCheckDone)
sysPara->status.selfCheckDone = true;
this->setDisabled(true);
m_StackedWidget->setCurrentWidget(m_MainWidget);
// emit setDisableAll();
if(!TEST_MODE && sysPara->para.flagOfReclaimPumEnable){
for(int i=15;i>11;i--)
{
if(i == 15){
sysPara->status.isPumpValveControledByHand = true; //停止自动
sysPara->devOp->controlInkValve(true);
sysPara->devOp->controlInkValvePWM(true);
sysPara->devOp->controlReclaimPump(true,true);
sysPara->devOp->controlViscosityPump(true);
sysPara->devOp->controlCycleValve(true);
sysPara->para.gearPumpValue = 0;
sysPara->devOp->WriteMoterPump();
}
if(i == 12){
sysPara->devOp->controlInkValve(false);
sysPara->devOp->controlInkValvePWM(false);
}
m_MainWidget->setRunStatus(tr("正在准备重启,请等待%1秒...............").arg(i));
MySleep(1000);
}
}
sysPara->devOp->controlReclaimTankOpen(true);
sysPara->status.isPumpValveControledByHand = true; //停止自动
if(sysPara->para.gearPumpEnable ){
if(!sysPara->para.flagOfReclaimPumEnable){
sysPara->para.gearPumpValue = 360;
sysPara->devOp->WriteMoterPump();
}
else{
sysPara->devOp->controlReclaimPump(true,false);
sysPara->para.gearPumpValue = 0;
sysPara->devOp->WriteMoterPump();
}
}
else{
sysPara->para.reclaimPumpPWMWidth = 95;
sysPara->devOp->controlReclaimPump(true,true);
}
if(!sysPara->devOp->isViscosityPumpOpen())
sysPara->devOp->controlViscosityPump(true);
sysPara->devOp->controlCycleValve(true);
sysPara->devOp->controlInkValve(false); //关供墨
sysPara->devOp->controlInkValvePWM(false); //关供墨
if(!TEST_MODE){
for(int i=11;i>7;i--)
{
if(i==9)
sysPara->devOp->controlReclaimTankOpen(false);
m_MainWidget->setRunStatus(tr("正在准备重启,请等待%1秒...............").arg(i));
MySleep(1000);
}
}
if(!sysPara->status.lostCommuFlag){
sysPara->para.calandar_and_dat.cnt1CurrValue = QString::number(sysPara->status.calandar_and_dat.cnt1CurrValue,16).toInt();
sysPara->para.calandar_and_dat.cnt2CurrValue = QString::number(sysPara->status.calandar_and_dat.cnt2CurrValue,16).toInt();
sysPara->para.Counter3.cnt3CurrValue = QString::number(sysPara->status.Status_Counter3.cnt3CurrValue,16).toInt();
m_MainWidget->updateTotalCnt(0);
sysPara->saveParaToFile(); // 关机前将相关配置保存
}
sysPara->status.powerOffAppending = false;
if(!TEST_MODE){
for(int i=7;i>0;i--)
{
if(i == 5)
sysPara->devOp->controlReclaimTankClose(true);
if(i == 4){
sysPara->devOp->controlViscosityPump(false);
sysPara->devOp->controlCycleValve(false);
sysPara->devOp->controlReclaimPump(false,false);
sysPara->para.gearPumpValue = 0;
sysPara->devOp->WriteMoterPump();
}
m_MainWidget->setRunStatus(tr("正在准备重启,请等待%1秒...............").arg(i));
MySleep(1000);
}
}
sysPara->saveParaToFile(); // 关机前将相关配置保存
sysPara->saveRFIDPara();
MySleep(200);
system("sync");//缓存同步
QCoreApplication::quit();
}
void InkJetPrinter::handleInitedPID()
{
PID_init();