Merge branch 'master' into liuyang
# Conflicts:
# SourceCode/Bond/x64/Debug/AlarmList.csv
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | No,UNIT ID,UNIT NO,Alarm Level,Alarm Code,AlarmID,Alarm Text,Description
1,EFEM,100,0,0,1000,æºå¨äººCCLink龿¥å¼å¸¸,"è¯·æ£æ¥æ¥çº¿,æçµéå¯"
2,EFEM,101,0,0,1001,ç¸æºCCLink龿¥å¼å¸¸,"è¯·æ£æ¥æ¥çº¿,æçµéå¯"
3,EFEM,102,0,0,1002,éçµæµè¯CCLink龿¥å¼å¸¸,"è¯·æ£æ¥æ¥çº¿,æçµéå¯"
4,EFEM,103,0,0,1003,,
5,EFEM,104,0,0,1004,,
6,EFEM,105,0,0,1005,,
7,EFEM,106,0,0,1006,,
8,EFEM,107,0,0,1007,,
9,EFEM,108,0,0,1008,,
10,EFEM,109,0,0,1009,,
11,EFEM,110,0,0,1010,æ»è¿æ°æ°åå¼å¸¸,è¯·æ£æµè¿æ°
12,EFEM,111,0,0,1011,æ»ç空æ°åå¼å¸¸,è¯·æ£æµç空
13,EFEM,112,0,0,1012,LPç空å¼å¸¸,æ£æµç空
14,EFEM,113,0,0,1013,离å飿£å空å¼å¸¸,è¯·æ£æµè¿æ°
15,EFEM,114,0,0,1014,æºå¨äººç空å¼å¸¸,è¯·æ£æµç空
16,EFEM,115,0,0,1015,æ¥å被æä¸,è¯·æ£æ¥æ¥åæé®
17,EFEM,116,0,0,1016,,
18,EFEM,117,0,0,1017,,
19,EFEM,118,0,0,1018,,
20,EFEM,119,0,0,1019,,
21,EFEM,120,0,0,1020,å®å
¨é¨æå¼,è¯·æ£æ¥å®å
¨é¨
22,EFEM,121,0,0,1021,æ£é¢å·¦é¨æå¼ä¸,è¯·æ£æ¥å®å
¨é¨
23,EFEM,122,0,0,1022,æ£é¢å³é¨æå¼ä¸,è¯·æ£æ¥å®å
¨é¨
24,EFEM,123,0,0,1023,ä¾§é¢å·¦é¨æå¼ä¸,è¯·æ£æ¥å®å
¨é¨
25,EFEM,124,0,0,1024,ä¾§é¢å³é¨æå¼ä¸,è¯·æ£æ¥å®å
¨é¨
26,EFEM,125,0,0,1025,èé¢å·¦é¨æå¼ä¸,è¯·æ£æ¥å®å
¨é¨
27,EFEM,126,0,0,1026,èé¢å³é¨æå¼ä¸,è¯·æ£æ¥å®å
¨é¨
28,EFEM,127,0,0,1027,,
29,EFEM,128,0,0,1028,,
30,EFEM,129,0,0,1029,,
31,EFEM,130,0,0,1030,,
32,EFEM,131,0,0,1031,"Port1_E84æµç¨å¼å¸¸,OHT_TR_REQ_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
33,EFEM,132,0,0,1032,"Port1_E84æµç¨å¼å¸¸,OHT_BUSY_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
34,EFEM,133,0,0,1033,"Port1_E84æµç¨å¼å¸¸,OHT_COMPT_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
35,EFEM,134,0,0,1034,,
36,EFEM,135,0,0,1035,,
37,EFEM,136,0,0,1036,,
38,EFEM,137,0,0,1037,,
39,EFEM,138,0,0,1038,,
40,EFEM,139,0,0,1039,,
41,EFEM,140,1,0,1040,"Port1_E84æµç¨åæ¢,OHT_VALIDä¿¡å·å¼å¸¸",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
42,EFEM,141,1,0,1041,"Port1_E84æµç¨åæ¢,å
æ
è¢«é®æ¡æè
æ¥å被æ",è¯·æ£æ¥å
æ
ä¿¡å·æ¥å
43,EFEM,142,1,0,1042,"Port1_E84æµç¨åæ¢,OHT_åææ¾FOUPè¶
æ¶","OHT_BUSYåæªå¨è§å®æ¶é´å
åèµ°FOUP,è¯·æ£æ¥OHTæè
æ ¸å¯¹LPç¶æ"
44,EFEM,143,1,0,1043,"Port1_E84æµç¨åæ¢,OHT_BUSY_OFFæè
TR_REQ_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
45,EFEM,144,0,0,1044,,
46,EFEM,145,0,0,1045,,
47,EFEM,146,0,0,1046,,
48,EFEM,147,0,0,1047,,
49,EFEM,148,0,0,1048,,
50,EFEM,149,0,0,1049,,
51,EFEM,150,0,0,1050,"Port2_E84æµç¨å¼å¸¸,OHT_TR_REQ_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
52,EFEM,151,0,0,1051,"Port2_E84æµç¨å¼å¸¸,OHT_BUSY_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
53,EFEM,152,0,0,1052,"Port2_E84æµç¨å¼å¸¸,OHT_COMPT_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
54,EFEM,153,0,0,1053,,
55,EFEM,154,0,0,1054,,
56,EFEM,155,0,0,1055,,
57,EFEM,156,0,0,1056,,
58,EFEM,157,0,0,1057,,
59,EFEM,158,0,0,1058,,
60,EFEM,159,0,0,1059,,
61,EFEM,160,0,0,1060,"Port2_E84æµç¨åæ¢,OHT_VALIDä¿¡å·å¼å¸¸",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
62,EFEM,161,0,0,1061,"Port2_E84æµç¨åæ¢,å
æ
è¢«é®æ¡æè
æ¥å被æ",è¯·æ£æ¥å
æ
ä¿¡å·æ¥å
63,EFEM,162,0,0,1062,"Port2_E84æµç¨åæ¢,OHT_åææ¾FOUPè¶
æ¶","OHT_BUSYåæªå¨è§å®æ¶é´å
åèµ°FOUP,è¯·æ£æ¥OHTæè
æ ¸å¯¹LPç¶æ"
64,EFEM,163,0,0,1063,"Port2_E84æµç¨åæ¢,OHT_BUSY_OFFæè
TR_REQ_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
65,EFEM,164,0,0,1064,,
66,EFEM,165,0,0,1065,,
67,EFEM,166,0,0,1066,,
68,EFEM,167,0,0,1067,,
69,EFEM,168,0,0,1068,,
70,EFEM,169,0,0,1069,,
71,EFEM,170,1,0,1070,,
72,EFEM,171,1,0,1071,"Port3_E84æµç¨åæ¢,OHT_VALIDä¿¡å·å¼å¸¸",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
73,EFEM,172,1,0,1072,"Port3_E84æµç¨åæ¢,å
æ
è¢«é®æ¡æè
æ¥å被æ",è¯·æ£æ¥å
æ
ä¿¡å·æ¥å
74,EFEM,173,1,0,1073,"Port3_E84æµç¨åæ¢,OHT_åææ¾FOUPè¶
æ¶","OHT_BUSYåæªå¨è§å®æ¶é´å
åèµ°FOUP,è¯·æ£æ¥OHTæè
æ ¸å¯¹LPç¶æ"
75,EFEM,174,1,0,1074,"Port3_E84æµç¨åæ¢,OHT_BUSY_OFFæè
TR_REQ_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
76,EFEM,175,1,0,1075,,
77,EFEM,176,1,0,1076,,
78,EFEM,177,1,0,1077,,
79,EFEM,178,1,0,1078,,
80,EFEM,179,1,0,1079,,
81,EFEM,180,1,0,1080,"Port3_E84æµç¨å¼å¸¸,OHT_TR_REQ_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
82,EFEM,181,1,0,1081,"Port3_E84æµç¨å¼å¸¸,OHT_BUSY_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
83,EFEM,182,1,0,1082,"Port3_E84æµç¨å¼å¸¸,OHT_COMPT_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
84,EFEM,183,1,0,1083,,
85,EFEM,184,1,0,1084,,
86,EFEM,185,1,0,1085,,
87,EFEM,186,1,0,1086,,
88,EFEM,187,1,0,1087,,
89,EFEM,188,1,0,1088,,
90,EFEM,189,1,0,1089,,
91,EFEM,190,1,0,1090,,
92,EFEM,191,1,0,1091,"Port4_E84æµç¨åæ¢,OHT_VALIDä¿¡å·å¼å¸¸",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
93,EFEM,192,1,0,1092,"Port4_E84æµç¨åæ¢,å
æ
è¢«é®æ¡æè
æ¥å被æ",è¯·æ£æ¥å
æ
ä¿¡å·æ¥å
94,EFEM,193,1,0,1093,"Port4_E84æµç¨åæ¢,OHT_åææ¾FOUPè¶
æ¶","OHT_BUSYåæªå¨è§å®æ¶é´å
åèµ°FOUP,è¯·æ£æ¥OHTæè
æ ¸å¯¹LPç¶æ"
95,EFEM,194,1,0,1094,"Port4_E84æµç¨åæ¢,OHT_BUSY_OFFæè
TR_REQ_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
96,EFEM,195,1,0,1095,,
97,EFEM,196,1,0,1096,,
98,EFEM,197,1,0,1097,,
99,EFEM,198,1,0,1098,,
100,EFEM,199,1,0,1099,,
101,EFEM,200,1,0,1100,"Port4_E84æµç¨å¼å¸¸,OHT_TR_REQ_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
102,EFEM,201,1,0,1101,"Port4_E84æµç¨å¼å¸¸,OHT_BUSY_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
103,EFEM,202,1,0,1102,"Port4_E84æµç¨å¼å¸¸,OHT_COMPT_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
104,EFEM,203,1,0,1103,,
105,EFEM,204,1,0,1104,,
106,EFEM,205,1,0,1105,,
107,EFEM,206,1,0,1106,,
108,EFEM,207,1,0,1107,,
109,EFEM,208,1,0,1108,,
110,EFEM,209,1,0,1109,,
111,EFEM,210,0,0,1110,ååç¹å¤±è´¥/è¶
æ¶,è¯·æ£æ¥è®¾å¤ç¶æä»¥åè½´ä½ç½®æ¯å¦æå¹²æ¶ï¼è¯·éæ°æ§è¡ååæä½
112,EFEM,211,0,0,1111,Flipå·¥ä½ï¼ç空æå¼æ¶å¨è·å¼å¸¸,è¯·æ£æ¥ç»çä½ç½®
113,EFEM,212,1,0,1112,,
114,EFEM,213,1,0,1113,,
115,EFEM,214,1,0,1114,,
116,EFEM,215,1,0,1115,,
117,EFEM,216,1,0,1116,,
118,EFEM,217,1,0,1117,,
119,EFEM,218,1,0,1118,,
120,EFEM,219,1,0,1119,,
121,EFEM,220,1,0,1120,ä»»å¡åæ¶å¤±è´¥ï¼å½å忶任塿¡ä»¶ä¸æ»¡è¶³
122,EFEM,221,1,0,1121,ä»»å¡éè¯å¤±è´¥ï¼å½åéè¯ä»»å¡æ¡ä»¶ä¸æ»¡è¶³ |
| | |
| | | return &m_slot[index]; |
| | | } |
| | | |
| | | CSlot* CEquipment::getSlotWithNo(int slotNo) |
| | | { |
| | | CSlot* pSlot = nullptr; |
| | | for (int i = 0; i < SLOT_MAX; i++) { |
| | | if (!m_slot[i].isEnable()) continue; |
| | | if (m_slot[i].getNo() != slotNo) continue; |
| | | pSlot = &m_slot[i]; |
| | | break; |
| | | } |
| | | |
| | | return pSlot; |
| | | } |
| | | |
| | | CGlass* CEquipment::getAnyGlass() |
| | | { |
| | | CSlot* pSlot = nullptr; |
| | |
| | | } |
| | | |
| | | auto rawData = processData.getParamsRawData(); |
| | | std::vector<CParam> params; |
| | | this->parsingParams((const char*)rawData.data(), rawData.size(), params); |
| | | std::vector<CParam> tempParams; |
| | | this->parsingParams((const char*)rawData.data(), rawData.size(), tempParams); |
| | | int n = processData.getTotalParameter(); |
| | | std::vector<CParam> params(tempParams.begin(), tempParams.begin() + min(n, (int)tempParams.size())); |
| | | pGlass->addParams(params); |
| | | |
| | | // å
³èçGlassä¹è¦æ´æ° |
| | |
| | | |
| | | // è·åæå®çSlot |
| | | CSlot* getSlot(int index); |
| | | CSlot* getSlotWithNo(int slotNo); |
| | | |
| | | // è·åä¸ä¸ªå¯ç¨çæ§½ä½ |
| | | CSlot* getAvailableSlot(); |
| | |
| | | ON_WM_SIZE() |
| | | ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, &CEquipmentPage2::OnLvnItemchangedList1) |
| | | ON_BN_CLICKED(IDC_BUTTON_REMOVE, &CEquipmentPage2::OnBnClickedButtonRemove) |
| | | ON_BN_CLICKED(IDC_BUTTON_PUT, &CEquipmentPage2::OnBnClickedButtonPut) |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | |
| | | GetClientRect(&rcClient); |
| | | |
| | | int x = 12; |
| | | int x1 = x; |
| | | int y2 = rcClient.bottom - 12; |
| | | pItem = GetDlgItem(IDC_BUTTON_REMOVE); |
| | | pItem->GetWindowRect(&rcItem); |
| | | pItem->MoveWindow(x, y2 - rcItem.Height(), rcItem.Width(), rcItem.Height()); |
| | | x1 += rcItem.Width(); |
| | | x1 += 12; |
| | | |
| | | pItem = GetDlgItem(IDC_BUTTON_PUT); |
| | | pItem->GetWindowRect(&rcItem); |
| | | pItem->MoveWindow(x1, y2 - rcItem.Height(), rcItem.Width(), rcItem.Height()); |
| | | y2 -= rcItem.Height(); |
| | | y2 -= 8; |
| | | |
| | |
| | | if (index >= 0) { |
| | | SERVO::CSlot* pSlot = (SERVO::CSlot*)m_listCtrl.GetItemData(index); |
| | | ASSERT(pSlot); |
| | | int bRet = m_pEquipment->removeGlass(pSlot->getNo()); |
| | | if (bRet == 0) { |
| | | if (theApp.m_model.getMaster().moveGlassToBuf(m_pEquipment->getID(), |
| | | pSlot->getNo())) { |
| | | UpdateSlots(); |
| | | AfxMessageBox("ç©æå·²ååºå°Bufferä¸ï¼"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | void CEquipmentPage2::OnBnClickedButtonPut() |
| | | { |
| | | int index = GetSelectedItemIndex(); |
| | | if (index >= 0) { |
| | | SERVO::CSlot* pSlot = (SERVO::CSlot*)m_listCtrl.GetItemData(index); |
| | | ASSERT(pSlot); |
| | | if (theApp.m_model.getMaster().moveGlassToSlot(m_pEquipment->getID(), |
| | | pSlot->getNo())) { |
| | | UpdateSlots(); |
| | | AfxMessageBox("ç©æå·²æ¾å
¥æå®ä½ç½®ï¼"); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | afx_msg void OnSize(UINT nType, int cx, int cy); |
| | | afx_msg void OnLvnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult); |
| | | afx_msg void OnBnClickedButtonRemove(); |
| | | afx_msg void OnBnClickedButtonPut(); |
| | | }; |
| | |
| | | pTarSlot = pTarEq->getAvailableSlotForGlass(primaryType); |
| | | pSrcSlot = pSrcEq->getProcessedSlot(primaryType, bJobMode); |
| | | if (m_nTestFlag == 1) LOGD("createTransferTask 003 %x, %x", pTarSlot, pSrcSlot); |
| | | if (pSrcSlot == nullptr || nullptr == pTarSlot && secondaryType != SERVO::MaterialsType::G0) { |
| | | if ((pSrcSlot == nullptr || nullptr == pTarSlot) && secondaryType != SERVO::MaterialsType::G0) { |
| | | pTarSlot = pTarEq->getAvailableSlotForGlass(secondaryType); |
| | | pSrcSlot = pSrcEq->getProcessedSlot(secondaryType, bJobMode); |
| | | } |
| | |
| | | m_strLastError = "AOIæ£æµæªéè¿."; |
| | | } |
| | | } |
| | | |
| | | bool CMaster::moveGlassToBuf(int eqid, int slotNo) |
| | | { |
| | | CEquipment* pEquipment = getEquipment(eqid); |
| | | if (pEquipment == nullptr) return false; |
| | | |
| | | CSlot* pSlot = pEquipment->getSlotWithNo(slotNo); |
| | | if (pSlot == nullptr) return false; |
| | | |
| | | CGlass* pGlass = (CGlass*)pSlot->getContext(); |
| | | m_bufGlass.push_back(pGlass); |
| | | pGlass->addRef(); |
| | | pSlot->setContext(nullptr); |
| | | |
| | | m_bDataModify = TRUE; |
| | | if (m_listener.onEqDataChanged != nullptr) { |
| | | m_listener.onEqDataChanged(this, pEquipment, 0); |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | bool CMaster::moveGlassToSlot(int eqid, int slotNo) |
| | | { |
| | | CEquipment* pEquipment = getEquipment(eqid); |
| | | if (pEquipment == nullptr) return false; |
| | | |
| | | CSlot* pSlot = pEquipment->getSlotWithNo(slotNo); |
| | | if (pSlot == nullptr) return false; |
| | | if (m_bufGlass.empty()) return false; |
| | | |
| | | CGlass* pGlass = m_bufGlass.front(); |
| | | m_bufGlass.pop_front(); |
| | | if (pGlass == nullptr) return false; |
| | | pSlot->setContext(pGlass); |
| | | pGlass->release(); |
| | | |
| | | m_bDataModify = TRUE; |
| | | if (m_listener.onEqDataChanged != nullptr) { |
| | | m_listener.onEqDataChanged(this, pEquipment, 0); |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | } |
| | |
| | | bool loadState(const std::string& path); |
| | | int getWipGlasses(std::vector<CGlass*>& glasses); |
| | | void test(); |
| | | bool moveGlassToBuf(int eqid, int slotNo); |
| | | bool moveGlassToSlot(int eqid, int slotNo); |
| | | int getPortCassetteSnSeed(int port); |
| | | void setPortCassetteSnSeed(int port, int seed); |
| | | |
| | |
| | | std::string m_strStatePath; |
| | | |
| | | int m_nTestFlag; |
| | | std::list<CGlass*> m_bufGlass; |
| | | }; |
| | | } |
| | | |
| | |
| | | #include "GlassJson.h" |
| | | #include "CServoUtilsTool.h" |
| | | #include "ToolUnits.h" |
| | | |
| | | #include <optional> |
| | | #include <unordered_set> |
| | | #include <unordered_map> |
| | | #include <vector> |
| | | #include <string> |
| | | #include "CProcessDataListDlg.h" |
| | | |
| | | #define PAGE_SIZE 50 |
| | | #define PAGE_BACKGROUND_COLOR RGB(252, 252, 255) |
| | |
| | | } |
| | | |
| | | // ===== CPageGlassList æ¶æ¯å¤çç¨åº ===== |
| | | void CPageGlassList::InitRxWindow() |
| | | void CPageGlassList::InitRxWindows() |
| | | { |
| | | // 订é
æ°æ® |
| | | IRxWindows* pRxWindows = RX_GetRxWindows(); |
| | |
| | | { |
| | | if (nIDEvent == 1) { |
| | | KillTimer(1); |
| | | InitRxWindow(); |
| | | InitRxWindows(); |
| | | } |
| | | else if (nIDEvent == 2) { |
| | | UpdateWipData(); // åªåå¢éï¼ä¸é建 |
| | |
| | | { |
| | | auto* p = reinterpret_cast<NMC_ELC_SHOWFULLTEXT*>(pNMHDR); |
| | | |
| | | // è¿éææ¶ç¨æ¶æ¯æ¡æ¾ç¤ºï¼åç»å¯æ¢æä½ ç详æ
页 |
| | | CString strNewMsg = p->text; |
| | | strNewMsg.Replace(_T(","), _T("\n")); |
| | | MessageBox(strNewMsg, _T("详ç»ä¿¡æ¯"), MB_OK | MB_ICONINFORMATION); |
| | | // å¯¹è¯æ¡æ¾ç¤ºå·¥èºåæ° |
| | | CProcessDataListDlg dlg; |
| | | dlg.setRawText(p->text); |
| | | dlg.DoModal(); |
| | | |
| | | *pResult = 0; |
| | | } |
| | | |
| | |
| | | |
| | | return true; |
| | | } |
| | | |
| | | BOOL CPageGlassList::PreTranslateMessage(MSG* pMsg) |
| | | { |
| | | if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE) { |
| | | return TRUE; |
| | | } |
| | | |
| | | return CDialogEx::PreTranslateMessage(pMsg); |
| | | } |
| | |
| | | bool m_rebuilding = false; |
| | | |
| | | private: |
| | | void InitRxWindow(); |
| | | void InitRxWindows(); |
| | | void Resize(); |
| | | void InitStatusCombo(); |
| | | void InitTimeRangeCombo(); |
| | |
| | | afx_msg void OnBnClickedButtonPrevPage(); |
| | | afx_msg void OnBnClickedButtonNextPage(); |
| | | afx_msg void OnShowFullText(NMHDR* pNMHDR, LRESULT* pResult); |
| | | virtual BOOL PreTranslateMessage(MSG* pMsg); |
| | | DECLARE_MESSAGE_MAP() |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // CProcessDataListDlg.cpp: å®ç°æä»¶ |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | | #include "Servo.h" |
| | | #include "CProcessDataListDlg.h" |
| | | #include "afxdialogex.h" |
| | | |
| | | |
| | | // CProcessDataListDlg å¯¹è¯æ¡ |
| | | |
| | | IMPLEMENT_DYNAMIC(CProcessDataListDlg, CDialogEx) |
| | | |
| | | CProcessDataListDlg::CProcessDataListDlg(CWnd* pParent /*=nullptr*/) |
| | | : CDialogEx(IDD_DIALOG_PROCESS_DATA_LIST, pParent) |
| | | { |
| | | |
| | | } |
| | | |
| | | CProcessDataListDlg::~CProcessDataListDlg() |
| | | { |
| | | } |
| | | |
| | | void CProcessDataListDlg::DoDataExchange(CDataExchange* pDX) |
| | | { |
| | | CDialogEx::DoDataExchange(pDX); |
| | | DDX_Control(pDX, IDC_LIST_RECIPE_PARAM, m_listCtrl); |
| | | } |
| | | |
| | | |
| | | BEGIN_MESSAGE_MAP(CProcessDataListDlg, CDialogEx) |
| | | ON_BN_CLICKED(IDC_BUTTON1, &CProcessDataListDlg::OnBnClickedButton1) |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CProcessDataListDlg æ¶æ¯å¤çç¨åº |
| | | |
| | | |
| | | BOOL CProcessDataListDlg::OnInitDialog() |
| | | { |
| | | CDialogEx::OnInitDialog(); |
| | | |
| | | |
| | | DWORD dwStyle = m_listCtrl.GetExtendedStyle(); |
| | | dwStyle |= LVS_EX_FULLROWSELECT; |
| | | dwStyle |= LVS_EX_GRIDLINES; |
| | | dwStyle |= LVS_EX_DOUBLEBUFFER; |
| | | m_listCtrl.SetExtendedStyle(dwStyle); |
| | | |
| | | HIMAGELIST imageList = ImageList_Create(24, 24, ILC_COLOR24, 1, 1); |
| | | ListView_SetImageList(m_listCtrl.GetSafeHwnd(), imageList, LVSIL_SMALL); |
| | | m_listCtrl.InsertColumn(0, _T("åç§°"), LVCFMT_RIGHT, 188); |
| | | m_listCtrl.InsertColumn(1, _T("å¼"), LVCFMT_LEFT, 128); |
| | | |
| | | |
| | | InsertParamsToListCtrl(m_listCtrl, m_strRawText); |
| | | |
| | | return TRUE; // return TRUE unless you set the focus to a control |
| | | // å¼å¸¸: OCX 屿§é¡µåºè¿å FALSE |
| | | } |
| | | |
| | | void CProcessDataListDlg::setRawText(CString& strRawText) |
| | | { |
| | | m_strRawText = strRawText; |
| | | } |
| | | |
| | | void CProcessDataListDlg::InsertParamsToListCtrl(CListCtrl& listCtrl, const CString& data) |
| | | { |
| | | // æ¸
ç©ºç°æå
容 |
| | | listCtrl.DeleteAllItems(); |
| | | |
| | | int row = 0; |
| | | int start = 0; |
| | | CString item; |
| | | |
| | | // æéå·åå² |
| | | while (AfxExtractSubString(item, data, row, ',')) // row ä» 0 å¼å§ï¼é个åå串 |
| | | { |
| | | int pos = item.Find(_T(':')); |
| | | if (pos == -1) { |
| | | row++; |
| | | continue; |
| | | } |
| | | |
| | | CString name = item.Left(pos); |
| | | CString value = item.Mid(pos + 1); |
| | | |
| | | name.Trim(); // 廿ååç©ºæ ¼ |
| | | value.Trim(); |
| | | |
| | | int nItem = listCtrl.InsertItem(row, name); // 第ä¸åï¼åæ°å |
| | | listCtrl.SetItemText(nItem, 1, value); // 第äºåï¼åæ°å¼ |
| | | |
| | | row++; |
| | | } |
| | | } |
| | | |
| | | bool CProcessDataListDlg::CopyListCtrlToClipboard(CListCtrl& listCtrl, bool includeHeader/* = false*/) |
| | | { |
| | | CString strCSV; |
| | | int nCount = listCtrl.GetItemCount(); |
| | | int nColCount = listCtrl.GetHeaderCtrl()->GetItemCount(); |
| | | |
| | | if (nCount == 0 || nColCount == 0) |
| | | return false; |
| | | |
| | | // 妿éè¦å¯¼åºè¡¨å¤´ |
| | | if (includeHeader) |
| | | { |
| | | CString headerLine; |
| | | for (int j = 0; j < nColCount; j++) |
| | | { |
| | | CString text; |
| | | LVCOLUMN col; |
| | | TCHAR buf[256] = { 0 }; |
| | | col.mask = LVCF_TEXT; |
| | | col.pszText = buf; |
| | | col.cchTextMax = 255; |
| | | if (listCtrl.GetColumn(j, &col)) |
| | | text = col.pszText; |
| | | |
| | | if (text.Find(_T(',')) != -1 || text.Find(_T('"')) != -1) |
| | | { |
| | | text.Replace(_T("\""), _T("\"\"")); |
| | | text = _T("\"") + text + _T("\""); |
| | | } |
| | | |
| | | headerLine += text; |
| | | if (j < nColCount - 1) |
| | | headerLine += _T(","); |
| | | } |
| | | strCSV += headerLine + _T("\n"); |
| | | } |
| | | |
| | | // éåè¡ |
| | | for (int i = 0; i < nCount; i++) |
| | | { |
| | | CString line; |
| | | for (int j = 0; j < nColCount; j++) |
| | | { |
| | | CString text = listCtrl.GetItemText(i, j); |
| | | |
| | | // 妿å
å«éå·æåå¼å·ï¼å ä¸å¼å·å¹¶è½¬ä¹ |
| | | if (text.Find(_T(',')) != -1 || text.Find(_T('"')) != -1) |
| | | { |
| | | text.Replace(_T("\""), _T("\"\"")); |
| | | text = _T("\"") + text + _T("\""); |
| | | } |
| | | |
| | | line += text; |
| | | if (j < nColCount - 1) |
| | | line += _T(","); |
| | | } |
| | | strCSV += line + _T("\n"); |
| | | } |
| | | |
| | | if (!OpenClipboard()) |
| | | return false; |
| | | |
| | | EmptyClipboard(); |
| | | |
| | | // 转为å
¨å±å
å |
| | | HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, (strCSV.GetLength() + 1) * sizeof(TCHAR)); |
| | | if (!hMem) |
| | | { |
| | | CloseClipboard(); |
| | | return false; |
| | | } |
| | | |
| | | LPTSTR pMem = (LPTSTR)GlobalLock(hMem); |
| | | if (!pMem) |
| | | { |
| | | GlobalFree(hMem); |
| | | CloseClipboard(); |
| | | return false; |
| | | } |
| | | |
| | | _tcscpy_s(pMem, strCSV.GetLength() + 1, strCSV); |
| | | GlobalUnlock(hMem); |
| | | |
| | | #ifdef UNICODE |
| | | SetClipboardData(CF_UNICODETEXT, hMem); |
| | | #else |
| | | SetClipboardData(CF_TEXT, hMem); |
| | | #endif |
| | | |
| | | CloseClipboard(); |
| | | return true; |
| | | } |
| | | |
| | | void CProcessDataListDlg::OnBnClickedButton1() |
| | | { |
| | | if (CopyListCtrlToClipboard(m_listCtrl, true)) |
| | | { |
| | | AfxMessageBox(_T("å¤å¶æåï¼")); |
| | | } |
| | | else |
| | | { |
| | | AfxMessageBox(_T("å¤å¶å¤±è´¥ï¼")); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #pragma once |
| | | #include "ListCtrlEx.h" |
| | | |
| | | |
| | | // CProcessDataListDlg å¯¹è¯æ¡ |
| | | |
| | | class CProcessDataListDlg : public CDialogEx |
| | | { |
| | | DECLARE_DYNAMIC(CProcessDataListDlg) |
| | | |
| | | public: |
| | | CProcessDataListDlg(CWnd* pParent = nullptr); // æ åæé 彿° |
| | | virtual ~CProcessDataListDlg(); |
| | | |
| | | public: |
| | | void setRawText(CString& strRawText); |
| | | void InsertParamsToListCtrl(CListCtrl& listCtrl, const CString& data); |
| | | bool CopyListCtrlToClipboard(CListCtrl& listCtrl, bool includeHeader = false); |
| | | |
| | | private: |
| | | CString m_strRawText; |
| | | CListCtrlEx m_listCtrl; |
| | | |
| | | |
| | | // å¯¹è¯æ¡æ°æ® |
| | | #ifdef AFX_DESIGN_TIME |
| | | enum { IDD = IDD_DIALOG_PROCESS_DATA_LIST }; |
| | | #endif |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV æ¯æ |
| | | |
| | | DECLARE_MESSAGE_MAP() |
| | | public: |
| | | virtual BOOL OnInitDialog(); |
| | | afx_msg void OnBnClickedButton1(); |
| | | }; |
| | |
| | | { |
| | | // æ ¹æ®å¨ SetItemColor(DWORD iItem, COLORREF color) 设置ç |
| | | // ITEMå·åCOLORREF 卿¸æ¿ä¸æ¥æ¾ï¼ç¶åè¿è¡é¢è²èµå¼ã |
| | | /* |
| | | LISTITEMEX_9& itemex = m_listItemColor.GetAt(m_listItemColor.FindIndex(nmcd.dwItemSpec)); |
| | | lplvdr->clrText = itemex.colText; |
| | | lplvdr->clrTextBk = itemex.colTextBk; |
| | | *pResult = CDRF_DODEFAULT; |
| | | |
| | | /* |
| | | */ |
| | | |
| | | if (nmcd.dwItemSpec % 2 == 0) { |
| | | lplvdr->clrText = RGB(0, 0, 0); |
| | | lplvdr->clrTextBk = RGB(235, 235, 235); |
| | |
| | | lplvdr->clrTextBk = RGB(255, 255, 255); |
| | | *pResult = CDRF_DODEFAULT; |
| | | } |
| | | */ |
| | | |
| | | |
| | | break; |
| | | } |
| | |
| | | alarmData.strUnitName = alarmManager.getUnitNameById(alarmData.nDeviceId, alarmData.nUnitId); |
| | | alarmData.strStartTime = CToolUnits::timeToString2(CToolUnits::getTimestamp()); |
| | | alarmData.strEndTime = ""; |
| | | |
| | | alarmData.strDescription = ""; |
| | | |
| | | const AlarmInfo* alarmInfo = alarmManager.getAlarmInfoByID(alarmData.nId); |
| | | alarmData.strDescription = alarmInfo != nullptr ? alarmInfo->strAlarmText : ""; |
| | | if (alarmInfo != nullptr) { |
| | | if (alarmInfo->strDescription.empty()) { |
| | | alarmData.strDescription = alarmInfo->strAlarmText; |
| | | } |
| | | else { |
| | | alarmData.strDescription = alarmInfo->strAlarmText + "," + alarmInfo->strDescription + "."; |
| | | } |
| | | } |
| | | |
| | | |
| | | int nAlarmEventId = 0; |
| | | bool result = alarmManager.addAlarm(alarmData, nAlarmEventId); |
| | |
| | | |
| | | int CModel::term() |
| | | { |
| | | m_configuration.setPortCassetteSnSeed(1, m_master.getPortCassetteSnSeed(1)); |
| | | m_configuration.setPortCassetteSnSeed(2, m_master.getPortCassetteSnSeed(2)); |
| | | m_configuration.setPortCassetteSnSeed(3, m_master.getPortCassetteSnSeed(3)); |
| | | m_configuration.setPortCassetteSnSeed(4, m_master.getPortCassetteSnSeed(4)); |
| | | m_hsmsPassive.saveCache(); |
| | | m_hsmsPassive.term(); |
| | | CLog::GetLog()->SetOnLogCallback(nullptr); |
| | |
| | | } |
| | | } |
| | | |
| | | void CPageAlarm::InitRxWindow() |
| | | void CPageAlarm::InitRxWindows() |
| | | { |
| | | /* code */ |
| | | // 订é
æ°æ® |
| | |
| | | BOOL CPageAlarm::OnInitDialog() |
| | | { |
| | | CDialogEx::OnInitDialog(); |
| | | InitRxWindows(); |
| | | SetTimer(1, 3000, nullptr); |
| | | |
| | | // ä¸ææ¡æ§ä»¶ |
| | |
| | | m_nCurPage++; |
| | | UpdatePageData(); // è°ç¨åé¡µæ´æ°å½æ° |
| | | } |
| | | |
| | | BOOL CPageAlarm::PreTranslateMessage(MSG* pMsg) |
| | | { |
| | | if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE) { |
| | | return TRUE; |
| | | } |
| | | |
| | | return CDialogEx::PreTranslateMessage(pMsg); |
| | | } |
| | |
| | | virtual ~CPageAlarm(); |
| | | |
| | | private: |
| | | void InitRxWindow(); |
| | | void InitRxWindows(); |
| | | void Resize(); |
| | | void LoadAlarms(); |
| | | void UpdatePageData(); |
| | |
| | | afx_msg void OnDestroy(); |
| | | afx_msg void OnClose(); |
| | | afx_msg void OnSize(UINT nType, int cx, int cy); |
| | | afx_msg void OnTimer(UINT_PTR nIDEvent); |
| | | afx_msg void OnCbnSelchangeComboDatetime(); |
| | | afx_msg void OnBnClickedButtonSearch(); |
| | | afx_msg void OnBnClickedButtonExport(); |
| | | afx_msg void OnBnClickedButtonPrevPage(); |
| | | afx_msg void OnBnClickedButtonNextPage(); |
| | | virtual BOOL PreTranslateMessage(MSG* pMsg); |
| | | DECLARE_MESSAGE_MAP() |
| | | }; |
| | |
| | | // CLogDlg æ¶æ¯å¤çç¨åº |
| | | |
| | | |
| | | void CPageLog::InitRxWindow() |
| | | void CPageLog::InitRxWindows() |
| | | { |
| | | /* code */ |
| | | // 订é
æ°æ® |
| | |
| | | BOOL CPageLog::OnInitDialog() |
| | | { |
| | | CDialogEx::OnInitDialog(); |
| | | InitRxWindow(); |
| | | InitRxWindows(); |
| | | |
| | | |
| | | // ç¼å |
| | |
| | | |
| | | |
| | | private: |
| | | void InitRxWindow(); |
| | | void InitRxWindows(); |
| | | void AppendLog(int level, const char* pszText); |
| | | void Resize(); |
| | | |
| | |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | BOOL CPageRecipe::PreTranslateMessage(MSG* pMsg) |
| | | { |
| | | if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE) { |
| | | return TRUE; |
| | | } |
| | | |
| | | return CDialogEx::PreTranslateMessage(pMsg); |
| | | } |
| | |
| | | afx_msg void OnClickListPPID(NMHDR* pNMHDR, LRESULT* pResult); |
| | | afx_msg void OnDblclkListPPID(NMHDR* pNMHDR, LRESULT* pResult); |
| | | afx_msg void OnCbnSelchangeComboEquipment(); |
| | | virtual BOOL PreTranslateMessage(MSG* pMsg); |
| | | DECLARE_MESSAGE_MAP() |
| | | |
| | | private: |
| | |
| | | CDialogEx::DoDataExchange(pDX); |
| | | } |
| | | |
| | | void CPageTransferLog::InitRxWindow() |
| | | void CPageTransferLog::InitRxWindows() |
| | | { |
| | | /* code */ |
| | | // 订é
æ°æ® |
| | |
| | | { |
| | | if (nIDEvent == 1) { |
| | | KillTimer(1); |
| | | InitRxWindow(); |
| | | InitRxWindows(); |
| | | } |
| | | CDialogEx::OnTimer(nIDEvent); |
| | | } |
| | |
| | | m_nCurPage++; |
| | | UpdatePageData(); |
| | | } |
| | | } |
| | | |
| | | BOOL CPageTransferLog::PreTranslateMessage(MSG* pMsg) |
| | | { |
| | | if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE) { |
| | | return TRUE; |
| | | } |
| | | |
| | | return CDialogEx::PreTranslateMessage(pMsg); |
| | | } |
| | |
| | | CDateTimeCtrl m_dateTimeEnd; |
| | | CListCtrlEx m_listCtrl; |
| | | |
| | | void InitRxWindow(); |
| | | void InitRxWindows(); |
| | | void Resize(); |
| | | void InitStatusCombo(); |
| | | void InitTimeRangeCombo(); |
| | |
| | | afx_msg void OnBnClickedButtonExport(); |
| | | afx_msg void OnBnClickedButtonPrevPage(); |
| | | afx_msg void OnBnClickedButtonNextPage(); |
| | | virtual BOOL PreTranslateMessage(MSG* pMsg); |
| | | DECLARE_MESSAGE_MAP() |
| | | }; |
| | |
| | | <ClInclude Include="CPageReport.h" /> |
| | | <ClInclude Include="CPageVarialbles.h" /> |
| | | <ClInclude Include="CParam.h" /> |
| | | <ClInclude Include="CProcessDataListDlg.h" /> |
| | | <ClInclude Include="CReport.h" /> |
| | | <ClInclude Include="CRobotCmdContainerDlg.h" /> |
| | | <ClInclude Include="CRobotCmdTestDlg.h" /> |
| | |
| | | <ClCompile Include="CPageReport.cpp" /> |
| | | <ClCompile Include="CPageVarialbles.cpp" /> |
| | | <ClCompile Include="CParam.cpp" /> |
| | | <ClCompile Include="CProcessDataListDlg.cpp" /> |
| | | <ClCompile Include="CReport.cpp" /> |
| | | <ClCompile Include="CRobotCmdContainerDlg.cpp" /> |
| | | <ClCompile Include="CRobotCmdTestDlg.cpp" /> |
| | |
| | | <ClCompile Include="CServoUtilsTool.cpp" /> |
| | | <ClCompile Include="GlassLogDb.cpp" /> |
| | | <ClCompile Include="sqlite3.c" /> |
| | | <ClCompile Include="CProcessDataListDlg.cpp" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ClInclude Include="AlarmManager.h" /> |
| | |
| | | <ClInclude Include="GlassLogDb.h" /> |
| | | <ClInclude Include="sqlite3.h" /> |
| | | <ClInclude Include="sqlite3ext.h" /> |
| | | <ClInclude Include="CProcessDataListDlg.h" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ResourceCompile Include="Servo.rc" /> |
| | |
| | | m_pMyStatusbar->setForegroundColor(RGB(0, 0, 0)); |
| | | m_pMyStatusbar->setRunTimeText("å¯å¨å¤±è´¥."); |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_ALARM)->EnableWindow(TRUE); |
| | | KillTimer(TIMER_ID_UPDATE_RUMTIME); |
| | | } |
| | | else if (state == SERVO::MASTERSTATE::ATHERERROR) { |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(TRUE); |
| | |
| | | AfxMessageBox(_T("AOIæ£æµå¤±è´¥ï¼è¯·æä½åä»å
¥è§£å³é®é¢ï¼")); |
| | | } |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_ALARM)->EnableWindow(TRUE); |
| | | KillTimer(TIMER_ID_UPDATE_RUMTIME); |
| | | } |
| | | else if (state == SERVO::MASTERSTATE::RUNNING || state == SERVO::MASTERSTATE::RUNNING_CONTINUOUS_TRANSFER |
| | | || state == SERVO::MASTERSTATE::RUNNING_BATCH) { |
| | |
| | | No,UNIT ID,UNIT NO,Alarm Level,Alarm Code,AlarmID,Alarm Text,Description
1,EFEM,100,0,0,1000,æºå¨äººCCLink龿¥å¼å¸¸,"è¯·æ£æ¥æ¥çº¿,æçµéå¯"
2,EFEM,101,0,0,1001,ç¸æºCCLink龿¥å¼å¸¸,"è¯·æ£æ¥æ¥çº¿,æçµéå¯"
3,EFEM,102,0,0,1002,éçµæµè¯CCLink龿¥å¼å¸¸,"è¯·æ£æ¥æ¥çº¿,æçµéå¯"
4,EFEM,103,0,0,1003,,
5,EFEM,104,0,0,1004,,
6,EFEM,105,0,0,1005,,
7,EFEM,106,0,0,1006,,
8,EFEM,107,0,0,1007,,
9,EFEM,108,0,0,1008,,
10,EFEM,109,0,0,1009,,
11,EFEM,110,0,0,1010,æ»è¿æ°æ°åå¼å¸¸,æ£æµè¿æ°
12,EFEM,111,0,0,1011,æ»ç空æ°åå¼å¸¸,æ£æµç空
13,EFEM,112,0,0,1012,LPç空å¼å¸¸,æ£æµç空
14,EFEM,113,0,0,1013,离å飿£å空å¼å¸¸,æ£æµè¿æ°
15,EFEM,114,0,0,1014,æºå¨äººç空å¼å¸¸,æ£æµç空
16,EFEM,115,0,0,1015,æ¥å被æä¸,è¯·æ£æ¥æ¥åæé®
17,EFEM,116,0,0,1016,,
18,EFEM,117,0,0,1017,,
19,EFEM,118,0,0,1018,,
20,EFEM,119,0,0,1019,,
21,EFEM,120,0,0,1020,å®å
¨é¨æå¼,æ£æ¥å®å
¨é¨
22,EFEM,121,0,0,1021,æ£é¢å·¦é¨æå¼ä¸,æ£æ¥å®å
¨é¨
23,EFEM,122,0,0,1022,æ£é¢å³é¨æå¼ä¸,æ£æ¥å®å
¨é¨
24,EFEM,123,0,0,1023,ä¾§é¢å·¦é¨æå¼ä¸,æ£æ¥å®å
¨é¨
25,EFEM,124,0,0,1024,ä¾§é¢å³é¨æå¼ä¸,æ£æ¥å®å
¨é¨
26,EFEM,125,0,0,1025,èé¢å·¦é¨æå¼ä¸,æ£æ¥å®å
¨é¨
27,EFEM,126,0,0,1026,èé¢å³é¨æå¼ä¸,æ£æ¥å®å
¨é¨
28,EFEM,127,0,0,1027,,
29,EFEM,128,0,0,1028,,
30,EFEM,129,0,0,1029,,
31,EFEM,130,0,0,1030,,
32,EFEM,131,0,0,1031,"Port1_E84æµç¨å¼å¸¸,OHT_TR_REQ_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
33,EFEM,132,0,0,1032,"Port1_E84æµç¨å¼å¸¸,OHT_BUSY_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
34,EFEM,133,0,0,1033,"Port1_E84æµç¨å¼å¸¸,OHT_COMPT_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
35,EFEM,134,0,0,1034,,
36,EFEM,135,0,0,1035,,
37,EFEM,136,0,0,1036,,
38,EFEM,137,0,0,1037,,
39,EFEM,138,0,0,1038,,
40,EFEM,139,0,0,1039,,
41,EFEM,140,1,0,1040,"Port1_E84æµç¨åæ¢,OHT_VALIDä¿¡å·å¼å¸¸",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
42,EFEM,141,1,0,1041,"Port1_E84æµç¨åæ¢,å
æ
è¢«é®æ¡æè
æ¥å被æ",è¯·æ£æ¥å
æ
ä¿¡å·æ¥å
43,EFEM,142,1,0,1042,"Port1_E84æµç¨åæ¢,OHT_åææ¾FOUPè¶
æ¶","OHT_BUSYåæªå¨è§å®æ¶é´å
åèµ°FOUP,è¯·æ£æ¥OHTæè
æ ¸å¯¹LPç¶æ"
44,EFEM,143,1,0,1043,"Port1_E84æµç¨åæ¢,OHT_BUSY_OFFæè
TR_REQ_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
45,EFEM,144,0,0,1044,,
46,EFEM,145,0,0,1045,,
47,EFEM,146,0,0,1046,,
48,EFEM,147,0,0,1047,,
49,EFEM,148,0,0,1048,,
50,EFEM,149,0,0,1049,,
51,EFEM,150,0,0,1050,"Port2_E84æµç¨å¼å¸¸,OHT_TR_REQ_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
52,EFEM,151,0,0,1051,"Port2_E84æµç¨å¼å¸¸,OHT_BUSY_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
53,EFEM,152,0,0,1052,"Port2_E84æµç¨å¼å¸¸,OHT_COMPT_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
54,EFEM,153,0,0,1053,,
55,EFEM,154,0,0,1054,,
56,EFEM,155,0,0,1055,,
57,EFEM,156,0,0,1056,,
58,EFEM,157,0,0,1057,,
59,EFEM,158,0,0,1058,,
60,EFEM,159,0,0,1059,,
61,EFEM,160,0,0,1060,"Port2_E84æµç¨åæ¢,OHT_VALIDä¿¡å·å¼å¸¸",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
62,EFEM,161,0,0,1061,"Port2_E84æµç¨åæ¢,å
æ
è¢«é®æ¡æè
æ¥å被æ",è¯·æ£æ¥å
æ
ä¿¡å·æ¥å
63,EFEM,162,0,0,1062,"Port2_E84æµç¨åæ¢,OHT_åææ¾FOUPè¶
æ¶","OHT_BUSYåæªå¨è§å®æ¶é´å
åèµ°FOUP,è¯·æ£æ¥OHTæè
æ ¸å¯¹LPç¶æ"
64,EFEM,163,0,0,1063,"Port2_E84æµç¨åæ¢,OHT_BUSY_OFFæè
TR_REQ_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
65,EFEM,164,0,0,1064,,
66,EFEM,165,0,0,1065,,
67,EFEM,166,0,0,1066,,
68,EFEM,167,0,0,1067,,
69,EFEM,168,0,0,1068,,
70,EFEM,169,0,0,1069,,
71,EFEM,170,1,0,1070,,
72,EFEM,171,1,0,1071,"Port3_E84æµç¨åæ¢,OHT_VALIDä¿¡å·å¼å¸¸",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
73,EFEM,172,1,0,1072,"Port3_E84æµç¨åæ¢,å
æ
è¢«é®æ¡æè
æ¥å被æ",è¯·æ£æ¥å
æ
ä¿¡å·æ¥å
74,EFEM,173,1,0,1073,"Port3_E84æµç¨åæ¢,OHT_åææ¾FOUPè¶
æ¶","OHT_BUSYåæªå¨è§å®æ¶é´å
åèµ°FOUP,è¯·æ£æ¥OHTæè
æ ¸å¯¹LPç¶æ"
75,EFEM,174,1,0,1074,"Port3_E84æµç¨åæ¢,OHT_BUSY_OFFæè
TR_REQ_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
76,EFEM,175,1,0,1075,,
77,EFEM,176,1,0,1076,,
78,EFEM,177,1,0,1077,,
79,EFEM,178,1,0,1078,,
80,EFEM,179,1,0,1079,,
81,EFEM,180,1,0,1080,"Port3_E84æµç¨å¼å¸¸,OHT_TR_REQ_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
82,EFEM,181,1,0,1081,"Port3_E84æµç¨å¼å¸¸,OHT_BUSY_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
83,EFEM,182,1,0,1082,"Port3_E84æµç¨å¼å¸¸,OHT_COMPT_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
84,EFEM,183,1,0,1083,,
85,EFEM,184,1,0,1084,,
86,EFEM,185,1,0,1085,,
87,EFEM,186,1,0,1086,,
88,EFEM,187,1,0,1087,,
89,EFEM,188,1,0,1088,,
90,EFEM,189,1,0,1089,,
91,EFEM,190,1,0,1090,,
92,EFEM,191,1,0,1091,"Port4_E84æµç¨åæ¢,OHT_VALIDä¿¡å·å¼å¸¸",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
93,EFEM,192,1,0,1092,"Port4_E84æµç¨åæ¢,å
æ
è¢«é®æ¡æè
æ¥å被æ",è¯·æ£æ¥å
æ
ä¿¡å·æ¥å
94,EFEM,193,1,0,1093,"Port4_E84æµç¨åæ¢,OHT_åææ¾FOUPè¶
æ¶","OHT_BUSYåæªå¨è§å®æ¶é´å
åèµ°FOUP,è¯·æ£æ¥OHTæè
æ ¸å¯¹LPç¶æ"
95,EFEM,194,1,0,1094,"Port4_E84æµç¨åæ¢,OHT_BUSY_OFFæè
TR_REQ_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
96,EFEM,195,1,0,1095,,
97,EFEM,196,1,0,1096,,
98,EFEM,197,1,0,1097,,
99,EFEM,198,1,0,1098,,
100,EFEM,199,1,0,1099,,
101,EFEM,200,1,0,1100,"Port4_E84æµç¨å¼å¸¸,OHT_TR_REQ_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
102,EFEM,201,1,0,1101,"Port4_E84æµç¨å¼å¸¸,OHT_BUSY_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
103,EFEM,202,1,0,1102,"Port4_E84æµç¨å¼å¸¸,OHT_COMPT_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
104,EFEM,203,1,0,1103,,
105,EFEM,204,1,0,1104,,
106,EFEM,205,1,0,1105,,
107,EFEM,206,1,0,1106,,
108,EFEM,207,1,0,1107,,
109,EFEM,208,1,0,1108,,
110,EFEM,209,1,0,1109,,
111,EFEM,210,0,0,1110,ååç¹å¤±è´¥/è¶
æ¶,è¯·æ£æ¥è®¾å¤ç¶æä»¥åè½´ä½ç½®æ¯å¦æå¹²æ¶ï¼éæ°æ§è¡ååæä½
112,EFEM,211,0,0,1111,Flipå·¥ä½ï¼ç空æå¼æ¶å¨è·å¼å¸¸,è¯·æ£æ¥ç»çä½ç½®
113,EFEM,212,1,0,1112,,
114,EFEM,213,1,0,1113,,
115,EFEM,214,1,0,1114,,
116,EFEM,215,1,0,1115,,
117,EFEM,216,1,0,1116,,
118,EFEM,217,1,0,1117,,
119,EFEM,218,1,0,1118,,
120,EFEM,219,1,0,1119,,
121,EFEM,220,1,0,1120,ä»»å¡åæ¶å¤±è´¥,å½å忶任塿¡ä»¶ä¸æ»¡è¶³
122,EFEM,221,1,0,1121,ä»»å¡éè¯å¤±è´¥,å½åéè¯ä»»å¡æ¡ä»¶ä¸æ»¡è¶³ |
| | | No,UNIT ID,UNIT NO,Alarm Level,Alarm Code,AlarmID,Alarm Text,Description
1,EFEM,100,0,0,1000,æºå¨äººCCLink龿¥å¼å¸¸,"è¯·æ£æ¥æ¥çº¿,æçµéå¯"
2,EFEM,101,0,0,1001,ç¸æºCCLink龿¥å¼å¸¸,"è¯·æ£æ¥æ¥çº¿,æçµéå¯"
3,EFEM,102,0,0,1002,éçµæµè¯CCLink龿¥å¼å¸¸,"è¯·æ£æ¥æ¥çº¿,æçµéå¯"
4,EFEM,103,0,0,1003,,
5,EFEM,104,0,0,1004,,
6,EFEM,105,0,0,1005,,
7,EFEM,106,0,0,1006,,
8,EFEM,107,0,0,1007,,
9,EFEM,108,0,0,1008,,
10,EFEM,109,0,0,1009,,
11,EFEM,110,0,0,1010,æ»è¿æ°æ°åå¼å¸¸,è¯·æ£æµè¿æ°
12,EFEM,111,0,0,1011,æ»ç空æ°åå¼å¸¸,è¯·æ£æµç空
13,EFEM,112,0,0,1012,LPç空å¼å¸¸,æ£æµç空
14,EFEM,113,0,0,1013,离å飿£å空å¼å¸¸,è¯·æ£æµè¿æ°
15,EFEM,114,0,0,1014,æºå¨äººç空å¼å¸¸,è¯·æ£æµç空
16,EFEM,115,0,0,1015,æ¥å被æä¸,è¯·æ£æ¥æ¥åæé®
17,EFEM,116,0,0,1016,,
18,EFEM,117,0,0,1017,,
19,EFEM,118,0,0,1018,,
20,EFEM,119,0,0,1019,,
21,EFEM,120,0,0,1020,å®å
¨é¨æå¼,è¯·æ£æ¥å®å
¨é¨
22,EFEM,121,0,0,1021,æ£é¢å·¦é¨æå¼ä¸,è¯·æ£æ¥å®å
¨é¨
23,EFEM,122,0,0,1022,æ£é¢å³é¨æå¼ä¸,è¯·æ£æ¥å®å
¨é¨
24,EFEM,123,0,0,1023,ä¾§é¢å·¦é¨æå¼ä¸,è¯·æ£æ¥å®å
¨é¨
25,EFEM,124,0,0,1024,ä¾§é¢å³é¨æå¼ä¸,è¯·æ£æ¥å®å
¨é¨
26,EFEM,125,0,0,1025,èé¢å·¦é¨æå¼ä¸,è¯·æ£æ¥å®å
¨é¨
27,EFEM,126,0,0,1026,èé¢å³é¨æå¼ä¸,è¯·æ£æ¥å®å
¨é¨
28,EFEM,127,0,0,1027,,
29,EFEM,128,0,0,1028,,
30,EFEM,129,0,0,1029,,
31,EFEM,130,0,0,1030,,
32,EFEM,131,0,0,1031,"Port1_E84æµç¨å¼å¸¸,OHT_TR_REQ_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
33,EFEM,132,0,0,1032,"Port1_E84æµç¨å¼å¸¸,OHT_BUSY_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
34,EFEM,133,0,0,1033,"Port1_E84æµç¨å¼å¸¸,OHT_COMPT_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
35,EFEM,134,0,0,1034,,
36,EFEM,135,0,0,1035,,
37,EFEM,136,0,0,1036,,
38,EFEM,137,0,0,1037,,
39,EFEM,138,0,0,1038,,
40,EFEM,139,0,0,1039,,
41,EFEM,140,1,0,1040,"Port1_E84æµç¨åæ¢,OHT_VALIDä¿¡å·å¼å¸¸",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
42,EFEM,141,1,0,1041,"Port1_E84æµç¨åæ¢,å
æ
è¢«é®æ¡æè
æ¥å被æ",è¯·æ£æ¥å
æ
ä¿¡å·æ¥å
43,EFEM,142,1,0,1042,"Port1_E84æµç¨åæ¢,OHT_åææ¾FOUPè¶
æ¶","OHT_BUSYåæªå¨è§å®æ¶é´å
åèµ°FOUP,è¯·æ£æ¥OHTæè
æ ¸å¯¹LPç¶æ"
44,EFEM,143,1,0,1043,"Port1_E84æµç¨åæ¢,OHT_BUSY_OFFæè
TR_REQ_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
45,EFEM,144,0,0,1044,,
46,EFEM,145,0,0,1045,,
47,EFEM,146,0,0,1046,,
48,EFEM,147,0,0,1047,,
49,EFEM,148,0,0,1048,,
50,EFEM,149,0,0,1049,,
51,EFEM,150,0,0,1050,"Port2_E84æµç¨å¼å¸¸,OHT_TR_REQ_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
52,EFEM,151,0,0,1051,"Port2_E84æµç¨å¼å¸¸,OHT_BUSY_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
53,EFEM,152,0,0,1052,"Port2_E84æµç¨å¼å¸¸,OHT_COMPT_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
54,EFEM,153,0,0,1053,,
55,EFEM,154,0,0,1054,,
56,EFEM,155,0,0,1055,,
57,EFEM,156,0,0,1056,,
58,EFEM,157,0,0,1057,,
59,EFEM,158,0,0,1058,,
60,EFEM,159,0,0,1059,,
61,EFEM,160,0,0,1060,"Port2_E84æµç¨åæ¢,OHT_VALIDä¿¡å·å¼å¸¸",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
62,EFEM,161,0,0,1061,"Port2_E84æµç¨åæ¢,å
æ
è¢«é®æ¡æè
æ¥å被æ",è¯·æ£æ¥å
æ
ä¿¡å·æ¥å
63,EFEM,162,0,0,1062,"Port2_E84æµç¨åæ¢,OHT_åææ¾FOUPè¶
æ¶","OHT_BUSYåæªå¨è§å®æ¶é´å
åèµ°FOUP,è¯·æ£æ¥OHTæè
æ ¸å¯¹LPç¶æ"
64,EFEM,163,0,0,1063,"Port2_E84æµç¨åæ¢,OHT_BUSY_OFFæè
TR_REQ_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
65,EFEM,164,0,0,1064,,
66,EFEM,165,0,0,1065,,
67,EFEM,166,0,0,1066,,
68,EFEM,167,0,0,1067,,
69,EFEM,168,0,0,1068,,
70,EFEM,169,0,0,1069,,
71,EFEM,170,1,0,1070,,
72,EFEM,171,1,0,1071,"Port3_E84æµç¨åæ¢,OHT_VALIDä¿¡å·å¼å¸¸",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
73,EFEM,172,1,0,1072,"Port3_E84æµç¨åæ¢,å
æ
è¢«é®æ¡æè
æ¥å被æ",è¯·æ£æ¥å
æ
ä¿¡å·æ¥å
74,EFEM,173,1,0,1073,"Port3_E84æµç¨åæ¢,OHT_åææ¾FOUPè¶
æ¶","OHT_BUSYåæªå¨è§å®æ¶é´å
åèµ°FOUP,è¯·æ£æ¥OHTæè
æ ¸å¯¹LPç¶æ"
75,EFEM,174,1,0,1074,"Port3_E84æµç¨åæ¢,OHT_BUSY_OFFæè
TR_REQ_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
76,EFEM,175,1,0,1075,,
77,EFEM,176,1,0,1076,,
78,EFEM,177,1,0,1077,,
79,EFEM,178,1,0,1078,,
80,EFEM,179,1,0,1079,,
81,EFEM,180,1,0,1080,"Port3_E84æµç¨å¼å¸¸,OHT_TR_REQ_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
82,EFEM,181,1,0,1081,"Port3_E84æµç¨å¼å¸¸,OHT_BUSY_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
83,EFEM,182,1,0,1082,"Port3_E84æµç¨å¼å¸¸,OHT_COMPT_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
84,EFEM,183,1,0,1083,,
85,EFEM,184,1,0,1084,,
86,EFEM,185,1,0,1085,,
87,EFEM,186,1,0,1086,,
88,EFEM,187,1,0,1087,,
89,EFEM,188,1,0,1088,,
90,EFEM,189,1,0,1089,,
91,EFEM,190,1,0,1090,,
92,EFEM,191,1,0,1091,"Port4_E84æµç¨åæ¢,OHT_VALIDä¿¡å·å¼å¸¸",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
93,EFEM,192,1,0,1092,"Port4_E84æµç¨åæ¢,å
æ
è¢«é®æ¡æè
æ¥å被æ",è¯·æ£æ¥å
æ
ä¿¡å·æ¥å
94,EFEM,193,1,0,1093,"Port4_E84æµç¨åæ¢,OHT_åææ¾FOUPè¶
æ¶","OHT_BUSYåæªå¨è§å®æ¶é´å
åèµ°FOUP,è¯·æ£æ¥OHTæè
æ ¸å¯¹LPç¶æ"
95,EFEM,194,1,0,1094,"Port4_E84æµç¨åæ¢,OHT_BUSY_OFFæè
TR_REQ_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
96,EFEM,195,1,0,1095,,
97,EFEM,196,1,0,1096,,
98,EFEM,197,1,0,1097,,
99,EFEM,198,1,0,1098,,
100,EFEM,199,1,0,1099,,
101,EFEM,200,1,0,1100,"Port4_E84æµç¨å¼å¸¸,OHT_TR_REQ_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
102,EFEM,201,1,0,1101,"Port4_E84æµç¨å¼å¸¸,OHT_BUSY_ONä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTæè
E84线ç¼
103,EFEM,202,1,0,1102,"Port4_E84æµç¨å¼å¸¸,OHT_COMPT_OFFä¿¡å·è¶
æ¶",è¯·æ£æ¥OHTä¿¡å·æè
E84线ç¼
104,EFEM,203,1,0,1103,,
105,EFEM,204,1,0,1104,,
106,EFEM,205,1,0,1105,,
107,EFEM,206,1,0,1106,,
108,EFEM,207,1,0,1107,,
109,EFEM,208,1,0,1108,,
110,EFEM,209,1,0,1109,,
111,EFEM,210,0,0,1110,ååç¹å¤±è´¥/è¶
æ¶,è¯·æ£æ¥è®¾å¤ç¶æä»¥åè½´ä½ç½®æ¯å¦æå¹²æ¶ï¼è¯·éæ°æ§è¡ååæä½
112,EFEM,211,0,0,1111,Flipå·¥ä½ï¼ç空æå¼æ¶å¨è·å¼å¸¸,è¯·æ£æ¥ç»çä½ç½®
113,EFEM,212,1,0,1112,,
114,EFEM,213,1,0,1113,,
115,EFEM,214,1,0,1114,,
116,EFEM,215,1,0,1115,,
117,EFEM,216,1,0,1116,,
118,EFEM,217,1,0,1117,,
119,EFEM,218,1,0,1118,,
120,EFEM,219,1,0,1119,,
121,EFEM,220,1,0,1120,ä»»å¡åæ¶å¤±è´¥ï¼å½å忶任塿¡ä»¶ä¸æ»¡è¶³
122,EFEM,221,1,0,1121,ä»»å¡éè¯å¤±è´¥ï¼å½åéè¯ä»»å¡æ¡ä»¶ä¸æ»¡è¶³ |