主要功能可用

This commit is contained in:
2025-10-21 11:11:52 +08:00
parent f88b815723
commit cda1641f97
250 changed files with 245573 additions and 533279 deletions

View File

@@ -18,18 +18,26 @@ int TransportPosMaxY = 0;
int OldRollerPos[2][2]={{0,0},{0,0}};
QImage Brush[2];
QElapsedTimer TmpTime;
P01_MianPage::P01_MianPage(QWidget *parent) :
QWidget(parent),
ui(new Ui::P01_MianPage)
ui(new Ui::P01_MianPage),
mObjLoader(nullptr),
m_workerThread(nullptr),
m_workerLoader(nullptr),
m_loadingStep(0),
UIRefresh_Timer(nullptr),
TrailRefresh_Timer(nullptr)
{
ui->setupUi(this);
QTimer::singleShot(10, this, &P01_MianPage::PageInit);
// QTimer::singleShot(1000, this, &P01_MianPage::Show3D);
}
qint64 JgTime;
void P01_MianPage::PageInit()
{
TmpTime.start();
QPixmap pix(":/Icos/Icos/Sursor.png");
QCursor custom(pix, pix.width()/2, pix.height()/2);
setCursor(custom);
@@ -45,19 +53,63 @@ void P01_MianPage::PageInit()
ui->Gif_Radar->show();
//所用定时器初始化
QTimer* UIRefresh_Timer = new QTimer(this);
UIRefresh_Timer = new QTimer(this);
connect(UIRefresh_Timer, &QTimer::timeout, this, &P01_MianPage::UIRefreshTimeOut);
UIRefresh_Timer->setInterval(100); // 设置定时器间隔为 1000 毫秒1 秒)
UIRefresh_Timer->start();
//所用定时器初始化
QTimer* TrailRefresh_Timer = new QTimer(this);
TrailRefresh_Timer = new QTimer(this);
connect(TrailRefresh_Timer, &QTimer::timeout, this, &P01_MianPage::TrailRefreshTimeOut);
TrailRefresh_Timer->setInterval(1000); // 设置定时器间隔为 1000 毫秒1 秒)
TrailRefresh_Timer->start();
qDebug()<<"初始化执行完成后,消耗时间"<<TmpTime.elapsed();
JgTime = TmpTime.elapsed();
}
P01_MianPage::~P01_MianPage()
{
// 安全清理线程和资源
if (m_workerThread && m_workerThread->isRunning()) {
m_workerThread->quit();
m_workerThread->wait(1000); // 等待1秒
if (m_workerThread->isRunning()) {
m_workerThread->terminate(); // 强制终止
}
m_workerThread->deleteLater();
m_workerThread = nullptr;
}
// 清理ObjLoader对象
if (mObjLoader) {
mObjLoader->deleteLater();
mObjLoader = nullptr;
}
if (m_workerLoader) {
m_workerLoader->deleteLater();
m_workerLoader = nullptr;
}
// 清理PageInit中创建的定时器
if (UIRefresh_Timer) {
UIRefresh_Timer->stop();
UIRefresh_Timer->deleteLater();
UIRefresh_Timer = nullptr;
}
if (TrailRefresh_Timer) {
TrailRefresh_Timer->stop();
TrailRefresh_Timer->deleteLater();
TrailRefresh_Timer = nullptr;
}
// 清理QMovie对象
if (ui->Gif_Radar->movie()) {
ui->Gif_Radar->movie()->stop();
delete ui->Gif_Radar->movie();
ui->Gif_Radar->setMovie(nullptr);
}
delete ui;
}
void P01_MianPage::Show3D()
@@ -86,9 +138,9 @@ void P01_MianPage::Show3D()
m_workerLoader = new ObjLoader();
m_workerLoader->moveToThread(m_workerThread);
// 连接预处理完成信号(确保ObjLoader类中已声明preprocessDone信号
connect(m_workerLoader, SIGNAL(preprocessDone(QString, QVector3D, float)),
this, SLOT(onPreprocessResult(QString, QVector3D, float)));
// 连接预处理完成信号(使用现代信号槽语法
connect(m_workerLoader, &ObjLoader::preprocessDone,
this, &P01_MianPage::onPreprocessResult);
// 处理单个设备预处理完成
connect(this, &P01_MianPage::preprocessFinished, this, &P01_MianPage::onPreprocessFinished);
@@ -104,11 +156,21 @@ void P01_MianPage::Show3D()
// 所有设备加载完成
connect(this, &P01_MianPage::allDevicesLoaded, this, [=]() {
// 清理工作线程
m_workerThread->quit();
m_workerThread->wait();
m_workerLoader->deleteLater();
if (m_workerThread && m_workerThread->isRunning()) {
m_workerThread->quit();
m_workerThread->wait(1000); // 等待1秒
if (m_workerThread->isRunning()) {
m_workerThread->terminate(); // 强制终止
}
m_workerThread->deleteLater();
m_workerThread = nullptr;
}
// 清理工作加载器
if (m_workerLoader) {
m_workerLoader->deleteLater();
m_workerLoader = nullptr;
}
// 启动旋转定时器
QTimer *RotateDev_Timer = new QTimer(this);
@@ -385,10 +447,10 @@ void P01_MianPage::ProgressBar_LCD(QProgressBar *QPB,QLCDNumber *QLCD,QString No
QLCD->display(QString::number(Value,'f',2));
}
void P01_MianPage::PB_Refresh(QString Dev){
uint32_t PB_Group1 = getNodeValue("PB_Curr_"+Dev+".PageGroup1") .toUInt();
uint32_t PB_Group2 = getNodeValue("PB_Curr_"+Dev+".PageGroup2") .toUInt();
uint32_t PB_MotorTemp = getNodeValue("PB_Temp_"+Dev+".PageGroup") .toUInt();
uint16_t PercentageCurU = static_cast<uint16_t>(PB_Group1 >> 16); // 高 16 位
uint16_t PercentageCurV = static_cast<uint16_t>(PB_Group1 & 0xFFFF);// 低 16 位
uint16_t PercentageCurW = static_cast<uint16_t>(PB_Group2 >> 16); // 高 16 位