#ifndef _H_CMAINWIN_H_ #define _H_CMAINWIN_H_ #include #include "ui_CMainWin.h" #include "QUserBase.h" #include "BaseSerialport.h" #include #include #include "CDllCoreCtrl.h" #include "CDllDetectorEngine.h" #include "stationdb.h" #include "AutoTrigger.h" #include "QTestModeWid.h" #include "iCoreCtrl.h" #include "QModelMangerUI.h" #include "QAboutUI.h" #include "QDeviceMgrUI.h" #include "QCamSetDlg.h" #include "QCameraMgrUI.h" #include "lpdesigner.h" #include "CDllDesigner.h" #include "QCryptokeyUI.h" #include "lpImageCaliUI.h" struct StationInfo { int m_PLCID{ 0 }; bool m_bRunEnable{ false }; QString strModelName; }; class CMainWin : public QMainWindow { Q_OBJECT public: CMainWin(QWidget *parent = Q_NULLPTR); ~CMainWin(); //接收图像回调函数 void INewCameraImage(const QString& camKey, QImage img); //接收算法检测结果回调函数 void IVariantMapToUI(const QString& camKey, const QVariantMap& vMap); //传输算法参数回调函数 QVariant IGetVariantById(int id); //Engine算法回调函数 void IEngineResult(QVariantMap vMap); bool sendResult(int nID, double angleValue, double centerX, double centerY); public: Q_SLOT void onAppanalysis(SComFrame frame); void onHeartComm(SComFrame &frame); Q_SLOT void onHeardBit(); Q_SLOT void onShowLog(int nID, QString strMsg); Q_SLOT void onPopMenu(const QPoint& pt); Q_SLOT void onSlotAddNewModel(QString strName); Q_SLOT void onSlotDelOldModel(QString strName); Q_SLOT void onActionClicked(); QString genSavePath(QString modelName, QImage &img); QString genSaveSrcImgPath(QString modelName, QImage &img); protected: virtual void timerEvent(QTimerEvent *event); virtual void closeEvent(QCloseEvent *event); virtual void changeEvent(QEvent *event); protected: void onInitStatus(); void onUpdateStatus(); bool onInitCoreCtrl(); void onInitDevice(); void onInitUser(); void onInitSerial(); void onInitUI(); QString SecondTimeString(quint64 value); Q_SLOT void onLineseCheck(bool bFlag); signals: void sgSelModel(int, QString); void sgSendChangeUI(QString, QString); void sgShowLog(int, QString); void sgShowImg(int, QImage); void sgShowSrcImg(QString strkey, QImage); private://中英翻译 void SearchQmFile(const QString & strDir); void SetTranslator(const QString strPath); void SetLanguage(QString strLangage); void rmTranslator(); void readConfig(); void writeConfig(); private: void saveSolution(); int lastNum(QString str); Q_SLOT void onMainFrameClose(); Q_SLOT void onSnapImage(int nCamera = -1); Q_SLOT void onTrigImage(); Q_SLOT void onSelModel(int, QString); Q_SLOT void onChangeUI(QString strUsr, int nLevel); Q_SLOT void onLogInOut(QString strName, int level, int state); Q_SLOT void onTestMode(int); Q_SLOT void onShowImage(int ID, QImage img); Q_SLOT void onShowName(QString ID, QString strName); Q_SLOT void onLanguageChange(QString strLanguage);//中英文切换功能 private: Ui::CMainWin ui; QTimer m_HeartBit; QVector m_VecTranPtr; QString m_strCurLanguage{ "Chinese" }; StationInfo m_StationInfo_1; StationInfo m_StationInfo_2; //status 状态栏 int m_TimerID_Status{ 0 }; QLabel *m_pLbCurrentTime{ nullptr }; QLabel *m_pLbOnLine{ nullptr }; QLabel *m_pLbConnect{ nullptr }; QLabel *m_pLbUser{ nullptr }; QLabel *m_pLbDiskSpace{ nullptr }; IUserCtrl *m_pUserCtrl{ nullptr };//用户登录管理 ISerialPortTool *m_pSerialPort{ nullptr };//串口通讯模块 QLabel* m_pLabelInfo{ nullptr }; private: //相机图像核心模块 CDllCoreCtrl* m_pDllCoreCtrl{nullptr}; ICoreCtrl* m_pCoreCtrl{nullptr}; //标定模块 CDllDesigner* m_pDllDesigner{ nullptr }; IDetectorUI* m_pDesigner{ nullptr }; //engine模块 算法管理 CDllDetectorEngine* m_pDllDetectorEngine{nullptr}; IDetectorEngine* m_pDetectorEngine{nullptr}; private: StationDB *m_db{nullptr}; class AutoTrigger *m_pCameraTrig{nullptr}; class AutoTrigger *m_pStatusTrig{ nullptr }; QTestModeWid m_testWid; QModelMangerUI m_mangeWid; QAboutUI m_aboutWid; QDeviceMgrUI m_devMgrWid; QCamSetDlg m_camSetWid; QString m_strUserName; QString m_strComName; QCameraMgrUI m_CamMgrUI; class IWfCtrl *m_pWfCtrl{ nullptr }; quint64 m_tickCount{ 0 }; int m_heartTimeOut{ 0 }; bool m_bPLCConnect{ false }; QCryptokeyUI *m_pCheckLineseUI{ nullptr }; lpImageCaliUI* m_pImageCaliUI{ nullptr }; }; #endif