bool populate_masks_from_xml(vector<ArmorType*>& masks,string file,Log& log) { CMarkup xml; if(!xml.Load(string(artdir)+file)) { //File is missing or not valid XML. addstr("Failed to load "+file+"!",log); getkey(); return false; //Abort. } xml.FindElem(); xml.IntoElem(); int defaultindex; if(xml.FindElem("default")) defaultindex=getarmortype(xml.GetData()); else { addstr("Default missing for masks!",log); getkey(); return false; //Abort. } if(defaultindex==-1) { addstr("Default for masks is not a known armor type!",log); getkey(); return false; //Abort. } xml.ResetMainPos(); while(xml.FindElem("masktype")) armortype.push_back(new ArmorType(*armortype[defaultindex],xml.GetSubDoc())); return true; }
// 保存配置信息 BOOL COBDPNDConfigReadWrite::fSaveAppConfig(void) { CMarkup xml; CString strAppConfigFile = fCommGetAppPath() + _T("\\Config.xml"); if (!xml.Load(strAppConfigFile)) { return CONFIG_ERR_LOAD_FILE; } CString strText; xml.ResetMainPos(); xml.FindElem(); if(xml.FindChildElem(_T("System"))) { xml.IntoElem(); if(xml.FindChildElem(_T("COM_OBD"))) { strText.Format(_T("%d"),m_tagAppConfig.tagComOBD.wPort); xml.SetChildAttrib(_T("Port"),strText); //strText.Format(_T("%d"),m_tagAppConfig.tagComOBD.dwBPS); //xml.SetChildAttrib(_T("BPS"),strText); //strText.Format(_T("%d"),m_tagAppConfig.tagComOBD.wData_Bits); //xml.SetChildAttrib(_T("Data_Bits"),strText); //strText.Format(_T("%d"),m_tagAppConfig.tagComOBD.wStop_Bits); //xml.SetChildAttrib(_T("Stop_Bits"),strText); //xml.SetChildAttrib(_T("Parity"),_T("None")); } //if(xml.FindChildElem(_T("COM_GPS"))) //{ // strText.Format(_T("%d"),m_tagAppConfig.tagComGPS.wPort); // xml.SetChildAttrib(_T("Port"),strText); // strText.Format(_T("%d"),m_tagAppConfig.tagComGPS.dwBPS); // xml.SetChildAttrib(_T("BPS"),strText); // strText.Format(_T("%d"),m_tagAppConfig.tagComGPS.wData_Bits); // xml.SetChildAttrib(_T("Data_Bits"),strText); // strText.Format(_T("%d"),m_tagAppConfig.tagComGPS.wStop_Bits); // xml.SetChildAttrib(_T("Stop_Bits"),strText); // xml.SetChildAttrib(_T("Parity"),_T("None")); //} if(xml.FindChildElem(_T("Setting"))) { xml.SetChildAttrib(_T("LANGUAGE"),m_tagAppConfig.tagSetting.strLanguage); if (m_tagAppConfig.tagSetting.bSaveErrorLog) xml.SetChildAttrib(_T("Save_ErrorLog"),_T("ON")); else xml.SetChildAttrib(_T("Save_ErrorLog"),_T("OFF")); strText.Format(_T("%d"),m_tagAppConfig.tagSetting.wBacklightDay); xml.SetChildAttrib(_T("BACKLIGHT_DAY"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagSetting.wBacklightNight); xml.SetChildAttrib(_T("BACKLIGHT_NIGHT"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagSetting.wBacklightDayStart); xml.SetChildAttrib(_T("BACKLIGHT_DAY_START"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagSetting.wBackLightDayEnd); xml.SetChildAttrib(_T("BACKLIGHT_DAY_END"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagSetting.dwSystemOffTime); xml.SetChildAttrib(_T("System_Off_Time"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagSetting.dwSystemOffMode); xml.SetChildAttrib(_T("System_Off_Mode"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagSetting.dwAutoSelPanelTime); xml.SetChildAttrib(_T("Auto_Sel_Panel_Time"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagSetting.dwDefaultStartPanel); xml.SetChildAttrib(_T("Default_Start_Panel"),strText); strText.Format(_T("%0.5f"),m_tagAppConfig.tagSetting.fInstantFuelParameter); xml.SetChildAttrib(_T("Parameter_Fuel_Instant"),strText); strText.Format(_T("%0.5f"),m_tagAppConfig.tagSetting.fAvgFuelParameter); xml.SetChildAttrib(_T("Parameter_Fuel_Avg"),strText); strText.Format(_T("%0.5f"),m_tagAppConfig.tagSetting.fFuelPrice); xml.SetChildAttrib(_T("Fuel_Price"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagSetting.dwActiveEcuID); xml.SetChildAttrib(_T("Active_ECU_ID"),strText); } if(xml.FindChildElem(_T("Set_Alarm"))) { if (m_tagAppConfig.tagAlarmSet.bTroubleCode) xml.SetChildAttrib(_T("TroubleCode"),_T("ON")); else xml.SetChildAttrib(_T("TroubleCode"),_T("OFF")); strText.Format(_T("%d"),m_tagAppConfig.tagAlarmSet.wSpeed); xml.SetChildAttrib(_T("Speed"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagAlarmSet.wCoolant); xml.SetChildAttrib(_T("Coolant"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagAlarmSet.wFatigue_Driving); xml.SetChildAttrib(_T("Fatigue_Driving"),strText); strText.Format(_T("%0.2f"),m_tagAppConfig.tagAlarmSet.dbFuel); xml.SetChildAttrib(_T("Fuel"),strText); xml.IntoElem(); if(xml.FindChildElem(_T("Shift"))) { strText.Format(_T("%d"),m_tagAppConfig.tagAlarmSet.wShiftRpm); xml.SetChildAttrib(_T("Shift_Rpm"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagAlarmSet.wShiftSpeed); xml.SetChildAttrib(_T("Shift_Speed"),strText); } if(xml.FindChildElem(_T("Volt"))) { strText.Format(_T("%d"),m_tagAppConfig.tagAlarmSet.wVoltMin); xml.SetChildAttrib(_T("Volt_Min"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagAlarmSet.wVoltMax); xml.SetChildAttrib(_T("Volt_Max"),strText); } xml.OutOfElem(); } xml.OutOfElem(); } if(xml.FindChildElem(_T("Mini_Dlg"))) { strText.Format(_T("%d"),m_tagAppConfig.tagMiniSpeed.dw480X272_X); xml.SetChildAttrib(_T("X_480X272"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagMiniSpeed.dw480X272_Y); xml.SetChildAttrib(_T("Y_480X272"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagMiniSpeed.dw800X480_X); xml.SetChildAttrib(_T("X_800X480"),strText); strText.Format(_T("%d"),m_tagAppConfig.tagMiniSpeed.dw800X480_Y); xml.SetChildAttrib(_T("Y_800X480"),strText); } if(xml.FindChildElem(_T("UiData"))) { xml.IntoElem(); if(xml.FindChildElem(_T("Idle"))) { strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataIdle.dwLeftUpID); xml.SetChildAttrib(_T("ID_Left_Up"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataIdle.dwLeftMiddleID); xml.SetChildAttrib(_T("ID_Left_Middle"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataIdle.dwLeftDownID); xml.SetChildAttrib(_T("ID_Left_Down"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataIdle.dwRightUpID); xml.SetChildAttrib(_T("ID_Right_Up"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataIdle.dwRightMiddleID); xml.SetChildAttrib(_T("ID_Right_Middle"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataIdle.dwRightDownID); xml.SetChildAttrib(_T("ID_Right_Down"),strText); } if(xml.FindChildElem(_T("Tour"))) { strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataTour.dwLeftUpID); xml.SetChildAttrib(_T("ID_Left_Up"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataTour.dwLeftMiddleID); xml.SetChildAttrib(_T("ID_Left_Middle"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataTour.dwLeftDownID); xml.SetChildAttrib(_T("ID_Left_Down"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataTour.dwRightUpID); xml.SetChildAttrib(_T("ID_Right_Up"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataTour.dwRightMiddleID); xml.SetChildAttrib(_T("ID_Right_Middle"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataTour.dwRightDownID); xml.SetChildAttrib(_T("ID_Right_Down"),strText); } if(xml.FindChildElem(_T("Race"))) { strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataRace.dwLeftUpID); xml.SetChildAttrib(_T("ID_Left_Up"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataRace.dwLeftDownID); xml.SetChildAttrib(_T("ID_Left_Down"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataRace.dwMiddleUpID); xml.SetChildAttrib(_T("ID_Middle_Up"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataRace.dwMiddleMiddleID); xml.SetChildAttrib(_T("ID_Middle_Middle"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataRace.dwMiddleDownID); xml.SetChildAttrib(_T("ID_Middle_Down"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataRace.dwRightUpID); xml.SetChildAttrib(_T("ID_Right_Up"),strText); strText.Format(_T("0x%08X"),m_tagAppConfig.tagUiDataRace.dwRightDownID); xml.SetChildAttrib(_T("ID_Right_Down"),strText); } xml.OutOfElem(); } if(xml.FindChildElem(_T("APP_START_LIST"))) { xml.IntoElem(); while(xml.FindChildElem(_T("APP"))) { for (int i=0;i<m_vecAppList.size();i++) { if (xml.GetChildAttrib(_T("ID")) == m_vecAppList[i].strAppID) { xml.SetChildAttrib(_T("PATH"),m_vecAppList[i].strAppPath); if (m_vecAppList[i].bAutoRun) xml.SetChildAttrib(_T("AUTO_RUN"),_T("1")); else xml.SetChildAttrib(_T("AUTO_RUN"),_T("0")); } } } xml.OutOfElem(); } xml.Save(strAppConfigFile); return TRUE; }
// 初始化应用配置信息 BOOL COBDPNDConfigReadWrite::fInitAppConfig(void) { CMarkup xml; CString strAppPath = fCommGetAppPath() + _T("\\"); CString strAppConfigFile = strAppPath + _T("Config.xml"); if (!xml.Load(strAppConfigFile)) { return CONFIG_ERR_LOAD_FILE; } xml.ResetMainPos(); xml.FindElem(); if(xml.FindChildElem(_T("System"))) { xml.IntoElem(); if(xml.FindChildElem(_T("Base"))) { m_tagAppConfig.bIsDemo = (xml.GetChildAttrib(_T("Demo_Mode"))==_T("ON")?TRUE:FALSE); m_tagAppConfig.strTextFile = xml.GetChildAttrib(_T("File_Text")); m_tagAppConfig.strFilterAppList = xml.GetChildAttrib(_T("FILTER_APP_LIST")); } if(xml.FindChildElem(_T("COM_OBD"))) { m_tagAppConfig.tagComOBD.wPort = (WORD)_ttoi(xml.GetChildAttrib(_T("Port"))); m_tagAppConfig.tagComOBD.dwBPS =(WORD) _ttoi(xml.GetChildAttrib(_T("BPS"))); m_tagAppConfig.tagComOBD.wData_Bits = (WORD)_ttoi(xml.GetChildAttrib(_T("Data_Bits"))); m_tagAppConfig.tagComOBD.wStop_Bits = (WORD)_ttoi(xml.GetChildAttrib(_T("Stop_Bits"))); m_tagAppConfig.tagComOBD.wParity = 0;//_ttoi(xml.GetChildAttrib(_T("Parity"))); } if(xml.FindChildElem(_T("COM_GPS"))) { m_tagAppConfig.tagComGPS.wPort = (WORD)_ttoi(xml.GetChildAttrib(_T("Port"))); m_tagAppConfig.tagComGPS.dwBPS = (WORD)_ttoi(xml.GetChildAttrib(_T("BPS"))); m_tagAppConfig.tagComGPS.wData_Bits = (WORD)_ttoi(xml.GetChildAttrib(_T("Data_Bits"))); m_tagAppConfig.tagComGPS.wStop_Bits = (WORD)_ttoi(xml.GetChildAttrib(_T("Stop_Bits"))); m_tagAppConfig.tagComGPS.wParity = 0;//_ttoi(xml.GetChildAttrib(_T("Parity"))); } if(xml.FindChildElem(_T("Setting"))) { m_tagAppConfig.tagSetting.strLanguage = xml.GetChildAttrib(_T("LANGUAGE")); m_tagAppConfig.tagSetting.bSaveErrorLog = (xml.GetChildAttrib(_T("Save_ErrorLog"))==_T("OFF")?FALSE:TRUE); m_tagAppConfig.tagSetting.wBacklightDay = _ttoi(xml.GetChildAttrib(_T("BACKLIGHT_DAY"))); m_tagAppConfig.tagSetting.wBacklightNight = _ttoi(xml.GetChildAttrib(_T("BACKLIGHT_NIGHT"))); m_tagAppConfig.tagSetting.wBacklightDayStart = _ttoi(xml.GetChildAttrib(_T("BACKLIGHT_DAY_START"))); m_tagAppConfig.tagSetting.wBackLightDayEnd = _ttoi(xml.GetChildAttrib(_T("BACKLIGHT_DAY_END"))); m_tagAppConfig.tagSetting.dwActiveEcuID = _ttoi(xml.GetChildAttrib(_T("Active_EUC_ID"))); m_tagAppConfig.tagSetting.str24or12 = xml.GetChildAttrib(_T("Time_24_12Hour")); m_tagAppConfig.tagSetting.dwSystemOffTime = _ttoi(xml.GetChildAttrib(_T("System_Off_Time"))); m_tagAppConfig.tagSetting.dwSystemOffMode = _ttoi(xml.GetChildAttrib(_T("System_Off_Mode"))); m_tagAppConfig.tagSetting.dwAutoSelPanelTime = _ttoi(xml.GetChildAttrib(_T("Auto_Sel_Panel_Time"))); m_tagAppConfig.tagSetting.fAvgFuelParameter = wcstod(xml.GetChildAttrib(_T("Parameter_Fuel_Avg")),0); m_tagAppConfig.tagSetting.fInstantFuelParameter = wcstod(xml.GetChildAttrib(_T("Parameter_Fuel_Instant")),0); m_tagAppConfig.tagSetting.fFuelPrice = wcstod(xml.GetChildAttrib(_T("Fuel_Price")),0); m_tagAppConfig.tagSetting.dwActiveEcuID = _ttoi(xml.GetChildAttrib(_T("Active_ECU_ID"))); } if(xml.FindChildElem(_T("Language_list"))) { xml.IntoElem(); m_tagAppConfig.vecLanguage.clear(); while(xml.FindChildElem(_T("LANGUAGE"))) { _TagLanguage tagLanData; tagLanData.strLanID = xml.GetChildAttrib(_T("LANGUAGE_ID")); tagLanData.strLanName = xml.GetChildAttrib(_T("LANGUAGE_NAME")); tagLanData.strLanSN = xml.GetChildAttrib(_T("LANGUAGE_SN")); tagLanData.strResFiles = xml.GetChildAttrib(_T("LANGUAGE_RES")); m_tagAppConfig.vecLanguage.push_back(tagLanData); } xml.OutOfElem(); } if(xml.FindChildElem(_T("Set_Alarm"))) { m_tagAppConfig.tagAlarmSet.bTroubleCode = xml.GetChildAttrib(_T("TroubleCode"))==_T("ON")?TRUE:FALSE; m_tagAppConfig.tagAlarmSet.wSpeed = _ttoi(xml.GetChildAttrib(_T("Speed"))); m_tagAppConfig.tagAlarmSet.wCoolant = _ttoi(xml.GetChildAttrib(_T("Coolant"))); m_tagAppConfig.tagAlarmSet.wFatigue_Driving = _ttoi(xml.GetChildAttrib(_T("Fatigue_Driving"))); m_tagAppConfig.tagAlarmSet.dbFuel = wcstod(xml.GetChildAttrib(_T("Fuel")),0); xml.IntoElem(); if(xml.FindChildElem(_T("Shift"))) { m_tagAppConfig.tagAlarmSet.wShiftRpm = _ttoi(xml.GetChildAttrib(_T("Shift_Rpm"))); m_tagAppConfig.tagAlarmSet.wShiftSpeed = _ttoi(xml.GetChildAttrib(_T("Shift_Speed"))); } if(xml.FindChildElem(_T("Volt"))) { m_tagAppConfig.tagAlarmSet.wVoltMin = _ttoi(xml.GetChildAttrib(_T("Volt_Min"))); m_tagAppConfig.tagAlarmSet.wVoltMax = _ttoi(xml.GetChildAttrib(_T("Volt_Max"))); } xml.OutOfElem(); } xml.OutOfElem(); } if(xml.FindChildElem(_T("Mini_Dlg"))) { m_tagAppConfig.tagMiniSpeed.dw480X272_X = _ttoi(xml.GetChildAttrib(_T("X_480X272"))); m_tagAppConfig.tagMiniSpeed.dw480X272_Y = _ttoi(xml.GetChildAttrib(_T("Y_480X272"))); m_tagAppConfig.tagMiniSpeed.dw800X480_X = _ttoi(xml.GetChildAttrib(_T("X_800X480"))); m_tagAppConfig.tagMiniSpeed.dw800X480_Y = _ttoi(xml.GetChildAttrib(_T("Y_800X480"))); } if(xml.FindChildElem(_T("UiData"))) { xml.IntoElem(); if(xml.FindChildElem(_T("Idle"))) { m_tagAppConfig.tagUiDataIdle.dwLeftUpID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Left_Up"))); m_tagAppConfig.tagUiDataIdle.dwLeftMiddleID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Left_Middle"))); m_tagAppConfig.tagUiDataIdle.dwLeftDownID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Left_Down"))); m_tagAppConfig.tagUiDataIdle.dwRightUpID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Right_Up"))); m_tagAppConfig.tagUiDataIdle.dwRightMiddleID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Right_Middle"))); m_tagAppConfig.tagUiDataIdle.dwRightDownID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Right_Down"))); } if(xml.FindChildElem(_T("Tour"))) { m_tagAppConfig.tagUiDataTour.dwLeftUpID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Left_Up"))); m_tagAppConfig.tagUiDataTour.dwLeftMiddleID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Left_Middle"))); m_tagAppConfig.tagUiDataTour.dwLeftDownID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Left_Down"))); m_tagAppConfig.tagUiDataTour.dwRightUpID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Right_Up"))); m_tagAppConfig.tagUiDataTour.dwRightMiddleID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Right_Middle"))); m_tagAppConfig.tagUiDataTour.dwRightDownID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Right_Down"))); } if(xml.FindChildElem(_T("Race"))) { m_tagAppConfig.tagUiDataRace.dwLeftUpID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Left_Up"))); m_tagAppConfig.tagUiDataRace.dwLeftDownID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Left_Down"))); m_tagAppConfig.tagUiDataRace.dwRightUpID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Right_Up"))); m_tagAppConfig.tagUiDataRace.dwRightDownID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Right_Down"))); m_tagAppConfig.tagUiDataRace.dwMiddleUpID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Middle_Up"))); m_tagAppConfig.tagUiDataRace.dwMiddleMiddleID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Middle_Middle"))); m_tagAppConfig.tagUiDataRace.dwMiddleDownID = fCommStr2Hex(xml.GetChildAttrib(_T("ID_Middle_Down"))); } xml.OutOfElem(); } if(xml.FindChildElem(_T("Sound"))) { m_tagAppConfig.tagSoundFile.strDong = strAppPath + xml.GetChildAttrib(_T("Dong")); m_tagAppConfig.tagSoundFile.strInitialze = strAppPath + xml.GetChildAttrib(_T("Initialze")); m_tagAppConfig.tagSoundFile.strStart = strAppPath + xml.GetChildAttrib(_T("Start")); m_tagAppConfig.tagSoundFile.strGetData = strAppPath + xml.GetChildAttrib(_T("GetData")); m_tagAppConfig.tagSoundFile.strAlarmCoolant = strAppPath + xml.GetChildAttrib(_T("AlarmCoolant")); m_tagAppConfig.tagSoundFile.strAlarmFatigueDriving = strAppPath + xml.GetChildAttrib(_T("AlarmFatigueDriving")); m_tagAppConfig.tagSoundFile.strAlarmOverSpeed = strAppPath + xml.GetChildAttrib(_T("AlarmOverSpeed")); m_tagAppConfig.tagSoundFile.strAlarmVoltHigh = strAppPath + xml.GetChildAttrib(_T("AlarmVoltHigh")); m_tagAppConfig.tagSoundFile.strAlarmVoltLow = strAppPath + xml.GetChildAttrib(_T("AlarmVoltLow")); m_tagAppConfig.tagSoundFile.strAlarmTrouble = strAppPath + xml.GetChildAttrib(_T("AlarmTrouble")); } if(xml.FindChildElem(_T("GPS_LIST"))) { xml.IntoElem(); m_vecGPSList.clear(); while(xml.FindChildElem(_T("GPS"))) { TagAppInfo tagAppInfo; tagAppInfo.strAppID = xml.GetChildAttrib(_T("ID")); tagAppInfo.strAppName = xml.GetChildAttrib(_T("NAME_CHS")); tagAppInfo.strAppPath = xml.GetChildAttrib(_T("FOLDER")); tagAppInfo.strAppExe = xml.GetChildAttrib(_T("EXE")); tagAppInfo.bAutoRun = FALSE; m_vecGPSList.push_back(tagAppInfo); } xml.OutOfElem(); } if(xml.FindChildElem(_T("DSA_LIST"))) { xml.IntoElem(); m_vecDSAList.clear(); while(xml.FindChildElem(_T("DSA"))) { TagAppInfo tagAppInfo; tagAppInfo.strAppID = xml.GetChildAttrib(_T("ID")); tagAppInfo.strAppName = xml.GetChildAttrib(_T("NAME_CHS")); tagAppInfo.strAppPath = xml.GetChildAttrib(_T("FOLDER")); tagAppInfo.strAppExe= xml.GetChildAttrib(_T("EXE")); tagAppInfo.bAutoRun = FALSE; m_vecDSAList.push_back(tagAppInfo); } xml.OutOfElem(); } if(xml.FindChildElem(_T("APP_START_LIST"))) { xml.IntoElem(); m_vecAppList.clear(); while(xml.FindChildElem(_T("APP"))) { TagAppInfo tagAppInfo; tagAppInfo.strAppID = xml.GetChildAttrib(_T("ID")); if (tagAppInfo.strAppID == _T("1")) tagAppInfo.strAppName = theMainDlg->fGetBinText(DS_SETUP_GUIDE_DSA_TITLE); if (tagAppInfo.strAppID == _T("2")) tagAppInfo.strAppName = theMainDlg->fGetBinText(DS_SETUP_GUIDE_GPS_TITLE); tagAppInfo.strAppPath = xml.GetChildAttrib(_T("PATH")); if (xml.GetChildAttrib(_T("AUTO_RUN")) == _T("1")) tagAppInfo.bAutoRun = TRUE; else tagAppInfo.bAutoRun = FALSE; m_vecAppList.push_back(tagAppInfo); } xml.OutOfElem(); } return TRUE; }
//获取手机系统信息 bool CConnectThread::GetPhoneSystemInfo(sPhoneInfo& Info) { bool Ret=false; CString CmdStr; CString CmdRetStr; CmdStr=_T("<?xml version='1.0'?><req><fun>GetSystemAgentVar</fun><ps count='0'></ps></req>"); if(CCommunication::SendXmlToPhone(CmdStr,CmdRetStr) < 0x00) return Ret; if(CmdRetStr.IsEmpty()) return Ret; CMarkup Xml; if(Xml.SetDoc(CmdRetStr)) { CString strData; Xml.ResetMainPos(); Xml.FindChildElem(_T("ps")); if (Xml.IntoElem()) { Ret=true; while ( Xml.FindChildElem(_T("p")) ) { CString strMsg; Xml.IntoElem(); Xml.FindChildElem(_T("name")); strData = Xml.GetChildData().c_str(); if (strData == _T("msg")) { Xml.FindChildElem(_T("value")); strMsg = Xml.GetChildData().c_str(); if (strMsg != _T("0")) { return false; } }else if (strData == _T("var")) { Xml.FindChildElem(_T("value")); Info.m_PhoneOSVer = Xml.GetChildData().c_str(); Info.m_PhoneOS = Info.m_PhoneOSVer.Mid(0x00, Info.m_PhoneOSVer.Find(_T(" "))); //Andriod 2.1-Update-1 }else if (strData == _T("agent")) { Xml.FindChildElem(_T("value")); Info.m_PhoneModel= Xml.GetChildData().c_str(); }else if (strData == _T("programver")) { Xml.FindChildElem(_T("value")); CString strApkVer = Xml.GetChildData().c_str(); }else if (strData == _T("imei")) { Xml.FindChildElem(_T("value")); Info.m_PhoneIMEI = Xml.GetChildData().c_str(); }else if (strData == _T("imsi")) { Xml.FindChildElem(_T("value")); Info.m_PhoneIMSI = Xml.GetChildData().c_str(); }else{;} Xml.OutOfElem(); } } } return Ret; }
void CEventInfo::ParseEvents(CMarkup & xml) { // Jump into elem xml.IntoElem(); // Search for OnNewVersion event if (xml.FindElem(_T("ONNEWVERSION"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_ONNEWVERSION]); } // Reset pos xml.ResetMainPos(); // Search for OnNoNewVersion event if (xml.FindElem(_T("ONNONEWVERSION"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_ONNONEWVERSION]); } // Reset pos xml.ResetMainPos(); // Search for BeforeHtmlMessage event if (xml.FindElem(_T("BEFOREHTMLMESSAGE"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_BEFOREHTMLMESSAGE]); } // Reset pos xml.ResetMainPos(); // Search for AfterHtmlMessage event if (xml.FindElem(_T("AFTERHTMLMESSAGE"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_AFTERHTMLMESSAGE]); } // Reset pos xml.ResetMainPos(); // Search for BeforeLicense event if (xml.FindElem(_T("BEFORELICENSE"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_BEFORELICENSE]); } // Reset pos xml.ResetMainPos(); // Search for AfterLicense event if (xml.FindElem(_T("AFTERLICENSE"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_AFTERLICENSE]); } // Reset pos xml.ResetMainPos(); // Search for BeforeSelectUpdate event if (xml.FindElem(_T("BEFORESELECTUPDATE"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_BEFORESELECTUPDATE]); } // Reset pos xml.ResetMainPos(); // Search for AfterSelectUpdate event if (xml.FindElem(_T("AFTERSELECTUPDATE"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_AFTERSELECTUPDATE]); } // Reset pos xml.ResetMainPos(); // Search for BeforeDownload event if (xml.FindElem(_T("BEFOREDOWNLOAD"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_BEFOREDOWNLOAD]); } // Reset pos xml.ResetMainPos(); // Search for AfterDownload event if (xml.FindElem(_T("AFTERDOWNLOAD"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_AFTERDOWNLOAD]); } // Reset pos xml.ResetMainPos(); // Search for BeforeInstall event if (xml.FindElem(_T("BEFOREINSTALL"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_BEFOREINSTALL]); } // Reset pos xml.ResetMainPos(); // Search for AfterInstall event if (xml.FindElem(_T("AFTERINSTALL"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_AFTERINSTALL]); } // Reset pos xml.ResetMainPos(); // Search for BeforeInstall event if (xml.FindElem(_T("BEFOREROLLBACK"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_BEFOREROLLBACK]); } // Reset pos xml.ResetMainPos(); // Search for AfterInstall event if (xml.FindElem(_T("AFTERROLLBACK"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_AFTERROLLBACK]); } // Reset pos xml.ResetMainPos(); // Search for OnClose event if (xml.FindElem(_T("ONCLOSE"))) { // Parse event ParseEvent(xml, m_arrEvents[EVENT_ONCLOSE]); } // Jump out of elem xml.OutOfElem(); }
void CMISView::openXmlFile(CString& fileName,bool first) { CMarkup xml; xml.Load(fileName); xml.FindElem("Obj"); CString objPath=xml.GetData(); xml.ResetMainPos(); xml.FindElem("CollisionSafe"); CString cSafe=xml.GetData(); xml.ResetMainPos(); xml.FindElem("SupportThreshold"); para.supportThreshold=atof(xml.GetData()); xml.ResetMainPos(); xml.FindElem("ObjType"); int ObjType=atof(xml.GetData()); xml.ResetMainPos(); xml.FindElem("Thickness"); para.modelThickness=atof(xml.GetData()); xml.ResetMainPos(); xml.FindElem("Name"); para.modelName=xml.GetData(); xml.ResetMainPos(); xml.FindElem("StepLen"); para.stepLen=atof(xml.GetData()); xml.ResetMainPos(); xml.FindElem("EdgeLen"); para.maxEdgeLen=atof(xml.GetData()); xml.ResetMainPos(); xml.FindElem("BoundEdgeLen"); para.boundEdgeLen=atof(xml.GetData()); xml.ResetMainPos(); xml.FindElem("MatDensity"); para.matDensity=atof(xml.GetData()); xml.ResetMainPos(); xml.FindElem("FluidDensity"); para.fluidDensity=atof(xml.GetData()); xml.ResetMainPos(); xml.FindElem("DisruptAngle"); para.disruptAngle=atof(xml.GetData()); cout<<para.boundEdgeLen<<endl; if (cSafe=="true") para.collisionSafe=true; else para.collisionSafe=false; if (support!=NULL) { reset(); } switch (ObjType) { case 0: myObj.loadObjFromFile(objPath); break; case 1: myObj.loadObjFromFileEx(objPath); break; case 2: myObj.loadObjFromFileEx2(objPath); break; case 3: myObj.loadObjFromFileEx3(objPath); break; } BBox bbox=myObj.getBBox(); Vector3d boxCenter; boxCenter[0]=(bbox.H[0]+bbox.L[0])/2; boxCenter[1]=(bbox.H[1]+bbox.L[1])/2; boxCenter[2]=(bbox.H[2]+bbox.L[2])/2; boxCenter=-boxCenter; double maxW=-1; for (int i=0;i<3;i++) { if (bbox.H[i]-bbox.L[i]>maxW) { maxW=bbox.H[i]-bbox.L[i]; } } myObj.translate(boxCenter); myObj.scale(1/maxW); cout<<myObj.vertexNum<<endl; cout<<myObj.faceNum<<endl; //myObj.translate(Vector3d(0.5,0.5,0.5)); support=new Support(&myObj,para,mode,fluidHeight); support->setMeshRotation(meshRotation); cY=support->getLowestH(); updateCam(); if (!first) { defaultXml=fileName; CPaintDC dc(this); OnDraw(&dc); } }
CXMLArchiveNode* CXMLArchive::GetNode(LPCTSTR nodeNameStr) { CString nodeName(nodeNameStr); try { #ifdef USE_MSXML BSTR nodeNameBSTR = nodeName.AllocSysString(); MSXML::IXMLDOMNodePtr fatherNodePtr; #else CMarkup* fatherNodePtr; #endif if (m_nodeList.size() == 0) { fatherNodePtr = m_xmlDocPtr; } else { fatherNodePtr = m_nodeList.top()->m_nodePtr; } if (fatherNodePtr == NULL) { return NULL; } if (IsStoring()) { #ifdef USE_MSXML // Archive is storing CXMLArchiveNode* xmlArchiveNodePtr = new CXMLArchiveNode(this, m_xmlDocPtr->createElement(nodeNameBSTR), fatherNodePtr); ::SysFreeString(nodeNameBSTR); m_nodeList.push(xmlArchiveNodePtr); return xmlArchiveNodePtr; #endif // Archive is storing m_xmlDocPtr->AddChildElem(nodeName); CMarkup* childnodep = new CMarkup(m_xmlDocPtr->GetDoc()); childnodep = m_xmlDocPtr; m_xmlDocPtr->ResetChildPos(); CXMLArchiveNode* xmlArchiveNodePtr = new CXMLArchiveNode(this, childnodep, //m_xmlDocPtr->createElement(nodeNameBSTR), fatherNodePtr); m_nodeList.push(xmlArchiveNodePtr); return xmlArchiveNodePtr; } // Archive is Loading //MSXML::IXMLDOMNodeListPtr nodeListPtr; //MSXML::IXMLDOMNodePtr nodePtr; CMarkup* nodeListPtr; CMarkup* nodePtr; // If child node list is not empty, we are loading using the tags to // create CObject derived objects or collections (like CArray<Cobject* CObject*>, use child list #ifdef USE_MSXML if (m_nodeList.size() > 0) { CXMLArchiveNode* xmlNodePtr = m_nodeList.top(); nodeListPtr = xmlNodePtr->m_childNodeListPtr; if (nodeListPtr != NULL && nodeListPtr->length > 0) { int childIndex = xmlNodePtr->m_childIndex; if (childIndex < nodeListPtr->length) { nodeListPtr->get_item(childIndex, &nodePtr); CXMLArchiveNode* xmlArchiveNodePtr = new CXMLArchiveNode(this, nodePtr, m_xmlDocPtr); m_nodeList.push(xmlArchiveNodePtr); ::SysFreeString(nodeNameBSTR); return xmlArchiveNodePtr; } ASSERT(FALSE); } } #else if (m_nodeList.size() > 0) { CXMLArchiveNode* xmlNodePtr = m_nodeList.top(); nodeListPtr = xmlNodePtr->m_childNodeListPtr; //Block added to calcule length when using CMarkup int length = 0; if (nodeListPtr != NULL){ nodeListPtr->ResetMainPos(); while (nodeListPtr->FindElem()) { length++; } nodeListPtr->ResetMainPos(); } if (nodeListPtr != NULL && length > 0) { int childIndex = xmlNodePtr->m_childIndex; if (childIndex < length) { int index = 0; /*if (nodeListPtr->FindChildElem()) {*/ while (nodeListPtr->FindElem() && index < childIndex) { index++; } nodePtr = new CMarkup(); nodePtr = nodeListPtr; //nodeListPtr->ResetChildPos(); /*}*/ CXMLArchiveNode* xmlArchiveNodePtr = new CXMLArchiveNode(this, nodePtr, m_xmlDocPtr); m_nodeList.push(xmlArchiveNodePtr); return xmlArchiveNodePtr; } ASSERT(FALSE); } } #endif #ifdef USE_MSXML // Get all nodes with this name if (MSXML::IXMLDOMDocumentPtr(fatherNodePtr) != NULL) { // First level node in document ASSERT(!nodeName.IsEmpty()); nodeListPtr = MSXML::IXMLDOMDocumentPtr(fatherNodePtr)->getElementsByTagName(nodeNameBSTR); } else { // Get node with desired name nodeListPtr = MSXML::IXMLDOMElementPtr(fatherNodePtr)->getElementsByTagName(nodeNameBSTR); } ::SysFreeString(nodeNameBSTR); #else bool bResult=fatherNodePtr->FindElem(nodeName); nodeListPtr = new CMarkup(); nodeListPtr = fatherNodePtr; #endif //Get child index from m_nodeList int childIndex = 0; if (m_nodeList.size() > 0) { childIndex = m_nodeList.top()->m_childIndex; } #ifdef USE_MSXML if (childIndex < nodeListPtr->length) { nodeListPtr->get_item(childIndex, &nodePtr); } #else //Block added to calcule length when using CMarkup int length = 0; nodeListPtr->ResetMainPos(); while (nodeListPtr->FindElem()) { length++; } nodeListPtr->ResetMainPos(); if (childIndex < length) { int index = 0; //Check if it has child elements and go inside if so if (nodeName.MakeLower()=="svg" && nodeListPtr->FindChildElem()) { while (index < childIndex && nodeListPtr->FindElem()) { index++; } nodeListPtr->IntoElem(); nodePtr = new CMarkup(); nodePtr = nodeListPtr; nodeListPtr->ResetMainPos(); } else { while (index < childIndex && nodeListPtr->FindElem(nodeName)) { index++; } nodePtr = new CMarkup(); nodePtr = nodeListPtr; } } #endif CXMLArchiveNode* xmlArchiveNodePtr = new CXMLArchiveNode(this, nodePtr, m_xmlDocPtr); m_nodeList.push(xmlArchiveNodePtr); return xmlArchiveNodePtr; } catch (...) { } return NULL; }