#pragma once #define C_MACHINE_EXPORTS #include "Machine.h" #include "CDieBondFsm.h" #include "CMessageBox.h" #include "CPrManage.h" #include "dt.h" namespace ns_module { class __declspec(dllexport) CCamerAndLamp { private: static CCamerAndLamp* m_instance; CManageDB* m_pCManageDB = nullptr; Machine* m_pMachine = nullptr; CCameraManage* m_pCameraManage = nullptr; CBondHead* m_pBondHead = nullptr; CWaferTable* m_pWaferTable = nullptr; CWaferHead* m_pWaferHead = nullptr; CTransferTable* m_pWaferTransferTable = nullptr; CTransferTable* m_pWaffleTransferTable = nullptr; CResources* m_pResource = nullptr; CDieBondFsm* m_pDieBondFsm = nullptr; public: static CCamerAndLamp* GetInstance(); CCamerAndLamp(); //设置图像为连续更新 long VideoStart(int iCameraId); //设置图像为暂停更新 long VideoStop(int iCameraId); /// /// 设置红光 /// /// 相机Id /// 灯光值 /// 成功返回0,否则返回错误码 long SetRedLight(int iCameraId, int LightValue); /// /// 设置绿光 /// /// 灯光值 /// 成功返回0,否则返回错误码 long SetGreenLight(int iCameraId, int LightValue); /// /// 设置蓝光 /// /// 相机Id /// 灯光值 /// 成功返回0,否则返回错误码 long SetBlueLight(int iCameraId, int LightValue); /// /// 设置点光 /// /// 相机Id /// 灯光值 /// 成功返回0,否则返回错误码 long SetPointLight(int iCameraId, int LightValue); /// /// 获取灯光值 /// /// 相机Id /// 红光。值为-1时,表示没有该灯 /// 绿光。值为-1时,表示没有该灯 /// 蓝光。值为-1时,表示没有该灯 /// 点光。值为-1时,表示没有该灯 /// 成功返回0,否则返回错误码 long GetLight(int iCameraId, int& redLightValue, int& greenLightValue, int& blueLightValue, int& pointLightValue); /// /// 获取相机图像。调用后会阻塞,直到有新的相机图像时才返回 /// /// 相机Id /// /// 成功返回0,否则返回错误码 long GrabImage(int iCameraId, ImageInfo& image); /// /// 获取相机列表 /// /// 相机列表 /// 成功返回0,否则返回错误码 long GetCameraList(vector& vecCamera); /// /// 相机移动到显示位置 /// /// /// /// /// long CameraMove(int iCameraId, double x, double y); /**打开,关闭相机 */ long OpenOrCloseCamera(int iCameraId); //设置相机显示回调 long SetVideoCallBackFunc(int iCameraId, CallVideoBack func); //获取模板图片 long GetTemplateImage(int iTemplateId,ImageInfo& image); //获取所有Pr策略 std::vector GetPrStrategyList(); //获取指定Pr策略中的Pr模板 LONG GetPrTemplateList(UINT iStrategyId, std::vector vecTemplate); //获取模组中相机 std::vector GetCameraIdList(MODULE_LIST iModuleType); //创建PR模板 LONG CreatePrTemplate(MODULE_LIST iModuleType, UINT iCameraId, UINT& iTemplateId); //获取PR模板 LONG GetPrTemplate(MODULE_LIST iModuleType, UINT iCameraId, UINT& iTemplateId); //模板匹配测试,传入策略对象,以及模板id,返回图像,像素结果,物理结果 LONG TemplateMacthTest(MODULE_LIST iModuleType, UINT iTempId,ImageInfo& image,X_Y_ANGLE_STRUCT& PxielResult, X_Y_ANGLE_STRUCT& posResult); //创建空的PR策略 LONG CreatePrStrategy(MODULE_LIST iModuleType, UINT& iStrategyId); //设置策略参考点 LONG SetPrStrategyRef(MODULE_LIST iModuleType, UINT iStrategyId); //设置PR策略里的模板 LONG SetPrStrategyTemplate(MODULE_LIST iModuleType, UINT iStrategyId, vector vecTemplateId); LONG SaveImage2File(const JVision::ImageInfo& imageIn,const std::string& FilePath); }; }