Client/Ƚ¿/log/ÈÕÖ¾_Ƚ¿_20250311.docBinary files differ
Client/Ƚ¿/log/ÈÕÖ¾_Ƚ¿_20250312.docBinary files differ
Client/¬Ãô/log/ÈÕÖ¾_¬Ãô_20250311.docBinary files differ
Client/Ëï³ÉÁú/log/Ëï³ÉÁú_20250312.docBinary files differ
Client/ÕÅÃôÀö/log/ÈÕÖ¾_ÕÅÃôÀö_20250310-11.docBinary files differ
Client/Öìè¡/log/ÈÕÖ¾_Öìè¡_20250312.docBinary files differ
Client/Íô¼ªÌÎ/log/ÈÕÖ¾_Íô¼ªÌÎ_2025.03.12.docBinary files differ
Client/ÍõÓêÑô/log/µäÐÍ»ðµç³§¿ØÖÆ»ØÂ·.md
New file @@ -0,0 +1,200 @@ # ä¸ãå ¸åç«çµåå å«å¤ä¸ªå ³é®æ§å¶åè·¯ï¼ - 汽水系ç»ï¼é çæ°´ä½ãè¸æ±½ååãè¸æ±½æ¸©åº¦ - çç§ç³»ç»ï¼çèè´åãæ°§éãNOxææ¾ - éé£ç³»ç»ï¼ä¸æ¬¡é£ãäºæ¬¡é£ãå¼é£æº - ç»æ°´ç³»ç»ï¼ç»æ°´æ³µãç»æ°´æµéãç»æ°´åå - 汽轮æºç³»ç»ï¼ä¸»æ±½ååã主汽温度ã转é 以䏿¯å ¸åç«çµååæ§å¶åè·¯ç详ç»åç±»ä¸ææ¯å®ç°è¯´æï¼ç»åè¡ä¸æ åä¸ä¸å©ææ¯ï¼ --- ### **ä¸ãæ±½æ°´ç³»ç»æ§å¶åè·¯** 1. **é çæ±½å æ°´ä½æ§å¶** - **åè½**ï¼ç»´ææ±½å æ°´ä½å¨Â±50mmèå´å ï¼é²æ¢ç¼ºæ°´ææ»¡æ°´äºæ [[1]][[7]]ã - **æ§å¶çç¥**ï¼ - **ä¸å²éæ§å¶**ï¼ç»åæ°´ä½ãè¸æ±½æµéãç»æ°´æµéä¿¡å·ï¼æ¶é¤âèåæ°´ä½âå½±å[[2]][[7]]ã - **PIDç®æ³**ï¼éè¿`PIDController`ç±»å®ç°å¨æè°èï¼éæ ·å¨æ100ms[[9]]ã - **å®ç°ç¤ºä¾**ï¼ ```cpp double feedwaterValve = pid.compute(targetLevel, currentLevel); modbus.writeRegister(40003, feedwaterValve); // è°èç»æ°´éå¼åº¦ ``` 2. **ä¸»è¸æ±½ååæ§å¶** - **åè½**ï¼ç¨³å®ä¸»è¸æ±½ååï¼å¦9.5MPaï¼ï¼ç´æ¥å½±å汽轮æºååè½å[[9]]ã - **ææ¯**ï¼ - **æ¹è¿åPID**ï¼æç§¯åé¥±åæºå¶ï¼ä¸å©CN110849553Aï¼åºå¯¹çææ³¢å¨[[9]]ã - **åè°æ§å¶**ï¼ä¸æ±½è½®æºè°èéèå¨ï¼å¹³è¡¡é çèçä¸è´è·éæ±[[7]]ã 3. **åçè¸æ±½æ¸©åº¦æ§å¶** - **åè½**ï¼éè¿å·æ°´å温æçæ°æ¡æ¿ç»´æåçè¸æ±½æ¸©åº¦ï¼å¦540âï¼[[3]]ã - **çç¥**ï¼ - **åé¦-åé¦å¤åæ§å¶**ï¼è´è·åååé¦è³å·æ°´éï¼ç»å温度åé¦è°è[[7]]ã - **æ¨¡ç³æ§å¶**ï¼åºå¯¹å¤§æ»åç¹æ§ï¼ä½¿ç¨Eigenåºä¼ååæ°[[4]]ã --- ### **äºãçç§ç³»ç»æ§å¶åè·¯** 1. **çæéæ§å¶** - **åè½**ï¼æ ¹æ®è´è·æä»¤è°æ´ç»ç ¤æºè½¬éæçæ²¹éå¼åº¦[[1]]ã - **ååæºå¶**ï¼ - **交åéå¶**ï¼çæéä¸é£é卿å¹é ï¼é²æ¢ç¼ºæ°§çç§[[7]]ã - **卿åé¦**ï¼è´è·æä»¤ååæ¶æåè°æ´çæä¾ç»[[7]]ã 2. **çèè´åæ§å¶** - **åè½**ï¼ç»´æçèååå¨-50~100Paï¼ç¡®ä¿çç§ç¨³å®æ§[[3]]ã - **å®ç°**ï¼ - **PIDè°èå¼é£æºå¯¼å¶å¼åº¦**ï¼ç»åéé£éåé¦ä¿¡å·[[7]]ã - **å®å ¨èé**ï¼ä¸åäºåä½å¤æè§¦åå¼é£æºè·³é¸[[9]]ã 3. **æ°§éæ§å¶** - **ç®æ **ï¼ç»´ææä½³è¿é空æ°ç³»æ°ï¼1.1~1.2ï¼ï¼æåçç§æç[[3]]ã - **ææ¯**ï¼ - **éç¯è°èäºæ¬¡é£é¨å¼åº¦**ï¼åºäºçæ°å«æ°§éåé¦[[7]]ã - **è§£è¦æ§å¶**ï¼åå°æ°§éä¸çæéçç¸äºå¹²æ°[[4]]ã --- ### **ä¸ã汽轮æºç³»ç»æ§å¶åè·¯** 1. **转é/è´è·æ§å¶ï¼DEHç³»ç»ï¼** - **åè½**ï¼éè¿è°è汽轮æºè¿æ±½éå¼åº¦ï¼å¹é çµç½è´è·æä»¤[[7]]ã - **çç¥**ï¼ - **串级æ§å¶**ï¼è½¬éï¼ä¸»åè·¯ï¼ä¸éé¨å¼åº¦ï¼å¯åè·¯ï¼èå¨[[4]]ã - **䏿¬¡è°é¢**ï¼ååºçµç½é¢çåå·®ï¼ç²¾åº¦1ms SOEè®°å½ï¼[[1]][[6]]ã 2. **è½´å°è¸æ±½ååæ§å¶** - **åè½**ï¼ç»´æè½´å°ç³»ç»ååï¼é²æ¢è¸æ±½æ³æ¼[[3]]ã - **å®ç°**ï¼PIDè°èæè·¯éå¼åº¦ï¼ç¡®ä¿åå稳å®[[7]]ã --- ### **åãè¾ å©ç³»ç»æ§å¶åè·¯** 1. **éé£ç³»ç»æ§å¶** - **åè½**ï¼è°èé飿ºå ¥å£å¯¼å¶ï¼å¹é çæéä¸é£é[[1]]ã - **å®å ¨**ï¼é²åæ¯ä¿æ¤é»è¾ï¼åºäºåå䏿µéåé¦ï¼[[4]]ã 2. **åæ±½å¨ç空æ§å¶** - **åè½**ï¼éè¿å¾ªç¯æ°´æ³µé¢çè°èç»´æç空度ï¼å¦-90kPaï¼[[3]]ã - **ææ¯**ï¼æ¨¡ç³æ§å¶åºå¯¹é线æ§ç¹æ§[[7]]ã 3. **å¶ç²ç³»ç»æ§å¶** - **åè½**ï¼è°æ´ç£¨ç ¤æºåºå£æ¸©åº¦ä¸ä¸æ¬¡é£éï¼ä¿è¯ç ¤ç²ç»åº¦[[1]]ã - **çç¥**ï¼ä¸²çº§æ§å¶ï¼æ¸©åº¦ä¸»åè·¯+é£éå¯åè·¯ï¼[[7]]ã --- ### **äºãååæ§å¶çç¥** 1. **æºçåè°æ§å¶ï¼CCSï¼** - **ç®æ **ï¼å¹³è¡¡é çèç䏿±½è½®æºååºé度ï¼éåºè´è·åå[[1]]ã - **æ¹æ³**ï¼ - **å馿§å¶**ï¼è´è·æä»¤åé¦è³çæä¸é£éç³»ç»[[7]]ã - **è§£è¦æ§å¶**ï¼ä½¿ç¨ç¶æè§æµå¨ï¼Eigenåºï¼åå°åå-åçè¦å[[4]]ã 2. **NOxææ¾æ§å¶** - **ææ¯**ï¼ - **SCRè±ç¡ç³»ç»**ï¼éç¯è°èæ°¨å·å°éï¼ç»åçç§ä¼åï¼ä½æ°®çç§å¨ï¼[[6]]ã - **颿µæ¨¡å**ï¼ä¸å©CN104020739B卿ä¼ååæ°[[5]]ã --- ### **å ãææ¯å®ç°è¦ç¹** - **æ°æ®éé**ï¼éè¿Modbus TCP读å4~20mAä¿¡å·ï¼å¦ååãæ¸©åº¦ï¼[[5]]ã - **ç®æ³ä¼å**ï¼æ¹è¿åPIDï¼æç§¯å饱åï¼ãç¶æè§æµå¨ï¼Eigenåºï¼[[9]][[4]]ã - **å®å ¨æºå¶**ï¼ä¸åäºåä½ã硬跳é¸åè·¯ï¼ç¬ç«äºDCSï¼[[9]][[4]]ã --- ### **æ»ç»** åæ§å¶åè·¯éè¿**æ°æ®ééâæ§å¶è¿ç®âè¾åºæ§è¡âå®å ¨ä¿æ¤âååä¼å**çéç¯é»è¾ï¼ç¡®ä¿åçµé稳å®ä¸åæ°åè§ãææ¯å®ç°éç»åä¸å©ç®æ³ï¼å¦æç§¯å饱å[[9]]ï¼ãè¡ä¸æ åï¼å¦IEC 61131-3[[1]]ï¼åå®é å·¥åµï¼å¦å¤åæ°è¦å[[7]]ï¼ã # äºã对åºä¼ æå¨ æ ¹æ®ç¥è¯åºåææ¡£å 容ï¼å ¸åç«çµåæ§å¶åè·¯ä¸ **Modbusåè®®éè¦ééçæ°æ®ç±»åå对åºçä¼ æå¨** å¦ä¸ï¼ --- ### **ä¸ãæ°æ®ééç±»åä¸ä¼ æå¨** #### **1. 模æéè¾å ¥ï¼AIï¼** | **æ§å¶åè·¯** | **ééæ°æ®** | **ä¼ æå¨ç±»å** | **Modbuså¯åå¨å°å示ä¾** | **转æ¢å ³ç³»** | **å¼ç¨æ¥æº** | | ---------------- | ------------ | ---------------- | ------------------------ | -------------------- | ------------ | | é çæ°´ä½æ§å¶ | æ±½å æ°´ä½ | å·®å弿¶²ä½åéå¨ | 40001 | 4~20mA â -200~+200mm | [[1]][[5]] | | ä¸»è¸æ±½ååæ§å¶ | ä¸»è¸æ±½åå | åååéå¨ | 40002 | 4~20mA â 0~10MPa | [[5]][[9]] | | åçè¸æ±½æ¸©åº¦æ§å¶ | åçè¸æ±½æ¸©åº¦ | ççµå¶/ççµé» | 40003 | 4~20mA â 0~600â | [[3]][[7]] | | çæéæ§å¶ | çææµé | è´¨éæµé计 | 40004 | 4~20mA â 0~100t/h | [[1]][[7]] | | çèè´åæ§å¶ | çèåå | 微差ååéå¨ | 40005 | 4~20mA â -200~+200Pa | [[3]][[7]] | | æ°§éæ§å¶ | çæ°å«æ°§é | æ°§åéæ°§é计 | 40006 | 4~20mA â 0~25% Oâ | [[3]][[7]] | | åæ±½å¨ç空æ§å¶ | ç空度 | ç»å¯¹åååéå¨ | 40007 | 4~20mA â -100~0kPa | [[3]][[7]] | #### **2. æ°åéè¾å ¥ï¼DIï¼** | **æ§å¶åè·¯** | **ééæ°æ®** | **ä¼ æå¨ç±»å** | **Modbus线åå°å示ä¾** | **åè½** | **å¼ç¨æ¥æº** | | ------------ | -------------- | ------------------- | ---------------------- | ----------------------- | ------------ | | å®å ¨èé | çç§å¨ç«ç°æ£æµ | ç´«å¤/红å¤ç«ç°æ¢æµå¨ | 00001 | ç«ç°åå¨ï¼1ï¼/ççï¼0ï¼ | [[9]] | | 设å¤ç¶æ | 飿ºè¿è¡ç¶æ | è¾ å©è§¦ç¹ | 00002 | è¿è¡ï¼1ï¼/忢ï¼0ï¼ | [[5]] | | æ¥è¦ä¿¡å· | æ¸©åº¦é«æ¥è¦ | 温度å¼å ³ | 00003 | è§¦åæ¥è¦ï¼1ï¼ | [[1]] | --- ### **äºãModbuséä¿¡å®ç°ç»è** 1. **åè½ç 䏿°æ®æ ¼å¼** - **åè½ç 03**ï¼è¯»ä¿æå¯åå¨ï¼å¦40001~40007ï¼[[7]]ã - **åè½ç 01/02**ï¼è¯»çº¿åç¶æï¼å¦00001~00003ï¼[[7]]ã - **æ°æ®è§£æ**ï¼ ```cpp double pressure = (rawPressure / 32768.0) * 10; // 4~20mA转0~10MPa [[5]] ``` 2. **éä¿¡åæ°** - **åè®®**ï¼Modbus TCP/IPï¼ä¸»ä»æ¶æï¼ååå·¥ï¼[[1]][[5]]ã - **卿**ï¼100msçº§å®æ¶ééï¼ç¬¦åIEC 61131-3æ å[[1]][[9]]ã - **åä½**ï¼åç½å¡ç¯ç½ææï¼é²æ¢åç¹æ é[[8]][[9]]ã --- ### **ä¸ãå ³é®ä¼ æå¨ææ¯è¦æ±** 1. **精度ä¸ååºæ¶é´** - åååéå¨ï¼ç²¾åº¦Â±0.1% FSï¼ååºæ¶é´<100ms[[5]]ã - ççµå¶ï¼å度å·Kåï¼æµæ¸©èå´0~1300â[[3]]ã 2. **ä¿¡å·é离** - ä¼ æå¨ä¿¡å·ééè¿éç¦»å¨æ¥å ¥DCSï¼é²æ¢çµç£å¹²æ°[[6]]ã 3. **HARTåè®®å ¼å®¹æ§** - æºè½ä»ªè¡¨æ¯æHARTåè®®ï¼å®ç°æ°åéä¿¡ä¸æ¨¡æä¿¡å·æ··åä¼ è¾[[5]]ã --- ### **åãæ°æ®åå¨ä¸æ ¡éª** 1. **宿¶æ°æ®åº** - åå¨ç»æä½`AnalogPoint`å å«KKSç¼ç ãåå§å¼ãå·¥ç¨å¼åæ¶é´æ³[[1]]ã - 示ä¾ï¼ ```cpp struct AnalogPoint { uint32_t tagId; // KKSç¼ç ï¼å¦"PT-1001"ï¼[[3]] double engValue; // å·¥ç¨å¼ï¼å¦9.5MPaï¼ uint64_t timestamp; // 纳ç§çº§æ¶é´æ³ Quality quality; // æ°æ®åè´¨ï¼GOOD/BAD/UNCERTAINï¼[[1]] }; ``` 2. **å¼å¸¸å¤ç** - æ°æ®æ ¡éªï¼éå¹ ãååçæ£æµï¼å¦ååçªå>1MPa/sè§¦åæ¥è¦ï¼[[1]]ã - SOEè®°å½ï¼äºä»¶æ¶é´æ³ç²¾åº¦1msï¼ä½¿ç¨Boost.Logåå¨[[1]]ã --- ### **æ»ç»** Modbusåè®®å¨ç«çµåæ§å¶åè·¯ä¸ééé **ååãæ¸©åº¦ãæµéãæ¶²ä½ãæ°§é** çæ¨¡æéå **设å¤ç¶æãæ¥è¦ä¿¡å·** çæ°åéï¼ä¾èµ **åéå¨ãççµå¶ãæµé计ãç«ç°æ¢æµå¨** çä¼ æå¨[[1]][[3]][[5]]ãæ°æ®éè¿åè½ç 03/01读åï¼è½¬æ¢ä¸ºå·¥ç¨åä½ååå¨è³å®æ¶æ°æ®åºï¼æ¯æåç»æ§å¶è¿ç®ä¸å®å ¨èé[[5]][[9]]ã Client/ÍõÓêÑô/log/´æ·ÅÈÕÖ¾.txt
Client/ºú¿µ/log/ÈÕÖ¾_ºú¿µ_0311.docBinary files differ
Client/ºú¿µ/log/ÈÕÖ¾_ºú¿µ_0312.docBinary files differ
Client/ÕÔÑÝ/log/ÈÕÖ¾_ÕÔÑÝ_20250311.docBinary files differ
Client/º«½ÌÎ/log/ÈÕÖ¾_º«½ÌÎ_0312.docBinary files differ
Server/¶¼Ñçù/log/ÈÕÖ¾_¶¼Ñçù_0311.docBinary files differ
Server/¶¼Ñçù/log/ÈÕÖ¾_¶¼Ñçù_0312.docBinary files differ
Server/¶Åìèº/log/ÈÕÖ¾_0312.docBinary files differ
Server/¶Åìèº/log/ÈÕÖ¾_0313.docBinary files differ
Server/½âÀ´öÎ/log/ÈÕÖ¾_½âÀ´öÎ_20250312.docBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/.vs/FaceProject/v14/.suoBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Debug/FaceProject.Build.CppClean.log
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Debug/FaceProject.log
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Debug/FaceProject.tlog/CL.command.1.tlogBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Debug/FaceProject.tlog/CL.read.1.tlogBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Debug/FaceProject.tlog/CL.write.1.tlogBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Debug/FaceProject.tlog/FaceProject.lastbuildstate
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Debug/FaceProject.tlog/link.command.1.tlogBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Debug/FaceProject.tlog/link.read.1.tlogBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Debug/FaceProject.tlog/link.write.1.tlogBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Debug/Server_XML.objBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Debug/tinyxml2.objBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Debug/vc140.idbBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Debug/vc140.pdbBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/FaceProject.VC.dbBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/FaceProject.vcxproj
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/FaceProject.vcxproj.filters
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/FaceProject/NetworkConfig.cpp
@@ -1,377 +0,0 @@ #include "stdafx.h" #include "NetworkConfig.h" bool NetworkConfig::startupModeSelected = false; NetworkConfig::NetworkConfig(const std::string& xmlFilePath) { tinyxml2::XMLError eResult = doc.LoadFile(xmlFilePath.c_str()); loaded = (eResult == tinyxml2::XML_SUCCESS); if (!startupModeSelected) { std::string selectedMode; std::time_t lastModifiedTime = 0; std::cout << "Please select the startup mode (cold_start/hot_start): " << std::endl; std::cin >> selectedMode; if (this->setStartupMode(selectedMode)) { std::cout << "Selected " << selectedMode << std::endl; if (this->saveXML("config.xml")) { std::cout << "( XML file saved successfully )" << std::endl; } else { std::cout << "( Failed to save XML file )" << std::endl; } if (selectedMode == "cold_start") { StartupMode currentMode = StartupMode::ColdStart; this->restartServices(currentMode, "config.xml", lastModifiedTime); } else if (selectedMode == "hot_start") { startupModeSelected = true; NetworkConfig oldParser("Info.xml"); StartupMode currentMode = StartupMode::HotStart; this->restartServices(currentMode, "config.xml", lastModifiedTime); } } else { std::cout << "Invalid startup mode. Please enter cold_start or hot_start." << std::endl; } startupModeSelected = true; } } NetworkConfig::~NetworkConfig() { } bool NetworkConfig::isLoaded() const { return loaded; } bool NetworkConfig::getTCPConfig(std::string & ipAddress, int & portNumber) { if (!loaded) return false; tinyxml2::XMLElement* tcpElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("Socket")->FirstChildElement("TCP"); if (tcpElement) { const char* ip = tcpElement->FirstChildElement("IPAddress")->GetText();// Get IP address text if (ip) ipAddress = ip; portNumber = std::stoi(tcpElement->FirstChildElement("PortNumber")->GetText());// Get port number return true; } return false; } bool NetworkConfig::getRTSPConfig(std::string & ipAddress, int & portNumber) { if (!loaded) return false; tinyxml2::XMLElement* rtspElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("Socket")->FirstChildElement("RTSP"); if (rtspElement) { const char* ip = rtspElement->FirstChildElement("IPAddress")->GetText(); // Get IP address text if (ip) ipAddress = ip; rtspElement->FirstChildElement("PortNumber")->QueryIntText(&portNumber);// Get port number return true; } return false; } bool NetworkConfig::getLogConfig(std::string & path, int & size) { if (!loaded) return false; tinyxml2::XMLElement* logElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("Log"); if (logElement) { const char* logPath = logElement->FirstChildElement("Path")->GetText(); // Get log path text if (logPath) path = logPath; logElement->FirstChildElement("Size")->QueryIntText(&size);// Get log size return true; } return false; } bool NetworkConfig::getMySQLConfig(std::string & ip, int & port, std::string & db, std::string & user, std::string & password) { if (!loaded) return false; tinyxml2::XMLElement* mysqlElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("MySQL"); if (mysqlElement) { const char* mysqlIp = mysqlElement->FirstChildElement("IP")->GetText(); // Get IP address text if (mysqlIp) ip = mysqlIp; mysqlElement->FirstChildElement("port")->QueryIntText(&port); const char* mysqlDb = mysqlElement->FirstChildElement("db")->GetText(); // Get database name text if (mysqlDb) db = mysqlDb; const char* mysqlUser = mysqlElement->FirstChildElement("user")->GetText(); // Get username text if (mysqlUser) user = mysqlUser; const char* mysqlPassword = mysqlElement->FirstChildElement("password")->GetText(); // Get password text if (mysqlPassword) password = mysqlPassword; return true; } return false; } bool NetworkConfig::getPictureManagementRootPath(std::string & rootPath) { if (!loaded) return false; tinyxml2::XMLElement* pictureElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("PictureManagement"); if (pictureElement) { const char* path = pictureElement->FirstChildElement("RootPath")->GetText(); // Get root path text if (path) rootPath = path; return true; } return false; } bool NetworkConfig::getPreprocessedPictureRootPath(std::string & rootPath) { if (!loaded) return false; tinyxml2::XMLElement* preprocessedElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("PreprocessedPicture"); if (preprocessedElement) { const char* path = preprocessedElement->FirstChildElement("RootPath")->GetText(); // Get root path text if (path) rootPath = path; return true; } return false; } bool NetworkConfig::getVideoManagementRootPath(std::string & rootPath) { if (!loaded) return false; tinyxml2::XMLElement* VideoElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("VideoManagement"); if (VideoElement) { const char* path = VideoElement->FirstChildElement("RootPath")->GetText(); // Get root path text if (path) rootPath = path; return true; } return false; } bool NetworkConfig::getCNNModelSavePath(std::string & path) { if (!loaded) return false; tinyxml2::XMLElement* cnnElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("CNNModelSave"); if (cnnElement) { const char* cnnPath = cnnElement->FirstChildElement("Path")->GetText(); // Get save path text if (cnnPath) path = cnnPath; return true; } return false; } bool NetworkConfig::getVersionManagementRootPath(std::string & rootPath) { if (!loaded) return false; tinyxml2::XMLElement* versionElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("VersionManagement"); if (versionElement) { const char* path = versionElement->FirstChildElement("RootPath")->GetText(); // Get root path text if (path) rootPath = path; return true; } return false; } bool NetworkConfig::getStartupMode(std::string & mode) { if (!loaded) return false; tinyxml2::XMLElement* startupElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("StartupMode"); if (startupElement) { const char* startupMode = startupElement->FirstChildElement("Mode")->GetText();// Get startup mode if (startupMode) mode = startupMode; return true; } return false; } bool NetworkConfig::setStartupMode(const std::string & mode) { if (!loaded || (mode != "cold_start" && mode != "hot_start")) return false; tinyxml2::XMLElement* startupElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("StartupMode"); if (startupElement) { tinyxml2::XMLElement* modeElement = startupElement->FirstChildElement("Mode"); if (modeElement) { modeElement->SetText(mode.c_str()); return true; } } return false; } bool NetworkConfig::saveXML(const std::string & xmlFilePath) { if (!loaded) return false; tinyxml2::XMLError eResult = doc.SaveFile(xmlFilePath.c_str()); return (eResult == tinyxml2::XML_SUCCESS); } void NetworkConfig::coldStart() { std::cout << "Cold start begins..." << std::endl; std::cout << "Initializing network connections...\n"; std::string tcpIp; int tcpPort; if (this->getTCPConfig(tcpIp, tcpPort)) { std::cout << "Establishing TCP connection: " << tcpIp << ":" << tcpPort << std::endl; } std::string rtspIp; int rtspPort; if (this->getRTSPConfig(rtspIp, rtspPort)) { std::cout << "Establishing RTSP connection: " << rtspIp << ":" << rtspPort << std::endl; } std::string mysqlIp, mysqlDb, mysqlUser, mysqlPassword; int mysqlPort; if (this->getMySQLConfig(mysqlIp, mysqlPort, mysqlDb, mysqlUser, mysqlPassword)) { std::cout << "Connecting to MySQL database: " << mysqlIp << ":" << mysqlPort << " - " << mysqlDb << std::endl; } std::string cnnPath; if (this->getCNNModelSavePath(cnnPath)) { std::cout << "Loading CNN model: " << cnnPath << std::endl; } std::cout << "Cold start completed." << std::endl; } void NetworkConfig::hotStart(NetworkConfig & oldParser) { std::cout << "Hot start begins..." << std::endl; std::string oldTcpIp, newTcpIp; int oldTcpPort, newTcpPort; if (oldParser.getTCPConfig(oldTcpIp, oldTcpPort) && this->getTCPConfig(newTcpIp, newTcpPort)) { if (oldTcpIp != newTcpIp || oldTcpPort != newTcpPort) { std::cout << "TCP configuration updated: " << oldTcpIp << ":" << oldTcpPort << " -> " << newTcpIp << ":" << newTcpPort << std::endl; if (setTCPConfig(newTcpIp, newTcpPort)) { std::cout << "TCP" << std::endl; std::cout << " IP: " << newTcpIp << "\n Port: " << newTcpPort << std::endl; } } } std::string oldRtspIp, newRtspIp; int oldRtspPort, newRtspPort; if (oldParser.getRTSPConfig(oldRtspIp, oldRtspPort) && this->getRTSPConfig(newRtspIp, newRtspPort)) { if (oldRtspIp != newRtspIp || oldRtspPort != newRtspPort) { std::cout << "RTSP configuration updated: " << oldRtspIp << ":" << oldRtspPort << " -> " << newRtspIp << ":" << newRtspPort << std::endl; } } std::string oldLogPath, newLogPath; int oldLogSize, newLogSize; if (oldParser.getLogConfig(oldLogPath, oldLogSize) && this->getLogConfig(newLogPath, newLogSize)) { if (oldLogPath != newLogPath || oldLogSize != newLogSize) { std::cout << "Log configuration updated: " << oldLogPath << "(" << oldLogSize << ")" << " -> " << newLogPath << "(" << newLogSize << ")" << std::endl; } } std::string oldMysqlIp, newMysqlIp, oldMysqlDb, newMysqlDb, oldMysqlUser, newMysqlUser, oldMysqlPassword, newMysqlPassword; int oldMysqlPort, newMysqlPort; if (oldParser.getMySQLConfig(oldMysqlIp, oldMysqlPort, oldMysqlDb, oldMysqlUser, oldMysqlPassword) && this->getMySQLConfig(newMysqlIp, newMysqlPort, newMysqlDb, newMysqlUser, newMysqlPassword)) { if (oldMysqlIp != newMysqlIp || oldMysqlPort != newMysqlPort || oldMysqlDb != newMysqlDb || oldMysqlUser != newMysqlUser || oldMysqlPassword != newMysqlPassword) { std::cout << "MySQL configuration updated: " << oldMysqlIp << ":" << oldMysqlPort << " - " << oldMysqlDb << " -> " << newMysqlIp << ":" << newMysqlPort << " - " << newMysqlDb << std::endl; } } std::string oldPictureRootPath, newPictureRootPath; if (oldParser.getPictureManagementRootPath(oldPictureRootPath) && this->getPictureManagementRootPath(newPictureRootPath)) { if (oldPictureRootPath != newPictureRootPath) { std::cout << "Picture management root path updated: " << oldPictureRootPath << " -> " << newPictureRootPath << std::endl; } } std::string oldVideoRootPath, newVideoRootPath; if (oldParser.getVideoManagementRootPath(oldVideoRootPath) && this->getVideoManagementRootPath(newVideoRootPath)) { if (oldVideoRootPath != newVideoRootPath) { std::cout << "Video management root path updated: " << oldVideoRootPath << " -> " << newVideoRootPath << std::endl; } } std::string oldCnnPath, newCnnPath; if (oldParser.getCNNModelSavePath(oldCnnPath) && this->getCNNModelSavePath(newCnnPath)) { if (oldCnnPath != newCnnPath) { std::cout << "CNN model save path updated: " << oldCnnPath << " -> " << newCnnPath << std::endl; } } std::string oldVersionRootPath, newVersionRootPath; if (oldParser.getVersionManagementRootPath(oldVersionRootPath) && this->getVersionManagementRootPath(newVersionRootPath)) { if (oldVersionRootPath != newVersionRootPath) { std::cout << "Version management root path updated: " << oldVersionRootPath << " -> " << newVersionRootPath << std::endl; } } std::cout << "Hot start completed." << std::endl; } bool NetworkConfig::isConfigUpdated(const std::string & xmlFilePath, std::time_t & lastModifiedTime) { struct stat fileStat; if (stat(xmlFilePath.c_str(), &fileStat) == 0) { if (fileStat.st_mtime > lastModifiedTime) { lastModifiedTime = fileStat.st_mtime; return true; } } return false; } void NetworkConfig::restartServices(StartupMode currentMode, const std::string & xmlFilePath, std::time_t & lastModifiedTime) { switch (currentMode) { case StartupMode::ColdStart: if (isConfigUpdated("Info.xml", lastModifiedTime)) { std::cout << "Configuration file parameters changed. Performing cold start to restart the entire service..." << std::endl; coldStart(); } else { std::cout << "No changes in the configuration file. Cold start is not required." << std::endl; } break; case StartupMode::HotStart: if (this->isConfigUpdated(xmlFilePath, lastModifiedTime)) { NetworkConfig oldParser(xmlFilePath); this->hotStart(oldParser); } else { std::cout << "No changes in the configuration file. Hot start is not required." << std::endl; } break; } } bool NetworkConfig::setTCPConfig(const std::string & ipAddress, int portNumber) { if (!loaded) return false; tinyxml2::XMLElement* tcpElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("Socket")->FirstChildElement("TCP"); if (tcpElement) { tinyxml2::XMLElement* ipElement = tcpElement->FirstChildElement("IPAddress"); if (ipElement) { ipElement->SetText(ipAddress.c_str()); } tinyxml2::XMLElement* portElement = tcpElement->FirstChildElement("PortNumber"); if (portElement) { portElement->SetText(portNumber); } return true; } return false; } Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Info.xml
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/NetworkConfig.cpp
New file @@ -0,0 +1,377 @@ #include "stdafx.h" #include "NetworkConfig.h" bool NetworkConfig::startupModeSelected = false; NetworkConfig::NetworkConfig(const std::string& xmlFilePath) { tinyxml2::XMLError eResult = doc.LoadFile(xmlFilePath.c_str()); loaded = (eResult == tinyxml2::XML_SUCCESS); if (!startupModeSelected) { std::string selectedMode; std::time_t lastModifiedTime = 0; std::cout << "Please select the startup mode (cold_start/hot_start): " << std::endl; std::cin >> selectedMode; if (this->setStartupMode(selectedMode)) { std::cout << "Selected " << selectedMode << std::endl; if (this->saveXML("config.xml")) { std::cout << "( XML file saved successfully )" << std::endl; } else { std::cout << "( Failed to save XML file )" << std::endl; } if (selectedMode == "cold_start") { StartupMode currentMode = StartupMode::ColdStart; this->restartServices(currentMode, "config.xml", lastModifiedTime); } else if (selectedMode == "hot_start") { startupModeSelected = true; NetworkConfig oldParser("Info.xml"); StartupMode currentMode = StartupMode::HotStart; this->restartServices(currentMode, "config.xml", lastModifiedTime); } } else { std::cout << "Invalid startup mode. Please enter cold_start or hot_start." << std::endl; } startupModeSelected = true; } } NetworkConfig::~NetworkConfig() { } bool NetworkConfig::isLoaded() const { return loaded; } bool NetworkConfig::getTCPConfig(std::string & ipAddress, int & portNumber) { if (!loaded) return false; tinyxml2::XMLElement* tcpElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("Socket")->FirstChildElement("TCP"); if (tcpElement) { const char* ip = tcpElement->FirstChildElement("IPAddress")->GetText();// Get IP address text if (ip) ipAddress = ip; portNumber = std::stoi(tcpElement->FirstChildElement("PortNumber")->GetText());// Get port number return true; } return false; } bool NetworkConfig::getRTSPConfig(std::string & ipAddress, int & portNumber) { if (!loaded) return false; tinyxml2::XMLElement* rtspElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("Socket")->FirstChildElement("RTSP"); if (rtspElement) { const char* ip = rtspElement->FirstChildElement("IPAddress")->GetText(); // Get IP address text if (ip) ipAddress = ip; rtspElement->FirstChildElement("PortNumber")->QueryIntText(&portNumber);// Get port number return true; } return false; } bool NetworkConfig::getLogConfig(std::string & path, int & size) { if (!loaded) return false; tinyxml2::XMLElement* logElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("Log"); if (logElement) { const char* logPath = logElement->FirstChildElement("Path")->GetText(); // Get log path text if (logPath) path = logPath; logElement->FirstChildElement("Size")->QueryIntText(&size);// Get log size return true; } return false; } bool NetworkConfig::getMySQLConfig(std::string & ip, int & port, std::string & db, std::string & user, std::string & password) { if (!loaded) return false; tinyxml2::XMLElement* mysqlElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("MySQL"); if (mysqlElement) { const char* mysqlIp = mysqlElement->FirstChildElement("IP")->GetText(); // Get IP address text if (mysqlIp) ip = mysqlIp; mysqlElement->FirstChildElement("port")->QueryIntText(&port); const char* mysqlDb = mysqlElement->FirstChildElement("db")->GetText(); // Get database name text if (mysqlDb) db = mysqlDb; const char* mysqlUser = mysqlElement->FirstChildElement("user")->GetText(); // Get username text if (mysqlUser) user = mysqlUser; const char* mysqlPassword = mysqlElement->FirstChildElement("password")->GetText(); // Get password text if (mysqlPassword) password = mysqlPassword; return true; } return false; } bool NetworkConfig::getPictureManagementRootPath(std::string & rootPath) { if (!loaded) return false; tinyxml2::XMLElement* pictureElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("PictureManagement"); if (pictureElement) { const char* path = pictureElement->FirstChildElement("RootPath")->GetText(); // Get root path text if (path) rootPath = path; return true; } return false; } bool NetworkConfig::getPreprocessedPictureRootPath(std::string & rootPath) { if (!loaded) return false; tinyxml2::XMLElement* preprocessedElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("PreprocessedPicture"); if (preprocessedElement) { const char* path = preprocessedElement->FirstChildElement("RootPath")->GetText(); // Get root path text if (path) rootPath = path; return true; } return false; } bool NetworkConfig::getVideoManagementRootPath(std::string & rootPath) { if (!loaded) return false; tinyxml2::XMLElement* VideoElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("VideoManagement"); if (VideoElement) { const char* path = VideoElement->FirstChildElement("RootPath")->GetText(); // Get root path text if (path) rootPath = path; return true; } return false; } bool NetworkConfig::getCNNModelSavePath(std::string & path) { if (!loaded) return false; tinyxml2::XMLElement* cnnElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("CNNModelSave"); if (cnnElement) { const char* cnnPath = cnnElement->FirstChildElement("Path")->GetText(); // Get save path text if (cnnPath) path = cnnPath; return true; } return false; } bool NetworkConfig::getVersionManagementRootPath(std::string & rootPath) { if (!loaded) return false; tinyxml2::XMLElement* versionElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("VersionManagement"); if (versionElement) { const char* path = versionElement->FirstChildElement("RootPath")->GetText(); // Get root path text if (path) rootPath = path; return true; } return false; } bool NetworkConfig::getStartupMode(std::string & mode) { if (!loaded) return false; tinyxml2::XMLElement* startupElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("StartupMode"); if (startupElement) { const char* startupMode = startupElement->FirstChildElement("Mode")->GetText();// Get startup mode if (startupMode) mode = startupMode; return true; } return false; } bool NetworkConfig::setStartupMode(const std::string & mode) { if (!loaded || (mode != "cold_start" && mode != "hot_start")) return false; tinyxml2::XMLElement* startupElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("StartupMode"); if (startupElement) { tinyxml2::XMLElement* modeElement = startupElement->FirstChildElement("Mode"); if (modeElement) { modeElement->SetText(mode.c_str()); return true; } } return false; } bool NetworkConfig::saveXML(const std::string & xmlFilePath) { if (!loaded) return false; tinyxml2::XMLError eResult = doc.SaveFile(xmlFilePath.c_str()); return (eResult == tinyxml2::XML_SUCCESS); } void NetworkConfig::coldStart() { std::cout << "Cold start begins..." << std::endl; std::cout << "Initializing network connections...\n"; std::string tcpIp; int tcpPort; if (this->getTCPConfig(tcpIp, tcpPort)) { std::cout << "Establishing TCP connection: " << tcpIp << ":" << tcpPort << std::endl; } std::string rtspIp; int rtspPort; if (this->getRTSPConfig(rtspIp, rtspPort)) { std::cout << "Establishing RTSP connection: " << rtspIp << ":" << rtspPort << std::endl; } std::string mysqlIp, mysqlDb, mysqlUser, mysqlPassword; int mysqlPort; if (this->getMySQLConfig(mysqlIp, mysqlPort, mysqlDb, mysqlUser, mysqlPassword)) { std::cout << "Connecting to MySQL database: " << mysqlIp << ":" << mysqlPort << " - " << mysqlDb << std::endl; } std::string cnnPath; if (this->getCNNModelSavePath(cnnPath)) { std::cout << "Loading CNN model: " << cnnPath << std::endl; } std::cout << "Cold start completed." << std::endl; } void NetworkConfig::hotStart(NetworkConfig & oldParser) { std::cout << "Hot start begins..." << std::endl; std::string oldTcpIp, newTcpIp; int oldTcpPort, newTcpPort; if (oldParser.getTCPConfig(oldTcpIp, oldTcpPort) && this->getTCPConfig(newTcpIp, newTcpPort)) { if (oldTcpIp != newTcpIp || oldTcpPort != newTcpPort) { std::cout << "TCP configuration updated: " << oldTcpIp << ":" << oldTcpPort << " -> " << newTcpIp << ":" << newTcpPort << std::endl; if (setTCPConfig(newTcpIp, newTcpPort)) { std::cout << "TCP" << std::endl; std::cout << " IP: " << newTcpIp << "\n Port: " << newTcpPort << std::endl; } } } std::string oldRtspIp, newRtspIp; int oldRtspPort, newRtspPort; if (oldParser.getRTSPConfig(oldRtspIp, oldRtspPort) && this->getRTSPConfig(newRtspIp, newRtspPort)) { if (oldRtspIp != newRtspIp || oldRtspPort != newRtspPort) { std::cout << "RTSP configuration updated: " << oldRtspIp << ":" << oldRtspPort << " -> " << newRtspIp << ":" << newRtspPort << std::endl; } } std::string oldLogPath, newLogPath; int oldLogSize, newLogSize; if (oldParser.getLogConfig(oldLogPath, oldLogSize) && this->getLogConfig(newLogPath, newLogSize)) { if (oldLogPath != newLogPath || oldLogSize != newLogSize) { std::cout << "Log configuration updated: " << oldLogPath << "(" << oldLogSize << ")" << " -> " << newLogPath << "(" << newLogSize << ")" << std::endl; } } std::string oldMysqlIp, newMysqlIp, oldMysqlDb, newMysqlDb, oldMysqlUser, newMysqlUser, oldMysqlPassword, newMysqlPassword; int oldMysqlPort, newMysqlPort; if (oldParser.getMySQLConfig(oldMysqlIp, oldMysqlPort, oldMysqlDb, oldMysqlUser, oldMysqlPassword) && this->getMySQLConfig(newMysqlIp, newMysqlPort, newMysqlDb, newMysqlUser, newMysqlPassword)) { if (oldMysqlIp != newMysqlIp || oldMysqlPort != newMysqlPort || oldMysqlDb != newMysqlDb || oldMysqlUser != newMysqlUser || oldMysqlPassword != newMysqlPassword) { std::cout << "MySQL configuration updated: " << oldMysqlIp << ":" << oldMysqlPort << " - " << oldMysqlDb << " -> " << newMysqlIp << ":" << newMysqlPort << " - " << newMysqlDb << std::endl; } } std::string oldPictureRootPath, newPictureRootPath; if (oldParser.getPictureManagementRootPath(oldPictureRootPath) && this->getPictureManagementRootPath(newPictureRootPath)) { if (oldPictureRootPath != newPictureRootPath) { std::cout << "Picture management root path updated: " << oldPictureRootPath << " -> " << newPictureRootPath << std::endl; } } std::string oldVideoRootPath, newVideoRootPath; if (oldParser.getVideoManagementRootPath(oldVideoRootPath) && this->getVideoManagementRootPath(newVideoRootPath)) { if (oldVideoRootPath != newVideoRootPath) { std::cout << "Video management root path updated: " << oldVideoRootPath << " -> " << newVideoRootPath << std::endl; } } std::string oldCnnPath, newCnnPath; if (oldParser.getCNNModelSavePath(oldCnnPath) && this->getCNNModelSavePath(newCnnPath)) { if (oldCnnPath != newCnnPath) { std::cout << "CNN model save path updated: " << oldCnnPath << " -> " << newCnnPath << std::endl; } } std::string oldVersionRootPath, newVersionRootPath; if (oldParser.getVersionManagementRootPath(oldVersionRootPath) && this->getVersionManagementRootPath(newVersionRootPath)) { if (oldVersionRootPath != newVersionRootPath) { std::cout << "Version management root path updated: " << oldVersionRootPath << " -> " << newVersionRootPath << std::endl; } } std::cout << "Hot start completed." << std::endl; } bool NetworkConfig::isConfigUpdated(const std::string & xmlFilePath, std::time_t & lastModifiedTime) { struct stat fileStat; if (stat(xmlFilePath.c_str(), &fileStat) == 0) { if (fileStat.st_mtime > lastModifiedTime) { lastModifiedTime = fileStat.st_mtime; return true; } } return false; } void NetworkConfig::restartServices(StartupMode currentMode, const std::string & xmlFilePath, std::time_t & lastModifiedTime) { switch (currentMode) { case StartupMode::ColdStart: if (isConfigUpdated("Info.xml", lastModifiedTime)) { std::cout << "Configuration file parameters changed. Performing cold start to restart the entire service..." << std::endl; coldStart(); } else { std::cout << "No changes in the configuration file. Cold start is not required." << std::endl; } break; case StartupMode::HotStart: if (this->isConfigUpdated(xmlFilePath, lastModifiedTime)) { NetworkConfig oldParser(xmlFilePath); this->hotStart(oldParser); } else { std::cout << "No changes in the configuration file. Hot start is not required." << std::endl; } break; } } bool NetworkConfig::setTCPConfig(const std::string & ipAddress, int portNumber) { if (!loaded) return false; tinyxml2::XMLElement* tcpElement = doc.FirstChildElement("NetworkConfigurationInfo") ->FirstChildElement("Socket")->FirstChildElement("TCP"); if (tcpElement) { tinyxml2::XMLElement* ipElement = tcpElement->FirstChildElement("IPAddress"); if (ipElement) { ipElement->SetText(ipAddress.c_str()); } tinyxml2::XMLElement* portElement = tcpElement->FirstChildElement("PortNumber"); if (portElement) { portElement->SetText(portNumber); } return true; } return false; } Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/NetworkConfig.h
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/Server_XML.cpp
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/config.xml
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/stdafx.h
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/targetver.h
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/.github/workflows/test.yml
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/.gitignore
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/CMakeLists.txt
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/LICENSE.txt
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/Makefile
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/TinyXML2_small.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/cmake/tinyxml2-config.cmake
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/cmake/tinyxml2.pc.in
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/contrib/html5-printer.cpp
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/_config.yml
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/_example_1.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/_example_2.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/_example_3.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/_example_4.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/annotated.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/bc_s.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/bc_sd.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/bdwn.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classes.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_attribute-members.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_attribute.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_comment-members.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_comment.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_comment.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_const_handle-members.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_const_handle.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_declaration-members.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_declaration.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_declaration.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_document-members.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_document.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_document.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_element-members.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_element.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_element.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_handle-members.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_handle.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_node-members.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_node.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_node.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_printer-members.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_printer.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_printer.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_text-members.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_text.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_text.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_unknown-members.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_unknown.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_unknown.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_visitor-members.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_visitor.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/classtinyxml2_1_1_x_m_l_visitor.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/clipboard.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/closed.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/cookie.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/doc.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/doc.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/docd.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/doxygen.css
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/doxygen.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/doxygen.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/doxygen_crawl.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/dynsections.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/files.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/folderclosed.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/folderclosed.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/folderclosedd.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/folderopen.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/folderopen.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/folderopend.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_b.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_c.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_d.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_e.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_f.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_b.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_c.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_d.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_e.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_f.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_g.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_h.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_i.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_l.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_n.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_o.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_p.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_q.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_r.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_s.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_t.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_u.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_v.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_func_x.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_g.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_h.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_i.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_l.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_n.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_o.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_p.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_q.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_r.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_s.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_t.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_u.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_v.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/functions_x.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/hierarchy.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/index.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/jquery.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/menu.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/menudata.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/minus.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/minusd.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/nav_f.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/nav_fd.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/nav_g.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/nav_h.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/nav_hd.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/open.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/pages.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/plus.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/plusd.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_0.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_0.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_1.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_1.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_10.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_10.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_11.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_11.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_12.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_12.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_13.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_13.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_14.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_2.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_2.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_3.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_3.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_4.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_4.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_5.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_5.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_6.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_6.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_7.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_7.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_8.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_8.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_9.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_9.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_a.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_a.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_b.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_b.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_c.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_c.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_d.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_d.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_e.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_e.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_f.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/all_f.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/classes_0.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/classes_0.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/close.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/close.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_0.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_0.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_1.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_1.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_10.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_10.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_11.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_11.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_12.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_12.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_13.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_13.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_2.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_2.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_3.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_3.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_4.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_4.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_5.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_5.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_6.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_6.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_7.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_7.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_8.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_8.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_9.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_9.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_a.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_a.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_b.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_b.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_c.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_c.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_d.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_d.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_e.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_e.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_f.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/functions_f.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/mag.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/mag_d.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/mag_sel.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/mag_sel.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/mag_seld.svg
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/nomatches.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_0.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_0.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_1.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_1.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_2.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_2.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_3.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_3.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_4.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_4.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_5.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_6.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_7.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_8.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_9.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_a.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_b.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/pages_c.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/search.css
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/search.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/search_l.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/search_m.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/search_r.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/search/searchdata.js
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/splitbar.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/splitbard.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/sync_off.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/sync_on.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/tab_a.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/tab_ad.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/tab_b.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/tab_bd.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/tab_h.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/tab_hd.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/tab_s.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/tab_sd.pngServer/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/tabs.css
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/docs/tinyxml2_8h_source.html
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/dox
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/meson.build
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/meson_options.txt
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/readme.md
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/resources/dream.xml
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/resources/empty.xml
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/resources/utf8test.xml
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/resources/utf8testverify.xml
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/resources/xmltest-4636783552757760.xml
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/resources/xmltest-5330.xml
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/resources/xmltest-5662204197076992.xml
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/resources/xmltest-5720541257269248.xml
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/setversion.py
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/test/CMakeLists.txt
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/tinyxml2.cpp
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/tinyxml2.h
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2-master/xmltest.cpp
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/tinyxml2.h
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/FaceProject.Build.CppClean.log
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/FaceProject.log
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/FaceProject.tlog/CL.command.1.tlogBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/FaceProject.tlog/CL.read.1.tlogBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/FaceProject.tlog/CL.write.1.tlogBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/FaceProject.tlog/FaceProject.lastbuildstate
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/FaceProject.tlog/link.command.1.tlog
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/FaceProject.tlog/link.read.1.tlog
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/FaceProject.tlog/link.write.1.tlog
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/FaceProject.tlog/unsuccessfulbuild
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/NetworkConfig.objBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/Server_XML.objBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/tinyxml2.objBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/vc140.idbBinary files differ
Server/¹ùÎÄÇ¿/code/FaceProject/FaceProject/x64/Debug/vc140.pdbBinary files differ
Server/¹ùÎÄÇ¿/log/¹ùÎÄÇ¿_20250311.docBinary files differ
Server/¹ùÎÄÇ¿/log/¹ùÎÄÇ¿_20250312.docBinary files differ