| | |
| | | <ClInclude Include="DBManager\UserManager.h" /> |
| | | <ClInclude Include="EQState.h" /> |
| | | <ClInclude Include="EQStateMonitor.h" /> |
| | | <ClInclude Include="FileManager\IOManager.h" /> |
| | | <ClInclude Include="FileManager\pugiconfig.hpp" /> |
| | | <ClInclude Include="FileManager\pugixml.hpp" /> |
| | | <ClInclude Include="FileManager\RecipeManager.h" /> |
| | |
| | | <ClInclude Include="VerticalLine.h" /> |
| | | <ClInclude Include="View\AxisSettingsDlg.h" /> |
| | | <ClInclude Include="View\ChangePasswordDlg.h" /> |
| | | <ClInclude Include="View\IOMonitoringDlg.h" /> |
| | | <ClInclude Include="View\LoginDlg.h" /> |
| | | <ClInclude Include="View\SystemLogManagerDlg.h" /> |
| | | <ClInclude Include="View\UserManagerDlg.h" /> |
| | |
| | | <ClCompile Include="DBManager\UserManager.cpp" /> |
| | | <ClCompile Include="EQState.cpp" /> |
| | | <ClCompile Include="EQStateMonitor.cpp" /> |
| | | <ClCompile Include="FileManager\IOManager.cpp" /> |
| | | <ClCompile Include="FileManager\pugixml.cpp"> |
| | | <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader> |
| | | </ClCompile> |
| | |
| | | <ClCompile Include="VerticalLine.cpp" /> |
| | | <ClCompile Include="View\AxisSettingsDlg.cpp" /> |
| | | <ClCompile Include="View\ChangePasswordDlg.cpp" /> |
| | | <ClCompile Include="View\IOMonitoringDlg.cpp" /> |
| | | <ClCompile Include="View\LoginDlg.cpp" /> |
| | | <ClCompile Include="View\SystemLogManagerDlg.cpp" /> |
| | | <ClCompile Include="View\UserManagerDlg.cpp" /> |
| | |
| | | #include "ChangePasswordDlg.h" |
| | | #include "UserManagerDlg.h" |
| | | #include "SystemLogManagerDlg.h" |
| | | #include "AxisSettingsDlg.h" |
| | | |
| | | // test |
| | | #include "AxisSettingsDlg.h" |
| | | #include "IOMonitoringDlg.h" |
| | | |
| | | #ifdef _DEBUG |
| | | #define new DEBUG_NEW |
| | |
| | | |
| | | void CBondEqDlg::OnMenuFileSettings() |
| | | { |
| | | CAxisSettingsDlg axisDlg; |
| | | axisDlg.SetPLC(theApp.m_model.getBonder().getPLC("PLC(1)")); |
| | | axisDlg.SetRecipeName(_T("Default")); |
| | | axisDlg.DoModal(); |
| | | // Cavity VacuumBake AfterBake AOI |
| | | CIOMonitoringDlg dlg; |
| | | dlg.SetIOManager("Cavity"); |
| | | dlg.DoModal(); |
| | | |
| | | //CAxisSettingsDlg axisDlg; |
| | | //axisDlg.SetPLC(theApp.m_model.getBonder().getPLC("PLC(1)")); |
| | | //axisDlg.SetRecipeName(_T("Default")); |
| | | //axisDlg.DoModal(); |
| | | |
| | | /* |
| | | CSettingsDlg dlg; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #include "stdafx.h" |
| | | #include "IOManager.h" |
| | | #include <fstream> |
| | | #include <iostream> |
| | | #include "ToolUnits.h" |
| | | |
| | | IOManager::IOManager() { |
| | | m_directory = CToolUnits::getCurrentExePath() + _T("\\Config"); |
| | | if (!CToolUnits::isDirectory(m_directory)) { |
| | | CToolUnits::createDir(m_directory.c_str()); |
| | | } |
| | | } |
| | | |
| | | void IOManager::addMachine(const std::string& machineName, const std::vector<IOData>& data) { |
| | | m_machines[machineName] = data; |
| | | } |
| | | |
| | | void IOManager::addDefaultMachineData(const std::string& machineName) { |
| | | if (machineName == "Cavity") { |
| | | std::vector<IOData> defaultData = { |
| | | {"X1000", "Unit1_æ¥å EMO", "Y1010", "Unit1_åè²ç¯-红"}, |
| | | {"X1001", "Unit1_æ»è¿æ°å忣", "Y1011", "Unit1_åè²ç¯-é»"}, |
| | | {"X1002", "Unit1_伺æçµæçææ¥è¦", "Y1012", "Unit1_åè²ç¯-绿"}, |
| | | {"X1003", "Unit1_å ççµæçææ¥è¦", "Y1013", "Unit1_åè²ç¯-è"}, |
| | | {"X1004", "å®å
¨ç»§çµå¨æ£", "Y1014", "Unit1_è鸣å¨-1"}, |
| | | {"X1005", "", "Y1015", "Unit1_è鸣å¨-2"}, |
| | | {"X1006", "", "Y1016", "Unit1_è鸣å¨-3"}, |
| | | {"X1007", "Unit1_å®å
¨é¨ç£æ£1", "Y1017", "Unit1_è鸣å¨-4"}, |
| | | {"X1008", "Unit1_å®å
¨é¨ç£æ£2", "Y1018", "Unit1_æºå°ç
§æ"}, |
| | | {"X1009", "Unit1_å®å
¨é¨ç£æ£3", "Y1019", "Unit1_å®å
¨é¨éå±è½"}, |
| | | {"X100A", "Unit1_å®å
¨é¨ç£æ£4", "Y101A", ""}, |
| | | {"X100B", "Unit1_å®å
¨é¨ç£æ£5", "Y101B", ""}, |
| | | {"X100C", "Unit1_å®å
¨é¨ç£æ£6", "Y101C", ""}, |
| | | {"X100D", "Unit1_å®å
¨é¨éæ£1", "Y101D", "Unit1_å®å
¨é¨é1"}, |
| | | {"X100E", "Unit1_å®å
¨é¨éæ£2", "Y101E", "Unit1_å®å
¨é¨é2"}, |
| | | {"X100F", "Unit1_å®å
¨é¨éæ£3", "Y101F", "Unit1_å®å
¨é¨é3"}, |
| | | {"X1020", "Unit1_ååæ³µ-Alam(8-14)", "Y1030", "Unit1_ååæ³µå¯å¨(1-9)"}, |
| | | {"X1021", "Unit1_ååæ³µ-è¿ç¨/æ¬å°æ¨¡å¼(7-15)", "Y1031", "Unit1_ååæ³µèéè£
ç½®(2-10)"}, |
| | | {"X1022", "Unit1_ååæ³µ-æ£å¸¸è¿è¡ï¼4-12ï¼", "Y1032", "Unit1_ååæ³µéæææ¿é"}, |
| | | {"X1023", "Unit1_ååæ³µéæææ¿éåä½", "Y1033", "Unit1_æ°åéæé"}, |
| | | {"X1024", "Unit1_ååæ³µéæææ¿éå°ä½", "Y1034", ""}, |
| | | {"X1025", "Unit1_è
使çå·¦æ°ç¼¸åä½", "Y1035", "Unit1_è
使çå·¦æ°ç¼¸åä½"}, |
| | | {"X1026", "Unit1_è
使çå·¦æ°ç¼¸å°ä½", "Y1036", "Unit1_è
使çå·¦æ°ç¼¸å°ä½"}, |
| | | {"X1027", "Unit1_è
使ç峿°ç¼¸åä½", "Y1037", "Unit1_è
使ç峿°ç¼¸åä½"}, |
| | | {"X1028", "Unit1_è
使ç峿°ç¼¸å°ä½", "Y1038", "Unit1_è
使ç峿°ç¼¸å°ä½"}, |
| | | {"X1029", "Unit1_é¨éåéæ°ç¼¸åä½", "Y1039", "Unit1_é¨éåéæ°ç¼¸"}, |
| | | {"X102A", "Unit1_é¨éåéæ°ç¼¸å°ä½", "Y103A", ""}, |
| | | {"X102B", "Unit1_è
ä½ç ´ç空æ°éåä½", "Y103B", "Unit1_è
ä½ç ´ç空æ°é"}, |
| | | {"X102C", "Unit1_è
ä½ç ´ç空æ°éå°ä½", "Y103C", "Unit1_ååæ³µææ°é"}, |
| | | {"X102D", "Unit1_ä¸è
å¹³å°ç空æ£", "Y103D", "Unit1_ä¸è
å¹³å°å¸ç空"}, |
| | | {"X102E", "Unit1_ååæ³µææ°éåä½", "Y103E", "Unit1_ä¸è
å¹³å°ç ´ç空"}, |
| | | {"X102F", "Unit1_ååæ³µææ°éå°ä½", "Y103F", ""}, |
| | | {"X1040", "Unit1_ä¸å çå·²ä¸çµ", "Y1050", "Unit1_ä¸å çä¸çµ"}, |
| | | {"X1041", "Unit1_ä¸ä¸»æ¸©æ§è¡¨æ¥è¦", "Y1051", "Unit1_ä¸å çä¸çµ"}, |
| | | {"X1042", "Unit1_ä¸çæ§æ¸©æ§è¡¨æ¥è¦1", "Y1052", ""}, |
| | | {"X1043", "Unit1_ä¸çæ§æ¸©æ§è¡¨æ¥è¦2", "Y1053", ""}, |
| | | {"X1044", "Unit1_ä¸çæ§æ¸©æ§è¡¨æ¥è¦3", "Y1054", ""}, |
| | | {"X1045", "Unit1_ä¸çæ§æ¸©æ§è¡¨æ¥è¦4", "Y1055", ""}, |
| | | {"X1046", "Unit1_ä¸çæ§æ¸©æ§è¡¨æ¥è¦5", "Y1056", ""}, |
| | | {"X1047", "Unit1_ä¸å çå·²ä¸çµ", "Y1057", ""}, |
| | | {"X1048", "Unit1_ä¸ä¸»æ¸©æ§è¡¨æ¥è¦", "Y1058", ""}, |
| | | {"X1049", "Unit1_ä¸çæ§æ¸©æ§è¡¨æ¥è¦1", "Y1059", ""}, |
| | | {"X104A", "Unit1_ä¸çæ§æ¸©æ§è¡¨æ¥è¦2", "Y105A", ""}, |
| | | {"X104B", "Unit1_ä¸çæ§æ¸©æ§è¡¨æ¥è¦3", "Y105B", ""}, |
| | | {"X104C", "Unit1_ä¸çæ§æ¸©æ§è¡¨æ¥è¦4", "Y105C", ""}, |
| | | {"X104D", "Unit1_ä¸çæ§æ¸©æ§è¡¨æ¥è¦5", "Y105D", ""}, |
| | | {"X104E", "", "Y105E", ""}, |
| | | {"X104F", "", "Y105F", ""}, |
| | | {"X1060", "Unit1_干泵-DVPè¿è¡æ£æµ-11", "Y1070", "Unit1_干泵-DVPå¯å¨-1"}, |
| | | {"X1061", "Unit1_干泵-MBPè¿è¡æ£æµ-12", "Y1071", "Unit1_干泵-MBPå¯å¨-2"}, |
| | | {"X1062", "Unit1_干泵-é误æ¥è¦ä¸-14", "Y1072", "Unit1_干泵-å¼å¸¸è§£é¤-3"}, |
| | | {"X1063", "Unit1_干泵-é误è¦åä¸-16", "Y1073", ""}, |
| | | {"X1064", "Unit1_干泵-è¿ç¨/æ¬å°æ¨¡å¼-18", "Y1074", "Unit1_æ°®æ°éæçµç£é1"}, |
| | | {"X1065", "Unit1_干泵-ç´§æ¥åæ¢ä¸-20", "Y1075", "Unit1_æ°®æ°éæçµç£é2"}, |
| | | {"X1066", "", "Y1076", "Unit1_æ°®æ°éæçµç£é3"}, |
| | | {"X1067", "", "Y1077", "Unit1_æ°®æ°éæçµç£é4"}, |
| | | {"X1068", "", "Y1078", "Unit1_å çæ¿æ°´å·éæçµç£é1"}, |
| | | {"X1069", "", "Y1079", "Unit1_å çæ¿æ°´å·éæçµç£é2"}, |
| | | {"X106A", "", "Y107A", "Unit1_å çæ¿æ°´å·éæçµç£é3"}, |
| | | {"X106B", "", "Y107B", "Unit1_å çæ¿æ°´å·éæçµç£é4"}, |
| | | {"X106C", "", "Y107C", "Unit1_è
ä½åºæ¿éæçµç£é1"}, |
| | | {"X106D", "Unit1_æ°´ç®±ä¸æ¶²ä½æ£", "Y107D", "Unit1_è
ä½åºæ¿éæçµç£é2"}, |
| | | {"X106E", "Unit1_æ°´ç®±ä¸æ¶²ä½æ£", "Y107E", "Unit1_æ°´ç®±è¿æ°´é"}, |
| | | {"X106F", "Unit1_æ°´ç®±ä¸æ¶²ä½æ£", "Y107F", "Unit1_æ°´ç®±åºæ°´é"}, |
| | | {"X1080", "Unit2_æ¥å EMO", "Y1090", "Unit2_åè²ç¯-红"}, |
| | | {"X1081", "Unit2_æ»è¿æ°å忣", "Y1091", "Unit2_åè²ç¯-é»"}, |
| | | {"X1082", "Unit2_伺æçµæçææ¥è¦", "Y1092", "Unit2_åè²ç¯-绿"}, |
| | | {"X1083", "Unit2_å ççµæçææ¥è¦", "Y1093", "Unit2_åè²ç¯-è"}, |
| | | {"X1084", "å®å
¨ç»§çµå¨æ£", "Y1094", "Unit2_è鸣å¨-1"}, |
| | | {"X1085", "", "Y1095", "Unit2_è鸣å¨-2"}, |
| | | {"X1086", "", "Y1096", "Unit2_è鸣å¨-3"}, |
| | | {"X1087", "Unit2_å®å
¨é¨ç£æ£1", "Y1097", "Unit2_è鸣å¨-4"}, |
| | | {"X1088", "Unit2_å®å
¨é¨ç£æ£2", "Y1098", "Unit2_æºå°ç
§æ"}, |
| | | {"X1089", "Unit2_å®å
¨é¨ç£æ£3", "Y1099", "Unit2_å®å
¨é¨éå±è½"}, |
| | | {"X108A", "Unit2_å®å
¨é¨ç£æ£4", "Y109A", ""}, |
| | | {"X108B", "Unit2_å®å
¨é¨ç£æ£5", "Y109B", ""}, |
| | | {"X108C", "Unit2_å®å
¨é¨ç£æ£6", "Y109C", ""}, |
| | | {"X108D", "Unit2_å®å
¨é¨éæ£1", "Y109D", "Unit2_å®å
¨é¨é1"}, |
| | | {"X108E", "Unit2_å®å
¨é¨éæ£2", "Y109E", "Unit2_å®å
¨é¨é2"}, |
| | | {"X108F", "Unit2_å®å
¨é¨éæ£3", "Y109F", "Unit2_å®å
¨é¨é3"}, |
| | | {"X10A0", "Unit2_ååæ³µ-Alam(8-14)", "Y10B0", "Unit2_ååæ³µå¯å¨(1-9)"}, |
| | | {"X10A1", "Unit2_ååæ³µ-è¿ç¨/æ¬å°æ¨¡å¼(7-15)", "Y10B1", "Unit2_ååæ³µèéè£
ç½®(2-10)"}, |
| | | {"X10A2", "Unit2_ååæ³µ-æ£å¸¸è¿è¡ï¼4-12ï¼", "Y10B2", "Unit2_ååæ³µéæææ¿é"}, |
| | | {"X10A3", "", "Y10B3", "Unit2_æ°åéæé"}, |
| | | {"X10A4", "", "Y10B4", ""}, |
| | | {"X10A5", "Unit2_è
使çå·¦æ°ç¼¸åä½", "Y10B5", "Unit2_è
使çå·¦æ°ç¼¸åä½"}, |
| | | {"X10A6", "Unit2_è
使çå·¦æ°ç¼¸å°ä½", "Y10B6", "Unit2_è
使çå·¦æ°ç¼¸å°ä½"}, |
| | | {"X10A7", "Unit2_è
使ç峿°ç¼¸åä½", "Y10B7", "Unit2_è
使ç峿°ç¼¸åä½"}, |
| | | {"X10A8", "Unit2_è
使ç峿°ç¼¸å°ä½", "Y10B8", "Unit2_è
使ç峿°ç¼¸å°ä½"}, |
| | | {"X10A9", "Unit2_é¨éåéæ°ç¼¸åä½", "Y10B9", "Unit2_é¨éåéæ°ç¼¸"}, |
| | | {"X10AA", "Unit2_é¨éåéæ°ç¼¸å°ä½", "Y10BA", ""}, |
| | | {"X10AB", "Unit2_è
ä½ç ´ç空æ°éåä½", "Y10BB", "Unit2_è
ä½ç ´ç空æ°é"}, |
| | | {"X10AC", "Unit2_è
ä½ç ´ç空æ°éå°ä½", "Y10BC", "Unit2_ååæ³µææ°é"}, |
| | | {"X10AD", "Unit2_ä¸è
å¹³å°ç空æ£", "Y10BD", "Unit2_ä¸è
å¹³å°å¸ç空"}, |
| | | {"X10AE", "Unit2_ååæ³µææ°éåä½", "Y10BE", "Unit2_ä¸è
å¹³å°ç ´ç空"}, |
| | | {"X10AF", "Unit2_ååæ³µææ°éå°ä½", "Y10BF", ""}, |
| | | {"X10C0", "Unit2_ä¸å çå·²ä¸çµ", "Y10D0", "Unit2_ä¸å çä¸çµ"}, |
| | | {"X10C1", "Unit2_ä¸ä¸»æ¸©æ§è¡¨æ¥è¦", "Y10D1", "Unit2_ä¸å çä¸çµ"}, |
| | | {"X10C2", "Unit2_ä¸çæ§æ¸©æ§è¡¨æ¥è¦1", "Y10D2", ""}, |
| | | {"X10C3", "Unit2_ä¸çæ§æ¸©æ§è¡¨æ¥è¦2", "Y10D3", ""}, |
| | | {"X10C4", "Unit2_ä¸çæ§æ¸©æ§è¡¨æ¥è¦3", "Y10D4", ""}, |
| | | {"X10C5", "Unit2_ä¸çæ§æ¸©æ§è¡¨æ¥è¦4", "Y10D5", ""}, |
| | | {"X10C6", "Unit2_ä¸çæ§æ¸©æ§è¡¨æ¥è¦5", "Y10D6", ""}, |
| | | {"X10C7", "Unit2_ä¸å çå·²ä¸çµ", "Y10D7", ""}, |
| | | {"X10C8", "Unit2_ä¸ä¸»æ¸©æ§è¡¨æ¥è¦", "Y10D8", ""}, |
| | | {"X10C9", "Unit2_ä¸çæ§æ¸©æ§è¡¨æ¥è¦1", "Y10D9", ""}, |
| | | {"X10CA", "Unit2_ä¸çæ§æ¸©æ§è¡¨æ¥è¦2", "Y10DA", ""}, |
| | | {"X10CB", "Unit2_ä¸çæ§æ¸©æ§è¡¨æ¥è¦3", "Y10DB", ""}, |
| | | {"X10CC", "Unit2_ä¸çæ§æ¸©æ§è¡¨æ¥è¦4", "Y10DC", ""}, |
| | | {"X10CD", "Unit2_ä¸çæ§æ¸©æ§è¡¨æ¥è¦5", "Y10DD", ""}, |
| | | {"X10CE", "", "Y10DE", ""}, |
| | | {"X10CF", "", "Y10DF", ""}, |
| | | {"X10E0", "Unit2_干泵-DVPè¿è¡æ£æµ-11", "Y10F0", "Unit2_干泵-DVPå¯å¨-1"}, |
| | | {"X10E1", "Unit2_干泵-MBPè¿è¡æ£æµ-12", "Y10F1", "Unit2_干泵-MBPå¯å¨-2"}, |
| | | {"X10E2", "Unit2_干泵-é误æ¥è¦ä¸-14", "Y10F2", "Unit2_干泵-å¼å¸¸è§£é¤-3"}, |
| | | {"X10E3", "Unit2_干泵-é误è¦åä¸-16", "Y10F3", ""}, |
| | | {"X10E4", "Unit2_干泵-è¿ç¨/æ¬å°æ¨¡å¼-18", "Y10F4", "Unit2_æ°®æ°éæçµç£é1"}, |
| | | {"X10E5", "Unit2_干泵-ç´§æ¥åæ¢ä¸-20", "Y10F5", "Unit2_æ°®æ°éæçµç£é2"}, |
| | | {"X10E6", "", "Y10F6", "Unit2_æ°®æ°éæçµç£é3"}, |
| | | {"X10E7", "", "Y10F7", "Unit2_æ°®æ°éæçµç£é4"}, |
| | | {"X10E8", "", "Y10F8", "Unit2_å çæ¿æ°´å·éæçµç£é1"}, |
| | | {"X10E9", "", "Y10F9", "Unit2_å çæ¿æ°´å·éæçµç£é2"}, |
| | | {"X10EA", "", "Y10FA", "Unit2_å çæ¿æ°´å·éæçµç£é3"}, |
| | | {"X10EB", "", "Y10FB", "Unit2_å çæ¿æ°´å·éæçµç£é4"}, |
| | | {"X10EC", "", "Y10FC", "Unit2_è
ä½åºæ¿éæçµç£é1"}, |
| | | {"X10ED", "Unit2_æ°´ç®±ä¸æ¶²ä½æ£", "Y10FD", "Unit2_è
ä½åºæ¿éæçµç£é2"}, |
| | | {"X10EE", "Unit2_æ°´ç®±ä¸æ¶²ä½æ£", "Y10FE", "Unit2_æ°´ç®±è¿æ°´é"}, |
| | | {"X10EF", "Unit2_æ°´ç®±ä¸æ¶²ä½æ£", "Y10FF", "Unit2_æ°´ç®±åºæ°´é"} |
| | | }; |
| | | m_machines[machineName] = defaultData; |
| | | } |
| | | else if (machineName == "VacuumBake") { |
| | | std::vector<IOData> defaultData = { |
| | | {"X1100", "æ¥å EMO", "Y1110", "åè²ç¯-红"}, |
| | | {"X1101", "æ»è¿æ°å忣", "Y1111", "åè²ç¯-é»"}, |
| | | {"X1102", "Aå ççµæçææ¥è¦", "Y1112", "åè²ç¯-绿"}, |
| | | {"X1103", "Bå ççµæçææ¥è¦", "Y1113", "åè²ç¯-è"}, |
| | | {"X1104", "å®å
¨ç»§çµå¨æ£", "Y1114", "è鸣å¨-1"}, |
| | | {"X1105", "", "Y1115", "è鸣å¨-2"}, |
| | | {"X1106", "", "Y1116", "è鸣å¨-3"}, |
| | | {"X1107", "", "Y1117", "è鸣å¨-4"}, |
| | | {"X1108", "", "Y1118", "æºå°ç
§æ"}, |
| | | {"X1109", "", "Y1119", "å®å
¨é¨éå±è½"}, |
| | | {"X110A", "å®å
¨é¨ç£æ£1", "Y111A", ""}, |
| | | {"X110B", "å®å
¨é¨ç£æ£2", "Y111B", ""}, |
| | | {"X110C", "å®å
¨é¨éæ£1", "Y111C", "å®å
¨é¨é1"}, |
| | | {"X110D", "å®å
¨é¨éæ£2", "Y111D", "å®å
¨é¨é2"}, |
| | | {"X110E", "å®å
¨é¨éæ£3", "Y111E", "å®å
¨é¨é3"}, |
| | | {"X110F", "å®å
¨é¨éæ£4", "Y111F", "å®å
¨é¨é4"}, |
| | | {"X1120", "Aè
é¨éåéæ°ç¼¸åä½", "Y1130", "Aè
é¨éåéæ°ç¼¸"}, |
| | | {"X1121", "Aè
é¨éåéæ°ç¼¸å°ä½", "Y1131", ""}, |
| | | {"X1122", "Aè
è
使»å¸ç空æ°éåä½", "Y1132", "Aè
è
使»å¸ç空æ°é"}, |
| | | {"X1123", "Aè
è
使»å¸ç空æ°éå°ä½", "Y1133", "Aè
è
使»ç ´ç空æ°é"}, |
| | | {"X1124", "Aè
è
使»ç ´ç空æ°éåä½", "Y1134", "Aè
å·å´æ°´é"}, |
| | | {"X1125", "Aè
è
使»ç ´ç空æ°éå°ä½", "Y1135", ""}, |
| | | {"X1126", "Aè
å çå·²ä¸çµ", "Y1136", "Aè
å çä¸çµ"}, |
| | | {"X1127", "Aè
主温æ§è¡¨æ¥è¦", "Y1137", ""}, |
| | | {"X1128", "Aè
çæ§æ¸©æ§è¡¨æ¥è¦1", "Y1138", ""}, |
| | | {"X1129", "Aè
çæ§æ¸©æ§è¡¨æ¥è¦2", "Y1139", ""}, |
| | | {"X112A", "Aè
çæ§æ¸©æ§è¡¨æ¥è¦3", "Y113A", ""}, |
| | | {"X112B", "Aè
çæ§æ¸©æ§è¡¨æ¥è¦4", "Y113B", ""}, |
| | | {"X112C", "Aè
çæ§æ¸©æ§è¡¨æ¥è¦5", "Y113C", ""}, |
| | | {"X112D", "", "Y113D", ""}, |
| | | {"X112E", "", "Y113E", ""}, |
| | | {"X112F", "", "Y113F", ""}, |
| | | {"X1140", "Bè
é¨éåéæ°ç¼¸åä½", "Y1150", "Bè
é¨éåéæ°ç¼¸"}, |
| | | {"X1141", "Bè
é¨éåéæ°ç¼¸å°ä½", "Y1151", ""}, |
| | | {"X1142", "Bè
è
使»å¸ç空æ°éåä½", "Y1152", "Bè
è
使»å¸ç空æ°é"}, |
| | | {"X1143", "Bè
è
使»å¸ç空æ°éå°ä½", "Y1153", "Bè
è
使»ç ´ç空æ°é"}, |
| | | {"X1144", "Bè
è
使»ç ´ç空æ°éåä½", "Y1154", "Bè
å·å´æ°´é"}, |
| | | {"X1145", "Bè
è
使»ç ´ç空æ°éå°ä½", "Y1155", ""}, |
| | | {"X1146", "Bè
å çå·²ä¸çµ", "Y1156", "Bè
å çä¸çµ"}, |
| | | {"X1147", "Bè
主温æ§è¡¨æ¥è¦", "Y1157", ""}, |
| | | {"X1148", "Bè
çæ§æ¸©æ§è¡¨æ¥è¦1", "Y1158", ""}, |
| | | {"X1149", "Bè
çæ§æ¸©æ§è¡¨æ¥è¦2", "Y1159", ""}, |
| | | {"X114A", "Bè
çæ§æ¸©æ§è¡¨æ¥è¦3", "Y115A", ""}, |
| | | {"X114B", "Bè
çæ§æ¸©æ§è¡¨æ¥è¦4", "Y115B", ""}, |
| | | {"X114C", "Bè
çæ§æ¸©æ§è¡¨æ¥è¦5", "Y115C", ""}, |
| | | {"X114D", "", "Y115D", ""}, |
| | | {"X114E", "", "Y115E", ""}, |
| | | {"X114F", "", "Y115F", ""}, |
| | | {"X1160", "干泵-DVPè¿è¡æ£æµ-11", "Y1170", "干泵-DVPå¯å¨-1"}, |
| | | {"X1161", "干泵-MBPè¿è¡æ£æµ-12", "Y1171", "干泵-MBPå¯å¨-2"}, |
| | | {"X1162", "干泵-é误æ¥è¦ä¸-14", "Y1172", "干泵-å¼å¸¸è§£é¤-3"}, |
| | | {"X1163", "干泵-é误è¦åä¸-16", "Y1173", ""}, |
| | | {"X1164", "干泵-è¿ç¨/æ¬å°æ¨¡å¼-18", "Y1174", ""}, |
| | | {"X1165", "干泵-ç´§æ¥åæ¢ä¸-20", "Y1175", ""}, |
| | | {"X1166", "", "Y1176", ""}, |
| | | {"X1167", "", "Y1177", ""}, |
| | | {"X1168", "", "Y1178", ""}, |
| | | {"X1169", "", "Y1179", ""}, |
| | | {"X116A", "", "Y117A", ""}, |
| | | {"X116B", "", "Y117B", ""}, |
| | | {"X116C", "", "Y117C", ""}, |
| | | {"X116D", "", "Y117D", ""}, |
| | | {"X116E", "", "Y117E", ""}, |
| | | {"X116F", "", "Y117F", ""} |
| | | }; |
| | | m_machines[machineName] = defaultData; |
| | | } |
| | | else if (machineName == "AfterBake") { |
| | | std::vector<IOData> defaultData = { |
| | | {"X200", "æ¥å EMO", "Y400", "åè²ç¯-红"}, |
| | | {"X201", "æ»è¿æ°å忣", "Y401", "åè²ç¯-é»"}, |
| | | {"X202", "Aå ççµæçææ¥è¦", "Y402", "åè²ç¯-绿"}, |
| | | {"X203", "Bå ççµæçææ¥è¦", "Y403", "åè²ç¯-è"}, |
| | | {"X204", "å®å
¨ç»§çµå¨æ£", "Y404", "è鸣å¨-1"}, |
| | | {"X205", "ä¸çµç®±æ¸©æ§æ¥è¦", "Y405", "è鸣å¨-2"}, |
| | | {"X206", "ä¸çµç®±æ¸©æ§æ¥è¦", "Y406", "è鸣å¨-3"}, |
| | | {"X207", "", "Y407", "è鸣å¨-4"}, |
| | | {"X208", "å®å
¨é¨ç£æ£1", "Y408", "æºå°ç
§æ"}, |
| | | {"X209", "å®å
¨é¨ç£æ£2", "Y409", "å®å
¨é¨éå±è½"}, |
| | | {"X20A", "å®å
¨é¨ç£æ£3", "Y40A", ""}, |
| | | {"X20B", "å®å
¨é¨ç£æ£4", "Y40B", ""}, |
| | | {"X20C", "å®å
¨é¨éæ£1", "Y40C", "å®å
¨é¨é1"}, |
| | | {"X20D", "å®å
¨é¨éæ£2", "Y40D", "å®å
¨é¨é2"}, |
| | | {"X20E", "å®å
¨é¨éæ£3", "Y40E", "å®å
¨é¨é3"}, |
| | | {"X20F", "å®å
¨é¨éæ£4", "Y40F", "å®å
¨é¨é4"}, |
| | | {"X210", "Aä¸è
å¤¹ææ°ç¼¸1åä½", "Y410", "Aä¸è
å¤¹ææ°ç¼¸"}, |
| | | {"X211", "Aä¸è
å¤¹ææ°ç¼¸1å°ä½", "Y411", ""}, |
| | | {"X212", "Aä¸è
å¤¹ææ°ç¼¸2åä½", "Y412", "Aè
æ°´è·¯éæé"}, |
| | | {"X213", "Aä¸è
å¤¹ææ°ç¼¸2å°ä½", "Y413", ""}, |
| | | {"X214", "Aä¸è
å çå·²ä¸çµ", "Y414", ""}, |
| | | {"X215", "Aä¸ä¸»æ¸©æ§è¡¨æ¥è¦", "Y415", ""}, |
| | | {"X216", "Aä¸è
çæ§æ¸©æ§è¡¨æ¥è¦1", "Y416", ""}, |
| | | {"X217", "Aä¸è
çæ§æ¸©æ§è¡¨æ¥è¦2", "Y417", ""}, |
| | | {"X218", "Aä¸è
çæ§æ¸©æ§è¡¨æ¥è¦3", "Y418", ""}, |
| | | {"X219", "Aä¸è
çæ§æ¸©æ§è¡¨æ¥è¦4", "Y419", ""}, |
| | | {"X21A", "Aä¸è
çæ§æ¸©æ§è¡¨æ¥è¦5", "Y41A", ""}, |
| | | {"X21B", "", "Y41B", ""}, |
| | | {"X21C", "è
ä½å·¦ä¸é¨ç£", "Y41C", ""}, |
| | | {"X21D", "è
ä½å·¦ä¸é¨ç£", "Y41D", ""}, |
| | | {"X21E", "è
ä½å³ä¸é¨ç£", "Y41E", ""}, |
| | | {"X21F", "è
ä½å³ä¸é¨ç£", "Y41F", ""}, |
| | | {"X220", "Bä¸è
å¤¹ææ°ç¼¸1åä½", "Y420", "Bä¸è
å¤¹ææ°ç¼¸"}, |
| | | {"X221", "Bä¸è
å¤¹ææ°ç¼¸1å°ä½", "Y421", ""}, |
| | | {"X222", "Bä¸è
å¤¹ææ°ç¼¸2åä½", "Y422", "Bè
æ°´è·¯éæé"}, |
| | | {"X223", "Bä¸è
å¤¹ææ°ç¼¸2å°ä½", "Y423", ""}, |
| | | {"X224", "Bä¸è
å çå·²ä¸çµ", "Y424", ""}, |
| | | {"X225", "Bä¸ä¸»æ¸©æ§è¡¨æ¥è¦", "Y425", ""}, |
| | | {"X226", "Bä¸è
çæ§æ¸©æ§è¡¨æ¥è¦1", "Y426", ""}, |
| | | {"X227", "Bä¸è
çæ§æ¸©æ§è¡¨æ¥è¦2", "Y427", ""}, |
| | | {"X228", "Bä¸è
çæ§æ¸©æ§è¡¨æ¥è¦3", "Y428", ""}, |
| | | {"X229", "Bä¸è
çæ§æ¸©æ§è¡¨æ¥è¦4", "Y429", ""}, |
| | | {"X22A", "Bä¸è
çæ§æ¸©æ§è¡¨æ¥è¦5", "Y42A", ""}, |
| | | {"X22B", "", "Y42B", ""}, |
| | | {"X22C", "Aä¸è
æææ£", "Y42C", ""}, |
| | | {"X22D", "", "Y42D", ""}, |
| | | {"X22E", "", "Y42E", ""}, |
| | | {"X22F", "", "Y42F", ""} |
| | | }; |
| | | m_machines[machineName] = defaultData; |
| | | } |
| | | else if (machineName == "AOI") { |
| | | std::vector<IOData> defaultData = { |
| | | {"X240", "æ¥å EMO", "Y440", "åè²ç¯-红"}, |
| | | {"X241", "æ»è¿æ°åå表", "Y441", "åè²ç¯-é»"}, |
| | | {"X242", "çææ¥è¦", "Y442", "åè²ç¯-绿"}, |
| | | {"X243", "", "Y443", "åè²ç¯-è"}, |
| | | {"X244", "", "Y444", "è鸣å¨-1"}, |
| | | {"X245", "å·¦ä¸é¨ç£æ£", "Y445", "è鸣å¨-2"}, |
| | | {"X246", "å·¦ä¸é¨ç£æ£", "Y446", "è鸣å¨-3"}, |
| | | {"X247", "å³ä¸é¨ç£æ£", "Y447", "è鸣å¨-4"}, |
| | | {"X248", "å³ä¸é¨ç£æ£", "Y448", "æºå°ç
§æ"}, |
| | | {"X249", "å®å
¨é¨ç£æ£1", "Y449", "å®å
¨é¨éå±è½"}, |
| | | {"X24A", "å®å
¨é¨ç£æ£2", "Y44A", ""}, |
| | | {"X24B", "å®å
¨é¨éæ£1", "Y44B", "å®å
¨é¨é1"}, |
| | | {"X24C", "å®å
¨é¨éæ£2", "Y44C", "å®å
¨é¨é2"}, |
| | | {"X24D", "æ£æµæ¬èå忣", "Y44D", ""}, |
| | | {"X24E", "æ£æµå¹³å°ç空æ£", "Y44E", "æ£æµå¹³å°å¸ç空"}, |
| | | {"X24F", "æ£æµå¹³å°æææ£", "Y44F", "æ£æµå¹³å°ç ´ç空"}, |
| | | {"X250", "æ£æµå¹³å°å¯¹ä½æ°ç¼¸A1åä½", "Y450", "æ£æµå¹³å°å¯¹ä½æ°ç¼¸A"}, |
| | | {"X251", "æ£æµå¹³å°å¯¹ä½æ°ç¼¸A1å°ä½", "Y451", ""}, |
| | | {"X252", "æ£æµå¹³å°å¯¹ä½æ°ç¼¸A2åä½", "Y452", ""}, |
| | | {"X253", "æ£æµå¹³å°å¯¹ä½æ°ç¼¸A2å°ä½", "Y453", ""}, |
| | | {"X254", "æ£æµå¹³å°å¯¹ä½åéæ°ç¼¸A1åä½", "Y454", "æ£æµå¹³å°å¯¹ä½åéæ°ç¼¸A"}, |
| | | {"X255", "æ£æµå¹³å°å¯¹ä½åéæ°ç¼¸A1å°ä½", "Y455", ""}, |
| | | {"X256", "æ£æµå¹³å°å¯¹ä½åéæ°ç¼¸A2åä½", "Y456", ""}, |
| | | {"X257", "æ£æµå¹³å°å¯¹ä½åéæ°ç¼¸A2å°ä½", "Y457", ""}, |
| | | {"X258", "æ£æµå¹³å°å¯¹ä½æ°ç¼¸B1åä½", "Y458", "æ£æµå¹³å°å¯¹ä½æ°ç¼¸B"}, |
| | | {"X259", "æ£æµå¹³å°å¯¹ä½æ°ç¼¸B1å°ä½", "Y459", ""}, |
| | | {"X25A", "æ£æµå¹³å°å¯¹ä½æ°ç¼¸B2åä½", "Y45A", ""}, |
| | | {"X25B", "æ£æµå¹³å°å¯¹ä½æ°ç¼¸B2å°ä½", "Y45B", ""}, |
| | | {"X25C", "æ£æµå¹³å°å¯¹ä½åéæ°ç¼¸B1åä½", "Y45C", "æ£æµå¹³å°å¯¹ä½åéæ°ç¼¸B"}, |
| | | {"X25D", "æ£æµå¹³å°å¯¹ä½åéæ°ç¼¸B1å°ä½", "Y45D", ""}, |
| | | {"X25E", "æ£æµå¹³å°å¯¹ä½åéæ°ç¼¸B2åä½", "Y45E", ""}, |
| | | {"X25F", "æ£æµå¹³å°å¯¹ä½åéæ°ç¼¸B2å°ä½", "Y45F", ""}, |
| | | {"X260", "", "Y460", ""}, |
| | | {"X261", "", "Y461", ""}, |
| | | {"X262", "", "Y462", ""}, |
| | | {"X263", "", "Y463", ""}, |
| | | {"X264", "", "Y464", ""}, |
| | | {"X265", "", "Y465", ""}, |
| | | {"X266", "", "Y466", ""}, |
| | | {"X267", "", "Y467", ""}, |
| | | {"X268", "", "Y468", ""}, |
| | | {"X269", "", "Y469", ""}, |
| | | {"X26A", "", "Y46A", ""}, |
| | | {"X26B", "", "Y46B", ""}, |
| | | {"X26C", "", "Y46C", ""}, |
| | | {"X26D", "", "Y46D", ""}, |
| | | {"X26E", "", "Y46E", ""}, |
| | | {"X26F", "", "Y46F", ""} |
| | | }; |
| | | m_machines[machineName] = defaultData; |
| | | } |
| | | } |
| | | |
| | | void IOManager::saveToFile(const std::string& machineName) { |
| | | std::ofstream file(m_directory + "/" + machineName + ".iom"); |
| | | if (!file.is_open()) { |
| | | std::cerr << "Failed to open file for writing: " << machineName << ".iom" << std::endl; |
| | | return; |
| | | } |
| | | |
| | | for (const auto& entry : m_machines[machineName]) { |
| | | file << entry.inputAddress << "," |
| | | << entry.inputDescription << "," |
| | | << entry.outputAddress << "," |
| | | << entry.outputDescription << "\n"; |
| | | } |
| | | |
| | | file.close(); |
| | | } |
| | | |
| | | bool IOManager::loadFromFile(const std::string& machineName) { |
| | | std::ifstream file(m_directory + "/" + machineName + ".iom"); |
| | | if (!file.is_open()) { |
| | | std::cerr << "Failed to open file for reading: " << machineName << ".iom" << std::endl; |
| | | return false; |
| | | } |
| | | |
| | | std::vector<IOData> data; |
| | | std::string line; |
| | | while (std::getline(file, line)) { |
| | | IOData entry; |
| | | size_t pos = 0; |
| | | pos = line.find(","); |
| | | entry.inputAddress = line.substr(0, pos); |
| | | line.erase(0, pos + 1); |
| | | |
| | | pos = line.find(","); |
| | | entry.inputDescription = line.substr(0, pos); |
| | | line.erase(0, pos + 1); |
| | | |
| | | pos = line.find(","); |
| | | entry.outputAddress = line.substr(0, pos); |
| | | line.erase(0, pos + 1); |
| | | |
| | | entry.outputDescription = line; |
| | | data.push_back(entry); |
| | | } |
| | | |
| | | m_machines[machineName] = data; |
| | | file.close(); |
| | | return true; |
| | | } |
| | | |
| | | void IOManager::printMachineData(const std::string& machineName) const { |
| | | auto it = m_machines.find(machineName); |
| | | if (it != m_machines.end()) { |
| | | for (const auto& entry : it->second) { |
| | | std::cout << "Input Address: " << entry.inputAddress |
| | | << ", Input Description: " << entry.inputDescription |
| | | << ", Output Address: " << entry.outputAddress |
| | | << ", Output Description: " << entry.outputDescription << std::endl; |
| | | } |
| | | } |
| | | else { |
| | | std::cerr << "Machine not found: " << machineName << std::endl; |
| | | } |
| | | } |
| | | |
| | | std::vector<IOData> IOManager::GetMachineData(const std::string& machineName) const |
| | | { |
| | | auto it = m_machines.find(machineName); |
| | | if (it != m_machines.end()) { |
| | | return it->second; |
| | | } |
| | | return {}; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #ifndef IOMANAGER_H |
| | | #define IOMANAGER_H |
| | | |
| | | #include <string> |
| | | #include <vector> |
| | | #include <map> |
| | | |
| | | struct IOData { |
| | | std::string inputAddress; |
| | | std::string inputDescription; |
| | | std::string outputAddress; |
| | | std::string outputDescription; |
| | | }; |
| | | |
| | | class IOManager { |
| | | public: |
| | | IOManager(); |
| | | |
| | | void addMachine(const std::string& machineName, const std::vector<IOData>& data); |
| | | void addDefaultMachineData(const std::string& machineName); |
| | | void saveToFile(const std::string& machineName); |
| | | bool loadFromFile(const std::string& machineName); |
| | | void printMachineData(const std::string& machineName) const; |
| | | std::vector<IOData> GetMachineData(const std::string& machineName) const; |
| | | |
| | | private: |
| | | std::string m_directory; |
| | | std::map<std::string, std::vector<IOData>> m_machines; |
| | | }; |
| | | |
| | | #endif // IOMANAGER_H |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // IOMonitoringDlg.cpp: å®ç°æä»¶ |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | | #include "BondEq.h" |
| | | #include "afxdialogex.h" |
| | | #include "IOMonitoringDlg.h" |
| | | |
| | | |
| | | // CIOMonitoringDlg å¯¹è¯æ¡ |
| | | |
| | | IMPLEMENT_DYNAMIC(CIOMonitoringDlg, CDialogEx) |
| | | |
| | | CIOMonitoringDlg::CIOMonitoringDlg(CWnd* pParent /*=nullptr*/) |
| | | : CDialogEx(IDD_DIALOG_IO_MONITORING, pParent) |
| | | { |
| | | m_nCurrentPage = 1; |
| | | m_nTotalPages = 1; |
| | | m_nRowsPerPage = 10; |
| | | m_nCols = 6; |
| | | } |
| | | |
| | | CIOMonitoringDlg::~CIOMonitoringDlg() |
| | | { |
| | | for (auto& pair : m_mapFonts) { |
| | | if (pair.second) { |
| | | pair.second->DeleteObject(); |
| | | delete pair.second; |
| | | } |
| | | } |
| | | m_mapFonts.clear(); |
| | | |
| | | ClearDynamicControls(); |
| | | } |
| | | |
| | | void CIOMonitoringDlg::DoDataExchange(CDataExchange* pDX) |
| | | { |
| | | CDialogEx::DoDataExchange(pDX); |
| | | DDX_Control(pDX, IDC_STATIC_PAGE_NUMBER, m_staticPageNum); |
| | | } |
| | | |
| | | void CIOMonitoringDlg::SetIOManager(const std::string& machineName) |
| | | { |
| | | IOManager manager; |
| | | manager.loadFromFile(machineName); |
| | | m_machineName = machineName; |
| | | |
| | | // å è½½æ°æ® |
| | | m_displayData = manager.GetMachineData(machineName); |
| | | |
| | | // 计ç®é¡µæ° |
| | | m_nCurrentPage = 1; |
| | | m_nTotalPages = (m_displayData.size() + m_nRowsPerPage - 1) / m_nRowsPerPage; |
| | | } |
| | | |
| | | CFont* CIOMonitoringDlg::GetOrCreateFont(int nFontSize) |
| | | { |
| | | auto it = m_mapFonts.find(nFontSize); |
| | | if (it != m_mapFonts.end()) { |
| | | return it->second; |
| | | } |
| | | |
| | | CFont* font = new CFont(); |
| | | LOGFONT logFont = { 0 }; |
| | | _tcscpy_s(logFont.lfFaceName, _T("Segoe UI")); |
| | | logFont.lfHeight = -nFontSize; |
| | | logFont.lfQuality = CLEARTYPE_QUALITY; |
| | | font->CreateFontIndirect(&logFont); |
| | | m_mapFonts[nFontSize] = font; |
| | | |
| | | return font; |
| | | } |
| | | |
| | | void CIOMonitoringDlg::SetDefaultFont() |
| | | { |
| | | CFont* defaultFont = GetOrCreateFont(12); |
| | | |
| | | // éåæææ§ä»¶ï¼åºç¨é»è®¤åä½ |
| | | CWnd* pWnd = GetWindow(GW_CHILD); |
| | | while (pWnd) { |
| | | pWnd->SetFont(defaultFont, TRUE); |
| | | pWnd = pWnd->GetNextWindow(); |
| | | } |
| | | } |
| | | |
| | | void CIOMonitoringDlg::AdjustControls(float dScaleX, float dScaleY) |
| | | { |
| | | CWnd* pWnd = GetWindow(GW_CHILD); |
| | | while (pWnd) { |
| | | int nCtrlID = pWnd->GetDlgCtrlID(); |
| | | if (nCtrlID != -1 && m_mapCtrlLayouts.find(nCtrlID) != m_mapCtrlLayouts.end()) |
| | | { |
| | | CRect originalRect = m_mapCtrlLayouts[nCtrlID]; |
| | | CRect newRect( |
| | | static_cast<int>(originalRect.left * dScaleX), |
| | | static_cast<int>(originalRect.top * dScaleY), |
| | | static_cast<int>(originalRect.right * dScaleX), |
| | | static_cast<int>(originalRect.bottom * dScaleY)); |
| | | |
| | | pWnd->MoveWindow(&newRect); |
| | | AdjustControlFont(pWnd, newRect.Width(), newRect.Height()); |
| | | } |
| | | pWnd = pWnd->GetNextWindow(); |
| | | } |
| | | } |
| | | |
| | | void CIOMonitoringDlg::AdjustControlFont(CWnd* pWnd, int nWidth, int nHeight) |
| | | { |
| | | TCHAR szClassName[256]; |
| | | GetClassName(pWnd->m_hWnd, szClassName, sizeof(szClassName)); |
| | | |
| | | // æ ¹æ®æ§ä»¶é«åº¦å¨æè°æ´åä½å¤§å° |
| | | int fontSize = nHeight / 2; |
| | | if (fontSize < 8) fontSize = 8; |
| | | |
| | | // è·åæå建åä½ |
| | | CFont* pFont = GetOrCreateFont(fontSize); |
| | | |
| | | pWnd->SetFont(pFont); |
| | | pWnd->Invalidate(); // å·æ°æ§ä»¶æ¾ç¤º |
| | | } |
| | | |
| | | void CIOMonitoringDlg::UpdatePageInfo() |
| | | { |
| | | // æ ¼å¼å页ç ä¿¡æ¯ä¸º "å½å页/æ»é¡µæ°" |
| | | CString pageInfo; |
| | | pageInfo.Format(_T("%d/%d 页"), m_nCurrentPage, m_nTotalPages); |
| | | m_staticPageNum.SetWindowText(pageInfo); |
| | | } |
| | | |
| | | void CIOMonitoringDlg::CreateDynamicControls() |
| | | { |
| | | CRect rect; |
| | | GetClientRect(&rect); |
| | | |
| | | // è·åæé®çå¤§å° |
| | | CWnd* pPrevButton = GetDlgItem(IDC_BUTTON_PREV_PAGE); |
| | | CWnd* pNextButton = GetDlgItem(IDC_BUTTON_NEXT_PAGE); |
| | | |
| | | CRect prevButtonRect, nextButtonRect; |
| | | pPrevButton->GetWindowRect(&prevButtonRect); |
| | | pNextButton->GetWindowRect(&nextButtonRect); |
| | | |
| | | // è½¬æ¢æé®åæ å°å¯¹è¯æ¡çåæ ç³»ç» |
| | | ScreenToClient(&prevButtonRect); |
| | | ScreenToClient(&nextButtonRect); |
| | | |
| | | int buttonHeight = prevButtonRect.Height(); // æé®çé«åº¦ |
| | | int topMargin = rect.Height() * 0.05; // é¡¶é¨ä¿ç 5% çé«åº¦ |
| | | int bottomMargin = buttonHeight + topMargin; // åºé¨ä¿çæé®é«åº¦å é´è· |
| | | int sideMargin = topMargin; // å·¦å³é´è·ä¸é¡¶é¨é´è·ç¸å |
| | | int groupSpacing = 20; // 两ç»ä¹é´çé´è· |
| | | int verticalSpacing = 10; // åç´é´è· |
| | | |
| | | // æ¯è¡é«åº¦åå宽度 |
| | | int availableHeight = rect.Height() - topMargin - bottomMargin; |
| | | int rowHeight = (availableHeight / m_nRowsPerPage) - verticalSpacing; // æ§ä»¶é«åº¦å
å«é´è· |
| | | |
| | | int availableWidth = rect.Width() - 2 * sideMargin; // å¯ç¨å®½åº¦ï¼åå»å·¦å³é´è·ï¼ |
| | | int colWidthSmall = availableWidth / 14; // å°å®½åº¦åæ´å° |
| | | int colWidthLarge = availableWidth * 4 / 14; // å¤§å®½åº¦åæ¯ä¾ |
| | | int groupWidth = colWidthSmall * 2 + colWidthLarge; // æ¯ç»æ»å®½åº¦ |
| | | |
| | | for (int i = 0; i < m_nRowsPerPage; ++i) |
| | | { |
| | | // æ¯ä¸è¡çèµ·å§ Y åæ |
| | | int y = topMargin + i * (rowHeight + verticalSpacing); |
| | | |
| | | // å建第 1 ç» (0, 1, 2) |
| | | int x = sideMargin; // ä»å·¦è¾¹è·å¼å§ |
| | | CreateStaticControl(x, y, colWidthSmall, rowHeight, _T("OFF"), true); |
| | | x += colWidthSmall; |
| | | CreateStaticControl(x, y, colWidthSmall, rowHeight, _T("X1000")); |
| | | x += colWidthSmall; |
| | | CreateStaticControl(x, y, colWidthLarge, rowHeight, _T("æè¿°ææ¬"), false, true); |
| | | |
| | | // 第 2 ç»èµ·å§ä½ç½®ï¼å ä¸ç»é´è· |
| | | x += colWidthLarge + groupSpacing; |
| | | |
| | | // å建第 2 ç» (3, 4, 5) |
| | | CreateStaticControl(x, y, colWidthSmall, rowHeight, _T("OFF"), true); |
| | | x += colWidthSmall; |
| | | CreateStaticControl(x, y, colWidthSmall, rowHeight, _T("Y1010")); |
| | | x += colWidthSmall; |
| | | CreateStaticControl(x, y, colWidthLarge, rowHeight, _T("æè¿°ææ¬"), false, true); |
| | | } |
| | | } |
| | | |
| | | void CIOMonitoringDlg::CreateStaticControl(int x, int y, int width, int height, const CString& text, bool hasBorder, bool alignLeft) |
| | | { |
| | | DWORD style = WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE; // ç¡®ä¿åç´å±
ä¸ |
| | | if (hasBorder) { |
| | | style |= WS_BORDER; // æ·»å è¾¹æ¡ |
| | | } |
| | | if (alignLeft) { |
| | | style |= SS_LEFT; // å·¦å¯¹é½ææ¬ |
| | | } |
| | | else { |
| | | style |= SS_CENTER; // å±
ä¸ææ¬ |
| | | } |
| | | |
| | | CStatic* pStatic = new CStatic(); |
| | | pStatic->Create(text, style, CRect(x, y, x + width, y + height), this); |
| | | |
| | | // å¨æè®¾ç½®åä½å¤§å° |
| | | CFont* pFont = GetOrCreateFont(height / 3); |
| | | pStatic->SetFont(pFont); |
| | | |
| | | // å卿§ä»¶æé |
| | | m_staticControls.push_back(pStatic); |
| | | } |
| | | |
| | | void CIOMonitoringDlg::DisplayCurrentPage() |
| | | { |
| | | int startIndex = (m_nCurrentPage - 1) * m_nRowsPerPage; |
| | | int endIndex = min(startIndex + m_nRowsPerPage, static_cast<int>(m_displayData.size())); |
| | | |
| | | for (int i = startIndex; i < endIndex; ++i) |
| | | { |
| | | const auto& data = m_displayData[i]; |
| | | int row = i - startIndex; |
| | | |
| | | m_staticControls[row * m_nCols + 0]->SetWindowText(_T("OFF")); |
| | | m_staticControls[row * m_nCols + 1]->SetWindowText(CString(data.inputAddress.c_str())); |
| | | m_staticControls[row * m_nCols + 2]->SetWindowText(CString(data.inputDescription.c_str())); |
| | | m_staticControls[row * m_nCols + 3]->SetWindowText(_T("OFF")); |
| | | m_staticControls[row * m_nCols + 4]->SetWindowText(CString(data.outputAddress.c_str())); |
| | | m_staticControls[row * m_nCols + 5]->SetWindowText(CString(data.outputDescription.c_str())); |
| | | } |
| | | UpdatePageInfo(); |
| | | } |
| | | |
| | | void CIOMonitoringDlg::ClearDynamicControls() |
| | | { |
| | | for (auto* pStatic : m_staticControls) |
| | | { |
| | | if (pStatic) |
| | | { |
| | | pStatic->DestroyWindow(); |
| | | delete pStatic; |
| | | } |
| | | } |
| | | m_staticControls.clear(); |
| | | } |
| | | |
| | | BEGIN_MESSAGE_MAP(CIOMonitoringDlg, CDialogEx) |
| | | ON_BN_CLICKED(IDC_BUTTON_PREV_PAGE, &CIOMonitoringDlg::OnBnClickedButtonPrevPage) |
| | | ON_BN_CLICKED(IDC_BUTTON_NEXT_PAGE, &CIOMonitoringDlg::OnBnClickedButtonNextPage) |
| | | ON_WM_SIZE() |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CIOMonitoringDlg æ¶æ¯å¤çç¨åº |
| | | |
| | | |
| | | BOOL CIOMonitoringDlg::OnInitDialog() |
| | | { |
| | | CDialogEx::OnInitDialog(); |
| | | |
| | | // TODO: 卿¤æ·»å é¢å¤çåå§å |
| | | CRect screenRect, dlgRect, clientRect; |
| | | SystemParametersInfo(SPI_GETWORKAREA, 0, &screenRect, 0); |
| | | |
| | | GetClientRect(&clientRect); |
| | | m_nInitialWidth = clientRect.Width(); |
| | | m_nInitialHeight = clientRect.Height(); |
| | | |
| | | // åå§åé»è®¤åä½ |
| | | CFont* pDefaultFont = GetOrCreateFont(12); |
| | | |
| | | // éåææåæ§ä»¶ï¼è®°å½åå§ä½ç½®å¹¶è®¾ç½®é»è®¤åä½ |
| | | CWnd* pWnd = GetWindow(GW_CHILD); |
| | | while (pWnd) { |
| | | int nCtrlID = pWnd->GetDlgCtrlID(); |
| | | if (nCtrlID != -1) { |
| | | // è®°å½æ§ä»¶åå§å¸å± |
| | | CRect ctrlRect; |
| | | pWnd->GetWindowRect(&ctrlRect); |
| | | ScreenToClient(&ctrlRect); |
| | | m_mapCtrlLayouts[nCtrlID] = ctrlRect; |
| | | |
| | | // è·³è¿ç¹æ®æ§ä»¶ï¼å¦ MFCGridCtrlï¼ |
| | | TCHAR szClassName[256]; |
| | | GetClassName(pWnd->m_hWnd, szClassName, sizeof(szClassName)); |
| | | if (_tcsicmp(szClassName, _T("MFCGridCtrl")) == 0) { |
| | | pWnd = pWnd->GetNextWindow(); |
| | | continue; |
| | | } |
| | | |
| | | // 设置é»è®¤åä½ |
| | | pWnd->SetFont(pDefaultFont); |
| | | } |
| | | pWnd = pWnd->GetNextWindow(); |
| | | } |
| | | |
| | | GetWindowRect(&dlgRect); |
| | | int dlgWidth = dlgRect.Width() * 2; |
| | | int dlgHeight = dlgRect.Height() * 2; |
| | | |
| | | if (dlgWidth > screenRect.Width()) { |
| | | dlgWidth = screenRect.Width(); |
| | | } |
| | | if (dlgHeight > screenRect.Height()) { |
| | | dlgHeight = screenRect.Height(); |
| | | } |
| | | |
| | | int centerX = screenRect.left + (screenRect.Width() - dlgWidth) / 2; |
| | | int centerY = screenRect.top + (screenRect.Height() - dlgHeight) / 2; |
| | | MoveWindow(centerX, centerY, dlgWidth, dlgHeight); |
| | | |
| | | CreateDynamicControls(); |
| | | DisplayCurrentPage(); |
| | | |
| | | return TRUE; // return TRUE unless you set the focus to a control |
| | | // å¼å¸¸: OCX 屿§é¡µåºè¿å FALSE |
| | | } |
| | | |
| | | void CIOMonitoringDlg::OnSize(UINT nType, int cx, int cy) |
| | | { |
| | | CDialogEx::OnSize(nType, cx, cy); |
| | | |
| | | // TODO: 卿¤å¤æ·»å æ¶æ¯å¤çç¨åºä»£ç |
| | | if (nType == SIZE_MINIMIZED || m_mapCtrlLayouts.empty()) { |
| | | return; |
| | | } |
| | | |
| | | float dScaleX = static_cast<float>(cx) / m_nInitialWidth; |
| | | float dScaleY = static_cast<float>(cy) / m_nInitialHeight; |
| | | |
| | | // éåå¯¹è¯æ¡ä¸çæææ§ä»¶ |
| | | AdjustControls(dScaleX, dScaleY); |
| | | } |
| | | |
| | | void CIOMonitoringDlg::OnBnClickedButtonPrevPage() |
| | | { |
| | | // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç |
| | | if (m_nCurrentPage > 1) { |
| | | --m_nCurrentPage; |
| | | DisplayCurrentPage(); |
| | | } |
| | | else { |
| | | AfxMessageBox(_T("å·²ç»æ¯ç¬¬ä¸é¡µï¼")); |
| | | } |
| | | } |
| | | |
| | | void CIOMonitoringDlg::OnBnClickedButtonNextPage() |
| | | { |
| | | // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç |
| | | if (m_nCurrentPage < m_nTotalPages) { |
| | | ++m_nCurrentPage; |
| | | DisplayCurrentPage(); |
| | | } |
| | | else { |
| | | AfxMessageBox(_T("å·²ç»æ¯æåä¸é¡µï¼")); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #pragma once |
| | | #include "afxdialogex.h" |
| | | #include "IOManager.h" |
| | | |
| | | |
| | | // CIOMonitoringDlg å¯¹è¯æ¡ |
| | | |
| | | class CIOMonitoringDlg : public CDialogEx |
| | | { |
| | | DECLARE_DYNAMIC(CIOMonitoringDlg) |
| | | |
| | | public: |
| | | CIOMonitoringDlg(CWnd* pParent = nullptr); // æ åæé 彿° |
| | | virtual ~CIOMonitoringDlg(); |
| | | void SetIOManager(const std::string& machineName); // 设置 IOManager åæºå¨å |
| | | |
| | | // å¯¹è¯æ¡æ°æ® |
| | | #ifdef AFX_DESIGN_TIME |
| | | enum { IDD = IDD_DIALOG_IO_MONITORING }; |
| | | #endif |
| | | |
| | | private: |
| | | CFont* GetOrCreateFont(int nFontSize); // è·åæå建åä½ |
| | | void SetDefaultFont(); // 设置é»è®¤åä½ |
| | | void AdjustControls(float dScaleX, float dScaleY); // è°æ´æ§ä»¶å¤§å° |
| | | void AdjustControlFont(CWnd* pWnd, int nWidth, int nHeight); // è°æ´æ§ä»¶åä½å¤§å° |
| | | |
| | | void UpdatePageInfo(); // æ´æ°åé¡µä¿¡æ¯ |
| | | void CreateDynamicControls(); // 卿å建æ§ä»¶ |
| | | void CreateStaticControl(int x, int y, int width, int height, const CString& text, bool hasBorder = false, bool alignLeft = false); // åå»ºéææ§ä»¶ |
| | | void DisplayCurrentPage(); // æ¾ç¤ºå½åé¡µæ°æ® |
| | | void ClearDynamicControls(); // æ¸
é¤å¨æåå»ºçæ§ä»¶ |
| | | |
| | | private: |
| | | int m_nInitialWidth; |
| | | int m_nInitialHeight; |
| | | int m_nCurrentPage; // å½å页 |
| | | int m_nTotalPages; // æ»é¡µæ° |
| | | int m_nRowsPerPage; // æ¯é¡µæ¾ç¤ºçè¡æ° |
| | | int m_nCols; // æ¯è¡çæ§ä»¶ç»æ° |
| | | std::string m_machineName; // å½åæºå¨å |
| | | std::map<int, CFont*> m_mapFonts; // å使 å° |
| | | std::map<int, CRect> m_mapCtrlLayouts; // æ§ä»¶å¸å±æ å° |
| | | std::vector<IOData> m_displayData; // å½åæ¾ç¤ºçæ°æ® |
| | | |
| | | private: |
| | | CStatic m_staticPageNum; |
| | | std::vector<CStatic*> m_staticControls; // 卿å建çéææ§ä»¶ |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV æ¯æ |
| | | |
| | | DECLARE_MESSAGE_MAP() |
| | | public: |
| | | virtual BOOL OnInitDialog(); |
| | | afx_msg void OnSize(UINT nType, int cx, int cy); |
| | | afx_msg void OnBnClickedButtonPrevPage(); |
| | | afx_msg void OnBnClickedButtonNextPage(); |
| | | }; |
| | |
| | | int fontSize = nHeight / 2; |
| | | if (fontSize < 8) fontSize = 8; |
| | | |
| | | // æ£æ¥å使¯å¦å·²ç»åå¨ |
| | | auto it = m_mapFonts.find(fontSize); |
| | | if (it == m_mapFonts.end()) { |
| | | // 卿å建æ°åä½ |
| | | CFont* newFont = new CFont(); |
| | | LOGFONT logFont = { 0 }; |
| | | _tcscpy_s(logFont.lfFaceName, _T("Segoe UI")); |
| | | logFont.lfHeight = -fontSize; |
| | | logFont.lfQuality = CLEARTYPE_QUALITY; // å¯ç¨ ClearType æé¯é½¿ |
| | | newFont->CreateFontIndirect(&logFont); |
| | | // è·åæå建åä½ |
| | | CFont* pFont = GetOrCreateFont(fontSize); |
| | | |
| | | // åå¨å°åä½ç®¡ç容å¨ä¸ |
| | | m_mapFonts[fontSize] = newFont; |
| | | it = m_mapFonts.find(fontSize); |
| | | } |
| | | |
| | | pWnd->SetFont(it->second); |
| | | pWnd->SetFont(pFont); |
| | | pWnd->Invalidate(); // å·æ°æ§ä»¶æ¾ç¤º |
| | | } |
| | | |