You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

138 lines
4.2 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#ifndef _H_CMAINWIN_H_
#define _H_CMAINWIN_H_
#include <QMainWindow>
#include "ui_CMainWin.h"
#include "QUserBase.h"
#include "BaseSerialport.h"
#include <QTimer>
#include <QLabel>
#include "CDllCoreCtrl.h"
#include "CDllDetectorEngine.h"
#include "stationdb.h"
#include "IWfCtrl.h"
#include "WfColossus.h"
#include "AutoTrigger.h"
#include "QDetectorDesignerMgr.h"
#include "QTestModeWid.h"
#include "iCoreCtrl.h"
#include "QModelMangerUI.h"
#include "QAboutUI.h"
struct StationInfo
{
int m_PLCID{ 0 };
bool m_bRunEnable{ false };
QString strModelName;
};
class CMainWin : public QMainWindow, public IGuiCallback
{
Q_OBJECT
public:
CMainWin(QWidget *parent = Q_NULLPTR);
~CMainWin();
virtual void IOnReady() {}
virtual void IUpdateShow(const QString& skey) {};
virtual void INewCameraImage(const QVariantMap& vMap) {};
virtual void IAddWindows(const QString& sWinName, const QString& sShowId) {};
virtual void ISendDataToUI(emTpUiDataType dataType, const QString& camKey, void* pData) {}//弃用用IVariantMapToUI()替代
virtual void ICameraTrigger(bool bStartOrStop) {};//弃用用ICommInterval()替代
virtual void IDrawDefectToScene(const QString& szWinName, IImageObject::emTpDefectType defectType, QByteArray& data) {};
virtual void ISafeDataToUI(emTpUiDataType dataType, const QString& camKey, const QByteArray& data) {};
virtual void IWarning(int nWarningCode, void* data, int nDataLen) {};
virtual void ICommInterval(const char* szCom, int nCmd, BYTE* pData, int nDataLen) {};
virtual void IAlgorithmResult(const QVariantMap& varMap) {};
virtual void IVariantMapToUI(emTpUiDataType dataType, const QString& camKey, const QVariantMap& vMap);
virtual QVariant IGetVariantById(int id);
virtual void IIoStatesChanged(int nOldState, int nNewState) {};
virtual void ICommAchieved(const char* szCom, int nCmd, BYTE* pData, int nDataLen) {};
virtual WORD IGetWorkState() { return 0; };//心跳包中发送的用来控制是否触发的值返回0不触发返回1触发
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 onActionClicked();
QString genSavePath(QString modelName, QImage &img);
protected:
virtual void timerEvent(QTimerEvent *event);
virtual void closeEvent(QCloseEvent *event);
protected:
void onInitStatus();
void onUpdateStatus();
bool onInitCoreCtrl();
bool onInitDevice();
signals:
void sgSelModel(int, QString);
void sgSendChangeUI(QString, QString);
void sgShowLog(int, QString);
void sgShowImg(int, QImage);
private://中英翻译
void SearchQmFile(const QString & strDir);
void SetTranslator(const QString strPath);
void SetLanguage(QString strLangage);
void rmTranslator();
void readConfig();
void writeConfig();
private:
IDetectorUI* GetDesignerInterface() const;
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(int ID, QString strName);
private:
Ui::CMainWin ui;
IUserCtrl *m_pUserCtrl{ nullptr };
ISerialPortTool *m_pSerialPort{ nullptr };
QTimer m_HeartBit;
QVector<QTranslator* > m_VecTranPtr;
QString m_strCurLanguage{ "Chinese" };
StationInfo m_StationInfo_1;
StationInfo m_StationInfo_2;
//status 状态栏
int m_TimerID_Status{ 0 };
class QLabel *m_pLbCurrentTime;
class QLabel *m_pLbOnLine;
class QLabel *m_pLbConnect;
class QLabel *m_pLbUser;
class QLabel *m_pLbDiskSpace;
private:
CDllCoreCtrl* m_pDllCoreCtrl{nullptr};
CDllDetectorEngine* m_pDllDetectorEngine{nullptr};
QDetectorDesignerMgr* m_pDesignerMgr{nullptr};
ICoreCtrl* m_pCoreCtrl{nullptr};
IDetectorEngine* m_pDetectorEngine{nullptr};
StationDB *m_db{nullptr};
class AutoTrigger *m_pCameraTrig{nullptr};
class AutoTrigger *m_pStatusTrig{ nullptr };
class IWfCtrl *m_pWfCtrl{ nullptr };
class WfColossus *m_pColossus{ nullptr };
QTestModeWid m_testWid;
QModelMangerUI m_mangeWid;
QAboutUI m_aboutWid;
QString m_strUserName;
QString m_strComName;
};
#endif