#ifndef VISION_RECIPE_H
|
#define VISION_RECIPE_H
|
|
#include "IVisionRecipe.h"
|
#include "CornerDistProcess.h"
|
#include "BlSideData.h"
|
#include "CornerRcutProcess.h"
|
#include "ConfigVision.h"
|
#include "LocProcess.h"
|
#include "CutProcess.h"
|
#include "KDistProcess.h"
|
#include "GrindProcess.h"
|
#include "ThresProcess.h"
|
#include "HoleProcess.h"
|
|
typedef struct LineCameraSetting
|
{
|
DimensionDir eDir; //Ïà»úÀàÐÍ
|
int nCam; //Ïà»úÐòºÅ
|
int nScan; //ɨÃèºÅ
|
}LineCameraSetting;
|
|
//Åä·½Êý¾Ý¹ÜÀí
|
class CVisionRecipe : public IVisionRecipe
|
{
|
public:
|
CVisionRecipe();
|
virtual ~CVisionRecipe();
|
|
static CVisionRecipe* getInstance(void);
|
|
public:
|
//1. ÉèÖÃÅ䷽·¾¶
|
virtual int setWorkDir(const char *pszPath);
|
|
//2. ±£´æ
|
virtual int save(void);
|
|
//3. ´ò¿ª
|
virtual int open(void);
|
|
//4. »ñÈ¡²É¼¯¿¨
|
virtual CGrabberControl* getGrabberControl(int iCam);
|
|
//5. ÉèÖòɼ¯¿ª
|
virtual int setGrabberControl(CGrabberControl *pGrabberControl, int iCam);
|
|
//6. Ïà»úÏà»úÐÅÏ¢
|
virtual int setCameraSetting(DimensionDir eDir, int iCam, int iScan);
|
|
//7. ³õʼ»¯
|
virtual int init(void);
|
|
//8. »ñÈ¡SideData
|
virtual CBlSideData* getSideData(DimensionDir eDir);
|
|
//9. ÉèÖÃÅä·½ÀàÐÍ
|
virtual int setRecipeType(int nType);
|
|
//10. »ñÈ¡Åä·½ÀàÐÍ
|
virtual int getRecipeType(void);
|
|
//11. ÊÓ¾õÆôÓÃ
|
virtual bool getVisionUse(void);
|
|
//12.ÉèÖÃÇøÓò
|
virtual void setFrame(int x1, int y1, int x2, int y2);
|
bool getFrame(int &x1, int &y1, int &x2, int &y2);
|
|
//13. ÉèÖÃÅä·½Ãû³Æ
|
virtual int setVisionName(const char* pszPath);
|
virtual int setProductNo(const char* pszNo);
|
|
//14. »ñÈ¡Åä·½Ãû³Æ
|
virtual std::string getVisionName();
|
std::string getProductNo(void);
|
|
//15. ÉèÖÃÆÁÄ»³ß´ç
|
virtual void setGlassSize(int x, int y);
|
virtual BOOL getVisionSetOpen(void);
|
|
public:
|
//1. »ñÈ¡²É¼¯Ïà»úµÄÐòºÅ
|
int getCameraIndex(DimensionDir eDir);
|
|
//2. »ñÈ¡²É¼¯µÄSCAN
|
int getCameraScan(DimensionDir eDir);
|
|
//3. »ñÈ¡Êý¾Ý
|
CCornerDistProcess* getCornerDistProcess(DimensionDir eDir);
|
|
//4. ÉèÖô°Ìå
|
void SetMainDlg(CDialogEx *pDlg);
|
|
//5. »ñÈ¡´°Ìå
|
CDialogEx* GetMainDlg(void);
|
|
//6. »ñÈ¡Êý¾Ý
|
CCornerRcutProcess* getCornerRcutProcess(DimensionDir eDir);
|
CLocProcess* getLocProcess(DimensionDir eDir);
|
CCutProcess* getCutProcess(DimensionDir eDir);
|
CKDistProcess* getKDistProcess(DimensionDir eDir);
|
CGrindProcess* getGrindProcess(DimensionDir eDir);
|
CThresProcess* getThresProcess(DimensionDir eDir);
|
CHoleProcess* getHoleProcess(DimensionDir eDir);
|
|
|
//7. »ñÈ¡²ÎÊý
|
ScanSetting getScanSetting(void);
|
void setScanSetting(ScanSetting inf);
|
|
//8. ±£´æÊý¾Ý
|
void saveVisionConfig(void);
|
void readVisionConfig(void);
|
|
//9. »ñÈ¡Èí¼þµÄʹÄÜ
|
VisionUseInfo getVisionUse(DimensionDir eDir);
|
void setVisionUse(VisionUseInfo inf, DimensionDir eDir);
|
|
//10. »ñÈ¡ÏÔʾ
|
VisionDisplayInfo getVisionDisplay(void);
|
void setVisionDisplay(VisionDisplayInfo inf);
|
|
//11. »ñÈ¡Key
|
KeyDebugInfo getKeyInfo(void);
|
void setKeyInfo(KeyDebugInfo info);
|
|
//12. ´ò¿ª
|
void setVisionSetOpen(BOOL isOpen);
|
|
//13. ÉèÖÃ/»ñȡƽ̨
|
void setStage(int nStage);
|
int getStage(void);
|
|
//14. ±£´æ·Ö±æÂÊ
|
void saveResolution(void);
|
void loadResolution(void);
|
|
private:
|
bool m_isInit;
|
std::string m_workDir;
|
CGrabberControl *m_pGrabberControl[MAX_CAMERA_COUNT];
|
std::map<int, LineCameraSetting*> m_mapLineCameraSetting;
|
CCornerDistProcess *m_pCornerDistProcess[DIMENSION_NONE];
|
CBlSideData *m_pBlSideData[DIMENSION_NONE]; //¼ì²â½á¹û
|
CCornerRcutProcess *m_pCornerRcutProcess[DIMENSION_NONE];
|
CLocProcess *m_pLocProcese[DIMENSION_NONE];
|
|
CCutProcess *m_pCutProcess[DIMENSION_NONE];
|
CKDistProcess *m_pKDistProcess[DIMENSION_NONE];
|
CGrindProcess *m_pGrindProcess[DIMENSION_NONE];
|
CThresProcess *m_pThresProcess[DIMENSION_NONE];
|
|
CHoleProcess *m_pHoleProcess[DIMENSION_NONE];
|
|
|
int m_nRecipeType;
|
std::string m_strVisionName;
|
std::string m_strProductNo;
|
|
VisionDisplayInfo m_visionDisplayInfo;
|
VisionUseInfo m_visionUseInfo[DIMENSION_NONE];
|
|
CDialogEx *m_pMainDlg;
|
|
ScanSetting m_mScanSetting;
|
CConfigVision m_configVision;
|
|
CStdioFile m_recipeFile;
|
KeyDebugInfo m_keyInfo;
|
|
BOOL m_isOpenVisionDlg;
|
|
int m_nFrameX1;
|
int m_nFrameY1;
|
int m_nFrameX2;
|
int m_nFrameY2;
|
|
int m_nStage; //ƽ̨
|
|
CRITICAL_SECTION m_criticalSection;
|
|
private:
|
inline void Lock() { EnterCriticalSection(&m_criticalSection); }
|
inline void Unlock() { LeaveCriticalSection(&m_criticalSection); }
|
|
//1. ÊÍ·Å
|
void release(void);
|
|
//2. ÊÍ·ÅÊý¾Ý
|
void releaseLineCameraSetting(void);
|
|
//3. ´´½¨CornerDistProcess
|
void createAllCornerDistProcess(void);
|
void createAllCornerRcutProcess(void);
|
void createAllLocProcess(void);
|
void createCutProcess(void);
|
void createKDistProcess(void);
|
void createGrindProcess(void);
|
void createThresProcess(void);
|
void createHoleProcess(void);
|
|
//4. ÊÍ·ÅÊý¾Ý
|
void releaaseAllCornerDistProcess(void);
|
void releaseAllCornerRcutProcess(void);
|
void releaseAllLocProcess(void);
|
void releaseAllCutProcess(void);
|
void releaseAllKDistProcess(void);
|
void releaseAllGrindProcess(void);
|
void releaseAllThresProcess(void);
|
void releaseAllHoleProcess(void);
|
|
//5. ±£´æÊý¾Ý
|
int saveRecipeFile(std::string filePath);
|
|
//6. ·´ÐòÁл¯
|
int openRecipeFile(std::string filePath);
|
|
//7. ´´½¨SideDataÊý¾Ý
|
void createSideData(void);
|
|
//8. ÊÍ·ÅÊý¾Ý
|
void releaaseAllSideData(void);
|
|
//9. ±£´æÊý¾Ý
|
int WriteRecipeVisionFile(void);
|
|
//10. ¶ÁÈ¡Îļþ
|
void ReadRecipeFile(void);
|
|
//11. ½âÊÍÊý¾Ý
|
// void DecodeRecipeText(CString strText);
|
|
//12. ½âÊÍÊý¾Ý
|
void DecodeJson(Json::Value jsFileRoot);
|
};
|
|
#endif
|