#ifndef P01_MianPage_H #define P01_MianPage_H #include #include #include #include #include #include #include #include #include #include #include namespace Ui { class P01_MianPage; } class P01_MianPage : public QWidget { Q_OBJECT public: explicit P01_MianPage(QWidget *parent = nullptr); ~P01_MianPage(); void uiInitHaulSpeed(int Max); void uiInitMining(int Max,int Min); void uiInitTransportPos(int MaxX,int MaxY); void uiSetHaulSpeed(int SpeedL,int SpeedR); void uiSetMining(float CenterHeight,uint16_t Roller_Diameter_mm); void uiSetTransportPos(int rx,int ry); void uiRollerPosition(uint8_t Index,uint16_t aX,uint16_t aY); void PB_Refresh(QString Dev); void SetProgressBar(QProgressBar *PB,uint16_t Value,uint8_t ColorIndex,QStringList Color); void SetStyleStr(QLabel *L,bool Status,QString TStr,QString FStr); void SetStyleStr(QLabel *L,bool Extend,bool Shorten,QStringList StyStr); void ProgressBar_LCD(QProgressBar *QPB,QLCDNumber *QLCD,QString NodeID,QString NodeID_Value,QStringList Colors); private slots: void UIRefreshTimeOut(); void TrailRefreshTimeOut(); void PageInit(); void Show3D(); void RotateDev(); void onPreprocessFinished(const QString& deviceName); void onPreprocessResult(const QString& deviceName, QVector3D center, float radius); signals: void preprocessFinished(const QString& deviceName); void allDevicesLoaded(); private: Ui::P01_MianPage *ui; QString DevName3D = ""; uint16_t mAngle = 0; ObjLoader *mObjLoader; QThread* m_workerThread; ObjLoader* m_workerLoader; QMap> m_modelPreprocessResults; // 存储预处理结果 QStringList m_pendingDevices; // 待加载设备队列 int m_loadingStep; // 当前加载步骤 // UI更新相关成员变量 QTimer* UIRefresh_Timer; // UI刷新定时器 QTimer* TrailRefresh_Timer; // 轨迹刷新定时器 bool m_isProcessingUIUpdate = false; // UI更新状态标志 QElapsedTimer m_lastUpdateTime; // 更新时间记录 QMutex m_uiUpdateMutex; // UI更新互斥锁 }; #endif // P01_MianPage_H