CStaticStepData.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. //Step公共数据操作类。单例类,用于保存各Step执行后的数据
  2. #pragma once
  3. #pragma warning(disable:4251)
  4. #include <string>
  5. #include <map>
  6. #include <iostream>
  7. #include <mutex>
  8. #include <iostream>
  9. #include <ctime>
  10. #include <random>
  11. #include "windows.h"
  12. #include "CManageDB.h"
  13. using namespace ns_db;
  14. using namespace std;
  15. typedef enum
  16. {
  17. WAFER_PICK_CURRENT_INDEX = 1, //晶圆台侧取晶线程当前固晶点id
  18. WAFFLE_PICK_CURRENT_INDEX, //晶圆台侧取晶线程当前固晶点id
  19. BOND_CURRENT_INDEX, //固晶线程当前固晶点id
  20. WAFER_TRANSFER_TABLE_EXIST_DIE, //晶圆台侧中转台是否存在晶片
  21. WAFFLE_TRANSFER_TABLE_EXIST_DIE, //华夫盒侧中转台是否存在晶片
  22. WAFER_TABLE_ALLOW_SEARCH_DIE, //晶圆台允许搜晶
  23. WAFER_TABLE_SEARCH_DIE_DONE, //晶圆台搜晶完成
  24. RIGHT_PICK_HEAD_IN_SAFE_POSITION, //晶圆台侧取晶头处于安全位置
  25. LEFT_PICK_HEAD_IN_SAFE_POSITION, //华夫盒侧取晶头处于安全位置
  26. BOND_HEAD_BY_RIGHT_SAFE, //固晶头相对于右边安全位置
  27. BOND_HEAD_BY_LEFT_SAFE, //固晶头相对于左边安全位置
  28. ENABLE_LOOKUP_GRAB, //是否使能上视拍照补偿
  29. WAFER_NEED_BOND_DIE_NUM, //华夫盒侧取晶头需固晶片数量
  30. WAFFLE_NEED_BOND_DIE_NUM, //晶圆台取晶头侧需固晶片数量
  31. BOND_THREAD_NEED_BOND_DIE_NUM, //固晶头需固晶片数量
  32. WAFER_PICKED_DIE_NUM, //晶圆台已取晶数量
  33. WAFFLE_PICKED_DIE_NUM, //华夫盒已取晶数量
  34. BONDED_DIE_NUM, //已经固晶数量
  35. AUTO_BOND_PCB_TOTAL, //当前自动固晶PCB总数
  36. //WAFER_PCB_PICKED_DIE_NUM, //晶圆台当前PCB已取晶数量
  37. //WAFFLE_PCB_PICKED_DIE_NUM, //华夫盒当前PCB已取晶数量
  38. //PCB_BONDED_DIE_NUM, //当前PCB已经固晶数量
  39. MAX_PARAM_NAME
  40. }PARAM_NAME_ID;
  41. const map<PARAM_NAME_ID, string> m_mapParamNameIdToString = {
  42. { WAFER_PICK_CURRENT_INDEX, "WAFER_PICK_CURRENT_INDEX" },
  43. { WAFFLE_PICK_CURRENT_INDEX, "WAFFLE_PICK_CURRENT_INDEX" },
  44. { BOND_CURRENT_INDEX, "BOND_CURRENT_INDEX" },
  45. { WAFER_TRANSFER_TABLE_EXIST_DIE, "WAFER_TRANSFER_TABLE_EXIST_DIE" },
  46. { WAFFLE_TRANSFER_TABLE_EXIST_DIE, "WAFFLE_TRANSFER_TABLE_EXIST_DIE" },
  47. //{ BOND_THREAD_CURRENT_PT_ATTRIBUTE, "BOND_THREAD_CURRENT_PT_ATTRIBUTE" },
  48. { WAFER_TABLE_ALLOW_SEARCH_DIE, "WAFER_TABLE_ALLOW_SEARCH_DIE" },
  49. { WAFER_TABLE_SEARCH_DIE_DONE, "WAFER_TABLE_SEARCH_DIE_DONE" },
  50. { RIGHT_PICK_HEAD_IN_SAFE_POSITION, "RIGHT_PICK_HEAD_IN_SAFE_POSITION" },
  51. { LEFT_PICK_HEAD_IN_SAFE_POSITION, "LEFT_PICK_HEAD_IN_SAFE_POSITION" },
  52. { BOND_HEAD_BY_RIGHT_SAFE, "BOND_HEAD_BY_RIGHT_SAFE" },
  53. { BOND_HEAD_BY_LEFT_SAFE, "BOND_HEAD_BY_LEFT_SAFE" },
  54. { ENABLE_LOOKUP_GRAB, "ENABLE_LOOKUP_GRAB" },
  55. { WAFER_NEED_BOND_DIE_NUM, "WAFER_NEED_BOND_DIE_NUM" },
  56. { WAFFLE_NEED_BOND_DIE_NUM, "WAFFLE_NEED_BOND_DIE_NUM" },
  57. { BOND_THREAD_NEED_BOND_DIE_NUM, "BOND_THREAD_NEED_BOND_DIE_NUM" },
  58. {WAFER_PICKED_DIE_NUM,"WAFER_PICKED_DIE_NUM"},
  59. {WAFFLE_PICKED_DIE_NUM,"WAFFLE_PICKED_DIE_NUM"},
  60. {BONDED_DIE_NUM,"BONDED_DIE_NUM"},
  61. { AUTO_BOND_PCB_TOTAL, "AUTO_BOND_PCB_TOTAL" }
  62. };
  63. #define SET_STEP_STATUS CStaticStepData::GetInstance()->SetStatus
  64. #define WAIT_STEP_STATUS CStaticStepData::GetInstance()->WaitStatus
  65. class __declspec(dllexport) CStaticStepData
  66. {
  67. #define STEP_PUBLIC_TABLE_NAME "StepPublicData"
  68. private:
  69. //初始化成功标志
  70. bool m_bIsInitSuccess;
  71. vector<STEP_PUBLIC_DATA> m_mapStepPublicData;
  72. static CStaticStepData* m_pInstance;
  73. static std::mutex m_SaveDataMutex;
  74. CProduct* m_pCProduct;
  75. CStaticStepData();
  76. public:
  77. static CStaticStepData* GetInstance();
  78. //保存Step共公数据
  79. long SetStepPublicData(PARAM_NAME_ID id, string value);
  80. //读取Step共公数据
  81. long GetStepPublicData(PARAM_NAME_ID id, string& value);
  82. //保存Step共公数据
  83. long SetStepPublicData(PARAM_NAME_ID id, bool value);
  84. //读取Step共公数据
  85. long GetStepPublicData(PARAM_NAME_ID id, bool& value);
  86. //保存Step共公数据
  87. long SetStepPublicData(PARAM_NAME_ID id, int value);
  88. //读取Step共公数据
  89. long GetStepPublicData(PARAM_NAME_ID id, int& value);
  90. //保存Step共公数据
  91. long SetStepPublicData(PARAM_NAME_ID id, unsigned int value);
  92. //读取Step共公数据
  93. long GetStepPublicData(PARAM_NAME_ID id, unsigned int& value);
  94. //保存Step共公数据
  95. long SetStepPublicData(PARAM_NAME_ID id, long value);
  96. //读取Step共公数据
  97. long GetStepPublicData(PARAM_NAME_ID id, long& value);
  98. //保存Step共公数据
  99. long SetStepPublicData(PARAM_NAME_ID id, double value);
  100. //读取Step共公数据
  101. long GetStepPublicData(PARAM_NAME_ID id, double& value);
  102. //保存Step共公数据到数据库
  103. long StepPublicDataMapToDataBase();
  104. //从数据库中加载Step共公数据
  105. long StepPublicDataDataBaseToMap();
  106. bool IsInitSuccess(); //是否初始化成功
  107. //设置Step执行过程中状态
  108. LONG SetStatus(PARAM_NAME_ID id, bool bStatus);
  109. //等待状态
  110. LONG WaitStatus(PARAM_NAME_ID id, bool bStatus);
  111. };