CCamerAndLamp.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #pragma once
  2. #define C_MACHINE_EXPORTS
  3. #include "Machine.h"
  4. #include "CDieBondFsm.h"
  5. #include "CMessageBox.h"
  6. #include "CPrManage.h"
  7. #include "dt.h"
  8. namespace ns_module
  9. {
  10. class __declspec(dllexport) CCamerAndLamp
  11. {
  12. private:
  13. static CCamerAndLamp* m_instance;
  14. CManageDB* m_pCManageDB = nullptr;
  15. Machine* m_pMachine = nullptr;
  16. CCameraManage* m_pCameraManage = nullptr;
  17. CBondHead* m_pBondHead = nullptr;
  18. CWaferTable* m_pWaferTable = nullptr;
  19. CWaferHead* m_pWaferHead = nullptr;
  20. CTransferTable* m_pWaferTransferTable = nullptr;
  21. CTransferTable* m_pWaffleTransferTable = nullptr;
  22. CResources* m_pResource = nullptr;
  23. CDieBondFsm* m_pDieBondFsm = nullptr;
  24. public:
  25. static CCamerAndLamp* GetInstance();
  26. CCamerAndLamp();
  27. //设置图像为连续更新
  28. long VideoStart(int iCameraId);
  29. //设置图像为暂停更新
  30. long VideoStop(int iCameraId);
  31. /// <summary>
  32. /// 设置红光
  33. /// </summary>
  34. /// <param name="iCameraId">相机Id</param>
  35. /// <param name="LightValue">灯光值</param>
  36. /// <returns>成功返回0,否则返回错误码</returns>
  37. long SetRedLight(int iCameraId, int LightValue);
  38. /// <summary>
  39. /// 设置绿光
  40. /// </summary>
  41. /// <param name="LightValue">灯光值</param>
  42. /// <returns>成功返回0,否则返回错误码</returns>
  43. long SetGreenLight(int iCameraId, int LightValue);
  44. /// <summary>
  45. /// 设置蓝光
  46. /// </summary>
  47. /// <param name="iCameraId">相机Id</param>
  48. /// <param name="LightValue">灯光值</param>
  49. /// <returns>成功返回0,否则返回错误码</returns>
  50. long SetBlueLight(int iCameraId, int LightValue);
  51. /// <summary>
  52. /// 设置点光
  53. /// </summary>
  54. /// <param name="iCameraId">相机Id</param>
  55. /// <param name="LightValue">灯光值</param>
  56. /// <returns>成功返回0,否则返回错误码</returns>
  57. long SetPointLight(int iCameraId, int LightValue);
  58. /// <summary>
  59. /// 获取灯光值
  60. /// </summary>
  61. /// <param name="iCameraId">相机Id</param>
  62. /// <param name="redLightValue">红光。值为-1时,表示没有该灯</param>
  63. /// <param name="greenLightValue">绿光。值为-1时,表示没有该灯</param>
  64. /// <param name="blueLightValue">蓝光。值为-1时,表示没有该灯</param>
  65. /// <param name="pointLightValue">点光。值为-1时,表示没有该灯</param>
  66. /// <returns>成功返回0,否则返回错误码</returns>
  67. long GetLight(int iCameraId, int& redLightValue, int& greenLightValue, int& blueLightValue, int& pointLightValue);
  68. /// <summary>
  69. /// 获取相机图像。调用后会阻塞,直到有新的相机图像时才返回
  70. /// </summary>
  71. /// <param name="iCameraId">相机Id</param>
  72. /// <param name="image"></param>
  73. /// <returns>成功返回0,否则返回错误码</returns>
  74. long GrabImage(int iCameraId, ImageInfo& image);
  75. /// <summary>
  76. /// 获取相机列表
  77. /// </summary>
  78. /// <param name="vecCamera">相机列表</param>
  79. /// <returns>成功返回0,否则返回错误码</returns>
  80. long GetCameraList(vector<CameraInfo>& vecCamera);
  81. /// <summary>
  82. /// 相机移动到显示位置
  83. /// </summary>
  84. /// <param name="iCameraId"></param>
  85. /// <param name="x"></param>
  86. /// <param name="y"></param>
  87. /// <returns></returns>
  88. long CameraMove(int iCameraId, double x, double y);
  89. /**打开,关闭相机
  90. */
  91. long OpenOrCloseCamera(int iCameraId);
  92. //设置相机显示回调
  93. long SetVideoCallBackFunc(int iCameraId, CallVideoBack func);
  94. //获取模板图片
  95. long GetTemplateImage(int iTemplateId,ImageInfo& image);
  96. //获取所有Pr策略
  97. std::vector<PR_STRATEGY> GetPrStrategyList();
  98. //获取指定Pr策略中的Pr模板
  99. LONG GetPrTemplateList(UINT iStrategyId, std::vector<PR_TEMPLATE> vecTemplate);
  100. //获取模组中相机
  101. std::vector<CameraInfo> GetCameraIdList(MODULE_LIST iModuleType);
  102. //创建PR模板
  103. LONG CreatePrTemplate(MODULE_LIST iModuleType, UINT iCameraId, UINT& iTemplateId);
  104. //获取PR模板
  105. LONG GetPrTemplate(MODULE_LIST iModuleType, UINT iCameraId, UINT& iTemplateId);
  106. //模板匹配测试,传入策略对象,以及模板id,返回图像,像素结果,物理结果
  107. LONG TemplateMacthTest(MODULE_LIST iModuleType, UINT iTempId,ImageInfo& image,X_Y_ANGLE_STRUCT& PxielResult, X_Y_ANGLE_STRUCT& posResult);
  108. //创建空的PR策略
  109. LONG CreatePrStrategy(MODULE_LIST iModuleType, UINT& iStrategyId);
  110. //设置策略参考点
  111. LONG SetPrStrategyRef(MODULE_LIST iModuleType, UINT iStrategyId);
  112. //设置PR策略里的模板
  113. LONG SetPrStrategyTemplate(MODULE_LIST iModuleType, UINT iStrategyId, vector<MULTI_TEMP_STRUCT> vecTemplateId);
  114. LONG SaveImage2File(const JVision::ImageInfo& imageIn,const std::string& FilePath);
  115. };
  116. }