CProduct.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628
  1. #pragma once
  2. #include "CppSQLite3.h"
  3. #include "dt.h"
  4. #include <string>
  5. #include <windows.h>
  6. #include <mutex>
  7. #include <vector>
  8. #include <map>
  9. #include "CDataBaseOperate.h"
  10. #include "CMachineCalibration.h"
  11. #ifdef PRODUCT_DLL
  12. #define DLL_PRODUCT_API __declspec(dllexport)
  13. #else
  14. #define DLL_PRODUCT_API
  15. #endif
  16. #define PRODUCT_DATABASE_NAME "\\Product.db"
  17. #define PROGRAM_BOND_MATRIX_TABLE_NAME "Program_BondMatrix"
  18. #define PROGRAM_PONIT_MATRIX_TABLE_NAME "Program_PointMatrix"
  19. #define PROGRAM_DIE_MATRIX_TABLE_NAME "Program_DieMatrix"
  20. #define PROGRAM_WAFER_MATRIX_TABLE_NAME "Program_WaferMatrix"
  21. #define PROGRAM_WAFFLE_MATRIX_TABLE_NAME "Program_WaffleMatrix"
  22. #define PROGRAM_PARAM_TABLE_NAME "Program_Param"
  23. #define PROGRAM_BOND_INFO_TABLE_NAME "Program_BondInfo"
  24. #define PROGRAM_HEAD_TABLE_TABLE_NAME "Program_HeadTableMatrix"
  25. #define ONE_DIM_MATRIX_TABLE_NAME "OneDimMatrix"
  26. #define STEP_LIST_DETAIL_TABLE_NAME "StepListDetail"
  27. #define STEP_PUBLIC_DATA_TABLE_NAME "StepPublicData"
  28. #define ALN_STRATEGY_TABLE_NAME "PR_Strategy"
  29. #define PR_TEMPLATE_TABLE_NAME "PR_Template"
  30. #define PR_BONDINSP_TABLE_NAME "PR_BondInsp"
  31. #define NOZZLE_PARAM_TABLE_NAME "NozzleParam"
  32. #define BOND_TEMPERATURE_TABLE_NAME "Bond_Temperature_List"
  33. #define NO_GRAB_TEMPLATE_ID 0
  34. namespace ns_db
  35. {
  36. using namespace std;
  37. //一维矩阵ID
  38. enum OneDimMatrixID
  39. {
  40. NozzleMatrix = 0,
  41. };
  42. //模板类型枚举
  43. enum MCM_TEMPLATE_TYPE {
  44. COMMON_MIN = 1, COMMON_MAX = 50000,
  45. BONDINSP_MIN = 50001, BONDINSP_MAX = 60000,
  46. EXPOXY_MIN = 60001, EXPOXY_MAX = 70000,
  47. ALN_MIN = 70001, ALN_MAX = 80000
  48. };
  49. enum PICKBOND_PARAM_TYPE {
  50. WAFFLE_PICK = 1, //华夫盒取晶
  51. WAFFLE_BOND, //华夫盒固晶
  52. WAFFER_PICK, //晶片台取晶
  53. WAFFER_BOND, //晶片台固晶
  54. BONDHEAD_PICK, //贴片头取晶
  55. BONDHEAD_BOND //贴片头固晶
  56. };
  57. struct OneDimMatrixInfo
  58. {
  59. int nMatrixId = 0; //矩阵ID
  60. std::string sMatrixName = ""; //名字
  61. int nMatrixRow = 0; //矩阵行数
  62. int nMatrixCol = 0; //矩阵列数
  63. XY_DOUBLE_STRUCT LeftTopPoint{ 0,0 }; //矩阵左上角点位置(相对位置)
  64. XY_DOUBLE_STRUCT RightTopPoint{ 0,0 }; //矩阵右上角点位置(相对位置)
  65. XY_DOUBLE_STRUCT RightBottomPoint{ 0,0 }; //矩阵右下角点位置(相对位置)
  66. vector<XY_LONG_STRUCT> vetNoUsedPt; //不使用的点
  67. };
  68. //吸嘴参数
  69. struct NozzleParam : TABLE_INFO_BASE
  70. {
  71. int nNozzleIndex = 0;
  72. XY_DOUBLE_STRUCT position{ 0,0 };
  73. NozzleCalibParam calibParam;
  74. double dNozzleHeigh = 0; //在固定位置进行标定
  75. int nMaxAllowUseNum = 10000;
  76. int nUsedNum = 0;
  77. };
  78. //取(固)晶参数
  79. typedef struct _PICKBOND_PARAM_STRUCT : TABLE_INFO_BASE
  80. {
  81. UINT iId; //参数ID
  82. PICKBOND_PARAM_TYPE eParamType; //参数类型
  83. bool bCheckBlock; //阻塞检测
  84. bool bCheckLose; //漏晶检测
  85. bool bFindForce; //是否寻压
  86. double dPreLevOffset; //预备高度(Offset)
  87. double dForce; //取(固)压力
  88. double dWorkLevOffset; //取(固)高度(寻压则无高度) (Offset)
  89. //double dContactHigh; //接触高度,通过测高获取
  90. UINT iGrabDelay; //拍图延时
  91. UINT iPickOrBondDelay; //取(固)延时
  92. UINT iBlockOrLoseDelay; //阻塞(漏晶)检测延时
  93. UINT iVacuumDelay; //真空延时
  94. UINT iBlowDelay; //吹气延时(0为不吹气)
  95. }PICKBOND_PARAM_STRUCT;
  96. //校准台校准类型枚举 NO_CALIB:不校准 UPLOOK_CALIB:下视校准 TABLE_CALIB:校准台校准
  97. //enum CALIB_DIE_TYPE {
  98. // NO_CALIB = 0x0, //不校准
  99. // UPLOOK_CALIB = 0x1, //LookUp校准
  100. // TABLE_CALIB = 0x2, //中转台校准
  101. // UPLOOK_TABLE_CALIB = UPLOOK_CALIB | TABLE_CALIB //中转台和LookUp均校准
  102. //};
  103. enum DIE_SOURCE { BY_NUL = 0 /*未指定*/, BY_WAFFLE = 1 /*华夫盒*/, BY_WAFER = 2/*晶片台*/ };
  104. enum CALIB_TYPE { TYPE_1 = 0 /*中转台1*/, TYPE_2 = 1 /*中转台2*/, TYPE_3 = 2/*中转台3*/ };
  105. enum BOND_MATRIX_TEMPLATE_TYPE {
  106. TEMPLATE_WAFER_PICK = 0,
  107. TEMPLATE_TRANSFER_PICK,
  108. TEMPLATE_LOOKUP,
  109. TEMPLATE_WORKTABLE_BOND,
  110. TEMPLATE_WORKTABLE_BOND_ALN,
  111. TEMPLATE_BONDFRONT,
  112. TEMPLATE_BONDBACK
  113. };
  114. //固晶信息
  115. typedef struct BOND_INFO_STRUCT : TABLE_INFO_BASE
  116. {
  117. UINT iInfoId; //固晶信息Id
  118. //UINT iModuleId; //模组Id
  119. DIE_SOURCE eDieSource; //晶片来源
  120. double dDieHeight; //芯片高度
  121. double dDieSizeX;
  122. double dDieSizeY; //芯片尺寸
  123. UINT iDieMatrixId; //使用的晶片台号或华夫盒矩阵号
  124. UINT iCalibTableId; //校准台编号
  125. bool bAllBondAlnEnable = false; //是否逐个固晶对点使能
  126. bool bPcbAlnEnable = false; //是否 PCB对点使能
  127. bool bLookUpPREnable = false; //是否上视对点使能
  128. bool bPreBondPREnable = false; //是否固前检测使能
  129. bool bPostBondPREnable = false; //是否固后检测使能
  130. bool bTransferPREnable = false; //是否中转放置PR
  131. bool bPickPREnable = false; //是否拾取PR对点使能
  132. bool bUseMultiStageTemperature = false; //使用多段温度
  133. UINT iTemperatureListId;
  134. UINT iPickParamId; //取晶参数Id
  135. UINT iCalibBondParamId; //校准台固晶参数Id
  136. UINT iCalibPickParamId; //校准台取晶参数Id
  137. UINT iBondParamId; //固晶参数Id
  138. UINT iPickHeadId; //取晶吸嘴Id号
  139. UINT iBondHeadId; //固晶吸嘴Id号
  140. UINT iPickPRStrategyId = 0; //取晶PR策略Id
  141. UINT iBondAlnPRStrategyId = 0; //固晶PR策略Id
  142. UINT iPcbAlnPRStrategyId = 0; //PCB 对点策略ID
  143. UINT iCalibPRStrategyId = 0; //校准台PR策略Id
  144. UINT iLookUpPRStrategyId = 0; //下视PR策略Id
  145. UINT iBondFrontPRStrategyId = 0; //固前检测模板ID号 0为不检测
  146. UINT iBondBackPRStrategyId = 0; //固后检测模板ID号 0为不检测
  147. X_Y_ANGLE_STRUCT stOffset; //固晶点补偿(从编程的固晶点位置偏移)
  148. }BOND_INFO_STRUCT;
  149. typedef struct _PROGRAM_DIE_MATRIX_STRUCT : TABLE_INFO_BASE
  150. {
  151. UINT iModuleId = 1; //模组Id
  152. string strModuleName = "WaffleHead"; //模组名称
  153. UINT MatrixId = 0; //矩阵ID
  154. INT MatrixRow = 1; //矩阵行数
  155. INT MatrixCol = 1; //矩阵列数
  156. XY_DOUBLE_STRUCT LeftTopPoint = { 0,0 }; //矩阵左上角点位置(相对位置)
  157. XY_DOUBLE_STRUCT RightTopPoint = { 0,0 }; //矩阵右上角点位置(相对位置)
  158. XY_DOUBLE_STRUCT RightBottomPoint = { 0,0 }; //矩阵右下角点位置(相对位置)
  159. vector<XY_LONG_STRUCT> VecNoBondPt; //矩阵上不固晶的Pt列表 (1,2)表示第一行第二列不固晶
  160. }PROGRAM_DIE_MATRIX_STRUCT; //晶片矩阵包括华夫盒和晶圆台
  161. typedef struct _PROGRAM_WAFER_MATRIX_STRUCT : TABLE_INFO_BASE
  162. {
  163. UINT MatrixId; //矩阵ID
  164. UINT iDieMatrixId; //包含的Pt矩阵Id
  165. INT MatrixRow; //矩阵行数
  166. INT MatrixCol; //矩阵列数
  167. XY_DOUBLE_STRUCT LeftTopPoint; //矩阵左上角点位置(相对位置)
  168. XY_DOUBLE_STRUCT RightTopPoint; //矩阵右上角点位置(相对位置)
  169. XY_DOUBLE_STRUCT RightBottomPoint; //矩阵右下角点位置(相对位置)
  170. vector<XY_LONG_STRUCT> VecNoBondPt; //矩阵上不固晶的Pt列表 (1,2)表示第一行第二列不固晶
  171. }PROGRAM_WAFER_MATRIX_STRUCT; //晶圆台矩阵
  172. typedef struct _PROGRAM_WAFFLE_MATRIX_STRUCT : TABLE_INFO_BASE
  173. {
  174. UINT MatrixId; //矩阵ID
  175. INT PackRow = 1; //华夫盒行数
  176. INT PackCol = 1; //华夫盒列数
  177. XY_DOUBLE_STRUCT LeftTopPoint = { 0,0 }; //矩阵左上角点位置(绝对位置)
  178. XY_DOUBLE_STRUCT RightTopPoint = { 0,0 }; //矩阵右上角点位置(绝对位置)
  179. XY_DOUBLE_STRUCT RightBottomPoint = { 0,0 }; //矩阵右下角点位置(绝对位置)
  180. vector<INT> VecDieMatrixId; //包含的Pt矩阵Id
  181. vector<XY_LONG_STRUCT> VecNoBondDie; //矩阵上不固晶的Pcb列表 (1,2)表示第一行第二列不固晶
  182. double dieSizeX = 0; //晶粒尺寸 长
  183. double dieSizeY = 0; //晶粒尺寸 宽
  184. }PROGRAM_WAFFLE_MATRIX_STRUCT; //华夫盒矩阵
  185. typedef struct _PROGRAM_POINT_MATRIX_STRUCT : TABLE_INFO_BASE
  186. {
  187. UINT MatrixId; //矩阵ID
  188. UINT iModuleId; //模组Id
  189. string strModuleName; //模组名称
  190. INT MatrixRow; //矩阵行数
  191. INT MatrixCol; //矩阵列数
  192. XY_DOUBLE_STRUCT LeftTopPoint; //矩阵左上角点位置
  193. XY_DOUBLE_STRUCT RightTopPoint; //矩阵右上角点位置
  194. XY_DOUBLE_STRUCT RightBottomPoint; //矩阵右下角点位置
  195. vector<XY_LONG_STRUCT> VecNoBondPt; //矩阵上不固晶的Pt列表 (1,2)表示第一行第二列不固晶
  196. }PROGRAM_POINT_MATRIX_STRUCT; //程序PT参数
  197. typedef struct _PROGRAM_BOND_MATRIX_STRUCT : TABLE_INFO_BASE
  198. {
  199. UINT BondMatrixId; //矩阵ID
  200. UINT iModuleId; //模组Id
  201. string strModuleName; //模组名称
  202. INT BondMatrixRow; //Pcb行数
  203. INT BondMatrixCol; //Pcb列数
  204. XY_DOUBLE_STRUCT LeftTopPoint; //矩阵左上角点位置
  205. XY_DOUBLE_STRUCT RightTopPoint; //矩阵右上角点位置
  206. XY_DOUBLE_STRUCT RightBottomPoint; //矩阵右下角点位置
  207. vector<INT> VecPointMatrixId; //包含的Pt矩阵Id
  208. vector<XY_LONG_STRUCT> VecNoBondPt; //矩阵上不固晶的列表 (1,2)表示第一行第二列不固晶
  209. INT BondInfoId; //固晶参数Id
  210. }PROGRAM_BOND_MATRIX_STRUCT; //固晶
  211. typedef struct _PROGRAM_HEAD_TABLE_MATRIX_STRUCT : TABLE_INFO_BASE
  212. {
  213. UINT MatrixId; //矩阵ID
  214. INT MatrixRow; //矩阵行数
  215. INT MatrixCol; //矩阵列数
  216. XY_DOUBLE_STRUCT LeftTopPoint; //矩阵左上角点位置
  217. XY_DOUBLE_STRUCT RightTopPoint; //矩阵右上角点位置
  218. XY_DOUBLE_STRUCT RightBottomPoint; //矩阵右下角点位置
  219. vector<XY_LONG_STRUCT> VecNoBondPt; //矩阵上不固晶的Pt列表 (1,2)表示第一行第二列不固晶
  220. }PROGRAM_HEAD_TABLE_MATRIX_STRUCT; //程序PT参数
  221. typedef struct _STEP_DETAIL : TABLE_INFO_BASE
  222. {
  223. UINT iIndex; //在组中的执行顺序
  224. UINT iFunctionId; //功能Id
  225. UINT iGroupId; //组Id
  226. UINT iStepId; //执行的StepId
  227. string strParam; //执行Step时的参数(经过序列化后的参数)
  228. } STEP_DETAIL;
  229. typedef struct _STEP_PUBLIC_DATA : TABLE_INFO_BASE
  230. {
  231. UINT Id; //参数Id
  232. string Key; //参数Key
  233. string Value; //值
  234. } STEP_PUBLIC_DATA;
  235. //enum TEMPLATE_TYPE {
  236. // ALN_MIN = 0, ALN_MAX = 50000, //对点策略
  237. // BONDINSP_MIN = 50001, BONDINSP_MAX = 60000, //固后检测模板
  238. // EXPOXY_MIN = 60001, EXPOXY_MAX = 70000, //胶量检测模板
  239. //};
  240. //模板图像类型枚举
  241. //enum TEMP_TYPE { FIND_PM = 0, FIND_GM = 1, FIND_LINE = 2, FIND_CIRCLE = 3, FIND_EPOXYINSP = 4 };
  242. //对点输出枚举
  243. enum SEARCH_OUT {
  244. OUT_NULL = 0X0, //定位
  245. OUT_X = 0X1,
  246. OUT_Y = 0X2,
  247. OUT_Ax = 0X4/*相对于X轴角度*/,
  248. OUT_Ay = 0x8/*相对于Y轴角度*/,
  249. OUT_All = OUT_X | OUT_Y | OUT_Ax
  250. };
  251. typedef struct _PR_TEMPLATE : TABLE_INFO_BASE
  252. {
  253. UINT iTemplateId; //模板Id
  254. UINT iModuleType; //模组类型
  255. UINT iPrMethod; //Pr模板方法
  256. UINT iCameraId; //相机ID
  257. SEARCH_OUT eResultSelect; //选取结果
  258. X_Y_Z_R_STRUCT stGrabPos; //拍照位置
  259. UINT iRedLight; //灯光参数1
  260. UINT iGreenLight; //灯光参数2
  261. UINT iBlueLight; //灯光参数3
  262. UINT iPointLight; //灯光参数4
  263. double dExposureTime; //相机曝光时间
  264. double dGain; //相机对比度
  265. string Date; //模板创建时间
  266. } PR_TEMPLATE;
  267. typedef struct _PR_BONDINSP : TABLE_INFO_BASE
  268. {
  269. UINT iID; // Auto-incremented ID
  270. UINT iTableId; // Table ID
  271. string sTableType; // Table type (VARCHAR)
  272. UINT iCameraId; // Camera ID
  273. UINT iModelId; // Model ID
  274. INT iPosnX; // Position X
  275. INT iPosnY; // Position Y
  276. INT iPosnZ; // Position Z (default: 0)
  277. INT iPosnR; // Position Rotation (default: 0)
  278. INT iCameraX; // Camera X (default: 0)
  279. INT iCameraY; // Camera Y (default: 0)
  280. INT iCameraLev; // Camera Level
  281. double dFindAngle; // Find angle
  282. UINT iMinScore; // Minimum score
  283. UINT iNumMatches; // Number of matches
  284. double dRangeX1; // Range X1 (default: -1)
  285. double dRangeY1; // Range Y1 (default: -1)
  286. double dRangeX2; // Range X2 (default: -1)
  287. double dRangeY2; // Range Y2 (default: -1)
  288. double dPermErrorX; // Permanent error in X (default: 0)
  289. double dPermErrorY; // Permanent error in Y (default: 0)
  290. double dPermErrorAgent; // Permanent error agent (default: 0)
  291. string sDate; // Date (default: current timestamp)
  292. UINT iFindType; // Find type (default: 0)
  293. } PR_BONDINSP;
  294. struct MULTI_TEMP_STRUCT
  295. {
  296. UINT iTemplateId; //模板Id
  297. SEARCH_OUT eResultSelect; //选取结果
  298. };
  299. typedef struct _PR_STRATEGY : TABLE_INFO_BASE
  300. {
  301. UINT iStrategyId; //PR策略ID
  302. UINT iModuleType;
  303. vector<MULTI_TEMP_STRUCT> vecTemplateId; //模板ID
  304. X_Y_ANGLE_STRUCT stRef; //基准位置
  305. string Date; //模板创建时间
  306. }PR_STRATEGY;
  307. typedef struct _TEMPERATURE_LIST_STRUCT : TABLE_INFO_BASE
  308. {
  309. int iId; //温度列表Id(每个Id表示一组温度列表,与固晶点关联)
  310. int iSerialNumber; //列表内序号
  311. double dHeadTemperature; //固晶头温度(度)
  312. double dHeadLimitUp; //允许共晶头温度误差上限(度)
  313. double dHeadLimitDown; //允许共晶头温度温度误差下限(度)
  314. double dTableTemperature; //固晶台温度(度)
  315. double dTableLimitUp; //允许台晶头温度误差上限(度)
  316. double dTableLimitDown; //允许台晶头温度温度误差下限(度)
  317. //double dUltraValue; //超声大小
  318. int eUltraMode; //超声模式
  319. int nVolFullScale; //超声电压
  320. int nCurFullScale; //超声电流
  321. int nPowFullScale; //超声功率
  322. bool bFindForce; //是否寻压
  323. double dBondForce; //固晶压力(g)
  324. double dBondLev; //固晶高度(um)
  325. bool bHeadVacuumOff; //关固晶头真空
  326. bool bTableVacuumOff; //关固晶台真空
  327. int lBondDelay; //固晶延时(ms)
  328. }TEMPERATURE_LIST_STRUCT;
  329. class DLL_PRODUCT_API CProduct : public CDataBaseOperate
  330. {
  331. public:
  332. CProduct(string strDbPath);
  333. private:
  334. LONG SaveDB() override;
  335. LONG LoadDB() override;
  336. #pragma region Program_DieMatrix 用于wafer 和 waffle
  337. private:
  338. std::vector<PROGRAM_DIE_MATRIX_STRUCT> m_VecDieMatrix;
  339. //加载用户编程数据表
  340. LONG LoadDieMatrix();
  341. LONG SaveDieMatrix();
  342. public:
  343. LONG GetDieMatrix(UINT nModuleId, std::vector<PROGRAM_DIE_MATRIX_STRUCT>& vecDieMatrix);
  344. LONG GetDieMatrix(UINT iMatrixId, PROGRAM_DIE_MATRIX_STRUCT& stDieMatrix);
  345. LONG GetAllDieMatrix(std::vector<PROGRAM_DIE_MATRIX_STRUCT>& vecDieMatrix);
  346. LONG SetDieMatrix(std::vector<PROGRAM_DIE_MATRIX_STRUCT> stDieMatrix, bool bAppend = false);
  347. LONG SetAllDieMatrix(std::vector<PROGRAM_DIE_MATRIX_STRUCT> vecDieMatrix);
  348. LONG SetAllWaffleDieMatrix(std::vector<PROGRAM_DIE_MATRIX_STRUCT> vecDieMatrix, bool isCallBack = true);
  349. LONG SetAllWaferDieMatrix(std::vector<PROGRAM_DIE_MATRIX_STRUCT> vecDieMatrix, bool isCallBack = true);
  350. LONG DeleteDieMatrix(int matrixId);
  351. #pragma endregion
  352. #pragma region Program_WaferMatrix 表
  353. private:
  354. std::vector<PROGRAM_WAFER_MATRIX_STRUCT> m_VecWaferMatrix;
  355. //加载用户编程数据表
  356. LONG LoadWaferMatrix();
  357. LONG SaveWaferMatrix();
  358. public:
  359. std::vector<PROGRAM_WAFER_MATRIX_STRUCT> GetWaferMatrix() { return m_VecWaferMatrix; };
  360. LONG SetWaferMatrix(UINT id, PROGRAM_WAFER_MATRIX_STRUCT matrix);
  361. LONG SetAllWaferMatrix(std::vector<PROGRAM_WAFER_MATRIX_STRUCT> vecWaferMatrix, bool isCallBack = true);
  362. LONG AddWaferMatrix(PROGRAM_WAFER_MATRIX_STRUCT newMatrix, int& newId);
  363. LONG DeleteWaferMatrix(int matrixID);
  364. #pragma endregion
  365. #pragma region Program_WaffleMatrix 表
  366. private:
  367. std::vector<PROGRAM_WAFFLE_MATRIX_STRUCT> m_VecWaffleMatrix;
  368. //加载用户编程数据表
  369. LONG LoadWaffleMatrix();
  370. LONG SaveWaffleMatrix();
  371. public:
  372. std::vector<PROGRAM_WAFFLE_MATRIX_STRUCT> GetWaffleMatrix() { return m_VecWaffleMatrix; };
  373. LONG SetWaffleMatrix(int id, PROGRAM_WAFFLE_MATRIX_STRUCT matrix);
  374. LONG SetAllWaffleMatrix(std::vector<PROGRAM_WAFFLE_MATRIX_STRUCT> vecWaffleMatrix);
  375. LONG AddWaffleMatrix(PROGRAM_WAFFLE_MATRIX_STRUCT newMatrix, int& newId);
  376. LONG DeleteWaffleMatrix(int matrixID);
  377. #pragma endregion
  378. #pragma region Program_BondMatrix 表
  379. private:
  380. std::vector<PROGRAM_BOND_MATRIX_STRUCT> m_VecBondMatrix;
  381. //加载用户编程数据表
  382. LONG LoadBondMatrix();
  383. LONG SaveBondMatrix();
  384. public:
  385. std::vector<PROGRAM_BOND_MATRIX_STRUCT> GetBondMatrix() { return m_VecBondMatrix; };
  386. void SetBondMatrix(int matrixID, PROGRAM_BOND_MATRIX_STRUCT matrix);
  387. LONG SetAllBondMatrix(std::vector<PROGRAM_BOND_MATRIX_STRUCT> vecBondMatrix, bool isCallBack = true);
  388. LONG AddBondMatrix(PROGRAM_BOND_MATRIX_STRUCT matrix, int& newId);
  389. void DeleteBondMatrix(int matrixID);
  390. #pragma endregion
  391. #pragma region Program_PointMatrix 表 用于Bond
  392. private:
  393. std::vector<PROGRAM_POINT_MATRIX_STRUCT> m_VecPointMatrix;
  394. //加载用户编程数据表
  395. LONG LoadPointMatrix();
  396. LONG SavePointMatrix();
  397. public:
  398. LONG GetPointMatrix(UINT iMatrixId, PROGRAM_POINT_MATRIX_STRUCT& stPointMatrix);
  399. LONG GetAllPointMatrix(std::vector<PROGRAM_POINT_MATRIX_STRUCT>& vecPointMatrix);
  400. LONG AddPointMatrix(int bondMatrixID, PROGRAM_POINT_MATRIX_STRUCT subMatrix, int& newId);
  401. LONG SetPointMatrix(int matrixID, PROGRAM_POINT_MATRIX_STRUCT dieMatrix);
  402. LONG SetAllPointMatrix(std::vector<PROGRAM_POINT_MATRIX_STRUCT> vecPointMatrix, bool isCallBack = true);
  403. LONG DeletePointMatrix(int bondMatrixId, int subMatrixID);
  404. #pragma endregion
  405. #pragma region Program_BondInfo 表
  406. private:
  407. std::vector<BOND_INFO_STRUCT> m_VecBondInfoData;
  408. //加载用户编程数据表
  409. LONG LoadBondInfoData();
  410. LONG SaveBondInfoData();
  411. public:
  412. std::vector<BOND_INFO_STRUCT> GetAllBondInfoData() { return m_VecBondInfoData; };
  413. LONG GetBondInfoData(UINT iInfoId, BOND_INFO_STRUCT& stBondInfoData);
  414. LONG SetBondInfoData(int infoId, BOND_INFO_STRUCT stBondInfoData);
  415. LONG AddBondInfoData(BOND_INFO_STRUCT stBondInfoData, int& newInfoId);//需要指定矩阵ID
  416. LONG DeleteBondInfoData(int infoId);
  417. #pragma endregion
  418. #pragma region Program_Param 表
  419. private:
  420. std::vector<PICKBOND_PARAM_STRUCT> m_VecBondParam;
  421. //加载用户编程数据表
  422. LONG LoadBondParam();
  423. LONG SaveBondParam();
  424. public:
  425. std::vector<PICKBOND_PARAM_STRUCT> GetAllBondParamData() { return m_VecBondParam; };
  426. LONG GetBondParam(UINT iParamId, PICKBOND_PARAM_STRUCT& stBondParam);
  427. LONG SetBondParam(int paramId, PICKBOND_PARAM_STRUCT stBondParam);
  428. LONG AddBondParam(PICKBOND_PARAM_STRUCT stBondParam, int& newId);//需要指定bondInfo 的id,将数据进行
  429. LONG DeleteBondParam(int paramId);
  430. #pragma endregion
  431. #pragma region Program_HeadTableMatrix 表
  432. private:
  433. PROGRAM_HEAD_TABLE_MATRIX_STRUCT m_VecHeadTableMatrix;
  434. //加载用户编程数据表
  435. LONG LoadHeadTable();
  436. public:
  437. PROGRAM_HEAD_TABLE_MATRIX_STRUCT GetHeadTableMatrix() { return m_VecHeadTableMatrix; };
  438. #pragma endregion
  439. #pragma region 一维矩阵:暂用于吸嘴矩阵
  440. private:
  441. std::vector<OneDimMatrixInfo> m_vetOneDimMatrix;
  442. LONG LoadOneMatrixInfo();
  443. public:
  444. LONG GetOneDimMatrixInfo(int matrixID, OneDimMatrixInfo& matrix);
  445. #pragma endregion
  446. #pragma region 吸嘴参数
  447. private:
  448. std::vector <NozzleParam> m_vecNozzleParam;
  449. LONG LoadNozzleParam();
  450. LONG SaveNozzleParam();
  451. public:
  452. LONG GetNozzleParam(int index, NozzleParam& param);
  453. LONG GetAllNozzleParam(std::vector <NozzleParam>& vecNozzleParam);
  454. LONG SetNozzleParam(int index, NozzleParam param, bool append = false, bool isCallBack = true);
  455. LONG SetAllNozzleParam(std::vector <NozzleParam>, bool isCallBack = true);
  456. LONG AddNozzleParam(NozzleParam param, bool isCallBack = true);
  457. #pragma endregion
  458. #pragma region 固晶温度
  459. private:
  460. std::vector <TEMPERATURE_LIST_STRUCT> m_vecTemperatureList;
  461. LONG LoadTemperatureList();
  462. LONG SaveTemperatureList();
  463. public:
  464. /**添加删除
  465. * iId ,单独删除
  466. * iSerialNumber 单独删除?
  467. * iId里面有多个iSerialNumber
  468. */
  469. /**获取所有温度
  470. */
  471. std::vector <TEMPERATURE_LIST_STRUCT> GetAllTemperatureList();
  472. LONG GetTemperatureList(UINT iBondIndex,std::vector <TEMPERATURE_LIST_STRUCT>& vecTemperatureList);
  473. LONG AddTemperatureList(TEMPERATURE_LIST_STRUCT param);
  474. LONG DeleteTemperatureList(int id);
  475. LONG ModifyTemperatureList(int id,TEMPERATURE_LIST_STRUCT param);
  476. #pragma endregion
  477. #pragma region StepListDetail 表
  478. private:
  479. std::vector<STEP_DETAIL> m_vecStepDetail;
  480. //获取Step动作及参数表
  481. LONG LoadStepListDetail();
  482. public:
  483. std::vector<STEP_DETAIL> GetStepListDetail(UINT iFunctionId);
  484. std::vector<STEP_DETAIL> GetStepListDetail() { return m_vecStepDetail; };
  485. #pragma endregion
  486. #pragma region StepPublicData 表
  487. private:
  488. vector<STEP_PUBLIC_DATA> m_mapStepPublicData;
  489. LONG LoadStepPublicData();
  490. LONG SaveStepPublicData();
  491. public:
  492. vector<STEP_PUBLIC_DATA> GetStepPublicData() { return m_mapStepPublicData; };
  493. LONG SetStepPublicData(vector<STEP_PUBLIC_DATA> vecStepPublicData, bool bAppend = false);
  494. #pragma endregion
  495. #pragma region PR_Strategy 表
  496. private:
  497. std::vector<PR_STRATEGY> m_vecPrStrategy;
  498. LONG LoadPrStrategy();
  499. LONG SavePrStrategy();
  500. public:
  501. std::vector<PR_STRATEGY> GetPrStrategy() { return m_vecPrStrategy; };
  502. PR_STRATEGY* GetPrStrategy(UINT iStrategyId);
  503. LONG AddPrStrategy(int iModuleType, vector<MULTI_TEMP_STRUCT> vecTemplateId, X_Y_ANGLE_STRUCT stRef = { 0,0,0 });
  504. LONG DeleteStrategy(UINT iStrategyId);
  505. #pragma endregion
  506. #pragma region PR_Template 表
  507. private:
  508. std::vector<PR_TEMPLATE> m_vecPrTemplate;
  509. LONG LoadPrTemplate();
  510. LONG SavePrTemplate();
  511. public:
  512. std::vector<PR_TEMPLATE> GetPrTemplate() { return m_vecPrTemplate; };
  513. PR_TEMPLATE* GetPrTemplate(UINT iTemplateId);
  514. LONG AddPrTemplate(PR_TEMPLATE stTemplate);
  515. LONG DeletePrTemplate(UINT iTemplateId);
  516. #pragma endregion
  517. #pragma region PR_BondInsp 表
  518. private:
  519. std::vector<PR_BONDINSP> m_vecPrBondInsp;
  520. LONG LoadPrBondInsp();
  521. LONG SavePrBondInsp();
  522. public:
  523. std::vector<PR_BONDINSP> GetPrBondInsp() { return m_vecPrBondInsp; };
  524. LONG AddPrBondInsp(PR_BONDINSP stBondInsp);
  525. #pragma endregion
  526. };
  527. }