完善读取和下发配置文件返回数据的解析
This commit is contained in:
parent
1ede325a3e
commit
240509beb4
|
@ -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))
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
727
mainwindow.cpp
727
mainwindow.cpp
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Reference in New Issue