#include "readconfig.h" #include #include #include #include ReadConfig *ReadConfig::m_pInstance = NULL; QMutex ReadConfig::mutex; //#pragma execution_character_set("utf-8") ReadConfig::ReadConfig() { // readConfigFile(); } bool ReadConfig::readConfigFile() { QString fileName = "./DependFile/ConfigFile/config.xml"; QFile configFile(fileName); if(!configFile.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug()<<"配置文件打开失败"; return false; } QXmlStreamReader reader(&configFile); while(!reader.atEnd()) { QXmlStreamReader::TokenType nType = reader.readNext(); switch(nType) { case QXmlStreamReader::StartDocument: //开始元素 { QString strVersion = reader.documentVersion().toString(); QString strEncoding = reader.documentEncoding().toString(); bool bAlone = reader.isStandaloneDocument(); break; } case QXmlStreamReader::Comment://注释 { QString strComment = reader.text().toString(); break; } case QXmlStreamReader::ProcessingInstruction://处理指令 { QString strProInstr = reader.processingInstructionData().toString(); break; } case QXmlStreamReader::DTD://DTD标识 { QString strDTD = reader.text().toString(); QXmlStreamNotationDeclarations notations = reader.notationDeclarations(); QXmlStreamEntityDeclarations entity = reader.entityDeclarations(); //DTD声明 QString strDTDName = reader.dtdName().toString(); QString strDTDPublicId = reader.dtdPublicId().toString();//DTD公开标识 QString strDTDSystemId = reader.dtdSystemId().toString();//DTD系统标识 break; } case QXmlStreamReader::StartElement://开始元素 { QString strElementName = reader.name().toString(); if(QString::compare(strElementName,"config") == 0) { QXmlStreamAttributes attributes = reader.attributes(); } else if(QString::compare(strElementName,"tcpAddress") == 0) { QXmlStreamAttributes attributes = reader.attributes(); if(attributes.hasAttribute("IP")) { st_configData.tcpIP = attributes.value("IP").toString(); } if(attributes.hasAttribute("port")) { st_configData.tcpPort = attributes.value("port").toInt(); } } else if(QString::compare(strElementName,"udpServerAddress") == 0) { QXmlStreamAttributes attributes = reader.attributes(); if(attributes.hasAttribute("IP")) { st_configData.udpServerIP = attributes.value("IP").toString(); } if(attributes.hasAttribute("port")) { st_configData.udpServerPort = attributes.value("port").toInt(); } } else if(QString::compare(strElementName,"udpClientAddress") == 0) { QXmlStreamAttributes attributes = reader.attributes(); if(attributes.hasAttribute("IP")) { st_configData.udpClientIP = attributes.value("IP").toString(); } if(attributes.hasAttribute("port")) { st_configData.udpClientPort = attributes.value("port").toInt(); } } //与游戏通信的上位机 else if(QString::compare(strElementName,"udpGameServerAddress") == 0) { QXmlStreamAttributes attributes = reader.attributes(); if(attributes.hasAttribute("IP")) { st_configData.udpGameServerIP = attributes.value("IP").toString(); } if(attributes.hasAttribute("port")) { st_configData.udpGameServerPort = attributes.value("port").toInt(); } } //与上位机通信的游戏 else if(QString::compare(strElementName,"udpGameClientAddress") == 0) { QXmlStreamAttributes attributes = reader.attributes(); if(attributes.hasAttribute("IP")) { st_configData.udpGameClientIP = attributes.value("IP").toString(); } if(attributes.hasAttribute("port")) { st_configData.udpGameClientPort = attributes.value("port").toInt(); } } //与下位机通信的串口 else if(QString::compare(strElementName,"serialPort") == 0) { QXmlStreamAttributes attributes = reader.attributes(); if(attributes.hasAttribute("portName")) { st_configData.serialConfig.portName = attributes.value("portName").toString(); } if(attributes.hasAttribute("baud")) { st_configData.serialConfig.baud = attributes.value("baud").toInt(); } if(attributes.hasAttribute("dataBits")) { st_configData.serialConfig.dataBits = attributes.value("dataBits").toInt(); } if(attributes.hasAttribute("parity")) { st_configData.serialConfig.parity = attributes.value("parity").toInt(); } if(attributes.hasAttribute("stopBit")) { st_configData.serialConfig.stopBit = attributes.value("stopBit").toInt(); } if(attributes.hasAttribute("flowControl")) { st_configData.serialConfig.flowControl = attributes.value("flowControl").toInt(); } } //电刺激A串口 else if(QString::compare(strElementName,"serialPortA") == 0) { QXmlStreamAttributes attributes = reader.attributes(); if(attributes.hasAttribute("portName")) { st_configData.fesASerialConfig.portName = attributes.value("portName").toString(); } if(attributes.hasAttribute("baud")) { st_configData.fesASerialConfig.baud = attributes.value("baud").toInt(); } if(attributes.hasAttribute("dataBits")) { st_configData.fesASerialConfig.dataBits = attributes.value("dataBits").toInt(); } if(attributes.hasAttribute("parity")) { st_configData.fesASerialConfig.parity = attributes.value("parity").toInt(); } if(attributes.hasAttribute("stopBit")) { st_configData.fesASerialConfig.stopBit = attributes.value("stopBit").toInt(); } if(attributes.hasAttribute("flowControl")) { st_configData.fesASerialConfig.flowControl = attributes.value("flowControl").toInt(); } } else if(QString::compare(strElementName,"serialPortB") == 0) { QXmlStreamAttributes attributes = reader.attributes(); if(attributes.hasAttribute("portName")) { st_configData.fesBSerialConfig.portName = attributes.value("portName").toString(); } if(attributes.hasAttribute("baud")) { st_configData.fesBSerialConfig.baud = attributes.value("baud").toInt(); } if(attributes.hasAttribute("dataBits")) { st_configData.fesBSerialConfig.dataBits = attributes.value("dataBits").toInt(); } if(attributes.hasAttribute("parity")) { st_configData.fesBSerialConfig.parity = attributes.value("parity").toInt(); } if(attributes.hasAttribute("stopBit")) { st_configData.fesBSerialConfig.stopBit = attributes.value("stopBit").toInt(); } if(attributes.hasAttribute("flowControl")) { st_configData.fesBSerialConfig.flowControl = attributes.value("flowControl").toInt(); } } else if(QString::compare(strElementName,"dataBase") == 0) { QXmlStreamAttributes attributes = reader.attributes(); if(attributes.hasAttribute("IP")) { st_configData.dataBaseConfig.IP = attributes.value("IP").toString(); } if(attributes.hasAttribute("port")) { st_configData.dataBaseConfig.port = attributes.value("port").toInt(); } if(attributes.hasAttribute("userName")) { st_configData.dataBaseConfig.userName = attributes.value("userName").toString(); } if(attributes.hasAttribute("password")) { st_configData.dataBaseConfig.password = attributes.value("password").toString(); } } else if(QString::compare(strElementName,"communicateType") == 0) { QXmlStreamAttributes attributes = reader.attributes(); if(attributes.hasAttribute("type")) st_configData.communicateType = attributes.value("type").toInt(); } else if(QString::compare(strElementName,"videoTips") == 0) { QXmlStreamAttributes attributes = reader.attributes(); if(attributes.hasAttribute("videoPath")) { st_configData.videoPath = attributes.value("videoPath").toString(); } if(attributes.hasAttribute("videoNum")) { } if(strElementName == "videoContent") { qDebug()<<"########"; } } break; } case QXmlStreamReader::EndDocument://结束文档 { break; } default: break; } } configFile.close(); if(reader.hasError()) { qDebug()<