CRunButton.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  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. enum EN_MSG_WND_ICO
  10. {
  11. IHINT = 0,
  12. IWARN,
  13. IERROR,
  14. IRUN,
  15. ISTOP
  16. };
  17. struct ST_BUTTON_FUN
  18. {
  19. int nId; // 0~12
  20. int DirectoryId; // 绑定的ID
  21. std::string strCallFun; // 执行函数名
  22. std::map<std::string, std::string> mapPar; // 参数
  23. };
  24. struct ST_BUTTON_DONE
  25. {
  26. int nId; // 0~12
  27. int DirectoryId; // 绑定的ID
  28. std::string strCallFun; // 执行函数名
  29. LONG lError; //错误Id
  30. std::string strErrMeassage; //错误描述
  31. };
  32. //报警弹框回调函数
  33. //typedef void(*SendButtonRunDone) (ST_BUTTON_DONE stMsgInfo);
  34. using SendButtonRunDone = std::function<void(ST_BUTTON_DONE)>;
  35. // 定义宏,将函数名和对应的 lambda 表达式封装起来
  36. #define REGISTER_FUNCTION(funcName) { #funcName, [](CRunButton* obj, ns_module::ST_BUTTON_FUN stInfo) { return obj->funcName(stInfo); } }
  37. class __declspec(dllexport) CRunButton
  38. {
  39. public:
  40. struct THREAD_RUN_BUTTON
  41. {
  42. CRunButton* pClass;
  43. ST_BUTTON_FUN stButtonInfo;
  44. SendButtonRunDone fun;
  45. };
  46. void SetButtonRunDoneFunc(SendButtonRunDone func);
  47. void StopRunButton();
  48. private:
  49. static CRunButton* m_instance;
  50. SendButtonRunDone m_funButtonRunDone = nullptr;
  51. CManageDB* m_pCManageDB = nullptr;
  52. Machine* m_pMachine = nullptr;
  53. CCameraManage* m_pCameraManage = nullptr;
  54. CBondHead* m_pBondHead = nullptr;
  55. CWaferTable* m_pWaferTable = nullptr;
  56. CWaferHead* m_pWaferHead = nullptr;
  57. CTransferTable* m_pWaferTransferTable = nullptr;
  58. CTransferTable* m_pWaffleTransferTable = nullptr;
  59. CResources* m_pResource = nullptr;
  60. CDieBondFsm* m_pDieBondFsm = nullptr;
  61. public:
  62. static HANDLE m_hEvent;
  63. static CRunButton* GetInstance();
  64. CRunButton();
  65. // 创建函数映射表,在主线程中执行
  66. std::map<std::string, std::function<long(CRunButton*, ns_module::ST_BUTTON_FUN)>> m_mapFunctionByMain = {
  67. REGISTER_FUNCTION(BH_PickCreateTemplate),
  68. REGISTER_FUNCTION(BH_BondCreateTemplate),
  69. REGISTER_FUNCTION(BH_LookUpCreateTemplate),
  70. REGISTER_FUNCTION(XYCalib_HeadCreateTemplate),
  71. REGISTER_FUNCTION(XYCalib_LookUpCreateTemplate),
  72. REGISTER_FUNCTION(XYCalib_WaferCreateTemplate),
  73. REGISTER_FUNCTION(HighCameraCalib_CreateTemp),
  74. REGISTER_FUNCTION(WaferTable_BondCreateTemplate),
  75. REGISTER_FUNCTION(LookUpCalib_HeadCameraCreateTemplate),
  76. REGISTER_FUNCTION(LookUpCalib_LookUpCreateTemplate),
  77. REGISTER_FUNCTION(LookUpCalib_HeadCreateTemplate),
  78. REGISTER_FUNCTION(HighCTD_HeadCameraCreateTemplate),
  79. REGISTER_FUNCTION(HighCTD_LookUpCreateTemplate),
  80. REGISTER_FUNCTION(HighCTD_HeadCreateTemplate),
  81. REGISTER_FUNCTION(RCalib_HeadCreateTemplate),
  82. REGISTER_FUNCTION(RCalib_WaferTableCreateTemplate),
  83. REGISTER_FUNCTION(ShowMotionAdjustPage),
  84. REGISTER_FUNCTION(BH_AccracyTestCreateTemp),
  85. REGISTER_FUNCTION(BH_AccracyTestModifyTemp),
  86. };
  87. // 创建函数映射表,在子线程中执行
  88. std::map<std::string, std::function<long(CRunButton*, ns_module::ST_BUTTON_FUN)>> m_mapFunctionByThread = {
  89. REGISTER_FUNCTION(MachineToHome),
  90. REGISTER_FUNCTION(MachineToSafePosition),
  91. REGISTER_FUNCTION(Machine_SaveConfig),
  92. REGISTER_FUNCTION(UltraHead_XY_Test),
  93. REGISTER_FUNCTION(Machine_LoadConfig),
  94. REGISTER_FUNCTION(Machine_Wafer2Transfer),
  95. REGISTER_FUNCTION(Machine_Waffle2Transfer),
  96. REGISTER_FUNCTION(Machine_Transfer2BondTable),
  97. REGISTER_FUNCTION(Machine_SingnedRun),
  98. REGISTER_FUNCTION(BondHead_AccuracyTest),
  99. REGISTER_FUNCTION(BondHead_PRAccuracyTest),
  100. REGISTER_FUNCTION(BondHead_PickAndBond_Diagnosis),
  101. REGISTER_FUNCTION(SaveDB),
  102. REGISTER_FUNCTION(BH_VacOn),
  103. REGISTER_FUNCTION(BH_UltralOnOffTest),
  104. REGISTER_FUNCTION(BH_VacOff),
  105. REGISTER_FUNCTION(BH_Pick),
  106. REGISTER_FUNCTION(BH_LookUpCalib),
  107. REGISTER_FUNCTION(BH_Bond),
  108. REGISTER_FUNCTION(BH_PickAndBond),
  109. REGISTER_FUNCTION(BH_ToPickGrabPos),
  110. REGISTER_FUNCTION(BH_ToLookUpGrabPos),
  111. REGISTER_FUNCTION(BH_ToBondGrabPos),
  112. REGISTER_FUNCTION(BH_BondOffsetCheck),
  113. REGISTER_FUNCTION(BH_ViewTest),
  114. REGISTER_FUNCTION(BH_PickHTest),
  115. REGISTER_FUNCTION(BH_BondHTest),
  116. REGISTER_FUNCTION(BH_WriteTemprature),
  117. REGISTER_FUNCTION(BH_ReadTemprature),
  118. REGISTER_FUNCTION(BH_PickOffsetCheck),
  119. REGISTER_FUNCTION(WaferTransfer_Home),
  120. REGISTER_FUNCTION(WaferTransfer_ToGetDiePos),
  121. REGISTER_FUNCTION(WaferTransfer_ToTransferPos),
  122. REGISTER_FUNCTION(WaferTransfer_VacOn),
  123. REGISTER_FUNCTION(WaferTransfer_VacOff),
  124. REGISTER_FUNCTION(WaffleTransfer_Home),
  125. REGISTER_FUNCTION(WaffleTransfer_ToGetDiePos),
  126. REGISTER_FUNCTION(WaffleTransfer_ToTransferPos),
  127. REGISTER_FUNCTION(WaferTable_ToChangeRingPosition),
  128. REGISTER_FUNCTION(WaferTable_ChangeRingDone),
  129. REGISTER_FUNCTION(WaferTable_ToPickPos),
  130. REGISTER_FUNCTION(WaferTable_ToPreDie),
  131. REGISTER_FUNCTION(WaferTable_ToNextDie),
  132. REGISTER_FUNCTION(WaferTable_ToDieCenter),
  133. REGISTER_FUNCTION(WaferHead_Pick),
  134. REGISTER_FUNCTION(WaferHead_Bond),
  135. REGISTER_FUNCTION(WaferHead_OpenVac),
  136. REGISTER_FUNCTION(WaferHead_CloseVac),
  137. REGISTER_FUNCTION(BondTable_ToPreDie),
  138. REGISTER_FUNCTION(BondTable_ToNextDie),
  139. REGISTER_FUNCTION(BondTable_WriteTemprature),
  140. REGISTER_FUNCTION(BondTable_ReadTemprature),
  141. REGISTER_FUNCTION(Ejector_ToSafePos),
  142. REGISTER_FUNCTION(Ejector_ToWorkPos),
  143. REGISTER_FUNCTION(XYCalib_LookUpToPos),
  144. REGISTER_FUNCTION(XYCalib_LookUpCalib),
  145. REGISTER_FUNCTION(XYCalib_HeadCalib),
  146. REGISTER_FUNCTION(XYCalib_HeadToPos),
  147. REGISTER_FUNCTION(HighCameraCalib_HeadToPos),
  148. REGISTER_FUNCTION(HighCameraCalib_HeadCalib),
  149. REGISTER_FUNCTION(BondCameraCalibCheck),
  150. REGISTER_FUNCTION(HighCameraCalib_Check),
  151. REGISTER_FUNCTION(LookUpCameraCalibCheck),
  152. REGISTER_FUNCTION(XYCalib_WaferToPos),
  153. REGISTER_FUNCTION(XYCalib_WaferCalib),
  154. REGISTER_FUNCTION(WaferCameraCalibCheck),
  155. REGISTER_FUNCTION(ForceControl_ToTestPos),
  156. REGISTER_FUNCTION(ForceControl_ElectricCalib),
  157. REGISTER_FUNCTION(ForceControl_SpringcCalib),
  158. REGISTER_FUNCTION(ForceControl_CalculationResults),
  159. REGISTER_FUNCTION(ForceControl_Test),
  160. REGISTER_FUNCTION(ForceControl_FindZero),
  161. REGISTER_FUNCTION(UpdateForce),
  162. REGISTER_FUNCTION(LookUpCalib_StartCalib),
  163. REGISTER_FUNCTION(LookUpCalib_ToCalibPos),
  164. REGISTER_FUNCTION(LookUpCalib_ToHeadCalibPos),
  165. REGISTER_FUNCTION(LookUpCalib_CalResult),
  166. REGISTER_FUNCTION(LookUpCalib_HeadToAucPos),
  167. REGISTER_FUNCTION(LookUpCalib_HeadToCameraPos),
  168. REGISTER_FUNCTION(LookUpCalib_CameraToHeadPos),
  169. REGISTER_FUNCTION(HighCTD_CameraPosCalib),
  170. REGISTER_FUNCTION(HighCTD_ToCameraCalibPos),
  171. REGISTER_FUNCTION(HighCTD_HeadActualPosCalib),
  172. REGISTER_FUNCTION(HighCTD_HeadToCameraPos),
  173. REGISTER_FUNCTION(HighCTD_ToHeadCalibPos),
  174. REGISTER_FUNCTION(HighCTD_CalResult),
  175. REGISTER_FUNCTION(RCalib_HeadCalib),
  176. REGISTER_FUNCTION(RCalib_HeadToPos),
  177. REGISTER_FUNCTION(RCalib_WaferTableCalib),
  178. REGISTER_FUNCTION(RCalib_WaferTableToPos),
  179. REGISTER_FUNCTION(RCalibCheck),
  180. REGISTER_FUNCTION(RCalib_ToCenterPos),
  181. REGISTER_FUNCTION(RCalib_ZeroOffset),
  182. REGISTER_FUNCTION(VMeasure_Test1),
  183. REGISTER_FUNCTION(VMeasure_Test2),
  184. REGISTER_FUNCTION(VMeasure_Test3),
  185. REGISTER_FUNCTION(HMeasure_Test1),
  186. REGISTER_FUNCTION(HMeasure_Test2),
  187. REGISTER_FUNCTION(HMeasure_Test3),
  188. REGISTER_FUNCTION(ModuleMove),
  189. REGISTER_FUNCTION(SetHotZoneOn),
  190. REGISTER_FUNCTION(SetHotZoneOff),
  191. REGISTER_FUNCTION(SetPrTestOn),
  192. REGISTER_FUNCTION(SetPrTestOff),
  193. REGISTER_FUNCTION(BondHead_PickBondTest),
  194. };
  195. // 根据 strCallFun 执行相应的函数
  196. long ExecuteFunction(ST_BUTTON_FUN stInfo);
  197. static VOID CALLBACK threadRunButton(PTP_CALLBACK_INSTANCE Instance, PVOID Parameter, PTP_WORK Work);
  198. long RunButtonByThread(ST_BUTTON_FUN stInfo);
  199. long BH_PickCreateTemplate(ST_BUTTON_FUN stInfo);
  200. long BH_BondCreateTemplate(ST_BUTTON_FUN stInfo);
  201. long BH_LookUpCreateTemplate(ST_BUTTON_FUN stInfo);
  202. long XYCalib_HeadCreateTemplate(ST_BUTTON_FUN stInfo);
  203. long XYCalib_LookUpCreateTemplate(ST_BUTTON_FUN stInfo);
  204. long XYCalib_WaferCreateTemplate(ST_BUTTON_FUN stInfo);
  205. long HighCameraCalib_CreateTemp(ST_BUTTON_FUN stInfo);
  206. long WaferTable_BondCreateTemplate(ST_BUTTON_FUN stInfo);
  207. long LookUpCalib_HeadCameraCreateTemplate(ST_BUTTON_FUN stInfo);
  208. long LookUpCalib_LookUpCreateTemplate(ST_BUTTON_FUN stInfo);
  209. long LookUpCalib_HeadCreateTemplate(ST_BUTTON_FUN stInfo);
  210. long HighCTD_HeadCameraCreateTemplate(ST_BUTTON_FUN stInfo);
  211. long HighCTD_LookUpCreateTemplate(ST_BUTTON_FUN stInfo);
  212. long HighCTD_HeadCreateTemplate(ST_BUTTON_FUN stInfo);
  213. long RCalib_HeadCreateTemplate(ST_BUTTON_FUN stInfo);
  214. long RCalib_WaferTableCreateTemplate(ST_BUTTON_FUN stInfo);
  215. long ShowMotionAdjustPage(ST_BUTTON_FUN stInfo);
  216. long MachineToHome(ST_BUTTON_FUN stInfo);
  217. long MachineToSafePosition(ST_BUTTON_FUN stInfo);
  218. long Machine_SaveConfig(ST_BUTTON_FUN stInfo);
  219. long UltraHead_XY_Test(ST_BUTTON_FUN stInfo);
  220. long Machine_LoadConfig(ST_BUTTON_FUN stInfo);
  221. long Machine_Wafer2Transfer(ST_BUTTON_FUN stInfo);
  222. long Machine_Waffle2Transfer(ST_BUTTON_FUN stInfo);
  223. long Machine_Transfer2BondTable(ST_BUTTON_FUN stInfo);
  224. long Machine_SingnedRun(ST_BUTTON_FUN stInfo);
  225. long BondHead_AccuracyTest(ST_BUTTON_FUN stInfo);
  226. long BondHead_PRAccuracyTest(ST_BUTTON_FUN stInfo);
  227. long BondHead_PickAndBond_Diagnosis(ST_BUTTON_FUN stInfo);
  228. long BondHead_PickBondTest(ST_BUTTON_FUN stInfo);
  229. long BH_AccracyTestCreateTemp(ST_BUTTON_FUN stInfo);
  230. long BH_AccracyTestModifyTemp(ST_BUTTON_FUN stInfo);
  231. long SaveDB(ST_BUTTON_FUN stInfo);
  232. long BH_VacOn(ST_BUTTON_FUN stInfo);
  233. long BH_UltralOnOffTest(ST_BUTTON_FUN stInfo);
  234. long BH_VacOff(ST_BUTTON_FUN stInfo);
  235. long BH_Pick(ST_BUTTON_FUN stInfo);
  236. long BH_LookUpCalib(ST_BUTTON_FUN stInfo);
  237. long BH_Bond(ST_BUTTON_FUN stInfo);
  238. long BH_PickAndBond(ST_BUTTON_FUN stInfo);
  239. long BH_ToPickGrabPos(ST_BUTTON_FUN stInfo);
  240. long BH_ToLookUpGrabPos(ST_BUTTON_FUN stInfo);
  241. long BH_ToBondGrabPos(ST_BUTTON_FUN stInfo);
  242. long BH_PickHTest(ST_BUTTON_FUN stInfo);
  243. long BH_BondHTest(ST_BUTTON_FUN stInfo);
  244. long BH_ViewTest(ST_BUTTON_FUN stInfo);
  245. long BH_BondOffsetCheck(ST_BUTTON_FUN stInfo);
  246. long BH_PickOffsetCheck(ST_BUTTON_FUN stInfo);
  247. long BH_WriteTemprature(ST_BUTTON_FUN stInfo);
  248. long BH_ReadTemprature(ST_BUTTON_FUN stInfo);
  249. long NozzleHTest(ST_BUTTON_FUN stInfo);
  250. long WaferTransfer_Home(ST_BUTTON_FUN stInfo);
  251. long WaferTransfer_ToGetDiePos(ST_BUTTON_FUN stInfo);
  252. long WaferTransfer_ToTransferPos(ST_BUTTON_FUN stInfo);
  253. long WaferTransfer_VacOn(ST_BUTTON_FUN stInfo);
  254. long WaferTransfer_VacOff(ST_BUTTON_FUN stInfo);
  255. long WaffleTransfer_Home(ST_BUTTON_FUN stInfo);
  256. long WaffleTransfer_ToGetDiePos(ST_BUTTON_FUN stInfo);
  257. long WaffleTransfer_ToTransferPos(ST_BUTTON_FUN stInfo);
  258. long WaferTable_ToChangeRingPosition(ST_BUTTON_FUN stInfo);
  259. long WaferTable_ChangeRingDone(ST_BUTTON_FUN stInfo);
  260. long WaferTable_ToPickPos(ST_BUTTON_FUN stInfo);
  261. long WaferTable_ToPreDie(ST_BUTTON_FUN stInfo);
  262. long WaferTable_ToNextDie(ST_BUTTON_FUN stInfo);
  263. long WaferTable_ToDieCenter(ST_BUTTON_FUN stInfo);
  264. long WaferHead_Pick(ST_BUTTON_FUN stInfo);
  265. long WaferHead_Bond(ST_BUTTON_FUN stInfo);
  266. long WaferHead_OpenVac(ST_BUTTON_FUN stInfo);
  267. long WaferHead_CloseVac(ST_BUTTON_FUN stInfo);
  268. long BondTable_ToPreDie(ST_BUTTON_FUN stInfo);
  269. long BondTable_ToNextDie(ST_BUTTON_FUN stInfo);
  270. long BondTable_WriteTemprature(ST_BUTTON_FUN stInfo);
  271. long BondTable_ReadTemprature(ST_BUTTON_FUN stInfo);
  272. long Ejector_ToSafePos(ST_BUTTON_FUN stInfo);
  273. long Ejector_ToWorkPos(ST_BUTTON_FUN stInfo);
  274. long XYCalib_LookUpToPos(ST_BUTTON_FUN stInfo);
  275. long XYCalib_LookUpCalib(ST_BUTTON_FUN stInfo);
  276. long XYCalib_HeadCalib(ST_BUTTON_FUN stInfo);
  277. long XYCalib_HeadToPos(ST_BUTTON_FUN stInfo);
  278. long HighCameraCalib_HeadToPos(ST_BUTTON_FUN stInfo);
  279. long HighCameraCalib_HeadCalib(ST_BUTTON_FUN stInfo);
  280. long HighCameraCalib_Check(ST_BUTTON_FUN stInfo);
  281. long BondCameraCalibCheck(ST_BUTTON_FUN stInfo);
  282. long LookUpCameraCalibCheck(ST_BUTTON_FUN stInfo);
  283. long XYCalib_WaferToPos(ST_BUTTON_FUN stInfo);
  284. long XYCalib_WaferCalib(ST_BUTTON_FUN stInfo);
  285. long WaferCameraCalibCheck(ST_BUTTON_FUN stInfo);
  286. long ForceControl_ToTestPos(ST_BUTTON_FUN stInfo);
  287. long ForceControl_ElectricCalib(ST_BUTTON_FUN stInfo);
  288. long ForceControl_SpringcCalib(ST_BUTTON_FUN stInfo);
  289. long ForceControl_CalculationResults(ST_BUTTON_FUN stInfo);
  290. long ForceControl_Test(ST_BUTTON_FUN stInfo);
  291. long ForceControl_FindZero(ST_BUTTON_FUN stInfo);
  292. long UpdateForce(ST_BUTTON_FUN stInfo);
  293. long GetCurForce(ST_BUTTON_FUN stInfo);
  294. long LookUpCalib_StartCalib(ST_BUTTON_FUN stInfo);
  295. long LookUpCalib_ToCalibPos(ST_BUTTON_FUN stInfo);
  296. long LookUpCalib_ToHeadCalibPos(ST_BUTTON_FUN stInfo);
  297. long LookUpCalib_CalResult(ST_BUTTON_FUN stInfo);
  298. long LookUpCalib_HeadToAucPos(ST_BUTTON_FUN stInfo);
  299. long LookUpCalib_HeadToCameraPos(ST_BUTTON_FUN stInfo);
  300. long LookUpCalib_CameraToHeadPos(ST_BUTTON_FUN stInfo);
  301. long HighCTD_CameraPosCalib(ST_BUTTON_FUN stInfo);
  302. long HighCTD_ToCameraCalibPos(ST_BUTTON_FUN stInfo);
  303. long HighCTD_HeadActualPosCalib(ST_BUTTON_FUN stInfo);
  304. long HighCTD_HeadToCameraPos(ST_BUTTON_FUN stInfo);
  305. long HighCTD_ToHeadCalibPos(ST_BUTTON_FUN stInfo);
  306. long HighCTD_CalResult(ST_BUTTON_FUN stInfo);
  307. long RCalib_HeadCalib(ST_BUTTON_FUN stInfo);
  308. long RCalib_HeadToPos(ST_BUTTON_FUN stInfo);
  309. long RCalib_WaferTableCalib(ST_BUTTON_FUN stInfo);
  310. long RCalib_WaferTableToPos(ST_BUTTON_FUN stInfo);
  311. long RCalibCheck(ST_BUTTON_FUN stInfo);
  312. long RCalib_ToCenterPos(ST_BUTTON_FUN stInfo);
  313. long RCalib_ZeroOffset(ST_BUTTON_FUN stInfo);
  314. long VMeasure_Test1(ST_BUTTON_FUN stInfo);
  315. long VMeasure_Test2(ST_BUTTON_FUN stInfo);
  316. long VMeasure_Test3(ST_BUTTON_FUN stInfo);
  317. long HMeasure_Test1(ST_BUTTON_FUN stInfo);
  318. LONG HMeasure_Test2(ST_BUTTON_FUN stInfo);
  319. LONG HMeasure_Test3(ST_BUTTON_FUN stInfo);
  320. long ModuleMove(ST_BUTTON_FUN stInfo);
  321. long SetHotZoneOn(ST_BUTTON_FUN stInfo);
  322. long SetHotZoneOff(ST_BUTTON_FUN stInfo);
  323. long SetPrTestOn(ST_BUTTON_FUN stInfo);
  324. long SetPrTestOff(ST_BUTTON_FUN stInfo);
  325. };
  326. }