Browse Source

Initial Commit.

master
zhangsan 4 years ago
commit
af59599463
  1. 53
      .gitignore
  2. 51
      QCPShow.pro
  3. 318
      QCPShow.pro.user
  4. 3
      ReadMe.md
  5. 18
      ccwidgets/cqlineedit.cpp
  6. 18
      ccwidgets/cqlineedit.h
  7. 19
      ccwidgets/cqspinbox.cpp
  8. 20
      ccwidgets/cqspinbox.h
  9. 18
      ccwidgets/cqtextedit.cpp
  10. 18
      ccwidgets/cqtextedit.h
  11. 44
      ccwidgets/cqwidgetspinbox.cpp
  12. 36
      ccwidgets/cqwidgetspinbox.h
  13. BIN
      image/audio.png
  14. BIN
      image/back.png
  15. BIN
      image/back1.png
  16. BIN
      image/close_normal.png
  17. BIN
      image/header.png
  18. BIN
      image/open_focus.png
  19. BIN
      image/open_normal.png
  20. BIN
      image/pause1_normal.png
  21. BIN
      image/pause_focus.png
  22. BIN
      image/pause_normal.png
  23. BIN
      image/showmaxsizebtn.png
  24. BIN
      image/showminisizebtn.png
  25. BIN
      image/shownormalbtn.png
  26. BIN
      image/shutdown.png
  27. BIN
      image/start1_normal.png
  28. BIN
      image/start_focus.png
  29. BIN
      image/start_normal.png
  30. BIN
      image/stop1_normal.png
  31. BIN
      image/stop_focus.png
  32. BIN
      image/stop_normal.png
  33. BIN
      image/volume.psd
  34. BIN
      image/volume_mute.png
  35. BIN
      image/volume_normal.png
  36. 11
      main.cpp
  37. 14
      mainwidget.cpp
  38. 22
      mainwidget.h
  39. 20
      mainwidget.ui
  40. 5
      resource.qrc
  41. 149
      serial/serialport.cpp
  42. 36
      serial/serialport.h
  43. 233
      util/commonutil.cpp
  44. 30
      util/commonutil.h

53
.gitignore

@ -0,0 +1,53 @@
# ---> Qt
# C++ objects and libs
*.slo
*.lo
*.o
*.a
*.la
*.lai
*.so
*.so.*
*.dll
*.dylib
# Qt-es
object_script.*.Release
object_script.*.Debug
*_plugin_import.cpp
/.qmake.cache
/.qmake.stash
*.pro.user
*.pro.user.*
*.qbs.user
*.qbs.user.*
*.moc
moc_*.cpp
moc_*.h
qrc_*.cpp
ui_*.h
*.qmlc
*.jsc
Makefile*
*build-*
*.qm
*.prl
# Qt unit tests
target_wrapper.*
# QtCreator
*.autosave
# QtCreator Qml
*.qmlproject.user
*.qmlproject.user.*
# QtCreator CMake
CMakeLists.txt.user*
# QtCreator 4.8< compilation database
compile_commands.json
# QtCreator local machine specific files for imported projects
*creator.user*

51
QCPShow.pro

@ -0,0 +1,51 @@
#-------------------------------------------------
#
# Project created by QtCreator 2021-10-18T14:20:08
#
#-------------------------------------------------
QT += core gui
QT += serialport network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = QCPShow
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += main.cpp\
mainwidget.cpp \
serial/serialport.cpp \
ccwidgets/cqlineedit.cpp \
ccwidgets/cqspinbox.cpp \
ccwidgets/cqtextedit.cpp \
ccwidgets/cqwidgetspinbox.cpp \
util/commonutil.cpp
HEADERS += mainwidget.h \
serial/serialport.h \
ccwidgets/cqlineedit.h \
ccwidgets/cqspinbox.h \
ccwidgets/cqtextedit.h \
ccwidgets/cqwidgetspinbox.h \
util/commonutil.h
FORMS += mainwidget.ui
RESOURCES += \
resource.qrc
DISTFILES += \
.gitignore \
ReadMe.md

318
QCPShow.pro.user

@ -0,0 +1,318 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.2.1, 2021-10-18T14:21:25. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{fe03815e-74e2-457e-b60c-e66368cd4ce4}</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"/>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.8.0 MinGW 32bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.8.0 MinGW 32bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.58.win32_mingw53_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="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/Qt/QtSpace/build-QcpShow-Desktop_Qt_5_8_0_MinGW_32bit-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.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<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>
</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"></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.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<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>
</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"></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.DefaultDisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/Qt/QtSpace/build-QcpShow-Desktop_Qt_5_8_0_MinGW_32bit-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.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<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>
</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"></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.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<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>
</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"></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.DefaultDisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/Qt/QtSpace/build-QcpShow-Desktop_Qt_5_8_0_MinGW_32bit-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.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<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>
</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"></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.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<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>
</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"></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.DefaultDisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</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"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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="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="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.DefaultDisplayName">QcpShow</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/Qt/QtSpace/QcpShow/QcpShow.pro</value>
<value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">QcpShow.pro</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default"></value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">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>
</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">18</value>
</data>
<data>
<variable>Version</variable>
<value type="int">18</value>
</data>
</qtcreator>

3
ReadMe.md

@ -0,0 +1,3 @@
## 绿道窗口显示程序
//TODO

18
ccwidgets/cqlineedit.cpp

@ -0,0 +1,18 @@
#include "cqlineedit.h"
CQLineEdit::CQLineEdit(QWidget *parent) : QLineEdit(parent)
{
this->setFocusPolicy(Qt::StrongFocus);
}
void CQLineEdit::focusInEvent(QFocusEvent *event)
{
QLineEdit::focusInEvent(event);
emit GetFocus();
}
void CQLineEdit::focusOutEvent(QFocusEvent *event)
{
QLineEdit::focusOutEvent(event);
emit LostFocus(this->text());
}

18
ccwidgets/cqlineedit.h

@ -0,0 +1,18 @@
#ifndef CQLINEEDIT_H
#define CQLINEEDIT_H
#include <QLineEdit>
class CQLineEdit : public QLineEdit
{
Q_OBJECT
public:
explicit CQLineEdit(QWidget *parent = 0);
void focusInEvent(QFocusEvent *event); //覆盖这两个函数
void focusOutEvent(QFocusEvent *event);
signals:
void GetFocus(); //获得焦点信号
void LostFocus(const QString &); //失去焦点信号
};
#endif // CQLINEEDIT_H

19
ccwidgets/cqspinbox.cpp

@ -0,0 +1,19 @@
#include "cqspinbox.h"
CQSpinBox::CQSpinBox(QWidget *parent) : QSpinBox(parent)
{
// this->setFocusPolicy(Qt::StrongFocus);
}
void CQSpinBox::focusInEvent(QFocusEvent *event)
{
QSpinBox::focusInEvent(event);
emit GetFocus();
}
void CQSpinBox::focusOutEvent(QFocusEvent *event)
{
QSpinBox::focusOutEvent(event);
emit LostFocus(this->text());
}

20
ccwidgets/cqspinbox.h

@ -0,0 +1,20 @@
#ifndef CQSPINBOX_H
#define CQSPINBOX_H
#include <QSpinBox>
#include <QKeyEvent>
class CQSpinBox : public QSpinBox
{
Q_OBJECT
public:
explicit CQSpinBox(QWidget *parent = 0);
void focusInEvent(QFocusEvent *event); //覆盖这两个函数
void focusOutEvent(QFocusEvent *event);
signals:
void GetFocus(); //获得焦点信号
void LostFocus(const QString &); //失去焦点信号
};
#endif // CQLINEEDIT_H

18
ccwidgets/cqtextedit.cpp

@ -0,0 +1,18 @@
#include "cqtextedit.h"
CQTextEdit::CQTextEdit(QWidget *parent) : QTextEdit(parent)
{
this->setFocusPolicy(Qt::StrongFocus);
}
void CQTextEdit::focusInEvent(QFocusEvent *event)
{
QTextEdit::focusInEvent(event);
emit GetFocus();
}
void CQTextEdit::focusOutEvent(QFocusEvent *event)
{
QTextEdit::focusOutEvent(event);
emit LostFocus(this->toPlainText());
}

18
ccwidgets/cqtextedit.h

@ -0,0 +1,18 @@
#ifndef CQTEXTEDIT_H
#define CQTEXTEDIT_H
#include <QTextEdit>
class CQTextEdit : public QTextEdit
{
Q_OBJECT
public:
explicit CQTextEdit(QWidget *parent = 0);
void focusInEvent(QFocusEvent *event); //覆盖这两个函数
void focusOutEvent(QFocusEvent *event);
signals:
void GetFocus(); //获得焦点信号
void LostFocus(const QString &); //失去焦点信号
};
#endif // CQTEXTEDIT_H

44
ccwidgets/cqwidgetspinbox.cpp

@ -0,0 +1,44 @@
#include "cqwidgetspinbox.h"
CQWidgetSpinBox::CQWidgetSpinBox(QWidget *parent) : QWidget(parent)
{
// this->setFocusPolicy(Qt::StrongFocus);
// this->setStyleSheet(QString::fromUtf8("border:1px solid"));
this->init();
}
void CQWidgetSpinBox::focusInEvent(QFocusEvent *event)
{
QWidget::focusInEvent(event);
emit GetFocus();
}
void CQWidgetSpinBox::focusOutEvent(QFocusEvent *event)
{
QWidget::focusOutEvent(event);
emit LostFocus();
}
void CQWidgetSpinBox::init()
{
m_lineEdit = new QLineEdit;
m_toolButtonUp = new QToolButton;
m_toolButtonDown = new QToolButton;
m_hLayout = new QHBoxLayout;
m_vLayout = new QVBoxLayout;
// m_lineEdit->setStyleSheet("color: rgb(255, 255, 255);font: 10pt 'Adobe 黑体 Std R'';");
// m_lineEdit->setFixedSize(60,20);;
m_toolButtonUp->setFixedSize(15,11);
m_toolButtonDown->setFixedSize(15,11);
m_vLayout->addWidget(m_toolButtonUp);
m_vLayout->addWidget(m_toolButtonDown);
m_hLayout->addWidget(m_lineEdit);
m_hLayout->addLayout(m_vLayout);
setContentsMargins(0,0,0,0);
m_vLayout->setSpacing(0);
m_vLayout->setMargin(0);
m_hLayout->setSpacing(0);
m_hLayout->setMargin(0);
setLayout(m_hLayout);
}

36
ccwidgets/cqwidgetspinbox.h

@ -0,0 +1,36 @@
#ifndef CQWIDGETSPINBOX_H
#define CQWIDGETSPINBOX_H
#include <QWidget>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QLineEdit>
#include <QToolButton>
class CQWidgetSpinBox : public QWidget
{
Q_OBJECT
public:
explicit CQWidgetSpinBox(QWidget *parent = 0);
void focusInEvent(QFocusEvent *event); //覆盖这两个函数
void focusOutEvent(QFocusEvent *event);
void setText(QString s);
QString text();
private:
QLineEdit *m_lineEdit;
QToolButton *m_toolButtonUp, *m_toolButtonDown;
QHBoxLayout *m_hLayout;
QVBoxLayout *m_vLayout;
void init();
signals:
void GetFocus(); //获得焦点信号
void LostFocus(); //失去焦点信号
void UpClicked();
void DownClicked();
};
#endif // CQWIDGETSPINBOX_H

BIN
image/audio.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
image/back.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
image/back1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
image/close_normal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

BIN
image/header.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
image/open_focus.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
image/open_normal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
image/pause1_normal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
image/pause_focus.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
image/pause_normal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
image/showmaxsizebtn.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
image/showminisizebtn.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
image/shownormalbtn.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
image/shutdown.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
image/start1_normal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
image/start_focus.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
image/start_normal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
image/stop1_normal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
image/stop_focus.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
image/stop_normal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
image/volume.psd

Binary file not shown.

BIN
image/volume_mute.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
image/volume_normal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

11
main.cpp

@ -0,0 +1,11 @@
#include "mainwidget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWidget w;
w.show();
return a.exec();
}

14
mainwidget.cpp

@ -0,0 +1,14 @@
#include "mainwidget.h"
#include "ui_mainwidget.h"
MainWidget::MainWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MainWidget)
{
ui->setupUi(this);
}
MainWidget::~MainWidget()
{
delete ui;
}

22
mainwidget.h

@ -0,0 +1,22 @@
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include <QWidget>
namespace Ui {
class MainWidget;
}
class MainWidget : public QWidget
{
Q_OBJECT
public:
explicit MainWidget(QWidget *parent = 0);
~MainWidget();
private:
Ui::MainWidget *ui;
};
#endif // MAINWIDGET_H

20
mainwidget.ui

@ -0,0 +1,20 @@
<ui version="4.0">
<class>MainWidget</class>
<widget class="QWidget" name="MainWidget" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle" >
<string>MainWidget</string>
</property>
</widget>
<layoutDefault spacing="6" margin="11" />
<pixmapfunction></pixmapfunction>
<resources/>
<connections/>
</ui>

5
resource.qrc

@ -0,0 +1,5 @@
<RCC>
<qresource prefix="/">
<file>image/header.png</file>
</qresource>
</RCC>

149
serial/serialport.cpp

@ -0,0 +1,149 @@
#include "serialport.h"
#include "util/commonutil.h"
#include <QtCore>
SerialPort::SerialPort(QObject *parent)
:QObject(parent)
{
m_serial = Q_NULLPTR;
m_connected = false;
m_rbuffer.clear();
m_wbuffer.clear();
m_currentPortName = "";
m_currentBaudRate = "";
}
SerialPort::~SerialPort(){}
/**
* 8N1 (81)
* @brief SerialPort::openSerialPort
* @param serialName
* @param baudrate
*/
#if 0
bool SerialPort::openSerialPort(QString serialName, quint32 baudrate)
{
qDebug() << "QSeriaport Attempting connect to " << serialName << "," << baudrate;
//如果已经打开,先执行关闭操作
disConnected();
//记录当前正在使用的串口信息
m_currentPortName = serialName;
m_currentBaudRate = QString::number(baudrate);
//设置串口属性,并且打开
m_serial = new QSerialPort();
//connect(m_serial,SIGNAL(readyRead()),this,SLOT(readData));
connect(m_serial,&QSerialPort::readyRead,this,&SerialPort::readData);
connect(m_serial,SIGNAL(error(QSerialPort::SerialPortError)),this,
SLOT(onError(QSerialPort::SerialPortError)));
m_serial->setPortName((serialName));
m_serial->setBaudRate(baudrate);
m_serial->setDataBits(QSerialPort::Data8);
m_serial->setParity(QSerialPort::NoParity);
m_serial->setStopBits(QSerialPort::OneStop);
m_serial->setFlowControl(QSerialPort::NoFlowControl);
if(!m_serial->open(QIODevice::ReadWrite)){
qCritical() << "Open Serial failed: " << m_serial->errorString();
return false;
}
m_connected = true;
qDebug() << "QSerialPort connected to " << serialName << "," << baudrate;
return true;
}
#else
bool SerialPort::openSerialPort(QString serialName, quint32 baudrate, QSerialPort::DataBits dataBits, QSerialPort::StopBits stopbits, QSerialPort::Parity parity, QSerialPort::FlowControl flowControl)
{
qDebug() << "QSeriaport Attempting connect to " << serialName << "," << baudrate;
//如果已经打开,先执行关闭操作
disConnected();
//记录当前正在使用的串口信息
m_currentPortName = serialName;
m_currentBaudRate = QString::number(baudrate);
//设置串口属性,并且打开
m_serial = new QSerialPort();
//connect(m_serial,SIGNAL(readyRead()),this,SLOT(readData));
connect(m_serial,&QSerialPort::readyRead,this,&SerialPort::readData);
connect(m_serial,SIGNAL(error(QSerialPort::SerialPortError)),this,
SLOT(onError(QSerialPort::SerialPortError)));
m_serial->setPortName((serialName));
m_serial->setBaudRate(baudrate);
m_serial->setDataBits(dataBits);
m_serial->setParity(parity);
m_serial->setStopBits(stopbits);
m_serial->setFlowControl(flowControl);
// if(dataBits == QSerialPort::Data6){
// qDebug()<<"Data6";
// }
if(!m_serial->open(QIODevice::ReadWrite)){
qCritical() << "Open Serial failed: " << m_serial->errorString();
return false;
}
m_connected = true;
qDebug() << "QSerialPort connected to " << serialName << "," << baudrate;
return true;
}
#endif
void SerialPort::disConnected()
{
m_connected = false;
if(m_serial != Q_NULLPTR)
{
if(m_serial->isOpen()){
m_serial->close();
}
m_serial->deleteLater();
m_serial = Q_NULLPTR;
qDebug() << "disconnect from " << m_currentPortName << "," << m_currentBaudRate;
}
}
bool SerialPort::isConnected()
{
return m_connected;
}
qint64 SerialPort::writeData(QByteArray &data)
{
if(m_connected == false)
{
return 0;
}
//write本身并不保证将数据全部写入,它只返回实际写入的字节数
qint64 total = data.size(), writed = 0,n = 0;
while(writed < total)
{
if((n = m_serial->write(data.mid(writed))) < 0){
break;
}
writed += n;
}
qDebug() << QDateTime::currentMSecsSinceEpoch() << " " << "Serial send: " << writed << "," << CommonUtil::ByteArrayToHexString(data);
return writed;
}
void SerialPort::readData()
{
QByteArray ba = m_serial->readAll();
emit serialReadData(ba);
//添加协议
//qDebug() << ba;
}
void SerialPort::onError(QSerialPort::SerialPortError error)
{
if(error != QSerialPort::NoError)
{
qCritical() << "SerialError:" << m_serial->errorString();
}
}

36
serial/serialport.h

@ -0,0 +1,36 @@
#ifndef SERIALPORT_H
#define SERIALPORT_H
#include <QSerialPort>
/**
*
* @brief The SerialPort class
*/
class SerialPort : public QObject
{
Q_OBJECT
public:
SerialPort(QObject *parent = 0);
~SerialPort();
private:
QString m_currentPortName; //当前串口名
QString m_currentBaudRate; //当前串口波特率
QSerialPort *m_serial; //Qt串口对象
bool m_connected; //是否连接标志
QByteArray m_rbuffer; //读缓冲区
QByteArray m_wbuffer; //写缓冲区
public:
bool openSerialPort(QString serialName,quint32 baudrate);
bool openSerialPort(QString serialName, quint32 baudrate, QSerialPort::DataBits dataBits, QSerialPort::StopBits stopbits, QSerialPort::Parity parity, QSerialPort::FlowControl flowControl);
void disConnected();
bool isConnected();
public slots:
void onError(QSerialPort::SerialPortError error);
void readData();
qint64 writeData(QByteArray &data);
signals:
void serialReadData(QByteArray &data);
};
#endif // SERIALPORT_H

233
util/commonutil.cpp

@ -0,0 +1,233 @@
#include "commonutil.h"
#include <QNetworkInterface>
#include <QList>
#include <QDataStream>
CommonUtil::CommonUtil()
{
}
QByteArray CommonUtil::HexStringToByteArray(QString HexString)
{
bool ok;
QByteArray ret;
HexString = HexString.trimmed();
HexString = HexString.simplified();
QStringList sl = HexString.split(" ");
foreach (QString s, sl) {
if(!s.isEmpty()) {
char c = s.toInt(&ok,16)&0xFF;
if(ok){
ret.append(c);
}else{
qDebug()<<"非法的16进制字符:"<<s;
}
}
}
return ret;
}
QString CommonUtil::ByteArrayToHexString(const QByteArray &ba)
{
//QDataStream out(&ba,QIODevice::ReadWrite); //将str的数据 读到out里面去
QDataStream out(ba); //将str的数据 读到out里面去
QString buf;
while(!out.atEnd())
{
qint8 outChar = 0;
out >> outChar; //每次一个字节的填充到 outchar
QString str = QString("%1").arg(outChar & 0xFF,2,16,QLatin1Char('0')).toUpper() + QString(" "); //2 字符宽度
buf += str;
}
return buf;
}
QString CommonUtil::ByteArrayToNonZeroString(const QByteArray &ba)
{
QDataStream out(ba); //将str的数据 读到out里面去
QString buf;
while(!out.atEnd())
{
qint8 outChar = 0;
out >> outChar; //每次一个字节的填充到 outchar
QString str = outChar != 0 ? QString(QChar(outChar)) : "\\0";
buf += str;
}
return buf;
}
QByteArray CommonUtil::quint8ArrToQByteArray(quint8 *arr,int lengths)
{
QByteArray ba;
for(int i=0;i<lengths;i++)
{
ba[i] = arr[i];
}
return ba;
}
#define I_1pA (1)
#define I_1nA (I_1pA * 1000)
#define I_1uA (I_1nA * 1000)
#define I_1mA (I_1uA * 1000)
QString CommonUtil::i_pA_2_text(unsigned int iPA)
{
qint64 ipa = (qint64)iPA;
if(ipa >= I_1mA)
{
return QString("%1mA").arg(ipa * 100 / I_1mA / 100.0);
}
else if(ipa >= I_1uA)
{
return QString("%1uA").arg(ipa * 100 / I_1uA / 100.0);
}
else if(ipa >= I_1nA)
{
return QString("%1nA").arg(ipa * 100 / I_1nA / 100.0);
}
else if(ipa >= I_1pA)
{
return QString("%1pA").arg(ipa * 100 / I_1pA / 100.0);
}
return "0";
}
void CommonUtil::crc16(quint8 crc[], quint8 data[],int pos, int len)
{
int wcrc = 0xFFFF;// 预置16位crc寄存器,初值全部为1
int temp;// 定义中间变量
int i = 0, j = 0, k = pos;// 定义计数
for (i = 0; i < len; i++)// 循环计算每个数据
{
temp = (data[k] & 0xFF);// 将八位数据与crc寄存器亦或
k++;// 指针地址增加,指向下个数据
wcrc ^= temp;// 将数据存入crc寄存器
for (j = 0; j < 8; j++)// 循环计算数据的
{
if ((wcrc & 0x0001) == 1)// 判断右移出的是不是1,如果是1则与多项式进行异或。
{
wcrc >>= 1;// 先将数据右移一位
wcrc ^= 0XA001;// 与上面的多项式进行异或
} else// 如果不是1,则直接移出
{
wcrc >>= 1;// 直接移出
}
}
}
temp = wcrc;// crc的值
crc[0] = wcrc & 0xFF; // crc的低八位
crc[1] = (wcrc >> 8) & 0xFF; // crc的高八位
}
//判断是否大端字节序
int CommonUtil::isBigEndianOrder()
{
int iVal = 1;
char *pChar = (char*)(&iVal);
if(*pChar == 1) //低字节在低地址(小端)
return false;
return true; //(0x00000001) 低字节在高地址(大端) Aix采用的是大端法
}
#ifdef Q_OS_WIN
quint32 CommonUtil::Lc_ntohl(quint32 data)
{
quint32 res = 0;
if(data == 0 || isBigEndianOrder()){
res = data;
}else{
res = (((data >> 0) & 0xFF) << 24) | (((data >> 8) & 0xFF) << 16) | (((data >> 16) & 0xFF) << 8) | (((data >> 24) & 0xFF) << 0);
}
return res;
}
quint32 CommonUtil::Lc_htonl(quint32 data)
{
quint32 res = 0;
if(data == 0 || isBigEndianOrder()){
res = data;
}else{
res = (((data >> 0) & 0xFF) << 24) | (((data >> 8) & 0xFF) << 16) | (((data >> 16) & 0xFF) << 8) | (((data >> 24) & 0xFF) << 0);
}
return res;
}
quint16 CommonUtil::Lc_ntohs(quint16 data)
{
quint16 res = 0;
if(data == 0 || isBigEndianOrder()){
res = data;
}else{
res = (((data >> 0) & 0xFF) << 8) | (((data >> 8) & 0xFF) << 0) ;
}
return res;
}
quint16 CommonUtil::Lc_htons(quint16 data)
{
quint16 res = 0;
if(data == 0 || isBigEndianOrder()){
res = data;
}else{
res = (((data >> 0) & 0xFF) << 8) | (((data >> 8) & 0xFF) << 0) ;
}
return res;
}
#endif
void CommonUtil::Lc_buf_copy_uc(quint8 *d,const quint8 *s,quint32 num)
{
quint32 i;
for(i = 0; i < num; i ++)
{
*(d+i) = *(s+i);
}
}
void CommonUtil::delay(quint32 n)
{
while(n--);
}
QString CommonUtil::getHostIpAddress()
{
QString strIpAddress;
QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses();
// 获取第一个本主机的IPv4地址
int nListSize = ipAddressesList.size();
for (int i = 0; i < nListSize; ++i)
{
if (ipAddressesList.at(i) != QHostAddress::LocalHost &&
ipAddressesList.at(i).toIPv4Address()) {
strIpAddress = ipAddressesList.at(i).toString();
break;
}
}
// 如果没有找到,则以本地IP地址为IP
if (strIpAddress.isEmpty())
strIpAddress = QHostAddress(QHostAddress::LocalHost).toString();
return strIpAddress;
}
QString CommonUtil::getHostMacAddress()
{
QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces();// 获取所有网络接口列表
int nCnt = nets.count();
QString strMacAddr = "";
for(int i = 0; i < nCnt; i ++)
{
// 如果此网络接口被激活并且正在运行并且不是回环地址,则就是我们需要找的Mac地址
if(nets[i].flags().testFlag(QNetworkInterface::IsUp) && nets[i].flags().testFlag(QNetworkInterface::IsRunning) && !nets[i].flags().testFlag(QNetworkInterface::IsLoopBack))
{
strMacAddr = nets[i].hardwareAddress();
break;
}
}
return strMacAddr;
}

30
util/commonutil.h

@ -0,0 +1,30 @@
#ifndef COMMONUTIL_H
#define COMMONUTIL_H
#include <QByteArray>
class CommonUtil
{
public:
CommonUtil();
static QByteArray quint8ArrToQByteArray(quint8 *arr,int lengths);
static void crc16(quint8 crc[], quint8 data[], int pos,int len);
static int isBigEndianOrder();
#ifdef Q_OS_WIN
static quint32 Lc_ntohl(quint32 data);
static quint32 Lc_htonl(quint32 data);
static quint16 Lc_ntohs(quint16 data);
static quint16 Lc_htons(quint16 data);
#endif
static void Lc_buf_copy_uc(quint8 *d,const quint8 *s,quint32 num);
static void delay(quint32 n);
static QString getHostIpAddress();
static QString getHostMacAddress();
static QString ByteArrayToHexString(const QByteArray &ba);
static QByteArray HexStringToByteArray(QString HexString);
static QString ByteArrayToNonZeroString(const QByteArray &ba);
static QString i_pA_2_text(unsigned int iPA);
};
#endif // COMMONUTIL_H
Loading…
Cancel
Save