CRunButton.h 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. #pragma once
  2. #define C_MACHINE_EXPORTS
  3. #include "Machine.h"
  4. #include "CDieBondFsm.h"
  5. #include "CMessageBox.h"
  6. #include "dt.h"
  7. namespace ns_module
  8. {
  9. struct ST_BUTTON_FUN
  10. {
  11. int nId; // 0~12
  12. int DirectoryId; // 绑定的ID
  13. std::string strCallFun; // 执行函数名
  14. std::map<std::string, std::string> mapPar; // 参数
  15. };
  16. struct ST_BUTTON_DONE
  17. {
  18. int nId; // 0~12
  19. int DirectoryId; // 绑定的ID
  20. std::string strCallFun; // 执行函数名
  21. LONG lError; //错误Id
  22. std::string strErrMeassage; //错误描述
  23. };
  24. //报警弹框回调函数
  25. //typedef void(*SendButtonRunDone) (ST_BUTTON_DONE stMsgInfo);
  26. using SendButtonRunDone = std::function<void(ST_BUTTON_DONE)>;
  27. // 定义宏,将函数名和对应的 lambda 表达式封装起来
  28. #define REGISTER_FUNCTION(funcName) { #funcName, [](CRunButton* obj, ns_module::ST_BUTTON_FUN stInfo) { return obj->funcName(stInfo); } }
  29. class __declspec(dllexport) CRunButton
  30. {
  31. public:
  32. struct THREAD_RUN_BUTTON
  33. {
  34. CRunButton* pClass;
  35. ST_BUTTON_FUN stButtonInfo;
  36. SendButtonRunDone fun;
  37. };
  38. void SetButtonRunDoneFunc(SendButtonRunDone func);
  39. private:
  40. static CRunButton* m_instance;
  41. SendButtonRunDone m_funButtonRunDone = nullptr;
  42. CManageDB* m_pCManageDB = nullptr;
  43. Machine* m_pMachine = nullptr;
  44. CCameraManage* m_pCameraManage = nullptr;
  45. CBondHead* m_pBondHead = nullptr;
  46. CWaferTable* m_pWaferTable = nullptr;
  47. CWaferHead* m_pWaferHead = nullptr;
  48. CTransferTable* m_pWaferTransferTable = nullptr;
  49. CTransferTable* m_pWaffleTransferTable = nullptr;
  50. CResources* m_pResource = nullptr;
  51. CDieBondFsm* m_pDieBondFsm = nullptr;
  52. public:
  53. static HANDLE m_hEvent;
  54. static CRunButton* GetInstance();
  55. CRunButton();
  56. // 创建函数映射表,在主线程中执行
  57. std::map<std::string, std::function<long(CRunButton*, ns_module::ST_BUTTON_FUN)>> m_mapFunctionByMain = {
  58. REGISTER_FUNCTION(BH_PickCreateTemplate),
  59. REGISTER_FUNCTION(BH_BondCreateTemplate),
  60. REGISTER_FUNCTION(BH_LookUpCreateTemplate),
  61. REGISTER_FUNCTION(XYCalib_HeadCreateTemplate),
  62. REGISTER_FUNCTION(XYCalib_LookUpCreateTemplate),
  63. REGISTER_FUNCTION(XYCalib_WaferCreateTemplate),
  64. REGISTER_FUNCTION(WaferTable_BondCreateTemplate),
  65. REGISTER_FUNCTION(LookUpCalib_HeadCameraCreateTemplate),
  66. REGISTER_FUNCTION(LookUpCalib_LookUpCreateTemplate),
  67. REGISTER_FUNCTION(LookUpCalib_HeadCreateTemplate),
  68. REGISTER_FUNCTION(RCalib_HeadCreateTemplate),
  69. REGISTER_FUNCTION(RCalib_WaferTableCreateTemplate),
  70. REGISTER_FUNCTION(ShowMotionAdjustPage)
  71. };
  72. // 创建函数映射表,在子线程中执行
  73. std::map<std::string, std::function<long(CRunButton*, ns_module::ST_BUTTON_FUN)>> m_mapFunctionByThread = {
  74. REGISTER_FUNCTION(MachineToHome),
  75. REGISTER_FUNCTION(Machine_SaveConfig),
  76. REGISTER_FUNCTION(UltraHead_XY_Test),
  77. REGISTER_FUNCTION(Machine_LoadConfig),
  78. REGISTER_FUNCTION(Machine_Wafer2Transfer),
  79. REGISTER_FUNCTION(Machine_Waffle2Transfer),
  80. REGISTER_FUNCTION(Machine_Transfer2BondTable),
  81. REGISTER_FUNCTION(Machine_SingnedRun),
  82. REGISTER_FUNCTION(BondHead_AccuracyTest),
  83. REGISTER_FUNCTION(SaveDB),
  84. REGISTER_FUNCTION(BH_VacOn),
  85. REGISTER_FUNCTION(BH_UltralOn),
  86. REGISTER_FUNCTION(BH_VacOff),
  87. REGISTER_FUNCTION(BH_Pick),
  88. REGISTER_FUNCTION(BH_Bond),
  89. REGISTER_FUNCTION(BH_PickAndBond),
  90. REGISTER_FUNCTION(BH_ToPickGrabPos),
  91. REGISTER_FUNCTION(BH_ToLookUpGrabPos),
  92. REGISTER_FUNCTION(BH_ToBondGrabPos),
  93. REGISTER_FUNCTION(WaferTransfer_Home),
  94. REGISTER_FUNCTION(WaferTransfer_ToGetDiePos),
  95. REGISTER_FUNCTION(WaferTransfer_ToTransferPos),
  96. REGISTER_FUNCTION(WaferTransfer_VacOn),
  97. REGISTER_FUNCTION(WaferTransfer_VacOff),
  98. REGISTER_FUNCTION(WaffleTransfer_Home),
  99. REGISTER_FUNCTION(WaffleTransfer_ToGetDiePos),
  100. REGISTER_FUNCTION(WaffleTransfer_ToTransferPos),
  101. REGISTER_FUNCTION(WaferTable_ToChangeRingPosition),
  102. REGISTER_FUNCTION(WaferTable_ChangeRingDone),
  103. REGISTER_FUNCTION(WaferTable_ToPickPos),
  104. REGISTER_FUNCTION(WaferTable_ToPreDie),
  105. REGISTER_FUNCTION(WaferTable_ToNextDie),
  106. REGISTER_FUNCTION(WaferTable_ToDieCenter),
  107. REGISTER_FUNCTION(WaferHead_Pick),
  108. REGISTER_FUNCTION(WaferHead_Bond),
  109. REGISTER_FUNCTION(WaferHead_OpenVac),
  110. REGISTER_FUNCTION(WaferHead_CloseVac),
  111. REGISTER_FUNCTION(Ejector_ToSafePos),
  112. REGISTER_FUNCTION(Ejector_ToWorkPos),
  113. REGISTER_FUNCTION(XYCalib_LookUpToPos),
  114. REGISTER_FUNCTION(XYCalib_LookUpCalib),
  115. REGISTER_FUNCTION(XYCalib_HeadCalib),
  116. REGISTER_FUNCTION(XYCalib_HeadToPos),
  117. REGISTER_FUNCTION(BondCameraCalibCheck),
  118. REGISTER_FUNCTION(LookUpCameraCalibCheck),
  119. REGISTER_FUNCTION(XYCalib_WaferToPos),
  120. REGISTER_FUNCTION(XYCalib_WaferCalib),
  121. REGISTER_FUNCTION(WaferCameraCalibCheck),
  122. REGISTER_FUNCTION(ForceControl_ToTestPos),
  123. REGISTER_FUNCTION(ForceControl_ElectricCalib),
  124. REGISTER_FUNCTION(ForceControl_SpringcCalib),
  125. REGISTER_FUNCTION(ForceControl_CalculationResults),
  126. REGISTER_FUNCTION(ForceControl_Test),
  127. REGISTER_FUNCTION(LookUpCalib_StartCalib),
  128. REGISTER_FUNCTION(LookUpCalib_ToCalibPos),
  129. REGISTER_FUNCTION(LookUpCalib_ToHeadCalibPos),
  130. REGISTER_FUNCTION(LookUpCalib_CalResult),
  131. REGISTER_FUNCTION(LookUpCalib_HeadToAucPos),
  132. REGISTER_FUNCTION(LookUpCalib_HeadToCameraPos),
  133. REGISTER_FUNCTION(LookUpCalib_CameraToHeadPos),
  134. REGISTER_FUNCTION(RCalib_HeadCalib),
  135. REGISTER_FUNCTION(RCalib_HeadToPos),
  136. REGISTER_FUNCTION(RCalib_WaferTableCalib),
  137. REGISTER_FUNCTION(RCalib_WaferTableToPos),
  138. };
  139. // 根据 strCallFun 执行相应的函数
  140. long ExecuteFunction(ST_BUTTON_FUN stInfo);
  141. static VOID CALLBACK threadRunButton(PTP_CALLBACK_INSTANCE Instance, PVOID Parameter, PTP_WORK Work);
  142. long RunButtonByThread(ST_BUTTON_FUN stInfo);
  143. long BH_PickCreateTemplate(ST_BUTTON_FUN stInfo);
  144. long BH_BondCreateTemplate(ST_BUTTON_FUN stInfo);
  145. long BH_LookUpCreateTemplate(ST_BUTTON_FUN stInfo);
  146. long XYCalib_HeadCreateTemplate(ST_BUTTON_FUN stInfo);
  147. long XYCalib_LookUpCreateTemplate(ST_BUTTON_FUN stInfo);
  148. long XYCalib_WaferCreateTemplate(ST_BUTTON_FUN stInfo);
  149. long WaferTable_BondCreateTemplate(ST_BUTTON_FUN stInfo);
  150. long LookUpCalib_HeadCameraCreateTemplate(ST_BUTTON_FUN stInfo);
  151. long LookUpCalib_LookUpCreateTemplate(ST_BUTTON_FUN stInfo);
  152. long LookUpCalib_HeadCreateTemplate(ST_BUTTON_FUN stInfo);
  153. long RCalib_HeadCreateTemplate(ST_BUTTON_FUN stInfo);
  154. long RCalib_WaferTableCreateTemplate(ST_BUTTON_FUN stInfo);
  155. long ShowMotionAdjustPage(ST_BUTTON_FUN stInfo);
  156. long MachineToHome(ST_BUTTON_FUN stInfo);
  157. long Machine_SaveConfig(ST_BUTTON_FUN stInfo);
  158. long UltraHead_XY_Test(ST_BUTTON_FUN stInfo);
  159. long Machine_LoadConfig(ST_BUTTON_FUN stInfo);
  160. long Machine_Wafer2Transfer(ST_BUTTON_FUN stInfo);
  161. long Machine_Waffle2Transfer(ST_BUTTON_FUN stInfo);
  162. long Machine_Transfer2BondTable(ST_BUTTON_FUN stInfo);
  163. long Machine_SingnedRun(ST_BUTTON_FUN stInfo);
  164. long BondHead_AccuracyTest(ST_BUTTON_FUN stInfo);
  165. long SaveDB(ST_BUTTON_FUN stInfo);
  166. long BH_VacOn(ST_BUTTON_FUN stInfo);
  167. long BH_UltralOn(ST_BUTTON_FUN stInfo);
  168. long BH_VacOff(ST_BUTTON_FUN stInfo);
  169. long BH_Pick(ST_BUTTON_FUN stInfo);
  170. long BH_Bond(ST_BUTTON_FUN stInfo);
  171. long BH_PickAndBond(ST_BUTTON_FUN stInfo);
  172. long BH_ToPickGrabPos(ST_BUTTON_FUN stInfo);
  173. long BH_ToLookUpGrabPos(ST_BUTTON_FUN stInfo);
  174. long BH_ToBondGrabPos(ST_BUTTON_FUN stInfo);
  175. long WaferTransfer_Home(ST_BUTTON_FUN stInfo);
  176. long WaferTransfer_ToGetDiePos(ST_BUTTON_FUN stInfo);
  177. long WaferTransfer_ToTransferPos(ST_BUTTON_FUN stInfo);
  178. long WaferTransfer_VacOn(ST_BUTTON_FUN stInfo);
  179. long WaferTransfer_VacOff(ST_BUTTON_FUN stInfo);
  180. long WaffleTransfer_Home(ST_BUTTON_FUN stInfo);
  181. long WaffleTransfer_ToGetDiePos(ST_BUTTON_FUN stInfo);
  182. long WaffleTransfer_ToTransferPos(ST_BUTTON_FUN stInfo);
  183. long WaferTable_ToChangeRingPosition(ST_BUTTON_FUN stInfo);
  184. long WaferTable_ChangeRingDone(ST_BUTTON_FUN stInfo);
  185. long WaferTable_ToPickPos(ST_BUTTON_FUN stInfo);
  186. long WaferTable_ToPreDie(ST_BUTTON_FUN stInfo);
  187. long WaferTable_ToNextDie(ST_BUTTON_FUN stInfo);
  188. long WaferTable_ToDieCenter(ST_BUTTON_FUN stInfo);
  189. long WaferHead_Pick(ST_BUTTON_FUN stInfo);
  190. long WaferHead_Bond(ST_BUTTON_FUN stInfo);
  191. long WaferHead_OpenVac(ST_BUTTON_FUN stInfo);
  192. long WaferHead_CloseVac(ST_BUTTON_FUN stInfo);
  193. long Ejector_ToSafePos(ST_BUTTON_FUN stInfo);
  194. long Ejector_ToWorkPos(ST_BUTTON_FUN stInfo);
  195. long XYCalib_LookUpToPos(ST_BUTTON_FUN stInfo);
  196. long XYCalib_LookUpCalib(ST_BUTTON_FUN stInfo);
  197. long XYCalib_HeadCalib(ST_BUTTON_FUN stInfo);
  198. long XYCalib_HeadToPos(ST_BUTTON_FUN stInfo);
  199. long BondCameraCalibCheck(ST_BUTTON_FUN stInfo);
  200. long LookUpCameraCalibCheck(ST_BUTTON_FUN stInfo);
  201. long XYCalib_WaferToPos(ST_BUTTON_FUN stInfo);
  202. long XYCalib_WaferCalib(ST_BUTTON_FUN stInfo);
  203. long WaferCameraCalibCheck(ST_BUTTON_FUN stInfo);
  204. long ForceControl_ToTestPos(ST_BUTTON_FUN stInfo);
  205. long ForceControl_ElectricCalib(ST_BUTTON_FUN stInfo);
  206. long ForceControl_SpringcCalib(ST_BUTTON_FUN stInfo);
  207. long ForceControl_CalculationResults(ST_BUTTON_FUN stInfo);
  208. long ForceControl_Test(ST_BUTTON_FUN stInfo);
  209. long LookUpCalib_StartCalib(ST_BUTTON_FUN stInfo);
  210. long LookUpCalib_ToCalibPos(ST_BUTTON_FUN stInfo);
  211. long LookUpCalib_ToHeadCalibPos(ST_BUTTON_FUN stInfo);
  212. long LookUpCalib_CalResult(ST_BUTTON_FUN stInfo);
  213. long LookUpCalib_HeadToAucPos(ST_BUTTON_FUN stInfo);
  214. long LookUpCalib_HeadToCameraPos(ST_BUTTON_FUN stInfo);
  215. long LookUpCalib_CameraToHeadPos(ST_BUTTON_FUN stInfo);
  216. long RCalib_HeadCalib(ST_BUTTON_FUN stInfo);
  217. long RCalib_HeadToPos(ST_BUTTON_FUN stInfo);
  218. long RCalib_WaferTableCalib(ST_BUTTON_FUN stInfo);
  219. long RCalib_WaferTableToPos(ST_BUTTON_FUN stInfo);
  220. };
  221. }