From 096df8075c0bb2cedb9a235b8c1857cd53393d24 Mon Sep 17 00:00:00 2001 From: tangchao0503 <735056338@qq.com> Date: Tue, 29 Aug 2023 13:46:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E4=B8=8A=E6=AC=A1=E8=AE=BE=E7=BD=AE=E7=9A=84=E5=B8=A7?= =?UTF-8?q?=E7=8E=87=E5=92=8C=E6=9B=9D=E5=85=89=E6=97=B6=E9=97=B4=EF=BC=8C?= =?UTF-8?q?=E6=89=93=E5=BC=80=E6=97=B6=EF=BC=8C=E5=B0=86=E4=B8=8A=E6=AC=A1?= =?UTF-8?q?=E7=9A=84=E5=B8=A7=E7=8E=87=E5=92=8C=E6=9B=9D=E5=85=89=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E8=AE=BE=E7=BD=AE=E4=B8=BA=E5=BD=93=E5=89=8D=E5=8F=82?= =?UTF-8?q?=E6=95=B0=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Header_Files/configfile.h | 23 +++++ Header_Files/ximeaimager.h | 3 +- Source_Files/configfile.cpp | 169 +++++++++++++++++++++++++++++++++++ Source_Files/main.cpp | 2 +- Source_Files/ximeaimager.cpp | 27 +++++- 5 files changed, 219 insertions(+), 5 deletions(-) diff --git a/Header_Files/configfile.h b/Header_Files/configfile.h index 7a5216b..939819f 100644 --- a/Header_Files/configfile.h +++ b/Header_Files/configfile.h @@ -45,6 +45,29 @@ public: bool createConfigFile(); bool updateConfigFile(); +private: + string m_configfilePath; + Config cfg; +}; + +class ParameterConfigfile +{ +public: + ParameterConfigfile(); + void setConfigfilePath(string configfilePath); + bool isConfigfileExist(); + bool parseConfigfile(); + + bool getFrameRate(int &frameRate); + bool setFrameRate(int frameRate); + + bool getExposeTime(float &exposeTime); + bool setExposeTime(float exposeTime); + + bool createConfigFile(); +// bool updateConfigFile(); + bool writeConfig2File(); + private: string m_configfilePath; Config cfg; diff --git a/Header_Files/ximeaimager.h b/Header_Files/ximeaimager.h index 11ad2f9..3763ec3 100644 --- a/Header_Files/ximeaimager.h +++ b/Header_Files/ximeaimager.h @@ -130,7 +130,7 @@ public: void setFramerate(double framerate); double getFramerate(); - double setExposureTime(float exposureTime); + double setExposureTime(float exposureTime_in_us); int wrapSetExposureTime(float exposureTime_in_us); double getExposureTime(); double autoExposure(); @@ -188,6 +188,7 @@ private: } Configfile m_configfile; + ParameterConfigfile m_parameterConfigfile; diff --git a/Source_Files/configfile.cpp b/Source_Files/configfile.cpp index 530db55..9fd1b4c 100644 --- a/Source_Files/configfile.cpp +++ b/Source_Files/configfile.cpp @@ -468,3 +468,172 @@ bool Configfile::updateConfigFile() return true; } + +ParameterConfigfile::ParameterConfigfile() +{ + +} + +void ParameterConfigfile::setConfigfilePath(string configfilePath) +{ + m_configfilePath = configfilePath; +} + +bool ParameterConfigfile::isConfigfileExist() +{ + QFileInfo info(QString::fromStdString(m_configfilePath)); + + return info.exists(); +} + +bool ParameterConfigfile::parseConfigfile() +{ + // Read the file. If there is an error, report it and exit. + try + { + cfg.readFile(m_configfilePath); + + return true; + } + catch(const FileIOException &fioex) + { + std::cerr << "I/O error while reading file." << std::endl; + return false; + } + catch(const ParseException &pex) + { + std::cerr << "Parse error at " << pex.getFile() << ":" << pex.getLine() + << " - " << pex.getError() << std::endl; + return false; + } +} + +bool ParameterConfigfile::createConfigFile() +{ + using namespace std; + using namespace libconfig; + + Config cfg; + + Setting &root = cfg.getRoot(); + + // Add some settings to the configuration. +// Setting &SN = root.add("SN", Setting::TypeString) = "0098"; +// Setting &spatialBin = root.add("spatialBin", Setting::TypeInt) = 2; +// Setting &SpectralBin = root.add("spectralBin", Setting::TypeInt) = 2; + + Setting &ximeaParam = root.add("ximeaParam", Setting::TypeGroup); + ximeaParam.add("frameRate", Setting::TypeInt) = 100; + ximeaParam.add("exposeTime", Setting::TypeFloat) = 10.0; + + + // Write out the new configuration. + try + { + QList fileInfo = getFileInfo(QString::fromStdString(m_configfilePath)); + bool ret = createDir(fileInfo[0]); + + cfg.writeFile(m_configfilePath.c_str()); + cerr << "New configuration successfully written to: " << m_configfilePath.c_str() << endl; + + } + catch(const FileIOException &fioex) + { + cerr << "I/O error while writing configuration file: " << m_configfilePath.c_str() << endl; + return true; + } + + return true; +} + +bool ParameterConfigfile::getFrameRate(int &frameRate) +{ + const Setting& root = cfg.getRoot(); + try + { + const Setting &ximeaParam = root["ximeaParam"]; + frameRate = ximeaParam.lookup("frameRate"); + + std::cout << "----------------"<< frameRate< fileInfo = getFileInfo(QString::fromStdString(m_configfilePath)); + bool ret = createDir(fileInfo[0]); + + cfg.writeFile(m_configfilePath.c_str()); + cerr << "New configuration successfully written to: " << m_configfilePath.c_str() << endl; + } + catch(const FileIOException &fioex) + { + cerr << "I/O error while writing configuration file: " << m_configfilePath.c_str() << endl; + return false; + } + return true; +} diff --git a/Source_Files/main.cpp b/Source_Files/main.cpp index 49be6ae..da7f2e7 100644 --- a/Source_Files/main.cpp +++ b/Source_Files/main.cpp @@ -3,7 +3,7 @@ int main(int argc, char *argv[]) { - std::cout<<"ximeaAirborneSystem 版本:"<< "36." <