完善读取和下发配置文件返回数据的解析

This commit is contained in:
起床就犯困 2025-01-22 18:09:41 +08:00
parent 1ede325a3e
commit 240509beb4
6 changed files with 1080 additions and 37 deletions

View File

@ -120,6 +120,23 @@ bool JsonTreeModel::readJson(void)
// } // }
void JsonTreeModel::refreshJson(void)
{
emit beginResetModel();
theRootItem->deleteAllChild();//清空之前的model
//判断是object{}还是array[]的Json
if(json_doc.isObject()){
//解析文档中的Object
parseObject("[Root]",json_doc.object(),theRootItem);
}else if(json_doc.isArray()){
//解析文档中的Array
parseArray("[Root]",json_doc.array(),theRootItem);
}
emit endResetModel();
}
QModelIndex JsonTreeModel::index(int row, int column, const QModelIndex &parent) const QModelIndex JsonTreeModel::index(int row, int column, const QModelIndex &parent) const
{ {
if (!hasIndex(row, column, parent)) if (!hasIndex(row, column, parent))

View File

@ -29,6 +29,7 @@ public:
/* qt读写配置文件的时候使用 */ /* qt读写配置文件的时候使用 */
bool readJson(void); bool readJson(void);
// bool writeJson(QJsonDocument jsonDoc); // bool writeJson(QJsonDocument jsonDoc);
void refreshJson(void);
//tree数据展示 //tree数据展示
QModelIndex index(int row, int column, QModelIndex index(int row, int column,

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.12.2, 2025-01-19T20:30:06. --> <!-- Written by QtCreator 4.12.2, 2025-01-22T14:45:17. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>
<value type="QByteArray">{9e8e3043-7943-45b0-b792-c7d18b89a4a7}</value> <value type="QByteArray">{844cf8e3-8231-4057-928d-29ec52433497}</value>
</data> </data>
<data> <data>
<variable>ProjectExplorer.Project.ActiveTarget</variable> <variable>ProjectExplorer.Project.ActiveTarget</variable>
@ -74,17 +74,17 @@
<data> <data>
<variable>ProjectExplorer.Project.Target.0</variable> <variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap"> <valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.12.9 MinGW 64-bit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.12.9 MinGW 32-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.12.9 MinGW 64-bit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.12.9 MinGW 32-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5129.win64_mingw73_kit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5129.win32_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value> <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="bool">true</value> <value type="bool">true</value>
<value type="int" key="EnableQmlDebugging">0</value> <value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\workstudy\document\MPPT\stm32\qt\build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Debug</value> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\psx\MPPT\STM32\qt\build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_32_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/workstudy/document/MPPT/stm32/qt/build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Debug</value> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/psx/MPPT/STM32/qt/build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_32_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -134,8 +134,8 @@
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="bool">true</value> <value type="bool">true</value>
<value type="int" key="EnableQmlDebugging">2</value> <value type="int" key="EnableQmlDebugging">2</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\workstudy\document\MPPT\stm32\qt\build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Release</value> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\psx\MPPT\STM32\qt\build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_32_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/workstudy/document/MPPT/stm32/qt/build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Release</value> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/psx/MPPT/STM32/qt/build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_32_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -185,8 +185,8 @@
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2"> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="bool">true</value> <value type="bool">true</value>
<value type="int" key="EnableQmlDebugging">0</value> <value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\workstudy\document\MPPT\stm32\qt\build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Profile</value> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\psx\MPPT\STM32\qt\build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_32_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/workstudy/document/MPPT/stm32/qt/build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Profile</value> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/psx/MPPT/STM32/qt/build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_32_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -308,8 +308,8 @@
</valuelist> </valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value> <value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/> <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/workstudy/document/MPPT/stm32/qt/chargControlBox_cfgFile/chargControlBox_cfgFile.pro</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/psx/MPPT/STM32/qt/chargControlBox_cfgFile/chargControlBox_cfgFile.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/workstudy/document/MPPT/stm32/qt/chargControlBox_cfgFile/chargControlBox_cfgFile.pro</value> <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/psx/MPPT/STM32/qt/chargControlBox_cfgFile/chargControlBox_cfgFile.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value> <value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value> <value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value> <value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
@ -320,7 +320,7 @@
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value> <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value> <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value> <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/workstudy/document/MPPT/stm32/qt/build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Debug</value> <value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/psx/MPPT/STM32/qt/build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_32_bit-Debug</value>
</valuemap> </valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value> <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap> </valuemap>

View File

@ -0,0 +1,340 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.12.2, 2025-01-19T20:30:06. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{9e8e3043-7943-45b0-b792-c7d18b89a4a7}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
<value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.Questionable</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">8</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.12.9 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.12.9 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5129.win64_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="bool">true</value>
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\workstudy\document\MPPT\stm32\qt\build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/workstudy/document/MPPT/stm32/qt/build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="int" key="QtQuickCompiler">2</value>
<value type="int" key="SeparateDebugInfo">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="bool">true</value>
<value type="int" key="EnableQmlDebugging">2</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\workstudy\document\MPPT\stm32\qt\build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/workstudy/document/MPPT/stm32/qt/build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="SeparateDebugInfo">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="bool">true</value>
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\workstudy\document\MPPT\stm32\qt\build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/workstudy/document/MPPT/stm32/qt/build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/workstudy/document/MPPT/stm32/qt/chargControlBox_cfgFile/chargControlBox_cfgFile.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/workstudy/document/MPPT/stm32/qt/chargControlBox_cfgFile/chargControlBox_cfgFile.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/workstudy/document/MPPT/stm32/qt/build-chargControlBox_cfgFile-Desktop_Qt_5_12_9_MinGW_64_bit-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@ -7,6 +7,9 @@
#include <QDebug> #include <QDebug>
#include <QMessageBox> #include <QMessageBox>
#include <QThread> #include <QThread>
#include <QtConcurrent/QtConcurrent>
MainWindow::MainWindow(QWidget *parent) MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent) : QMainWindow(parent)
@ -647,45 +650,134 @@ void MainWindow::readCfgFile()
// } // }
// readCfgBuf[10]++; // readCfgBuf[10]++;
ui->SerialPortPushButton->setDisabled(true); // ui->SerialPortPushButton->setDisabled(true);
ui->readConfigFile->setDisabled(true); // ui->readConfigFile->setDisabled(true);
ui->writeConfigFile->setDisabled(true); // ui->writeConfigFile->setDisabled(true);
serialPort->write(reinterpret_cast<const char*>(readCfgBuf), (60 + 12 + 3)); serialPort->write(reinterpret_cast<const char*>(readCfgBuf), (60 + 12 + 3));
/* 延时1.5S */ QTimer::singleShot(1500, [this]() {
QThread::msleep(1500); QByteArray data = serialPort->readAll();
QByteArray data = serialPort->readAll(); // serialPort->write("hello world");
for (int i = 0; i < data.length(); i++) {
qDebug() << QString::asprintf("0x%x", static_cast<unsigned char>(data.at(i)));
}
uint16_t crc16;
uint8_t *repData = (uint8_t *)data.data();
uint16_t tempU16;
uint8_t *analysisCfgData = repData + 12;
/* 起始标志 */
if (*repData != 'S' || *(repData + 1) != 'L') {
qDebug() << "start flag error";
goto error;
}
/* 功能码 */
if (*(repData + 9) != 0xD1) {
qDebug() << "function Code error";
goto error;
}
tempU16 = (*(repData + 10) << 8) | (*(repData + 11));
qDebug() << "len" << tempU16;
crc16 = (*(repData + 12 + tempU16) << 8) | (*(repData + 13 + tempU16));
/* crc校验 */
if (crc16 != modbusCrc(repData, tempU16 + 12)) {
qDebug() << "crc error";
qDebug() << QString::asprintf("0x%x", static_cast<uint16_t>(crc16));
qDebug() << QString::asprintf("0x%x", static_cast<uint16_t>(modbusCrc(repData, tempU16 + 12)));
goto error;
}
/* 结束标志 */
if (*(repData + 14 + tempU16) != 0x16) {
qDebug() << "end flag error";
goto error;
}
while (analysisCfgData != NULL && analysisCfgData != (repData + 12 + tempU16)) {
analysisCfgData = analysisReadCfgData(&analysisCfgData);
}
if (analysisCfgData != (repData + 12 + tempU16)) {
qDebug() << "analysisCfgData error";
goto error;
}
jsonModel->refreshJson();
QMessageBox::information(this,
tr("配置文件"),
tr("读取配置文件成功"),
QMessageBox::Ok,
QMessageBox::Ok);
// reply = QMessageBox::information(this, "写入成功"
return;
error:
QMessageBox::information(this,
tr("配置文件"),
tr("读取配置文件失败"),
QMessageBox::Ok,
QMessageBox::Ok);
});
// /* 延时1.5S */
// QThread::msleep(1500);
// QByteArray data = serialPort->readAll();
// ui->SerialPortPushButton->setEnabled(true);
// ui->readConfigFile->setEnabled(true);
// ui->writeConfigFile->setEnabled(true);
// uint16_t crc16;
// uint8_t *repData = (uint8_t *)data.data();
//// QMessageBox::standardButton reply;
// if (data.length() < 17) { // if (data.length() < 17) {
// goto error; // goto error;
// } // }
/* 起始标志 */ // /* 起始标志 */
uint8_t *repData = (uint8_t *)data.data(); // if (*repData != 'S' || *(repData + 1) != 'L') {
if (*repData != 'S' || *(repData + 1) != 'L') {
goto error;
}
// /* 地址 */
// if (data.at(0) != 'S' || data.at(1) != 'L') {
// goto error; // goto error;
// } // }
if (*(repData + 9) != 0xD0) { //// /* 地址 */
goto error; //// if (data.at(0) != 'S' || data.at(1) != 'L') {
} //// goto error;
//// }
// uint16_t crc16 = modbusCrc(repData, 14); // if (*(repData + 9) != 0xD0) {
// goto error;
// }
// crc16 = (*(repData + 14) << 8) | *(repData + 15);
// if (crc16 != modbusCrc(repData, 14)) {
// goto error;
// }
// if (*(repData + 12) != 0xAA) {
// goto error;
// }
// QMessageBox::information(this,
// tr("Information消息框标题"),
// tr("这是Information消息框的内容。"),
// QMessageBox::Ok | QMessageBox::Cancel,
// QMessageBox::Ok);
//// reply = QMessageBox::information(this, "写入成功"
// return; // return;
error: //error:
ui->SerialPortPushButton->setEnabled(true); // QMessageBox::information(this,
ui->readConfigFile->setEnabled(true); // tr("Information消息框标题error"),
ui->writeConfigFile->setEnabled(true); // tr("这是Information消息框的内容error。"),
// QMessageBox::Ok | QMessageBox::Cancel,
// QMessageBox::Ok);
} }
@ -2399,4 +2491,595 @@ void MainWindow::writeCfgFile()
// } // }
serialPort->write(reinterpret_cast<const char*>(writeCfgBuf), (dataLen + 17)); serialPort->write(reinterpret_cast<const char*>(writeCfgBuf), (dataLen + 17));
QTimer::singleShot(1500, [this]() {
QByteArray data = serialPort->readAll();
// serialPort->write("hello world");
for (int i = 0; i < data.length(); i++) {
qDebug() << QString::asprintf("0x%x", static_cast<unsigned char>(data.at(i)));
}
uint16_t crc16;
uint8_t *repData = (uint8_t *)data.data();
// QMessageBox::standardButton reply;
if (data.length() < 16) {
qDebug() << "len is error";
goto error;
}
/* 起始标志 */
if (*repData != 'S' || *(repData + 1) != 'L') {
qDebug() << "start flag error";
goto error;
}
// /* 地址 */
// if (data.at(0) != 'S' || data.at(1) != 'L') {
// goto error;
// }
if (*(repData + 9) != 0xD0) {
qDebug() << "function code error";
goto error;
}
crc16 = (*(repData + 13) << 8) | *(repData + 14);
if (crc16 != modbusCrc(repData, 13)) {
qDebug() << "crc error";
goto error;
}
if (*(repData + 12) != 0xAA) {
qDebug() << "data error";
goto error;
}
QMessageBox::information(this,
tr("配置文件"),
tr("写入配置文件成功"),
QMessageBox::Ok,
QMessageBox::Ok);
// reply = QMessageBox::information(this, "写入成功"
return;
error:
QMessageBox::information(this,
tr("配置文件"),
tr("写入配置文件失败"),
QMessageBox::Ok,
QMessageBox::Ok);
});
// /* 延时1.5S */
// QThread::msleep(1500);
// QByteArray data = serialPort->readAll();
// serialPort->write("hello world");
//// ui->SerialPortPushButton->setEnabled(true);
//// ui->readConfigFile->setEnabled(true);
//// ui->writeConfigFile->setEnabled(true);
// for (int i = 0; i < data.length(); i++) {
// qDebug() << QString::asprintf("0x%x", data.at(i));
// }
// uint16_t crc16;
// uint8_t *repData = (uint8_t *)data.data();
//// QMessageBox::standardButton reply;
// if (data.length() < 17) {
// goto error;
// }
// /* 起始标志 */
// if (*repData != 'S' || *(repData + 1) != 'L') {
// goto error;
// }
//// /* 地址 */
//// if (data.at(0) != 'S' || data.at(1) != 'L') {
//// goto error;
//// }
// if (*(repData + 9) != 0xD0) {
// goto error;
// }
// crc16 = (*(repData + 14) << 8) | *(repData + 15);
// if (crc16 != modbusCrc(repData, 14)) {
// goto error;
// }
// if (*(repData + 12) != 0xAA) {
// goto error;
// }
// QMessageBox::information(this,
// tr("配置文件"),
// tr("写入配置文件成功"),
// QMessageBox::Ok,
// QMessageBox::Ok);
//// reply = QMessageBox::information(this, "写入成功"
// return;
//error:
// QMessageBox::information(this,
// tr("配置文件"),
// tr("写入配置文件失败"),
// QMessageBox::Ok,
// QMessageBox::Ok);
}
uint8_t *MainWindow::analysisReadCfgData(uint8_t **cfgData)
{
QJsonValue tempValue = jsonModel->json_doc.object().value("充电控制盒配置文件");
QJsonObject rootObj;
QJsonObject tempObject;
rootObj = tempValue.toObject();
uint16_t dataType;
dataType = (**cfgData << 8) | *(*cfgData + 1);
/* 唯一ID */
if (dataType == 0x0000) {
tempValue = rootObj.value("更改设备的唯一地址");
tempObject = tempValue.toObject();
tempValue = tempObject.value("unique_Device_ID");
QJsonArray tempArray = tempValue.toArray();
// tempArray.replace(0, QString::asprintf("0x%x", (*(*cfgData + 2))));
// tempArray.replace(1, QString::asprintf("0x%x", (*(*cfgData + 3))));
// tempArray.replace(2, QString::asprintf("0x%x", (*(*cfgData + 4))));
// tempArray.replace(3, QString::asprintf("0x%x", (*(*cfgData + 5))));
// tempArray.replace(4, QString::asprintf("0x%x", (*(*cfgData + 6))));
// tempArray.replace(5, QString::asprintf("0x%x", (*(*cfgData + 7))));
// tempArray.replace(6, QString::asprintf("0x%x", (*(*cfgData + 8))));
// tempObject["unique_Device_ID"] = tempArray;
return (*cfgData + 9);
}
/* 对上通信波特率 */
if (dataType == 0x0001) {
tempValue = rootObj.value("SL协议对上通信波特率");
tempObject = tempValue.toObject();
tempObject["SL_Protocol_Communication_Baud_Rate_Up"] = QString::asprintf("0x%x", (*(*cfgData + 2)));
// tempObject["SL_Protocol_Communication_Baud_Rate_Up"] = "0x03";
rootObj["SL协议对上通信波特率"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 3);
}
/* 对下通信波特率 */
if (dataType == 0x0002) {
tempValue = rootObj.value("SL协议对下通信波特率");
tempObject = tempValue.toObject();
tempObject["SL_Protocol_Communication_Baud_Rate_Down"] = QString::asprintf("0x%x", (*(*cfgData + 2)));
rootObj["SL协议对下通信波特率"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 3);
}
/* 电源盒类型 */
if (dataType == 0x0100) {
tempValue = rootObj.value("电源盒类型");
tempObject = tempValue.toObject();
tempObject["power_Box_Type"] = QString::asprintf("0x%x", (*(*cfgData + 2)));
rootObj["电源盒类型"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 3);
}
/* 恒压充电阈值电压 */
if (dataType == 0x0101) {
tempValue = rootObj.value("恒压充电阈值电压");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2)) | (*(*cfgData + 3))) / 10.0f;
tempObject["constant_Voltage_V"] = tempF;
rootObj["恒压充电阈值电压"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 浮充充电阈值电流 */
if (dataType == 0x0102) {
tempValue = rootObj.value("浮充充电阈值电流");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["float_I"] = tempF;
rootObj["浮充充电阈值电流"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 启动充电太阳能板开路电压 */
if (dataType == 0x0103) {
tempValue = rootObj.value("启动充电太阳能板开路电压");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["start_Solar_Open_Circuit_V"] = tempF;
rootObj["启动充电太阳能板开路电压"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 停止充电太阳能板输出电压 */
if (dataType == 0x0104) {
tempValue = rootObj.value("停止充电太阳能板输出电压");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["stop_Solar_Output_Circuit_V"] = tempF;
rootObj["停止充电太阳能板输出电压"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 启动时开路电压检测间隔 */
if (dataType == 0x0105) {
tempValue = rootObj.value("启动时开路电压检测间隔");
tempObject = tempValue.toObject();
uint16_t tempU16 = (*(*cfgData + 2) << 8) | (*(*cfgData + 3));
tempObject["check_Can_Start_Time"] = tempU16;
rootObj["启动时开路电压检测间隔"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 短路判断延时 */
if (dataType == 0x0106) {
tempValue = rootObj.value("短路判断延时");
tempObject = tempValue.toObject();
uint16_t tempU16 = (*(*cfgData + 2) << 8) | (*(*cfgData + 3));
tempObject["short_Circuit_Judgment_Delay"] = tempU16;
rootObj["短路判断延时"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 前端输入功率不足判断延时 */
if (dataType == 0x0107) {
tempValue = rootObj.value("前端输入功率不足判断延时");
tempObject = tempValue.toObject();
uint16_t tempU16 = (*(*cfgData + 2) << 8) | (*(*cfgData + 3));
tempObject["input_Power_Low_Judgment_Delay"] = tempU16;
rootObj["前端输入功率不足判断延时"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 前端输入功率不足后再次输出延时 */
if (dataType == 0x0108) {
tempValue = rootObj.value("前端输入功率不足后再次输出延时");
tempObject = tempValue.toObject();
uint16_t tempU16 = (*(*cfgData + 2) << 8) | (*(*cfgData + 3));
tempObject["input_Power_Low_Again_Output_Delay"] = tempU16;
rootObj["前端输入功率不足后再次输出延时"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 第一段保护延时 */
if (dataType == 0x0109) {
tempValue = rootObj.value("第一段保护延时");
tempObject = tempValue.toObject();
uint16_t tempU16 = (*(*cfgData + 2) << 8) | (*(*cfgData + 3));
tempObject["first_Stage_Protection_Delay"] = tempU16;
rootObj["第一段保护延时"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 第一段保护的电流 */
if (dataType == 0x010A) {
tempValue = rootObj.value("第一段保护的电流");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["first_Stage_Protection_Curr"] = tempF;
rootObj["第一段保护的电流"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 第二段保护延时 */
if (dataType == 0x010B) {
tempValue = rootObj.value("第二段保护延时");
tempObject = tempValue.toObject();
uint16_t tempU16 = (*(*cfgData + 2) << 8) | (*(*cfgData + 3));
tempObject["second_Stage_Protection_Delay"] = tempU16;
rootObj["第二段保护延时"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 第二段保护的电流 */
if (dataType == 0x010C) {
tempValue = rootObj.value("第二段保护的电流");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["second_Stage_Protection_Curr"] = tempF;
rootObj["第二段保护的电流"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 第三段保护延时 */
if (dataType == 0x010D) {
tempValue = rootObj.value("第三段保护延时");
tempObject = tempValue.toObject();
int tempU32 = (*(*cfgData + 2) << 24) | (*(*cfgData + 3) << 16) | (*(*cfgData + 4) << 8) | (*(*cfgData + 5));
tempObject["third_Stage_Protection_Delay"] = tempU32;
rootObj["第三段保护延时"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 6);
}
/* 第三段保护的电流 */
if (dataType == 0x010E) {
tempValue = rootObj.value("第三段保护的电流");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["third_Stage_Protection_Curr"] = tempF;
rootObj["第三段保护的电流"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 前端输入功率不足检测延时 */
if (dataType == 0x010F) {
tempValue = rootObj.value("前端输入功率不足检测延时");
tempObject = tempValue.toObject();
uint16_t tempU16 = (*(*cfgData + 2) << 8) | (*(*cfgData + 3));
tempObject["input_Power_Low_Detection_Delay"] = tempU16;
rootObj["前端输入功率不足检测延时"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 前端输入功率不足检测电压 */
if (dataType == 0x0110) {
tempValue = rootObj.value("前端输入功率不足检测电压");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["input_Power_Low_Detection_Volt"] = tempF;
rootObj["前端输入功率不足检测电压"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 最大太阳能板输出电压 */
if (dataType == 0x0111) {
tempValue = rootObj.value("最大太阳能板输出电压");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["max_Open_Solar_Output_Circuit_V"] = tempF;
rootObj["最大太阳能板输出电压"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 最大充电电流 */
if (dataType == 0x0112) {
tempValue = rootObj.value("最大充电电流");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["max_Charg_Curr"] = tempF;
rootObj["最大充电电流"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 检测回路阻抗时的最小充电电流 */
if (dataType == 0x0113) {
tempValue = rootObj.value("检测回路阻抗时的最小充电电流");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["min_Check_Loop_Impedance_Charg_Curr"] = tempF;
rootObj["检测回路阻抗时的最小充电电流"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 全功率输出温度 */
if (dataType == 0x0114) {
tempValue = rootObj.value("全功率输出温度");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["full_Power_Output_Temperature"] = tempF;
rootObj["全功率输出温度"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 降功率输出温度 */
if (dataType == 0x0115) {
tempValue = rootObj.value("降功率输出温度");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["reduce_Power_Output_Temperature"] = tempF;
rootObj["降功率输出温度"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 停止输出温度 */
if (dataType == 0x0116) {
tempValue = rootObj.value("停止输出温度");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["stop_PowerOutput_Temperature"] = tempF;
rootObj["停止输出温度"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 恒压充电时的输出电压 */
if (dataType == 0x0117) {
tempValue = rootObj.value("恒压充电时的输出电压");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["constant_Voltage_Charge_V"] = tempF;
rootObj["恒压充电时的输出电压"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 浮充充电时的输出电压 */
if (dataType == 0x0118) {
tempValue = rootObj.value("浮充充电时的输出电压");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["float_ChargeV"] = tempF;
rootObj["浮充充电时的输出电压"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 充电时开路电压采集间隔 */
if (dataType == 0x0119) {
tempValue = rootObj.value("充电时开路电压采集间隔");
tempObject = tempValue.toObject();
uint16_t tempU16 = (*(*cfgData + 2) << 8) | (*(*cfgData + 3));
tempObject["collect_OpenCircuit_Voltage_Time"] = tempU16;
rootObj["充电时开路电压采集间隔"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
/* 反向充电保护电流 */
if (dataType == 0x011A) {
tempValue = rootObj.value("反向充电保护电流");
tempObject = tempValue.toObject();
float tempF = (float)((*(*cfgData + 2) << 8) | (*(*cfgData + 3))) / 10.0f;
tempObject["reverse_Charge_Protection_Curr"] = tempF;
rootObj["反向充电保护电流"] = tempObject;
QJsonObject jsonDocObj = jsonModel->json_doc.object();
jsonDocObj["充电控制盒配置文件"] = rootObj;
jsonModel->json_doc.setObject(jsonDocObj);
return (*cfgData + 4);
}
qDebug() << "analysisCfgData error" << dataType;
return NULL;
} }

View File

@ -41,6 +41,8 @@ private:
void scanSerialPort(); void scanSerialPort();
void parityItemInit(); void parityItemInit();
uint8_t *analysisReadCfgData(uint8_t **cfgData);
uint16_t modbusCrc(uint8_t *arr_buff, uint8_t len); uint16_t modbusCrc(uint8_t *arr_buff, uint8_t len);
private slots: private slots: