#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); private: bool m_isInit; std::string m_workDir; CGrabberControl *m_pGrabberControl[MAX_CAMERA_COUNT]; std::map 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; 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