Compare commits

..

No commits in common. "v2.0" and "master" have entirely different histories.
v2.0 ... master

37 changed files with 2422 additions and 11975 deletions

65
.gitignore vendored
View File

@ -1,65 +0,0 @@
<<<<<<< HEAD
=======
<<<<<<< HEAD
<<<<<<< HEAD
# Build and Release Folders
bin-debug/
bin-release/
[Oo]bj/
[Bb]in/
# Other files and folders
.settings/
# Executables
*.swf
*.air
*.ipa
*.apk
# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
# should NOT be excluded as they contain compiler settings and other important
# information for Eclipse / Flash Builder.
=======
=======
>>>>>>> 8c8f42896f9ce7278b17e528952b417e775bcbb8
>>>>>>> 2b89ef0 (202304passion)
# Prerequisites
*.d
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
<<<<<<< HEAD
=======
<<<<<<< HEAD
>>>>>>> 8c8f42896f9ce7278b17e528952b417e775bcbb8
=======
>>>>>>> 8c8f42896f9ce7278b17e528952b417e775bcbb8
>>>>>>> 2b89ef0 (202304passion)

View File

@ -1,21 +0,0 @@
QMAKE_CXX.QT_COMPILER_STDCXX = 201402L
QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 8
QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 1
QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
QMAKE_CXX.COMPILER_MACROS = \
QT_COMPILER_STDCXX \
QMAKE_GCC_MAJOR_VERSION \
QMAKE_GCC_MINOR_VERSION \
QMAKE_GCC_PATCH_VERSION
QMAKE_CXX.INCDIRS = \
F:/QT/Tools/mingw810_64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++ \
F:/QT/Tools/mingw810_64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32 \
F:/QT/Tools/mingw810_64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward \
F:/QT/Tools/mingw810_64/lib/gcc/x86_64-w64-mingw32/8.1.0/include \
F:/QT/Tools/mingw810_64/lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed \
F:/QT/Tools/mingw810_64/x86_64-w64-mingw32/include
QMAKE_CXX.LIBDIRS = \
F:/QT/Tools/mingw810_64/lib/gcc/x86_64-w64-mingw32/8.1.0 \
F:/QT/Tools/mingw810_64/lib/gcc \
F:/QT/Tools/mingw810_64/x86_64-w64-mingw32/lib \
F:/QT/Tools/mingw810_64/lib

43
LICENSE
View File

@ -1,43 +0,0 @@
Academic Free License (“AFL”) v. 3.0
This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
Licensed under the Academic Free License version 3.0
1) Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
a) to reproduce the Original Work in copies, either alone or as part of a collective work;
b) to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
c) to distribute or communicate copies of the Original Work and Derivative Works to the public, under any license of your choice that does not contradict the terms and conditions, including Licensors reserved rights and remedies, in this Academic Free License;
d) to perform the Original Work publicly; and
e) to display the Original Work publicly.
2) Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensors trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
5) External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
9) Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including “fair use” or “fair dealing”). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
12) Attorneys Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
13) Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
16) Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Academic Free License" or "AFL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.

476
Makefile
View File

@ -1,476 +0,0 @@
#############################################################################
# Makefile for building: tomato1227
# Generated by qmake (3.1) (Qt 5.15.2)
# Project: tomato1227.pro
# Template: app
# Command: E:\QT\5.15.2\mingw81_64\bin\qmake.exe -o Makefile tomato1227.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
#############################################################################
MAKEFILE = Makefile
EQ = =
first: debug
install: debug-install
uninstall: debug-uninstall
QMAKE = E:\QT\5.15.2\mingw81_64\bin\qmake.exe
DEL_FILE = del
CHK_DIR_EXISTS= if not exist
MKDIR = mkdir
COPY = copy /y
COPY_FILE = copy /y
COPY_DIR = xcopy /s /q /y /i
INSTALL_FILE = copy /y
INSTALL_PROGRAM = copy /y
INSTALL_DIR = xcopy /s /q /y /i
QINSTALL = E:\QT\5.15.2\mingw81_64\bin\qmake.exe -install qinstall
QINSTALL_PROGRAM = E:\QT\5.15.2\mingw81_64\bin\qmake.exe -install qinstall -exe
DEL_FILE = del
SYMLINK = $(QMAKE) -install ln -f -s
DEL_DIR = rmdir
MOVE = move
IDC = idc
IDL = midl
ZIP = zip -r -9
DEF_FILE =
RES_FILE =
SED = $(QMAKE) -install sed
MOVE = move
SUBTARGETS = \
debug \
release
debug: FORCE
$(MAKE) -f $(MAKEFILE).Debug
debug-make_first: FORCE
$(MAKE) -f $(MAKEFILE).Debug
debug-all: FORCE
$(MAKE) -f $(MAKEFILE).Debug all
debug-clean: FORCE
$(MAKE) -f $(MAKEFILE).Debug clean
debug-distclean: FORCE
$(MAKE) -f $(MAKEFILE).Debug distclean
debug-install: FORCE
$(MAKE) -f $(MAKEFILE).Debug install
debug-uninstall: FORCE
$(MAKE) -f $(MAKEFILE).Debug uninstall
release: FORCE
$(MAKE) -f $(MAKEFILE).Release
release-make_first: FORCE
$(MAKE) -f $(MAKEFILE).Release
release-all: FORCE
$(MAKE) -f $(MAKEFILE).Release all
release-clean: FORCE
$(MAKE) -f $(MAKEFILE).Release clean
release-distclean: FORCE
$(MAKE) -f $(MAKEFILE).Release distclean
release-install: FORCE
$(MAKE) -f $(MAKEFILE).Release install
release-uninstall: FORCE
$(MAKE) -f $(MAKEFILE).Release uninstall
Makefile: tomato1227.pro E:/QT/5.15.2/mingw81_64/mkspecs/win32-g++/qmake.conf E:/QT/5.15.2/mingw81_64/mkspecs/features/spec_pre.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/qdevice.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/features/device_config.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/common/sanitize.conf \
E:/QT/5.15.2/mingw81_64/mkspecs/common/gcc-base.conf \
E:/QT/5.15.2/mingw81_64/mkspecs/common/g++-base.conf \
E:/QT/5.15.2/mingw81_64/mkspecs/common/angle.conf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/win32/windows_vulkan_sdk.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/common/windows-vulkan.conf \
E:/QT/5.15.2/mingw81_64/mkspecs/common/g++-win32.conf \
E:/QT/5.15.2/mingw81_64/mkspecs/common/windows-desktop.conf \
E:/QT/5.15.2/mingw81_64/mkspecs/qconfig.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3danimation.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3danimation_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dcore.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dcore_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dextras.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dextras_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dinput.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dinput_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dlogic.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dlogic_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquick.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquick_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickanimation.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickextras.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickextras_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickinput.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickinput_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickrender.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickrender_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickscene2d.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3drender.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3drender_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_accessibility_support_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_axbase.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_axbase_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_axcontainer.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_axcontainer_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_axserver.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_axserver_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_bluetooth.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_bluetooth_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_bootstrap_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_charts.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_charts_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_concurrent.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_concurrent_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_core.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_core_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_dbus.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_dbus_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_designer.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_designer_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_designercomponents_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_edid_support_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_egl_support_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_fb_support_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_gamepad.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_gamepad_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_gui.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_gui_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_help.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_help_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_location.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_location_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_multimedia.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_multimedia_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_multimediawidgets.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_multimediawidgets_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_network.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_network_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_nfc.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_nfc_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_opengl.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_opengl_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_openglextensions.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_openglextensions_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_packetprotocol_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_positioning.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_positioning_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_positioningquick.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_positioningquick_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_printsupport.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_printsupport_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qml.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qml_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmldebug_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmldevtools_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmlmodels.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmlmodels_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmltest.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmltest_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmlworkerscript.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmlworkerscript_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quick.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quick_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quickcontrols2.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quickcontrols2_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quickparticles_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quickshapes_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quicktemplates2.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quicktemplates2_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quickwidgets.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quickwidgets_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_remoteobjects.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_remoteobjects_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_repparser.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_repparser_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_scxml.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_scxml_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_sensors.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_sensors_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_serialbus.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_serialbus_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_serialport.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_serialport_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_sql.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_sql_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_svg.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_svg_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_testlib.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_testlib_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_texttospeech.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_texttospeech_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_theme_support_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_uiplugin.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_uitools.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_uitools_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_vulkan_support_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_webchannel.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_webchannel_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_websockets.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_websockets_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_widgets.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_widgets_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_windowsuiautomation_support_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_winextras.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_winextras_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_xml.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_xml_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_xmlpatterns.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_xmlpatterns_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_zlib_private.pri \
E:/QT/5.15.2/mingw81_64/mkspecs/features/qt_functions.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/qt_config.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/win32-g++/qmake.conf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/spec_post.prf \
.qmake.stash \
E:/QT/5.15.2/mingw81_64/mkspecs/features/exclusive_builds.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/toolchain.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/default_pre.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/win32/default_pre.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/resolve_config.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/exclusive_builds_post.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/default_post.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/qml_debug.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/precompile_header.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/warn_on.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/qt.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/resources_functions.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/resources.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/moc.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/win32/opengl.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/uic.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/qmake_use.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/file_copies.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/win32/windows.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/testcase_targets.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/exceptions.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/yacc.prf \
E:/QT/5.15.2/mingw81_64/mkspecs/features/lex.prf \
tomato1227.pro \
E:/QT/5.15.2/mingw81_64/lib/Qt5Widgets.prl \
E:/QT/5.15.2/mingw81_64/lib/Qt5Gui.prl \
E:/QT/5.15.2/mingw81_64/lib/Qt5Network.prl \
E:/QT/5.15.2/mingw81_64/lib/Qt5Core.prl \
E:/QT/5.15.2/mingw81_64/lib/qtmain.prl \
E:/QT/5.15.2/mingw81_64/mkspecs/features/build_pass.prf
$(QMAKE) -o Makefile tomato1227.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
E:/QT/5.15.2/mingw81_64/mkspecs/features/spec_pre.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/qdevice.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/features/device_config.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/common/sanitize.conf:
E:/QT/5.15.2/mingw81_64/mkspecs/common/gcc-base.conf:
E:/QT/5.15.2/mingw81_64/mkspecs/common/g++-base.conf:
E:/QT/5.15.2/mingw81_64/mkspecs/common/angle.conf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/win32/windows_vulkan_sdk.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/common/windows-vulkan.conf:
E:/QT/5.15.2/mingw81_64/mkspecs/common/g++-win32.conf:
E:/QT/5.15.2/mingw81_64/mkspecs/common/windows-desktop.conf:
E:/QT/5.15.2/mingw81_64/mkspecs/qconfig.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3danimation.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3danimation_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dcore.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dcore_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dextras.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dextras_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dinput.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dinput_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dlogic.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dlogic_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquick.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquick_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickanimation.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickanimation_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickextras.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickextras_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickinput.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickinput_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickrender.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickrender_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickscene2d.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3dquickscene2d_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3drender.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_3drender_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_accessibility_support_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_axbase.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_axbase_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_axcontainer.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_axcontainer_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_axserver.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_axserver_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_bluetooth.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_bluetooth_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_bootstrap_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_charts.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_charts_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_concurrent.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_concurrent_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_core.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_core_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_dbus.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_dbus_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_designer.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_designer_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_designercomponents_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_edid_support_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_egl_support_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_fb_support_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_gamepad.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_gamepad_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_gui.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_gui_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_help.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_help_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_location.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_location_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_multimedia.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_multimedia_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_multimediawidgets.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_multimediawidgets_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_network.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_network_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_nfc.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_nfc_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_opengl.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_opengl_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_openglextensions.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_openglextensions_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_packetprotocol_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_positioning.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_positioning_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_positioningquick.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_positioningquick_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_printsupport.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_printsupport_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qml.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qml_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmldebug_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmldevtools_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmlmodels.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmlmodels_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmltest.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmltest_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmlworkerscript.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qmlworkerscript_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quick.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quick_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quickcontrols2.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quickcontrols2_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quickparticles_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quickshapes_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quicktemplates2.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quicktemplates2_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quickwidgets.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_quickwidgets_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_remoteobjects.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_remoteobjects_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_repparser.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_repparser_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_scxml.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_scxml_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_sensors.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_sensors_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_serialbus.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_serialbus_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_serialport.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_serialport_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_sql.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_sql_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_svg.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_svg_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_testlib.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_testlib_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_texttospeech.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_texttospeech_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_theme_support_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_uiplugin.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_uitools.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_uitools_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_vulkan_support_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_webchannel.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_webchannel_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_websockets.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_websockets_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_widgets.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_widgets_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_windowsuiautomation_support_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_winextras.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_winextras_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_xml.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_xml_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_xmlpatterns.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_xmlpatterns_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/modules/qt_lib_zlib_private.pri:
E:/QT/5.15.2/mingw81_64/mkspecs/features/qt_functions.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/qt_config.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/win32-g++/qmake.conf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/spec_post.prf:
.qmake.stash:
E:/QT/5.15.2/mingw81_64/mkspecs/features/exclusive_builds.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/toolchain.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/default_pre.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/win32/default_pre.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/resolve_config.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/exclusive_builds_post.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/default_post.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/qml_debug.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/precompile_header.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/warn_on.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/qt.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/resources_functions.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/resources.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/moc.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/win32/opengl.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/uic.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/qmake_use.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/file_copies.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/win32/windows.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/testcase_targets.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/exceptions.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/yacc.prf:
E:/QT/5.15.2/mingw81_64/mkspecs/features/lex.prf:
tomato1227.pro:
E:/QT/5.15.2/mingw81_64/lib/Qt5Widgets.prl:
E:/QT/5.15.2/mingw81_64/lib/Qt5Gui.prl:
E:/QT/5.15.2/mingw81_64/lib/Qt5Network.prl:
E:/QT/5.15.2/mingw81_64/lib/Qt5Core.prl:
E:/QT/5.15.2/mingw81_64/lib/qtmain.prl:
E:/QT/5.15.2/mingw81_64/mkspecs/features/build_pass.prf:
qmake: FORCE
@$(QMAKE) -o Makefile tomato1227.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
qmake_all: FORCE
make_first: debug-make_first release-make_first FORCE
all: debug-all release-all FORCE
clean: debug-clean release-clean FORCE
distclean: debug-distclean release-distclean FORCE
-$(DEL_FILE) Makefile
-$(DEL_FILE) .qmake.stash
debug-mocclean:
$(MAKE) -f $(MAKEFILE).Debug mocclean
release-mocclean:
$(MAKE) -f $(MAKEFILE).Release mocclean
mocclean: debug-mocclean release-mocclean
debug-mocables:
$(MAKE) -f $(MAKEFILE).Debug mocables
release-mocables:
$(MAKE) -f $(MAKEFILE).Release mocables
mocables: debug-mocables release-mocables
check: first
benchmark: first
FORCE:
$(MAKEFILE).Debug: Makefile
$(MAKEFILE).Release: Makefile

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

103
README.md
View File

@ -1,19 +1,106 @@
# 南京林业大学果蔬智能分选研发团队 # 果蔬智能装备及产业化
#### 介绍 UpmatchinePassion-tomato
福建省重点研发项目------果蔬智能分选 文件夹:
├─***CameraConfig***
├─debug
│ ├─***Settings***
├─***image***
│ ├─L
│ ├─R
│ ├─specImg
│ └─T
│ ├─bottom
│ ├─middle
│ └─top
├─***opencv***
├─***rgbcamera_sdk***
├─***RT_SDK***
└─**src**
2. 同时下载对应的RGB、光谱、opencv的sdk以及debugQT编译文件以及包含光谱相机配置文件settings在GitHub右侧的release版本里面找到最近的 ## 0 引言
3. 修改.pro里的路径
3. 代码从wiget.cpp开始看
此代码涉及海康威视面阵相机**MV-CS050-10GC**
光谱相机为无锡谱世界生产的RT10**settings文件夹一定要放在debug目录下**。
#### 使用说明 与机械手通讯采用tcp-ip协议主要发送分级结果给机械手。
2024年4月7日凌晨4点出发前往泉州在那里呆了整整23天。实现了三个RGB相机和光谱相机的二次开发与称重传感器通过modbus RTU协议传输数据。与末端机械手的协议尚未开发暂定tcp 与称重模块通讯以及光谱相机筛选谱段以及拼接。
**注意依赖文件在release里面是v3.0版本,记得下载**
## 1 细节
福建泉州番茄-百香果 Qt 项目代码,应该是 Qt 人的入门级代码。
代码部分一共有三部分camera^ thread和widget, camera主要内容是相机负责相 机的初始化和参数设置thread主要内容是线程负责各个线程的工作和启停widget主要内容是界面按钮和信号的处理。
下面进行各个分部分介绍(完整代码都有注释,所以此文档重点介绍一些难理解的点)
### 1.1 Camera
此次RGB相机选用的是海康的面阵相机相机型号为MV-CS050-10GC,关于相机的 用户手册可以去海康官网下载。此次一共用到三个相机。
![1721802095232](C:\Users\PC\AppData\Roaming\Typora\typora-user-images\1721802095232.png)
一共三个相机,分别为图中标的 14、15 和 17以传送带前进方向为正方向17 为右 侧相机14 为左侧相机15 为顶部相机。因为三个相机,就得确定三个相机的连接顺序, 所以选择根据相机第四位ip来确定顺序100为右侧相机150为左侧相机200为顶部相 机,以下为代码具体实现。
```c++
switch (ip4)
{
case 100:
MV_CC_CreateHandle(&camera_handle1, device_list.pDeviceInfo[i]);
break;
case 150:
MV_CC_CreateHandle(&camera_handle, device_list.pDeviceInfo[i]);
break;
case 200:
MV_CC_CreateHandle(&camera_handle2, device_list.pDeviceInfo[i]);
break;
default:
break;
}
```
其余代码可参考海康相机调试软件MVS自带的开发指南里面有完整的抓图程序以及 各个函数接口定义。路径为D:\MVS\Development\Documentations具体图片如如所示。
![1721802263676](C:\Users\PC\AppData\Roaming\Typora\typora-user-images\1721802263676.png)
光谱相机代码就当图一乐。如果有兴趣, 可以搜索.bil编排格式的光谱数据即可理解数据筛选。
### 1.2 Thread
线程代码部分开头为三个RGB相机的回调函数主要功能是相机传输图像的数据代 码层面接受图像数据并处理,具体内容看海康相机的用户指南,里面有关于回调的详细解释。
此次项目一共开设了三个线程分别为ProcessImg (处理光谱相机数据线程)、 RecvThread (接受python端返回的数据线程)和SendThread (给python端发送数据线程) 所有线程相关的代码都在各个线程类的Run函数内因为线程在启动后会执行一次他对 应Run函数每个线程都写了 while (1)死循环,为的是让线程一直处于监听状态,一旦满 足处理要求就立马进行处理。线程开启代码在widget.cpp内具体代码如下。
//开启线程也就是执行一次对应线程的**run()**函数在**thread**里面有 即执行三个线程的**while** **(1)***死循环*一直监听
```c++
processimg->start();
sendthread->start()
recvthread->start()
```
发送和接收线程内对于数据有对应的协议位具体协议内容在python端其中发送 线程内,对于发送的判断条件为什么是: topImgTQueue>15因为从RGB相机第 一次触发到称重模块之间的果托数量正好是16所以要再第16次触发后开始发送这样 读取到的python返回值和读取到的称重数据就能对应上。发送线程为什么要数据对齐因 为三个RGB相机在空间上是有错位的而三个相机又是同时触发所以相机的图片需要进 行数据对齐,既删除掉一些多余的图像。
其余代码都是常规代码问ChatGPT就可以。
### 1.3 Widget
Widget主要是负责一些界面上的信号和函数这部分重点应该是信号和槽函数的 connect函数的理解可以自行写一些信号和槽函数的代码这样可以更深入了解信号和 槽函数对应的关系。
Widget内涉及到两个协议分别是跟机械手通讯的协议和跟PLC通讯的协议。
与机械手通讯采用Socket TCP/IP协议Qt端做服务器机械手做客户机端口号为 21123IP任意Qt会监听本地指定端口号下的任意IP,通讯报文格式为 [X:0;Y:0;A:0;ATTR:0;ID:0;]ATTR后面是等级ID后面是果类0是番茄1是百香果。
与PLC通讯采用Modbus TCP协议端口号为2000IP为192.168.101.110,从机地 址为1, Qt端做主站PLC做从站分为收跟发Qt端会给PLC发送等级信息和编号信 息Qt端会从PLC读取称重数据。跟PLC商量称重数据放在寄存器40001 上, PLC负责 写Qt负责读取编号放在寄存器40002等级信息放在40003,4XXXX寄存器在PLC端是 16位的数据寄存器所以所有读取格式都采用uint16_t,但代码中读、写的地址是40000 和40001,这是因为Modbus TCP协议读、写似乎是从指定寄存器地址的下一位地址开始 操作,验证过结果是对的,能正确读、写数据,但具体理论是否如我们假设的一样没去深 究。

View File

@ -1,80 +0,0 @@
#ifndef RTSPECTROL_H
#define RTSPECTROL_H
#ifndef Q_DECL_IMPORT
#define Q_DECL_IMPORT __declspec(dllimport)
#endif
#ifndef Q_DECL_EXPORT
#define Q_DECL_EXPORT __declspec(dllexport)
#endif
#ifdef RTSPECTROL_LIBRARY
#define RT_API extern "C" Q_DECL_EXPORT
#else
#define RT_API extern "C" Q_DECL_IMPORT
#endif
RT_API bool __stdcall RTGetCameraName( wchar_t* wcCameraName );
RT_API bool __stdcall RTSetCameraCaptureStyle(int iStyle);
RT_API int __stdcall RTOpenCamera();
RT_API bool __stdcall RTCloseCamera();
RT_API bool __stdcall RTStartAutoExposetime();
RT_API bool __stdcall RTSetExposure(float expostime);
RT_API bool __stdcall RTGetExposure(float& expostime);
RT_API bool __stdcall RTSetCameraGain(float fgain);
RT_API bool __stdcall RTGetCameraGain(float& fgain);
RT_API bool __stdcall RTGetImageProperty(int& iWidth, int& iHeight);
RT_API bool __stdcall RT_SetBool(const wchar_t* Feature,bool flag);
RT_API bool __stdcall RTSetCameraBinning(int iBinX,int iBinY);
RT_API bool __stdcall RTGetCameraBinning(int& iBinX,int& iBinY);
RT_API bool __stdcall RTGetCameraFrameRate(float& fRate);
RT_API bool __stdcall RTSetCameraFrameRate(float fRate);
RT_API int __stdcall RTGetCameraDepth();
RT_API bool __stdcall RTApplyCameraParam();
RT_API bool __stdcall RTCameraSnapshot(const char* cstrPath,int iTimes);
RT_API long __stdcall RTAddRGBCallback( void (__stdcall *VideoRGBFilter)(
void *pContext,unsigned char *pRData,unsigned char *pGData,
unsigned char *pBData, unsigned long dataLength),
void *pCBContext );
RT_API int __stdcall RTRemoveRGBCallback( long callbackId );
RT_API bool __stdcall RTStartSingleCapture(bool bMotor = false,bool bSave = false,
const char* savePath = "", bool bFlip = false,bool bRef = false, bool bcorrect = false);
RT_API bool __stdcall RTSetBWPath(const char* bwPath);
RT_API bool __stdcall RTStopSingleCapture();
RT_API bool __stdcall RTGetMinAndMaxWavelength(float& fmin,float& fmax);
RT_API bool __stdcall RTGetRGBselect(int& iRed,int& iGreen, int& iBlue);
RT_API bool __stdcall RTSetRGBselect(int iRed,int iGreen, int iBlue);
RT_API const double* __stdcall RTGetCurentCalibrationData();
RT_API int __stdcall RTGetLastError(wchar_t* errobuf,int len);
RT_API bool __stdcall RTIsCameraWorking();
RT_API bool __stdcall RTGetRealFrameRate(float& frame);
RT_API bool __stdcall RTCaptureAllDarkFrame();
RT_API bool __stdcall RTGetLastRealFrameRate(float& frame);
RT_API long __stdcall RTAddStreamingCallback(
void(__stdcall *VideoFilter)(void *pContext, unsigned char *pData, unsigned long dataLength),
void *pCBContext);
RT_API int __stdcall RTRemoveStreamingCallback(long callbackId);
RT_API int __stdcall RTAddMessageCallback( void(__stdcall *VideoFilter)(void *pContext,const wchar_t *pData, unsigned long dataLength),
void *pCBContext);
RT_API int __stdcall RTBWCorrection(const char* cOriFile, const char* cOutputFile, const char* cDCFile, const char* cWCFile, const char* cWhiteDarkFile,int correctsize = 0);
#endif

View File

@ -1,14 +1,15 @@
#include "camera.h" #include "camera.h"
#include "thread.h" #include "thread.h"
#include <vector> #include <vector>
#include <QTime>
// 使用std::vector存储所有帧的数据 // 使用std::vector存储所有帧的数据
//外部引用的标志位 save_flag 存图标志位 RGB 光谱是否需要保存图 (不能单独存一个 RGB 或 光谱 只能要存全存 除非再加标志位)
//spec_flag 没用到
extern int save_flag; extern int save_flag;
extern bool spec_flag; extern bool spec_flag;
tomato tomato; tomato tomato;
//RGB相机的回调函数
void __stdcall onImageDataCallBackFunc(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser); void __stdcall onImageDataCallBackFunc(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser);
void __stdcall onOfflineCallBackFunc(unsigned int nMsgType, void* pUser); void __stdcall onOfflineCallBackFunc(unsigned int nMsgType, void* pUser);
void __stdcall onImageDataCallBackFunc1(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser); void __stdcall onImageDataCallBackFunc1(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser);
@ -16,19 +17,24 @@ void __stdcall onOfflineCallBackFunc1(unsigned int nMsgType, void* pUser);
void __stdcall onImageDataCallBackFunc2(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser); void __stdcall onImageDataCallBackFunc2(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser);
void __stdcall onOfflineCallBackFunc2(unsigned int nMsgType, void* pUser); void __stdcall onOfflineCallBackFunc2(unsigned int nMsgType, void* pUser);
//光谱相机的回调函数
extern void __stdcall RTRGBViewCallback(void* pContext, unsigned char* pRData, unsigned char* pGData, unsigned char* pBData, unsigned long dataLength); extern void __stdcall RTRGBViewCallback(void* pContext, unsigned char* pRData, unsigned char* pGData, unsigned char* pBData, unsigned long dataLength);
extern void __stdcall RTSpecStreamingCallback(void *pContext, unsigned char *pData, unsigned long dataLength); extern void __stdcall RTSpecStreamingCallback(void *pContext, unsigned char *pData, unsigned long dataLength);
//三个相机是否连接上的标志位 在 initcamera 里面的 opencamera 函数有返回值 负责修改 ui界面的 "是否连接" 标志位
int camStatusret; int camStatusret;
int camStatusret1; int camStatusret1;
int camStatusret2; int camStatusret2;
extern bool change_passionFlag;
extern bool change_tomatoFlag; //果蔬标志位
extern int fruit_flag;
CameraL::CameraL(QObject *parent) : QObject(parent) CameraL::CameraL(QObject *parent) : QObject(parent)
{ {
} }
//初始化相机
bool CameraL::initCameraL() bool CameraL::initCameraL()
{ {
/* /*
@ -94,10 +100,89 @@ bool CameraL::initCameraL()
// set_ROI(0, 0, 2448, 2048); // set_ROI(0, 0, 2448, 2048);
return true;
}
//下面是所有 initcamera 函数内调用的函数的具体内容
uint32_t CameraL::enum_device()
{
int ret = MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE, &device_list);
if(ret != MV_OK)
{
return -1;
}
return device_list.nDeviceNum;
}
//这里需要注意 因为是三个相机 且有位置顺序 所以需要根据相机的第四位 ip 来确定 所有相机都必须分配固定ip
//比如相机 ip 为 192.168.2.10 10 则为相机的第四位 ip 如果发现顺序不对使用MVS软件重新分配固定 ip
//200顶部相机 100右侧相机 150左侧相机
bool CameraL::select_device()
{
MV_CC_DEVICE_INFO* pstDeviceInfo;
for(i=0;i<=2;i++)
{
pstDeviceInfo = device_list.pDeviceInfo[i];
if (NULL == pstDeviceInfo)
{
printf("The Pointer of pstMVDevInfo is NULL!\n");
return false;
}
ip4 = pstDeviceInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0x000000ff;
//根据第四位 ip 来创建 camera_handle
//camera_handle 相当于 一个指向相机的指针 这个指针就代表相机
switch (ip4)
{
case 100:
MV_CC_CreateHandle(&camera_handle1, device_list.pDeviceInfo[i]);
break;
case 150:
MV_CC_CreateHandle(&camera_handle, device_list.pDeviceInfo[i]);
break;
case 200:
MV_CC_CreateHandle(&camera_handle2, device_list.pDeviceInfo[i]);
break;
default:
break;
}
pstDeviceInfo++;
}
return true;
}
bool CameraL::open_camera()
{
int ret = MV_CC_OpenDevice(camera_handle);
int ret1 = MV_CC_OpenDevice(camera_handle1);
int ret2 = MV_CC_OpenDevice(camera_handle2);
camStatusret2=0;
camStatusret1=0;
camStatusret=0;
if(ret != MV_OK||ret1 != MV_OK||ret2 != MV_OK)
{
return false;
camStatusret2=0;
camStatusret1=0;
camStatusret=0;
}
return true;
}
bool CameraL::open_camera2()
{
/* /*
* *
**/ **/
isOk = import_config_file(); bool isOk = import_config_file();
// set_ROI(0, 668, 1000, 2448); // set_ROI(0, 668, 1000, 2448);
if(!isOk) if(!isOk)
{ {
@ -176,100 +261,12 @@ bool CameraL::initCameraL()
return false; return false;
} }
// isOk = set_ROI(0, 668, 2448, 1000); // MV_CC_SetBalanceWhiteAuto(camera_handle, 0);
// if(!isOk) // MV_CC_SetBalanceWhiteAuto(camera_handle1, 0);
// { // MV_CC_SetBalanceWhiteAuto(camera_handle2, 0);
// qDebug()<<"SET ROI FAILED"; // MV_CC_SetIntValue(camera_handle, "LineDebouncerTime", 100);
// if(camera_handle != NULL) // MV_CC_SetIntValue(camera_handle1, "LineDebouncerTime", 100);
// { // MV_CC_SetIntValue(camera_handle2, "LineDebouncerTime", 100);
// destroy_handle();
// }
// return false;
// }
MV_CC_SetBalanceWhiteAuto(camera_handle, 0);
MV_CC_SetBalanceWhiteAuto(camera_handle1, 0);
MV_CC_SetBalanceWhiteAuto(camera_handle2, 0);
MV_CC_SetIntValue(camera_handle, "LineDebouncerTime", 100);
MV_CC_SetIntValue(camera_handle1, "LineDebouncerTime", 100);
MV_CC_SetIntValue(camera_handle2, "LineDebouncerTime", 100);
return true;
}
uint32_t CameraL::enum_device()
{
int ret = MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE, &device_list);
if(ret != MV_OK)
{
return -1;
}
//qDebug()<<"device_list[0]: "<<device_list.pDeviceInfo[0];
//qDebug()<<"device_list[1]: "<<device_list.pDeviceInfo[1];
return device_list.nDeviceNum;
}
bool CameraL::select_device()
{
MV_CC_DEVICE_INFO* pstDeviceInfo;
for(i=0;i<=2;i++)
{
pstDeviceInfo = device_list.pDeviceInfo[i];
if (NULL == pstDeviceInfo)
{
printf("The Pointer of pstMVDevInfo is NULL!\n");
return false;
}
// qDebug()<<"nip1 "<<((pstDeviceInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0xff000000)>>24);
// qDebug()<<"nip2 "<<((pstDeviceInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0x00ff0000)>>16);
// qDebug()<<"nip3 "<<((pstDeviceInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0x0000ff00)>>8);
// qDebug()<<"nip4 "<<((pstDeviceInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0x000000ff));
ip4 = pstDeviceInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0x000000ff;
switch (ip4) {
case 100:
MV_CC_CreateHandle(&camera_handle1, device_list.pDeviceInfo[i]);
break;
case 150:
MV_CC_CreateHandle(&camera_handle, device_list.pDeviceInfo[i]);
break;
case 200:
MV_CC_CreateHandle(&camera_handle2, device_list.pDeviceInfo[i]);
break;
default:
break;
}
pstDeviceInfo++;
}
return true;
}
bool CameraL::open_camera()
{
int ret = MV_CC_OpenDevice(camera_handle);
int ret1 = MV_CC_OpenDevice(camera_handle1);
int ret2 = MV_CC_OpenDevice(camera_handle2);
camStatusret2=0;
camStatusret1=0;
camStatusret=0;
if(ret != MV_OK||ret1 != MV_OK||ret2 != MV_OK)
{
return false;
camStatusret2=0;
camStatusret1=0;
camStatusret=0;
}
return true;
} }
bool CameraL::start_capture() bool CameraL::start_capture()
@ -288,11 +285,11 @@ bool CameraL::start_capture()
bool CameraL::register_image_callback(imageCallbackFunc onImageDataCallBackFunc,imageCallbackFunc onImageDataCallBackFunc1,imageCallbackFunc onImageDataCallBackFunc2) bool CameraL::register_image_callback(imageCallbackFunc onImageDataCallBackFunc,imageCallbackFunc onImageDataCallBackFunc1,imageCallbackFunc onImageDataCallBackFunc2)
{ {
int ret2 = MV_CC_RegisterImageCallBackForBGR(camera_handle1, onImageDataCallBackFunc, NULL); int ret2 = MV_CC_RegisterImageCallBackForBGR(camera_handle1, onImageDataCallBackFunc1, NULL); //100 right
int ret1 = MV_CC_RegisterImageCallBackForBGR(camera_handle, onImageDataCallBackFunc2, NULL); int ret1 = MV_CC_RegisterImageCallBackForBGR(camera_handle, onImageDataCallBackFunc2, NULL); //150 left
int ret = MV_CC_RegisterImageCallBackForBGR(camera_handle2, onImageDataCallBackFunc1, NULL); int ret = MV_CC_RegisterImageCallBackForBGR(camera_handle2, onImageDataCallBackFunc, NULL); //200 top
if (ret != MV_OK||ret1 != MV_OK||ret2 != MV_OK) if (ret != MV_OK||ret1 != MV_OK||ret2 != MV_OK)
{ {
return false; return false;
@ -313,8 +310,6 @@ bool CameraL::register_offline_callback(exceptionCallbackFunc onOfflineCallBackF
return true; return true;
} }
bool CameraL::destroy_handle() bool CameraL::destroy_handle()
{ {
int ret = MV_CC_DestroyHandle(camera_handle); int ret = MV_CC_DestroyHandle(camera_handle);
@ -325,6 +320,7 @@ bool CameraL::destroy_handle()
return true; return true;
} }
bool CameraL::destroy_handle1() bool CameraL::destroy_handle1()
{ {
int ret = MV_CC_DestroyHandle(camera_handle1); int ret = MV_CC_DestroyHandle(camera_handle1);
@ -334,7 +330,9 @@ bool CameraL::destroy_handle1()
} }
return true; return true;
}bool CameraL::destroy_handle2() }
bool CameraL::destroy_handle2()
{ {
int ret = MV_CC_DestroyHandle(camera_handle2); int ret = MV_CC_DestroyHandle(camera_handle2);
if (MV_OK != ret) if (MV_OK != ret)
@ -344,10 +342,33 @@ bool CameraL::destroy_handle1()
return true; return true;
} }
//前面的两个标志位决定导入哪一个相机配置文件
bool CameraL::import_config_file() bool CameraL::import_config_file()
{ {
if(change_passionFlag&&(!change_tomatoFlag)) if(fruit_flag) //百香果
{ {
qDebug()<<"import passion camera ini";
int ret = MV_CC_FeatureLoad(camera_handle, CAMERApassion_left_config);
if(ret != MV_OK)
{
return false;
}
int ret2 = MV_CC_FeatureLoad(camera_handle2, CAMERAtoppassion_top2_config);
if(ret2 != MV_OK)
{
return false;
}
int ret1 = MV_CC_FeatureLoad(camera_handle1, CAMERApassion_right_config);
if(ret1 != MV_OK)
{
return false;
}
}
else //西红柿
{
qDebug()<<"import tomato camera ini";
int ret = MV_CC_FeatureLoad(camera_handle, CAMERA_CONFIG_PATH); int ret = MV_CC_FeatureLoad(camera_handle, CAMERA_CONFIG_PATH);
if(ret != MV_OK) if(ret != MV_OK)
{ {
@ -364,26 +385,8 @@ bool CameraL::import_config_file()
return false; return false;
} }
} }
if((!change_passionFlag)&&change_tomatoFlag)
{
int ret = MV_CC_FeatureLoad(camera_handle, CAMERApassion_left_config);
if(ret != MV_OK)
{
return false;
}
int ret2 = MV_CC_FeatureLoad(camera_handle2, CAMERApassion_right_config);
if(ret2 != MV_OK)
{
return false;
}
int ret1 = MV_CC_FeatureLoad(camera_handle1, CAMERAtoppassion_top2_config);
if(ret1 != MV_OK)
{
return false;
}
}
return true;
return true;
} }
bool CameraL::save_config_file() bool CameraL::save_config_file()
@ -526,7 +529,6 @@ bool CameraL::set_acquisition_mode()
bool CameraL::stop_capture() bool CameraL::stop_capture()
{ {
int ret = MV_CC_StopGrabbing(camera_handle); int ret = MV_CC_StopGrabbing(camera_handle);
int ret1 = MV_CC_StopGrabbing(camera_handle1); int ret1 = MV_CC_StopGrabbing(camera_handle1);
int ret2 = MV_CC_StopGrabbing(camera_handle2); int ret2 = MV_CC_StopGrabbing(camera_handle2);
@ -543,12 +545,13 @@ bool CameraL::stop_capture()
} }
//spec camera //光谱相机的所有函数
SpecCamera::SpecCamera(QObject *parent) SpecCamera::SpecCamera(QObject *parent)
{ {
} }
//初始化相机
bool SpecCamera::init_SpecCamera() bool SpecCamera::init_SpecCamera()
{ {
//打开相机 //打开相机
@ -586,93 +589,46 @@ bool SpecCamera::init_SpecCamera()
m_cslBlue = m_iHeight / 4; m_cslBlue = m_iHeight / 4;
} }
RTSetRGBselect(m_cslRed, m_cslGreen, m_cslBlue); RTSetRGBselect(m_cslRed, m_cslGreen, m_cslBlue);
// RTAddRGBCallback(RTRGBViewCallback, nullptr); RTAddRGBCallback(RTRGBViewCallback, nullptr);
RTAddStreamingCallback(RTSpecStreamingCallback,nullptr); RTAddStreamingCallback(RTSpecStreamingCallback,nullptr);
return true; return true;
} }
//这个 cal 函数 是光谱相机的回调函数内触发的一个槽函数 可以在 thread 里面的光谱相机的回调找到
bool SpecCamera::cal(unsigned char *pData) bool SpecCamera::cal(unsigned char *pData)
{ {
// QTime currenttime = QTime::currentTime(); test_count++;
// qDebug()<<"触发时间:"<<currenttime; //假设筛选后的ROI 为 30 * 100 宽 * 谱段数
//按右上角为数据初始点 900像素点 每一行第 900 个像素点 第 73 个谱段
unsigned short* spec_total_data = new unsigned short[30 * 13]; //宽 * 谱段数
unsigned short* spec_short_data = (unsigned short *)pData;
int Band[13]={8,9,10,48,49,50,77,80,103,108,115,143,145};
for(int k=0;k<13;k++)
{
memcpy(spec_total_data + k * 30, spec_short_data + 900 + (Band[k] - 1) * 2048, 30 * sizeof(unsigned short));
}
if (test_count < 26)
{
SpecData_vector.push_back(spec_total_data);
}
else
{
delete[] spec_total_data; // 释放内存以防止内存泄漏
}
// unsigned short* spec_data = new unsigned short[1024*40]; //2048*224*1
// unsigned short* spec_data_short = (unsigned short *)pData;
// memcpy(spec_data, spec_data_short + 1024 * 40 , 1024 * 40 * sizeof(unsigned short));
// //将处理后的帧数据存储到vector中
// frameData.push_back(spec_data);
// // 检查是否已收集到足够的帧
// if (frameData.size() == totalFrames)
// {
// // 处理这些帧,例如拼接成一张大图
// specfullImage = new unsigned short[1024 * 40 * totalFrames];
// for (int i = 0; i < totalFrames ; i++)
// {
// memcpy(specfullImage + i * 1024 * 40, frameData[i] , 1024 * 40 * sizeof(unsigned short));
// }
// frameData.clear();
// if(save_flag)
// {
// static int file_index = 1;
// std::string spec_filename = "E:/qt_tomato_passion/new/20240422/image/specImg/spec" + std::to_string(file_index);
// FILE *fp = fopen(spec_filename.c_str(), "wb");
// int ret = fwrite(specfullImage, 1, totalFrames * 1024 * 40 * sizeof(unsigned short), fp);
// // qDebug()<<"光谱队列长度: "<<frameData.size()<<" ret : "<<ret;
// std::fflush(fp);
// fclose(fp);
// file_index++;
// std::cout<<"save img success"<<std::endl;
// // qDebug()<<"test_count: "<<test_count;
// }
// }
// memcpy(specfullImage + test_count * m_iWidth * 224, spec_data + 500 * 224, 1024 * 224 * sizeof(unsigned short));
// test_count++;
// if(test_count == totalFrames)
// {
// QTime starttime = QTime::currentTime();
// //specImgQueue.push(specfullImage);
// test_count = 0;
// QTime stoptime = QTime::currentTime();
// int functime = starttime.msecsTo(stoptime);
// qDebug() << "Time elapsed for image" <<functime;
// }
return true; return true;
} }
//光谱相机内置函数 不用管
bool SpecCamera::stop_capture() bool SpecCamera::stop_capture()
{ {
bool ret = trigger_close();
if(ret == false)
{
qDebug()<<"trigger is not close:"<<ret;
return false;
}
else
{
qDebug()<<"trigger is close:"<<ret;
}
qDebug()<<"ret: "<<ret;
if (RTIsCameraWorking()) if (RTIsCameraWorking())
{ {
RTStopSingleCapture(); RTStopSingleCapture();
@ -696,26 +652,10 @@ bool SpecCamera::trigger_open()
return true; return true;
} }
bool SpecCamera::trigger_close()
{
bool ret = RT_SetBool(L"Camera.TriggerIn", false);
if(ret==false)
{
qDebug()<<"trigger is not close:"<<ret;
return false;
}
else
{
qDebug()<<"trigger is close:"<<ret;
}
return true;
}
bool SpecCamera::start_capture() bool SpecCamera::start_capture()
{ {
trigger_open(); trigger_open();
bool flag = RTStartSingleCapture(false, false, "E:/qt_tomato_passion/new/20240422/image/specImg/newdata.raw"); bool flag = RTStartSingleCapture(false, false, "E:/QT/projects/tomato20240415/tomato04150955/image/newdata.raw");
if (!flag) if (!flag)
{ {
printf("erro to start capture"); printf("erro to start capture");

View File

@ -5,18 +5,20 @@
#include "MvCameraControl.h" #include "MvCameraControl.h"
#include "SpectrolDll.h" #include "SpectrolDll.h"
#include "QDebug" #include "QDebug"
#include "opencv2/opencv.hpp"
#include "QImage" #include "QImage"
#include <queue>
typedef void(*imageCallbackFunc)(unsigned char * , MV_FRAME_OUT_INFO_EX* , void* ); typedef void(*imageCallbackFunc)(unsigned char * , MV_FRAME_OUT_INFO_EX* , void* );
typedef void(*exceptionCallbackFunc)(unsigned int , void* ); typedef void(*exceptionCallbackFunc)(unsigned int , void* );
#define CAMERApassion_left_config "E:/qt_tomato_passion/new/20240421/left.mfs"
#define CAMERApassion_right_config "E:/qt_tomato_passion/new/20240421/right.mfs"
#define CAMERAtoppassion_top2_config "E:/qt_tomato_passion/new/20240421/top2.mfs"
//三个相机的配置文件位置 也是绝对路径
//三个相机用6个配置文件原因 百香果的相机参数是700曝光 番茄的相机参数是1500曝光 所以不同的果蔬对应不同的相机参数
#define CAMERApassion_left_config "./CameraConfig/PFleft.mfs"
#define CAMERApassion_right_config "./CameraConfig/PFright.mfs"
#define CAMERAtoppassion_top2_config "./CameraConfig/PFtop.mfs"
#define CAMERA_CONFIG_PATH "E:/qt_tomato_passion/new/20240421/tomatoLeft.mfs" #define CAMERA_CONFIG_PATH "./CameraConfig/tomatoLeft.mfs"
#define CAMERA2_CONFIG_PATH "E:/qt_tomato_passion/new/20240421/tomatoRight.mfs" #define CAMERA2_CONFIG_PATH "./CameraConfig/tomatoTop.mfs"
#define CAMERAtop_CONFIG_PATH "E:/qt_tomato_passion/new/20240421/tomatoTop.mfs" #define CAMERAtop_CONFIG_PATH "./CameraConfig/tomatoRight.mfs"
class tomato class tomato
{ {
@ -27,9 +29,9 @@ public:
QImage img3; QImage img3;
QImage img4; QImage img4;
QImage img5; QImage img5;
}; };
//相机的参数
struct Camera_param //相机参数在此添加,在构造函数中给出默认值,设置参数需要刷新,左侧 struct Camera_param //相机参数在此添加,在构造函数中给出默认值,设置参数需要刷新,左侧
{ {
float exposure_time; float exposure_time;
@ -37,6 +39,7 @@ struct Camera_param //相机参数在此添加,在构造函数中给出
int white_balance_ratio; int white_balance_ratio;
//... other params //... other params
}; };
struct Camera_paramR //相机参数在此添加,在构造函数中给出默认值,设置参数需要刷新,右侧 struct Camera_paramR //相机参数在此添加,在构造函数中给出默认值,设置参数需要刷新,右侧
{ {
float exposure_time; float exposure_time;
@ -44,6 +47,7 @@ struct Camera_paramR //相机参数在此添加,在构造函数中给出
int white_balance_ratio; int white_balance_ratio;
//... other params //... other params
}; };
struct Camera_paramTop //相机参数在此添加,在构造函数中给出默认值,设置参数需要刷新,顶部 struct Camera_paramTop //相机参数在此添加,在构造函数中给出默认值,设置参数需要刷新,顶部
{ {
float exposure_time; float exposure_time;
@ -51,6 +55,8 @@ struct Camera_paramTop //相机参数在此添加,在构造函数中给
int white_balance_ratio; int white_balance_ratio;
//... other params //... other params
}; };
//创建相机类 所有相机有关的函数、参数都在这里
class CameraL : public QObject class CameraL : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -76,7 +82,9 @@ public:
bool open_camera(); bool open_camera(); //初始化中的打开
bool open_camera2(); //与开始采集关联
bool start_capture(); bool start_capture();
bool close_camera(); bool close_camera();
bool set_acquisition_mode(); bool set_acquisition_mode();
@ -98,7 +106,7 @@ public:
std::queue<QImage> topImgBQueue; std::queue<QImage> topImgBQueue;
std::queue<tomato> tomatoQueue; std::queue<tomato> tomatoQueue;
//信号 信号跟槽函数
signals: signals:
// void send_RgbimageL(cv::Mat img,unsigned int count); // void send_RgbimageL(cv::Mat img,unsigned int count);
void send_Rgbimage(QImage& img); void send_Rgbimage(QImage& img);
@ -114,7 +122,7 @@ signals:
public slots: public slots:
}; };
//光谱相机类
class SpecCamera : public QObject class SpecCamera : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -124,15 +132,14 @@ public:
bool cal(unsigned char* pData); bool cal(unsigned char* pData);
bool stop_capture(); bool stop_capture();
bool trigger_open(); bool trigger_open();
bool trigger_close();
int m_iWidth; //相机采集数据宽度 int m_iWidth; //相机采集数据宽度
int m_iHeight; //相机采集数据高度 int m_iHeight; //相机采集数据高度
unsigned short* specfullImage; unsigned short* specfullImage;
const int totalFrames = 100; // 假设需要拼接50帧来形成一张图 const int totalFrames = 30; // 假设需要拼接30帧来形成一张图
// std::vector<unsigned short*> frameData; // std::vector<unsigned short*> frameData;
int vector_flag; int vector_flag;
std::vector<unsigned short*> frameData; // int nsize = 35*25*13;
std::vector<unsigned short*> frameData_copy; std::vector<unsigned short*> SpecData_vector;//给容器开辟空间
int test_count = 0; int test_count = 0;
//CameraSetting //CameraSetting
float m_fWaveLengthMin; //起点光谱波长 float m_fWaveLengthMin; //起点光谱波长
@ -165,7 +172,7 @@ private:
signals: signals:
void show_SpecImg(QImage); void show_SpecImg(QImage);
void process_spec(unsigned short*);
}; };

BIN
debug/tomato1227.exe Normal file

Binary file not shown.

View File

@ -1,7 +0,0 @@
<RCC>
<qresource prefix="/new/prefix1">
<file>image/1.jpg</file>
<file>image/2.jpg</file>
<file>image/3.jpg</file>
</qresource>
</RCC>

279
left.mfs
View File

@ -1,279 +0,0 @@
# {05D8C294-F295-4dfb-9D01-096BD04049F4}
# GenApi persistence file (version 3.0.1)
# Device = HIKROBOT::HIKCamera -- HIKROBOT GigE Vision Camera Interface -- Device version = 1.2.0 -- Product GUID = EE4B7E09-DA29-4956-A1EC-212263331CFC -- Product version GUID = 79ace398-62e3-44a6-8845-f81aaf104382
ReverseX 0
ReverseY 0
PixelFormat BayerRG8
DecimationHorizontal DecimationHorizontal1
DecimationVertical DecimationVertical1
AcquisitionMode Continuous
AcquisitionBurstFrameCount 1
AcquisitionFrameRate 23.14
AcquisitionFrameRateEnable 1
TriggerCacheEnable 0
ExposureMode Timed
ExposureTimeMode Standard
ExposureTime 700
ExposureAuto Off
AutoExposureTimeLowerLimit 15
AutoExposureTimeUpperLimit 42663
HDREnable 0
ActionDeviceKey 0
ChunkModeActive 0
CCMEnable 1
ColorTransformationSelector RGBtoRGB
ColorTransformationEnable 1
ColorTransformationValueSelector Gain22
Gain 0
GainAuto Off
AutoGainLowerLimit 0
AutoGainUpperLimit 23.9812
DigitalShiftEnable 0
BlackLevel 240
BlackLevelEnable 1
BalanceWhiteAuto Off
UserSetDefault Default
GevHeartbeatTimeout 3000
GevGVCPHeartbeatDisable 0
GevMCTT 0
GevMCRC 0
GevIEEE1588 0
GevGVSPExtendedIDMode Off
ActionSelector 0
ActionGroupMask 0
ActionSelector 0
ActionSelector 0
ActionGroupKey 0
ActionSelector 0
AutoFunctionAOISelector AOI1
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI2
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI2
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIUsageIntensity 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI2
AutoFunctionAOIUsageWhiteBalance 0
AutoFunctionAOISelector AOI1
BalanceRatioSelector Red
BalanceRatio 1458
BalanceRatioSelector Green
BalanceRatio 1024
BalanceRatioSelector Blue
BalanceRatio 1957
BalanceRatioSelector Red
BinningSelector Region0
BinningHorizontal BinningHorizontal1
BinningSelector Region0
BinningSelector Region0
BinningVertical BinningVertical1
BinningSelector Region0
CounterSelector Counter0
CounterEventSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterResetSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterValue 1
CounterSelector Counter0
DeviceLinkSelector 0
DeviceLinkHeartbeatMode On
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
DeviceStreamChannelPacketSize 1500
DeviceStreamChannelSelector 0
EventSelector AcquisitionStart
EventNotification Off
EventSelector AcquisitionEnd
EventNotification Off
EventSelector FrameStart
EventNotification Off
EventSelector FrameEnd
EventNotification Off
EventSelector FrameBurstStart
EventNotification Off
EventSelector FrameBurstEnd
EventNotification Off
EventSelector ExposureStart
EventNotification Off
EventSelector ExposureEnd
EventNotification Off
EventSelector Line0RisingEdge
EventNotification Off
EventSelector Line0FallingEdge
EventNotification Off
EventSelector FrameStartOverTrigger
EventNotification Off
EventSelector StreamTransferOverflow
EventNotification Off
EventSelector FrameTriggerWait
EventNotification Off
EventSelector StreamTransferOverflow
FileSelector UserSet1
FileOperationSelector Open
FileSelector UserSet2
FileOperationSelector Open
FileSelector UserSet3
FileOperationSelector Open
FileSelector DPC
FileOperationSelector Open
FileSelector LUTLuminance1
FileOperationSelector Open
FileSelector LUTLuminance2
FileOperationSelector Open
FileSelector LUTLuminance3
FileOperationSelector Open
FileSelector UserSet1
FileSelector UserSet1
FileOpenMode Read
FileSelector UserSet2
FileOpenMode Read
FileSelector UserSet3
FileOpenMode Read
FileSelector DPC
FileOpenMode Read
FileSelector LUTLuminance1
FileOpenMode Read
FileSelector LUTLuminance2
FileOpenMode Read
FileSelector LUTLuminance3
FileOpenMode Read
FileSelector UserSet1
FrameSpecInfoSelector Timestamp
FrameSpecInfo 0
FrameSpecInfoSelector Gain
FrameSpecInfo 0
FrameSpecInfoSelector Exposure
FrameSpecInfo 0
FrameSpecInfoSelector BrightnessInfo
FrameSpecInfo 0
FrameSpecInfoSelector WhiteBalance
FrameSpecInfo 0
FrameSpecInfoSelector Framecounter
FrameSpecInfo 0
FrameSpecInfoSelector ExtTriggerCount
FrameSpecInfo 0
FrameSpecInfoSelector LineInputOutput
FrameSpecInfo 0
FrameSpecInfoSelector ROIPosition
FrameSpecInfo 0
FrameSpecInfoSelector Timestamp
GevStreamChannelSelector 0
GevSCPSPacketSize 1500
GevStreamChannelSelector 0
GevStreamChannelSelector 0
GevSCPD 400
GevStreamChannelSelector 0
HDRSelector 0
HDRShutter 15
HDRSelector 1
HDRShutter 15
HDRSelector 2
HDRShutter 15
HDRSelector 3
HDRShutter 15
HDRSelector 0
HDRSelector 0
HDRGain 0
HDRSelector 1
HDRGain 0
HDRSelector 2
HDRGain 0
HDRSelector 3
HDRGain 0
HDRSelector 0
LineSelector Line1
LineMode Strobe
LineSelector Line2
LineMode Input
LineSelector Line0
LineSelector Line1
LineSource ExposureStartActive
LineSelector Line0
LineSelector Line1
LineInverter 0
LineSelector Line0
LineSelector Line1
StrobeEnable 0
LineSelector Line0
LineSelector Line0
LineDebouncerTime 100
LineSelector Line2
LineDebouncerTime 50
LineSelector Line0
LineSelector Line1
StrobeLineDuration 0
LineSelector Line0
LineSelector Line1
StrobeLineDelay 0
LineSelector Line0
LineSelector Line1
StrobeLinePreDelay 0
LineSelector Line0
RegionSelector Region0
RegionDestination Stream0
RegionSelector Region0
RegionSelector Region0
Width 2448
RegionSelector Region0
RegionSelector Region0
Height 2048
RegionSelector Region0
RegionSelector Region0
OffsetX 0
RegionSelector Region0
RegionSelector Region0
OffsetY 0
RegionSelector Region0
TestPatternGeneratorSelector Region0
TestPattern Off
TestPatternGeneratorSelector Region0
TriggerSelector FrameBurstStart
TriggerMode Off
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerSource Line0
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerActivation RisingEdge
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerDelay 0
TriggerSelector FrameBurstStart
DeviceConnectionSelector 0
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
RegionSelector Region0
TestPatternGeneratorSelector Region0
BinningSelector Region0
FrameSpecInfoSelector Timestamp
TriggerSelector FrameBurstStart
HDRSelector 0
LineSelector Line0
ActionSelector 0
CounterSelector Counter0
FileSelector UserSet1
FileOperationSelector Open
EventSelector StreamTransferOverflow
BalanceRatioSelector Red
AutoFunctionAOISelector AOI1
UserSetSelector Default
GevSupportedOptionSelector CommandsConcatenation
GevStreamChannelSelector 0

View File

@ -5,7 +5,12 @@
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication a(argc, argv); QApplication a(argc, argv);
Widget w; try {
w.show(); Widget w;
return a.exec(); w.show();
return a.exec();
} catch (const ExpiredException& e) {
QMessageBox::critical(nullptr, "程序过期", e.what());
return -1;
}
} }

View File

@ -1,11 +0,0 @@
debug/camera.o
debug/main.o
debug/modbus-data.o
debug/modbus-rtu.o
debug/modbus-tcp.o
debug/modbus.o
debug/thread.o
debug/widget.o
debug/moc_camera.o
debug/moc_thread.o
debug/moc_widget.o

View File

@ -1,11 +0,0 @@
release/camera.o
release/main.o
release/modbus-data.o
release/modbus-rtu.o
release/modbus-tcp.o
release/modbus.o
release/thread.o
release/widget.o
release/moc_camera.o
release/moc_thread.o
release/moc_widget.o

279
right.mfs
View File

@ -1,279 +0,0 @@
# {05D8C294-F295-4dfb-9D01-096BD04049F4}
# GenApi persistence file (version 3.0.1)
# Device = HIKROBOT::HIKCamera -- HIKROBOT GigE Vision Camera Interface -- Device version = 1.2.0 -- Product GUID = EE4B7E09-DA29-4956-A1EC-212263331CFC -- Product version GUID = 79ace398-62e3-44a6-8845-f81aaf104382
ReverseX 0
ReverseY 0
PixelFormat BayerRG8
DecimationHorizontal DecimationHorizontal1
DecimationVertical DecimationVertical1
AcquisitionMode Continuous
AcquisitionBurstFrameCount 1
AcquisitionFrameRate 23.14
AcquisitionFrameRateEnable 1
TriggerCacheEnable 0
ExposureMode Timed
ExposureTimeMode Standard
ExposureTime 700
ExposureAuto Off
AutoExposureTimeLowerLimit 15
AutoExposureTimeUpperLimit 42663
HDREnable 0
ActionDeviceKey 0
ChunkModeActive 0
CCMEnable 1
ColorTransformationSelector RGBtoRGB
ColorTransformationEnable 1
ColorTransformationValueSelector Gain22
Gain 0
GainAuto Off
AutoGainLowerLimit 0
AutoGainUpperLimit 23.9812
DigitalShiftEnable 0
BlackLevel 240
BlackLevelEnable 1
BalanceWhiteAuto Off
UserSetDefault Default
GevHeartbeatTimeout 3000
GevGVCPHeartbeatDisable 0
GevMCTT 0
GevMCRC 0
GevIEEE1588 0
GevGVSPExtendedIDMode Off
ActionSelector 0
ActionGroupMask 0
ActionSelector 0
ActionSelector 0
ActionGroupKey 0
ActionSelector 0
AutoFunctionAOISelector AOI1
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI2
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI2
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIUsageIntensity 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI2
AutoFunctionAOIUsageWhiteBalance 0
AutoFunctionAOISelector AOI1
BalanceRatioSelector Red
BalanceRatio 1458
BalanceRatioSelector Green
BalanceRatio 1024
BalanceRatioSelector Blue
BalanceRatio 1957
BalanceRatioSelector Red
BinningSelector Region0
BinningHorizontal BinningHorizontal1
BinningSelector Region0
BinningSelector Region0
BinningVertical BinningVertical1
BinningSelector Region0
CounterSelector Counter0
CounterEventSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterResetSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterValue 1
CounterSelector Counter0
DeviceLinkSelector 0
DeviceLinkHeartbeatMode On
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
DeviceStreamChannelPacketSize 1500
DeviceStreamChannelSelector 0
EventSelector AcquisitionStart
EventNotification Off
EventSelector AcquisitionEnd
EventNotification Off
EventSelector FrameStart
EventNotification Off
EventSelector FrameEnd
EventNotification Off
EventSelector FrameBurstStart
EventNotification Off
EventSelector FrameBurstEnd
EventNotification Off
EventSelector ExposureStart
EventNotification Off
EventSelector ExposureEnd
EventNotification Off
EventSelector Line0RisingEdge
EventNotification Off
EventSelector Line0FallingEdge
EventNotification Off
EventSelector FrameStartOverTrigger
EventNotification Off
EventSelector StreamTransferOverflow
EventNotification Off
EventSelector FrameTriggerWait
EventNotification Off
EventSelector StreamTransferOverflow
FileSelector UserSet1
FileOperationSelector Open
FileSelector UserSet2
FileOperationSelector Open
FileSelector UserSet3
FileOperationSelector Open
FileSelector DPC
FileOperationSelector Open
FileSelector LUTLuminance1
FileOperationSelector Open
FileSelector LUTLuminance2
FileOperationSelector Open
FileSelector LUTLuminance3
FileOperationSelector Open
FileSelector UserSet1
FileSelector UserSet1
FileOpenMode Read
FileSelector UserSet2
FileOpenMode Read
FileSelector UserSet3
FileOpenMode Read
FileSelector DPC
FileOpenMode Read
FileSelector LUTLuminance1
FileOpenMode Read
FileSelector LUTLuminance2
FileOpenMode Read
FileSelector LUTLuminance3
FileOpenMode Read
FileSelector UserSet1
FrameSpecInfoSelector Timestamp
FrameSpecInfo 0
FrameSpecInfoSelector Gain
FrameSpecInfo 0
FrameSpecInfoSelector Exposure
FrameSpecInfo 0
FrameSpecInfoSelector BrightnessInfo
FrameSpecInfo 0
FrameSpecInfoSelector WhiteBalance
FrameSpecInfo 0
FrameSpecInfoSelector Framecounter
FrameSpecInfo 0
FrameSpecInfoSelector ExtTriggerCount
FrameSpecInfo 0
FrameSpecInfoSelector LineInputOutput
FrameSpecInfo 0
FrameSpecInfoSelector ROIPosition
FrameSpecInfo 0
FrameSpecInfoSelector Timestamp
GevStreamChannelSelector 0
GevSCPSPacketSize 1500
GevStreamChannelSelector 0
GevStreamChannelSelector 0
GevSCPD 400
GevStreamChannelSelector 0
HDRSelector 0
HDRShutter 15
HDRSelector 1
HDRShutter 15
HDRSelector 2
HDRShutter 15
HDRSelector 3
HDRShutter 15
HDRSelector 0
HDRSelector 0
HDRGain 0
HDRSelector 1
HDRGain 0
HDRSelector 2
HDRGain 0
HDRSelector 3
HDRGain 0
HDRSelector 0
LineSelector Line1
LineMode Strobe
LineSelector Line2
LineMode Input
LineSelector Line0
LineSelector Line1
LineSource ExposureStartActive
LineSelector Line0
LineSelector Line1
LineInverter 0
LineSelector Line0
LineSelector Line1
StrobeEnable 0
LineSelector Line0
LineSelector Line0
LineDebouncerTime 100
LineSelector Line2
LineDebouncerTime 50
LineSelector Line0
LineSelector Line1
StrobeLineDuration 0
LineSelector Line0
LineSelector Line1
StrobeLineDelay 0
LineSelector Line0
LineSelector Line1
StrobeLinePreDelay 0
LineSelector Line0
RegionSelector Region0
RegionDestination Stream0
RegionSelector Region0
RegionSelector Region0
Width 2448
RegionSelector Region0
RegionSelector Region0
Height 2048
RegionSelector Region0
RegionSelector Region0
OffsetX 0
RegionSelector Region0
RegionSelector Region0
OffsetY 0
RegionSelector Region0
TestPatternGeneratorSelector Region0
TestPattern Off
TestPatternGeneratorSelector Region0
TriggerSelector FrameBurstStart
TriggerMode Off
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerSource Line0
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerActivation RisingEdge
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerDelay 0
TriggerSelector FrameBurstStart
DeviceConnectionSelector 0
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
RegionSelector Region0
TestPatternGeneratorSelector Region0
BinningSelector Region0
FrameSpecInfoSelector Timestamp
TriggerSelector FrameBurstStart
HDRSelector 0
LineSelector Line0
ActionSelector 0
CounterSelector Counter0
FileSelector UserSet1
FileOperationSelector Open
EventSelector StreamTransferOverflow
BalanceRatioSelector Red
AutoFunctionAOISelector AOI1
UserSetSelector Default
GevSupportedOptionSelector CommandsConcatenation
GevStreamChannelSelector 0

View File

@ -6,57 +6,76 @@
#include <QBuffer> #include <QBuffer>
#include "QTimer" #include "QTimer"
#include <QTime> #include <QTime>
#include <QElapsedTimer>
ProcessImg *processimg;
QImage image[5]; QImage image[5];
//三个线程实例化对象
ProcessImg *processimg;
SendThread *sendthread; SendThread *sendthread;
RecvThread *recvthread; RecvThread *recvthread;
QMutex judge_connect_mutex;
CameraL *cameraL;
QMutex judge_connect_mutex;
//RGB相机类跟光谱相机类实例化对象
CameraL *cameraL;
SpecCamera *speccamera; SpecCamera *speccamera;
bool is_connected; bool is_connected;
extern tomato tomato; extern tomato tomato;
//TCP协议
extern QTcpServer server; extern QTcpServer server;
extern QTcpSocket *clientSocket; extern QTcpSocket *clientSocket;
extern int start_flag; extern int start_flag;
bool spec_flag = 0; bool spec_flag = 0;
extern bool is_timeout; extern bool is_timeout;
extern modbus_t* CZ; extern modbus_t* CZ;
QMutex imgR_muex; QMutex imgR_muex;
//外部引用管道
HANDLE hPipe;
HANDLE specPipe;
HANDLE RPipe;
QString pipeName = "\\\\.\\pipe\\rgb_receive";
QString pipeName2 = "\\\\.\\pipe\\spec_receive";
QString rePipe = "\\\\.\\pipe\\rgb_send";
extern int save_flag; extern int save_flag;
extern int fruit_flag;
uint countimgR = 1; uint countimgR = 1;
uint countimgL = 1; uint countimgL = 1;
uint countimgTopT = 1; uint countimgTopT = 1;
uint countimgTopM = 1; uint countimgTopM = 1;
uint countimgTopB = 1; uint countimgTopB = 1;
int ImgQueue_Alignment = 1;
//右侧相机回调 //右侧相机回调
extern void __stdcall onImageDataCallBackFunc1(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser) extern void __stdcall onImageDataCallBackFunc1(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser)
{ {
if (pFrameInfo) //帧信息有效 if (pFrameInfo) //帧信息有效
{ {
// qDebug()<<"右部相机帧号: "<<pFrameInfo->nFrameNum;
//img 原始图
QImage img(pData,pFrameInfo->nWidth,pFrameInfo->nHeight,QImage::Format_RGB888); //构造图像 QImage img(pData,pFrameInfo->nWidth,pFrameInfo->nHeight,QImage::Format_RGB888); //构造图像
//复制临时图 为了后续处理
QImage tempimg = img; QImage tempimg = img;
tempimg = tempimg.rgbSwapped(); tempimg = tempimg.rgbSwapped();
QImage queueImg = tempimg; QImage queueImg = tempimg;
QString filePath = "E:/qt_tomato_passion/new/20240422/image/R"; QString filePath = "./image/R";
QString imagePath = QString("%1/%2.bmp").arg(filePath).arg(countimgR); QString imagePath = QString("%1/%2.bmp").arg(filePath).arg(countimgR);
if(save_flag) if(save_flag)
{ {
tempimg.save(imagePath); tempimg.save(imagePath);
} }
countimgR++;
// qDebug()<<"右侧相机帧号: "<<pFrameInfo->nFrameNum;
emit cameraL->send_Rgbimage(tempimg); emit cameraL->send_Rgbimage(tempimg);
countimgR++;
cameraL->rightImgQueue.push(queueImg); // cameraL->rightImgQueue.push(queueImg);
// qDebug()<<"右侧相机队列长度: "<<cameraL->rightImgQueue.size(); // qDebug()<<"右侧相机队列长度: "<<cameraL->rightImgQueue.size();
} }
@ -84,7 +103,7 @@ extern void __stdcall onImageDataCallBackFunc2(unsigned char * pData, MV_FRAME_O
QImage tempimg = imgL; QImage tempimg = imgL;
tempimg = tempimg.rgbSwapped(); tempimg = tempimg.rgbSwapped();
QImage queueImg = tempimg; QImage queueImg = tempimg;
QString filePath = "E:/qt_tomato_passion/new/20240422/image/L"; QString filePath = "./image/L";
QString imagePath = QString("%1/%2.bmp").arg(filePath).arg(countimgL); QString imagePath = QString("%1/%2.bmp").arg(filePath).arg(countimgL);
if(save_flag) if(save_flag)
{ {
@ -95,11 +114,10 @@ extern void __stdcall onImageDataCallBackFunc2(unsigned char * pData, MV_FRAME_O
emit cameraL->send_Rgbimage1(tempimg); emit cameraL->send_Rgbimage1(tempimg);
cameraL->leftImgQueue.push(queueImg); // cameraL->leftImgQueue.push(queueImg);
// qDebug()<<"左侧相机队列长度: "<<cameraL->leftImgQueue.size(); // qDebug()<<"左侧相机队列长度: "<<cameraL->leftImgQueue.size();
} }
return ; return ;
} }
@ -111,13 +129,14 @@ extern void __stdcall onOfflineCallBackFunc2(unsigned int nMsgType, void* pUser)
judge_connect_mutex.unlock(); judge_connect_mutex.unlock();
return; return;
} }
//顶部相机回调ip[4] 100
//顶部相机回调ip[4] 200 数据指针 数据是8位 图像默认格式是BGR 当前帧的结构体
extern void __stdcall onImageDataCallBackFunc(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser) extern void __stdcall onImageDataCallBackFunc(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser)
{ {
if (pFrameInfo) //帧信息有效 if (pFrameInfo) //帧信息有效
{ {
// qDebug()<<"顶部相机帧号: "<<pFrameInfo->nFrameNum; qDebug()<<"彩色相机触发次数:"<<countimgTopT;
QImage imgT(pData,pFrameInfo->nWidth,pFrameInfo->nHeight,QImage::Format_RGB888); //构造图像 QImage imgT(pData,pFrameInfo->nWidth,pFrameInfo->nHeight,QImage::Format_RGB888); //构造图像
@ -138,7 +157,7 @@ extern void __stdcall onImageDataCallBackFunc(unsigned char * pData, MV_FRAME_OU
QImage tempimg = bottomPart; QImage tempimg = bottomPart;
tempimg = tempimg.rgbSwapped(); tempimg = tempimg.rgbSwapped();
QImage queueImg = tempimg; QImage queueImg = tempimg;
QString filePath = "E:/qt_tomato_passion/new/20240422/image/T/bottom"; QString filePath = "./image/T/bottom";
QString imagePath = QString("%1/%2.bmp").arg(filePath).arg(countimgTopB); QString imagePath = QString("%1/%2.bmp").arg(filePath).arg(countimgTopB);
if(save_flag) if(save_flag)
{ {
@ -150,7 +169,7 @@ extern void __stdcall onImageDataCallBackFunc(unsigned char * pData, MV_FRAME_OU
QImage tempimg1 = middlePart; QImage tempimg1 = middlePart;
tempimg1 = tempimg1.rgbSwapped(); tempimg1 = tempimg1.rgbSwapped();
QImage queueImg1 = tempimg1; QImage queueImg1 = tempimg1;
QString filePath1 = "E:/qt_tomato_passion/new/20240422/image/T/middle"; QString filePath1 = "./image/T/middle";
QString imagePath1 = QString("%1/%2.bmp").arg(filePath1).arg(countimgTopM); QString imagePath1 = QString("%1/%2.bmp").arg(filePath1).arg(countimgTopM);
if(save_flag) if(save_flag)
{ {
@ -162,7 +181,7 @@ extern void __stdcall onImageDataCallBackFunc(unsigned char * pData, MV_FRAME_OU
QImage tempimg2 = topPart; QImage tempimg2 = topPart;
tempimg2 = tempimg2.rgbSwapped(); tempimg2 = tempimg2.rgbSwapped();
QImage queueImg2 = tempimg2; QImage queueImg2 = tempimg2;
QString filePath2 = "E:/qt_tomato_passion/new/20240422/image/T/top"; QString filePath2 = "./image/T/top";
QString imagePath2 = QString("%1/%2.bmp").arg(filePath2).arg(countimgTopT); QString imagePath2 = QString("%1/%2.bmp").arg(filePath2).arg(countimgTopT);
if(save_flag) if(save_flag)
{ {
@ -171,25 +190,11 @@ extern void __stdcall onImageDataCallBackFunc(unsigned char * pData, MV_FRAME_OU
countimgTopT++; countimgTopT++;
/*
*
* */
emit cameraL->send_Rgbimage2(tempimg,tempimg1,tempimg2); emit cameraL->send_Rgbimage2(tempimg,tempimg1,tempimg2);
/*
*
* */
cameraL->topImgTQueue.push(queueImg); cameraL->topImgTQueue.push(queueImg);
cameraL->topImgMQueue.push(queueImg1); cameraL->topImgMQueue.push(queueImg1);
cameraL->topImgBQueue.push(queueImg2); cameraL->topImgBQueue.push(queueImg2);
// qDebug()<<"顶部上相机队列长度: "<<cameraL->topImgTQueue.size();
// qDebug()<<"顶部中相机队列长度: "<<cameraL->topImgMQueue.size();
// qDebug()<<"顶部下相机队列长度: "<<cameraL->topImgBQueue.size();
} }
return ; return ;
} }
@ -203,74 +208,28 @@ extern void __stdcall onOfflineCallBackFunc(unsigned int nMsgType, void* pUser)
return; return;
} }
int spec_count;
//光谱相机的回调函数 拿到数据后触发信号 并转到曹函数 cal 处理数据 如果放在回调处理数据会很慢
void __stdcall RTSpecStreamingCallback(void *pContext, unsigned char *pData, unsigned long dataLength) void __stdcall RTSpecStreamingCallback(void *pContext, unsigned char *pData, unsigned long dataLength)
{ {
// unsigned char* pPData = new unsigned char[speccamera->m_iWidth*speccamera->m_iHeight*224]; //2048*224*1
// memcpy(pPData, pData, dataLength); // 直接从pData拷贝全部数据到pPData
// unsigned char* pPData1 = new unsigned char[speccamera->m_iWidth*speccamera->m_iHeight*224];
// int k = 0;
// for( int i = 0; i < speccamera->m_iHeight; i++ )
// {
// for(uint j = 91; j < 101; j++ )
// {
// memcpy(pPData1 + speccamera->m_iWidth * k, pPData + (i * speccamera->m_iHeight + j) * speccamera->m_iWidth,
// sizeof(unsigned char) * speccamera->m_iWidth);
// k++;
// }
// }
// speccamera->specImgQueue.push(pPData1);
// qDebug()<<"spec queue length: "<<speccamera->specImgQueue.size();
// delete []pPData;
// delete []pPData1;
if(pData) if(pData)
{ {
// qDebug()<<"pData: "<<pData; // spec_count++;
speccamera->cal(pData); // qDebug()<<"光谱相机触发次数:"<<spec_count;
unsigned short* spec_total_data= new unsigned short[2048 * 100 * speccamera->totalFrames];//2048*224*1; if(fruit_flag)
unsigned short* spec_data_short = (unsigned short *)pData;
memcpy(spec_total_data + speccamera->test_count * speccamera->m_iWidth * 100, spec_data_short, 2048 * 100 * sizeof(unsigned short));
speccamera->test_count++;
if(speccamera->test_count == speccamera->totalFrames)
{ {
qDebug()<<"光谱相机触发了一张图"; speccamera->cal(pData);
// unsigned short* spec_data_short_copy = new unsigned short[speccamera->m_iWidth * 100 * speccamera->totalFrames]; //2048*224*1
// memcpy(spec_data_short_copy, spec_total_data,speccamera->m_iWidth * 100 * speccamera->totalFrames * sizeof(unsigned short));
// emit speccamera->process_spec(spec_data_short_copy);
spec_total_data = nullptr;
speccamera->test_count = 0;
// if(save_flag)
// {
// static int file_index = 1;
// std::string spec_filename = "E:/qt_tomato_passion/new/20240422/image/specImg/spec" + std::to_string(file_index);
// FILE *fp = fopen(spec_filename.c_str(), "wb");
// int ret = fwrite(spec_data_short_copy, 1, speccamera->totalFrames * speccamera->m_iWidth * 40 * sizeof(unsigned short), fp);
// // qDebug()<<"光谱队列长度: "<<frameData.size()<<" ret : "<<ret;
// std::fflush(fp);
// fclose(fp);
// file_index++;
// std::cout<<"save img success"<<std::endl;
// // qDebug()<<"test_count: "<<speccamera->test_count;
// }
} }
else
{
pData = nullptr;
}
} }
return; return;
} }
//显示光谱伪彩色 不用管
void __stdcall RTRGBViewCallback(void* pContext, unsigned char* pRData, unsigned char* pGData, unsigned char* pBData, unsigned long dataLength) void __stdcall RTRGBViewCallback(void* pContext, unsigned char* pRData, unsigned char* pGData, unsigned char* pBData, unsigned long dataLength)
{ {
unsigned short* pShortRData = (unsigned short*)pRData; unsigned short* pShortRData = (unsigned short*)pRData;
@ -339,7 +298,8 @@ void __stdcall RTRGBViewCallback(void* pContext, unsigned char* pRData, unsigned
return; return;
} }
//图像处理线程通过相机得到图片然后裁剪后放入队列并一同发给python
ProcessImg::ProcessImg(QObject *parent) : QThread(parent) ProcessImg::ProcessImg(QObject *parent) : QThread(parent)
{ {
@ -357,119 +317,51 @@ void ProcessImg::exitThread()
stop_mutex.unlock(); stop_mutex.unlock();
} }
//光谱数据处理线程 当 槽函数 cal 收集到指定数量的照片 也就是 满足 if (speccamera->frameData.size() == speccamera->totalFrames)
//就会进行处理
void ProcessImg::run() void ProcessImg::run()
{ {
connect(speccamera,SIGNAL(process_spec(unsigned short*)),this,SLOT(processSpecSlots(unsigned short*))); while(1)
{
// 检查是否已收集到足够的帧
if (speccamera->SpecData_vector.size() == 25)
{
// 处理这些帧,例如拼接成一张大图
// qDebug()<<"25行光谱图开始拼接、存队列";
spec_count++;
msleep(100);
speccamera->test_count = 0;
// qDebug()<<"光谱相机触发次数"<<spec_count;
// while(1) speccamera->specfullImage = new unsigned short[30 * 25 * 13];//宽 * 高 * 谱段数
// {
// uint16_t czData[8];
// imgR_muex.lock();
// modbus_read_registers(CZ,0x0000,1,czData);
// qDebug()<<"重量数据: "<<czData;
// if(czData[5]==1)
// {
// spec_flag = 1;
// modbus_write_register(CZ,0x0005,0);
// }
// imgR_muex.unlock();
// } for (int i = 0; i < 25; i++)
// while(1) {
// { // qDebug()<<"容量:"<<speccamera->SpecData_vector.capacity();
// qDebug()<<"容量实际大小:"<<speccamera->SpecData_vector.size();
memcpy(speccamera->specfullImage + i * 30 * 13, speccamera->SpecData_vector[i], 30 * 13 * sizeof(unsigned short));
}
speccamera->specImgQueue.push(speccamera->specfullImage);
// qDebug()<<"光谱入队成功";
// // 检查是否已收集到足够的帧 if(save_flag)
// if (speccamera->frameData.size() == speccamera->totalFrames) {
// { static int file_index = 1;
// // 处理这些帧,例如拼接成一张大图 std::string spec_filename = "./image/specImg/spec" + std::to_string(file_index);
FILE *fp = fopen(spec_filename.c_str(), "wb");
int ret = fwrite(speccamera->specfullImage, 1, 30 * 25 * 13 * sizeof(unsigned short), fp);
std::fflush(fp);
fclose(fp);
file_index++;
qDebug()<<"save img success";
qDebug()<<"test_count: "<<speccamera->test_count;
}
// speccamera->specfullImage = new unsigned short[speccamera->m_iWidth * 224 * speccamera->totalFrames]; speccamera->SpecData_vector.clear();
// for (int i = 0; i < speccamera->totalFrames; ++i) speccamera->test_count = 0;
// { }
// memcpy(speccamera->specfullImage + i * speccamera->m_iWidth * 224, speccamera->frameData[i], speccamera->m_iWidth * 224 * sizeof(unsigned short)); }
// }
// speccamera->specImgQueue.push(speccamera->specfullImage);
// if(save_flag)
// {
// static int file_index = 1;
// std::string spec_filename = "E:/qt_tomato_passion/new/20240422/image/specImg/spec" + std::to_string(file_index);
// FILE *fp = fopen(spec_filename.c_str(), "wb");
// int ret = fwrite(speccamera->specfullImage, 1, speccamera->totalFrames * speccamera->m_iWidth * 224 * sizeof(unsigned short), fp);
// // qDebug()<<"光谱队列长度: "<<frameData.size()<<" ret : "<<ret;
// std::fflush(fp);
// fclose(fp);
// file_index++;
// std::cout<<"save img success"<<std::endl;
// qDebug()<<"test_count: "<<speccamera->test_count;
// }
// speccamera->frameData.clear();
// speccamera->test_count = 0;
// }
// // 检查是否已收集到足够的帧
// if (speccamera->frameData_copy.size() == speccamera->totalFrames)
// {
// speccamera->vector_flag = 0;
// // speccamera->vector_flag = 1;
// // 处理这些帧,例如拼接成一张大图
// speccamera->specfullImage = new unsigned short[speccamera->m_iWidth * 224 * speccamera->totalFrames];
// for (int i = 0; i < speccamera->totalFrames; ++i)
// {
// memcpy(speccamera->specfullImage + i * speccamera->m_iWidth * 224, speccamera->frameData_copy[i], speccamera->m_iWidth * 224 * sizeof(unsigned short));
// }
// speccamera->specImgQueue.push(speccamera->specfullImage);
// if(save_flag)
// {
// static int file_index = 1;
// std::string spec_filename = "E:/qt_tomato_passion/new/20240422/image/specImg/spec" + std::to_string(file_index);
// FILE *fp = fopen(spec_filename.c_str(), "wb");
// int ret = fwrite(speccamera->specfullImage, 1, speccamera->totalFrames * speccamera->m_iWidth * 224 * sizeof(unsigned short), fp);
// // qDebug()<<"光谱队列长度: "<<frameData.size()<<" ret : "<<ret;
// std::fflush(fp);
// fclose(fp);
// file_index++;
// std::cout<<"save img success"<<std::endl;
// qDebug()<<"test_count: "<<speccamera->test_count;
// }
// speccamera->frameData_copy.clear();
// speccamera->test_count = 0;
// }
// }
}
void ProcessImg::processSpecSlots(unsigned short *data)
{
// // qDebug()<<"sssssssssssssssssssssssssssssss";
// speccamera->frameData.push_back(data);
// // 检查是否已收集到足够的帧
// if (speccamera->frameData.size() == speccamera->totalFrames)
// {
// // 处理这些帧,例如拼接成一张大图
// speccamera->specfullImage = new unsigned short[speccamera->m_iWidth * 50 * speccamera->totalFrames];
// for (int i = 0; i < speccamera->totalFrames + 1; i++)
// {
// memcpy(speccamera->specfullImage + i * speccamera->m_iWidth * 50, speccamera->frameData[i], speccamera->m_iWidth * 50 * sizeof(unsigned short));
// }
// speccamera->specImgQueue.push(data);
// speccamera->frameData.clear();
// speccamera->test_count = 0;
// }
} }
//接收线程 //接收线程
@ -486,95 +378,98 @@ RecvThread::~RecvThread()
//通过 pipe 管道 从python端读取数据
void RecvThread::run() void RecvThread::run()
{ {
QString rePipe = "\\\\.\\pipe\\rgb_send";
// 创建并连接到命名管道
HANDLE RPipe = CreateFile(
(LPCWSTR)rePipe.utf16(), // 管道名称
GENERIC_READ, // 更改为读取访问
0, // 不共享
NULL, // 默认安全属性
OPEN_EXISTING, // 打开现有管道
FILE_ATTRIBUTE_NORMAL, // 默认属性
NULL // 没有模板文件
);
if (RPipe == INVALID_HANDLE_VALUE) {
qWarning() << "Failed to open pipe for reading:" << GetLastError();
return;
}
while (1) while (1)
{ {
// 读取4字节的数据长度信息
// 读取各个部分的数据 DWORD bytesRead;
quint16 long_axis, short_axis, defect_num; quint32 dataLength;
quint32 total_defect_area, imgSize; QByteArray lengthBytes(4, 0);
DWORD readBytes;
ReadFile(RPipe, &long_axis, sizeof(long_axis), &readBytes, NULL);
long_axis = qFromBigEndian(long_axis);
ReadFile(RPipe, &short_axis, sizeof(short_axis), &readBytes, NULL);
short_axis = qFromBigEndian(short_axis);
ReadFile(RPipe, &defect_num, sizeof(defect_num), &readBytes, NULL);
defect_num = qFromBigEndian(defect_num);
ReadFile(RPipe, &total_defect_area, sizeof(total_defect_area), &readBytes, NULL);
total_defect_area = qFromBigEndian(total_defect_area);
ReadFile(RPipe, &imgSize, sizeof(imgSize), &readBytes, NULL);
imgSize = qFromBigEndian(imgSize);
// 读取图像数据
// 根据图像大小读取图像数据
QByteArray imageData;
imageData.resize(imgSize - 4); // 减去4字节的长度信息
if (!ReadFile(RPipe, imageData.data(), imgSize - 4, &readBytes, NULL) || readBytes != imgSize - 4) {
qDebug() << "Failed to read image data."<< readBytes;
BOOL success = ReadFile(RPipe, lengthBytes.data(), 4, &bytesRead, NULL);
if (!success || bytesRead != 4)
{
qDebug() << "Failed to read length from pipe:" << GetLastError();
CloseHandle(RPipe);
return; return;
}
// QByteArray imageData;
// imageData.resize(imgSize);
// ReadFile(RPipe, imageData.data(), imgSize, &readBytes, NULL);
qDebug()<<"long_axis: "<<long_axis<<"short_axis: "<<short_axis<<"defect_num: "<<defect_num<<"total_defect_area: "<<total_defect_area<<"imgSize: "<<imgSize;
// qDebug()<<"imageData: "<<imageData.size();
QImage image;
QBuffer buffer(&imageData);
buffer.open(QIODevice::ReadOnly);
if (image.load(&buffer, "bmp")) { // 指定假定的图像格式如BMP
emit recv_Data(long_axis,short_axis,defect_num,total_defect_area,image);
// 可以在此处添加进一步的图像处理或显示代码
} else {
qDebug() << "Failed to load image.";
} }
QDataStream lengthStream(lengthBytes);
lengthStream.setByteOrder(QDataStream::BigEndian);
lengthStream >> dataLength;
// qDebug() << "应该接收到的数据长度:" << dataLength;
// 根据读取到的数据长度,读取对应长度的数据
QByteArray data(dataLength, 0);
success = ReadFile(RPipe, data.data(), dataLength, &bytesRead, NULL);
if (!success || bytesRead != dataLength) {
qDebug() << "Failed to read data from pipe:" << GetLastError();
CloseHandle(RPipe);
return;
}
// qDebug() << "接收到的数据长度:" << bytesRead;
// 解析数据
QDataStream dataStream(data);
dataStream.setByteOrder(QDataStream::BigEndian);
// 解析命令和其他数据
QString cmd;
quint16 brix, diameter, defectNum, height, width;
quint8 greenPercentage, weight;
quint32 totalDefectArea;
char cmdChars[2];
dataStream.readRawData(cmdChars, 2);
cmd = QString::fromLatin1(cmdChars, 2).trimmed().toUpper();
// 判断指令是否为 "RE"
if (cmd == "RE")
{
// qDebug() << "Received 'RE' command. Processing accordingly.";
// 继续解析其他数据
dataStream >> brix >> greenPercentage >> diameter >> weight >> defectNum >> totalDefectArea >> height >> width;
// qDebug() << "命令:" << cmd;
// qDebug() << "Brix:" << brix << ", Green Percentage:" << greenPercentage << ", Diameter:" << diameter;
// qDebug() << "Weight:" << weight << ", Defect Number:" << defectNum << ", Total Defect Area:" << totalDefectArea;
// qDebug() << "Height:" << height << ", Width:" << width;
// // 剩余的数据为图像数据
// qDebug() << "data: " <<data.size() <<"Current position in data stream:" << dataStream.device()->pos();
QByteArray imageData = data.right(data.size() - dataStream.device()->pos());
// qDebug() << "imageData size: " << imageData.size();
QImage imageResult((uchar*)imageData.constData(), width, height, QImage::Format_RGB888);
if (!imageResult.isNull()) {
// qDebug() << "Image loaded successfully";
QImage swappedImage = imageResult.rgbSwapped();
emit recv_Data(brix,greenPercentage,diameter,weight,defectNum,totalDefectArea,height,width,swappedImage);
// imageResult.save("D:/WeChat Files/wxid_jjgh0jfum83v12/FileStorage/File/2024-06/1.png");
}
else
{
qDebug() << "Error: Failed to load image from raw data";
}
// qDebug() << "接收并处理完成";
}
} }
// CloseHandle(RPipe); // Make sure to close the pipe handle
} }
//发送线程
SendThread::SendThread(QObject *parent) : QThread(parent) SendThread::SendThread(QObject *parent) : QThread(parent)
{ {
@ -591,9 +486,12 @@ bool SendThread::sendData(HANDLE &hPipe, const QByteArray &data)
DWORD bytesWritten; DWORD bytesWritten;
if (!WriteFile(hPipe, data.constData(), static_cast<DWORD>(data.size()), &bytesWritten, nullptr) || bytesWritten == 0) { if (!WriteFile(hPipe, data.constData(), static_cast<DWORD>(data.size()), &bytesWritten, nullptr) || bytesWritten == 0) {
DWORD dwError = GetLastError(); DWORD dwError = GetLastError();
qDebug()<<""<<countimgTopT<<""<<"发送失败时字节数: "<<data.size();
qDebug() << "Failed to write to pipe or no bytes written. Error:" << dwError; qDebug() << "Failed to write to pipe or no bytes written. Error:" << dwError;
return false; return false;
} }
// qDebug()<<"第"<<countimgTopT<<"次"<<"发送成功字节数: "<<data.size();
return true; return true;
} }
@ -615,51 +513,62 @@ void SendThread::SendImgToPython()
} }
//通过 pipe 管道 给python端发送数据
void SendThread::run() void SendThread::run()
{ {
QString pipeName = "\\\\.\\pipe\\rgb_receive";
// 创建并连接到命名管道
hPipe = CreateFile(
(LPCWSTR)pipeName.utf16(), // 管道名称
GENERIC_WRITE, // 写入访问
0, // 不共享
NULL, // 默认安全属性
OPEN_EXISTING, // 打开现有管道
FILE_ATTRIBUTE_NORMAL, // 默认属性
NULL // 没有模板文件
);
QString pipeName2 = "\\\\.\\pipe\\spec_receive";
DWORD written;
// 创建并连接到命名管道(光谱相机发送)
specPipe = CreateFile(
(LPCWSTR)pipeName2.utf16(), // 管道名称
GENERIC_WRITE, // 写入访问
0, // 不共享
NULL, // 默认安全属性
OPEN_EXISTING, // 打开现有管道
FILE_ATTRIBUTE_NORMAL, // 默认属性
NULL // 没有模板文件
);
if(Yure_Flag && (hPipe != INVALID_HANDLE_VALUE))
{
// qDebug() << "预热前";
QByteArray dataToSend;
QDataStream dataStream(&dataToSend, QIODevice::WriteOnly);
dataStream.setByteOrder(QDataStream::BigEndian);
quint32 lenth = 2;
dataStream << lenth;
// 添加命令
QString cmd = "YR";
dataStream.writeRawData(cmd.toLocal8Bit().constData(), 2);
// 发送数据
DWORD yr_Written;
if (!WriteFile(hPipe, dataToSend, 6, &yr_Written, nullptr) || yr_Written != 6) {
DWORD dwError = GetLastError();
qDebug() << "Failed to write to pipe or incorrect number of bytes written. Error:" << dwError;
return;
}
else
{
qDebug() << "预热成功" ;
}
}
while(1) while(1)
{ {
// cameraL->rightImgQueue.pop(); //读取五个RGB队列的队首数据
// cameraL->rightImgQueue.pop(); if(cameraL->topImgTQueue.size()>15)
// cameraL->topImgMQueue.pop();
// cameraL->topImgBQueue.pop();
// cameraL->topImgBQueue.pop();
//(cameraL->topImgTQueue.size()>5)&&(cameraL->topImgMQueue.size()>5)&&(cameraL->topImgBQueue.size()>5)&&(cameraL->leftImgQueue.size()>5)&&(cameraL->rightImgQueue.size()>5)
if(speccamera->specImgQueue.size()>3)
{ {
QTime starttime = QTime::currentTime(); QElapsedTimer timer;
timer.start();
//数据对齐
if(ImgQueue_Alignment)
{
cameraL->topImgMQueue.pop();
cameraL->topImgMQueue.pop();
cameraL->topImgBQueue.pop();
cameraL->topImgBQueue.pop();
cameraL->topImgBQueue.pop();
cameraL->topImgTQueue.pop();
ImgQueue_Alignment = 0;
}
QImage temp[5]; QImage temp[5];
temp[0] = cameraL->topImgTQueue.front(); temp[0] = cameraL->topImgTQueue.front();
cameraL->topImgTQueue.pop(); cameraL->topImgTQueue.pop();
@ -670,86 +579,138 @@ void SendThread::run()
temp[2] = cameraL ->topImgBQueue.front(); temp[2] = cameraL ->topImgBQueue.front();
cameraL -> topImgBQueue.pop(); cameraL -> topImgBQueue.pop();
qDebug()<<"顶部相机下队列大小:"<<cameraL->topImgBQueue.size(); qDebug()<<"顶部相机下队列大小:"<<cameraL->topImgBQueue.size();
temp[3] = cameraL->leftImgQueue.front(); // temp[3] = cameraL->leftImgQueue.front();
cameraL->leftImgQueue.pop(); // cameraL->leftImgQueue.pop();
qDebug()<<"左侧相机队列大小:"<<cameraL->leftImgQueue.size(); // qDebug()<<"左侧相机队列大小:"<<cameraL->leftImgQueue.size();
temp[4] = cameraL->rightImgQueue.front(); // temp[4] = cameraL->rightImgQueue.front();
cameraL->rightImgQueue.pop(); // cameraL->rightImgQueue.pop();
qDebug()<<"右侧相机队列大小:"<<cameraL->rightImgQueue.size(); // qDebug()<<"右侧相机队列大小:"<<cameraL->rightImgQueue.size();
for(int i=0;i<5;i++) //循环五次 将 temp[5] 中的所有图像数据转换为字节流 用于 pipe 管道发送
for(int i=0;i<3;i++)
{ {
// Qt_image_count ++;
// std::string filePath = "C:/tomato0410data/top/middle"; // QString filePath = "C:/Users/succtech/Desktop/Qt_image";
// static int count = 1; // QString imagePath = QString("%1/%2.bmp").arg(filePath).arg(Qt_image_count);
// QString imgpath = QString("%1/%2.bmp").arg(QString::fromStdString(filePath)).arg(count); // temp[i].save(imagePath);
// count++; int width = temp[i].width();
// QImage img(imgpath); // 读取图像 int height = temp[i].height();
// qDebug()<<"原始图像字节: "<<temp[i].byteCount();
QByteArray imageData; QByteArray imgData(reinterpret_cast<const char*>(temp[i].bits()), temp[i].byteCount());
QBuffer buffer(&imageData); // qDebug()<<"现在图像字节: "<<imgData.size();
QDataStream stream(&imgData, QIODevice::ReadWrite);
buffer.open(QIODevice::WriteOnly); stream.setByteOrder(QDataStream::BigEndian);
temp[i].save(&buffer, "bmp"); // 将图片保存为 bmp 格式的字节流
QByteArray dataToSend;
QDataStream dataStream(&dataToSend, QIODevice::WriteOnly);
dataStream.setByteOrder(QDataStream::BigEndian);
// 创建一个新的 QByteArray 来包含长度和图像数据
QByteArray lengthToSend;
QDataStream lengthStream(&lengthToSend, QIODevice::WriteOnly);
lengthStream.setByteOrder(QDataStream::BigEndian); // 确保字节顺序与接收方一致
// 写入图像数据长度4字节
lengthStream << quint32(imageData.size());
// 追加实际的图像数据 quint32 length = static_cast<quint32>(imgData.size() + 6);
lengthToSend.append(imageData); dataStream << length;
// qDebug()<<"lengthToSend: "<<lengthToSend.size();
if (!sendData(hPipe, lengthToSend)) {
qWarning() << "Failed to send data, attempting to reconnect...";
hPipe = reconnect(pipeName);
if (hPipe == INVALID_HANDLE_VALUE) return;
if (!sendData(hPipe, lengthToSend)) return;
return;
}
buffer.close(); // Ensure the buffer is closed after use
//qDebug() << "Image sent successfully, bytes written:" << lengthToSend.size(); if(fruit_flag) //百香果
msleep(10);
qDebug()<<"光谱队列发送前长度: "<<speccamera->specImgQueue.size();
if(i==4)
{ {
unsigned short* specTemp = speccamera->specImgQueue.front(); // 添加命令
speccamera->specImgQueue.pop(); QString cmd = "PF";
qDebug()<<"光谱队列长度: "<<speccamera->specImgQueue.size(); dataStream.writeRawData(cmd.toLocal8Bit().constData(), 2);
QByteArray specByte; // Dimensions
specByte.append(reinterpret_cast<const char*>(specTemp),1024 * 224 * speccamera->totalFrames); dataStream << static_cast<quint16>(height);
QByteArray lengthToSend; dataStream << static_cast<quint16>(width);
QDataStream lengthStream(&lengthToSend, QIODevice::WriteOnly);
lengthStream.setByteOrder(QDataStream::BigEndian); // 确保字节顺序与接收方一致 // Image data
// 写入图像数据长度4字节 dataStream.writeRawData(imgData.constData(), imgData.size());
lengthStream << quint32(specByte.size());
if (!sendData(hPipe, dataToSend))
{
qWarning() << "Failed to send data, attempting to reconnect...";
specPipe = reconnect(pipeName2);
if (specPipe == INVALID_HANDLE_VALUE) return;
if (!sendData(specPipe, dataToSend)) return;
return;
}
//当第五张RGB图发送完之后发送光谱图
if(i==2)
{
unsigned short* specTemp = speccamera->specImgQueue.front();
// qDebug()<<"光谱数据大小:"<<specTemp;
speccamera->specImgQueue.pop();
// qDebug() << "光谱队列长度: " << speccamera->specImgQueue.size();
int specWidth = 30;
int specHeight = 25;
int specBands = 13;
QByteArray specByte,specByte_tosend;
specByte.append(reinterpret_cast<const char*>(specTemp), specWidth * specHeight * specBands * sizeof(unsigned short));
qDebug()<<"specByte: "<<specByte.size();
QDataStream spec_stream(&specByte_tosend, QIODevice::ReadWrite);
spec_stream.setByteOrder(QDataStream::BigEndian);
quint32 length = static_cast<quint32>(specByte.size() + 8);
spec_stream << length;
// 添加命令
QString cmd = "PF";
spec_stream.writeRawData(cmd.toLocal8Bit().constData(), 2);
// Dimensions
spec_stream << static_cast<quint16>(specHeight);
spec_stream << static_cast<quint16>(specWidth);
spec_stream << static_cast<quint16>(specBands);
specByte_tosend.append(specByte);
if (!sendData(specPipe, specByte_tosend))
{
qWarning() << "Failed to send data, attempting to reconnect...";
specPipe = reconnect(pipeName2);
if (specPipe == INVALID_HANDLE_VALUE) return;
if (!sendData(specPipe, specByte_tosend)) return;
return;
}
// qDebug() << "write to spec_pipe." << specByte_tosend.size();
msleep(10);
// qDebug() << "发送完成:";
}
// 追加实际的图像数据
lengthToSend.append(specByte);
DWORD written; // 确保声明这个变量
BOOL success = WriteFile(
specPipe,
lengthToSend.constData(), // 发送包含长度的完整数据
lengthToSend.size(), // 使用完整数据的大小
&written,
NULL
);
qDebug() << "write to pipe."<<lengthToSend.size()<<"success: "<<success;
msleep(10);
} }
else //番茄
{
// 添加命令
QString cmd = "TO";
dataStream.writeRawData(cmd.toLocal8Bit().constData(), 2);
// Dimensions
dataStream << static_cast<quint16>(height);
dataStream << static_cast<quint16>(width);
// Image data
dataStream.writeRawData(imgData.constData(), imgData.size());
if (!sendData(hPipe, dataToSend))
{
qWarning() << "Failed to send data, attempting to reconnect...";
specPipe = reconnect(pipeName2);
if (specPipe == INVALID_HANDLE_VALUE) return;
if (!sendData(specPipe, dataToSend)) return;
return;
}
// if(i == 2)
// {
// // qDebug() << "光谱队列长度: " << speccamera->specImgQueue.size();
// speccamera->specImgQueue.pop();
// qDebug() << "发送完成:";
// }
}
// qint64 elapsed = timer.elapsed();
// qDebug()<<"间隔时间"<<elapsed;
// msleep(100);
} }
QTime stoptime = QTime::currentTime(); // qint64 elapsed = timer.elapsed();
qDebug()<<"发送五张图运行时间:"<<starttime.msecsTo(stoptime); // qDebug()<<"间隔时间"<<elapsed;
} }
} }
// CloseHandle(hPipe); // Make sure to close the pipe handle
} }

View File

@ -12,7 +12,7 @@
#include "src/modbus.h" #include "src/modbus.h"
#include <QImage> #include <QImage>
//处理线程 负责光谱相机的完整数据拼接
class ProcessImg : public QThread class ProcessImg : public QThread
{ {
Q_OBJECT Q_OBJECT
@ -24,6 +24,8 @@ public:
void exitThread(); void exitThread();
QMutex stop_mutex; QMutex stop_mutex;
int spec_count;
protected: protected:
void run(); void run();
@ -35,14 +37,16 @@ signals:
public slots: public slots:
void processSpecSlots(unsigned short* data);
private: private:
}; };
//发送线程 负责使用管道 pipe 给python端发送五张图片
//五张图片分别为 顶部 上、中、下三张 左 右 两张
//待修改:
//1、数据对齐
class SendThread: public QThread class SendThread: public QThread
{ {
Q_OBJECT Q_OBJECT
@ -53,11 +57,16 @@ protected:
public: public:
explicit SendThread(QObject *parent = NULL); explicit SendThread(QObject *parent = NULL);
~SendThread(); ~SendThread();
bool sendData(HANDLE &hPipe, const QByteArray &data); bool sendData(HANDLE &hPipe, const QByteArray &data);
HANDLE reconnect(const QString &pipeName); HANDLE reconnect(const QString &pipeName);
int Yure_Flag = 1;
int Qt_image_count = 0;
private: private:
HANDLE hPipe;
HANDLE specPipe;
void SendImgToPython(); void SendImgToPython();
signals: signals:
@ -66,7 +75,10 @@ private slots:
//void sendimg_topySlots(cv::Mat img1,cv::Mat img2,cv::Mat img3,cv::Mat img4,cv::Mat img5); //void sendimg_topySlots(cv::Mat img1,cv::Mat img2,cv::Mat img3,cv::Mat img4,cv::Mat img5);
}; };
//接收线程 负责接收python端通过 pipe 返回的数据 长径 短径 缺陷数量 缺陷面积 并在窗口展示
//待修改:
//1、具体返回值放在哪里 窗口位置需要调整
//2、判断条件写死 具体数据写活
class RecvThread: public QThread class RecvThread: public QThread
{ {
Q_OBJECT Q_OBJECT
@ -78,15 +90,12 @@ public:
explicit RecvThread(QObject *parent = NULL); explicit RecvThread(QObject *parent = NULL);
~RecvThread(); ~RecvThread();
public slots: public slots:
signals: signals:
void recv_Data(quint16,quint16,quint16,quint32,QImage); void recv_Data(quint16,quint8,quint16,quint8,quint16,quint32,quint16,quint16,QImage);
}; };
#endif // THREAD_H #endif // THREAD_H

View File

@ -37,35 +37,23 @@ FORMS += \
qnx: target.path = /tmp/$${TARGET}/bin qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target !isEmpty(target.path): INSTALLS += target
DISTFILES += \ DISTFILES += \
src/modbus.lib src/modbus.lib
LIBS += -Ldll -lws2_32 LIBS += -Ldll -lws2_32
#查看所有路径知否正确 RGB opencv 光谱相机
#建议改成绝对路径
# rgb camera SDK # rgb camera SDK
#ROOT_DIR = $$PWD LIBS += -LD:/porject/20240425/rgbcamera_sdk/Libraries/win64 -lMvCameraControl
LIBS += -LF:projectNJFU/20240429(END)/sdk -lMvCameraControl INCLUDEPATH += D:/porject/20240425/rgbcamera_sdk/Includes
INCLUDEPATH += F:/projectNJFU/20240429(END)/sdk/rgbcamera_sdk/Includes DEPENDPATH += D:/porject/20240425/rgbcamera_sdk/Includes
DEPENDPATH += F:/projectNJFU/20240429(END)/sdk/rgbcamera_sdk/Includes
# LIBS +=-LE:/QT/projects/tomato20240415/tomato04150955 -lMvCameraControl
# INCLUDEPATH += E:/QT/projects/tomato20240415/tomato04150955/rgbcamera_sdk/Includes
# DEPENDPATH += E:/QT/projects/tomato20240415/tomato04150955/rgbcamera_sdk/Includes
# opencv
LIBS += -LF:/projectNJFU/20240429(END)/sdk/opencv -llibopencv_world344.dll
LIBS += -LF:/projectNJFU/20240429(END)/sdk/opencv/Withcontrib -llibopencv_img_hash344.dll
INCLUDEPATH += F:/projectNJFU/20240429(END)/sdk/opencv/Withcontrib/include
INCLUDEPATH += F:/projectNJFU/20240429(END)/sdk/opencv/Withcontrib/include/opencv
INCLUDEPATH += F:/projectNJFU/20240429(END)/sdk/opencv/Withcontrib/include/opencv2
# spec # spec
INCLUDEPATH += D:/porject/20240425/RT_SDK/SDK/include
DEPENDPATH += D:/porject/20240425/RT_SDK/SDK/include
LIBS += -LD:/porject/20240425/RT_SDK/SDK/lib -lSpectrolDll
LIBS += -LF:/projectNJFU/20240429(END)/sdk -lSpectrolDll
INCLUDEPATH += F:/projectNJFU/20240429(END)/sdk
DEPENDPATH += F:/projectNJFU/20240429(END)/sdk
LIBS += -LF:/projectNJFU/20240429(END)/sdk -lSpectrolDll
RESOURCES +=

View File

@ -1,264 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 11.0.3, 2024-05-11T16:32:05. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{0b75770b-fd0a-46a4-bbf9-c9fd6b2a44bc}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">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="qlonglong" 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.PreferSingleLineComments">false</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="bool" key="EditorConfiguration.UseIndenter">false</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="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<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>
<value type="bool" key="ClangTools.PreferConfigFile">true</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="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_mingw81_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">F:\projectNJFU\20240429(END)\sdk</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">F:/projectNJFU/20240429(END)/sdk</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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">F:\tomato\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">F:/tomato/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">F:\tomato\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">F:/tomato/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</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>
<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="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">tomato12272</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:F:/projectNJFU/20240429(END)/code/tomato1227.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">F:/projectNJFU/20240429(END)/code/tomato1227.pro</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">F:/projectNJFU/20240429(END)/sdk</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@ -1,263 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 10.0.2, 2024-01-16T17:03:55. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{0362ffc6-07c5-459f-9588-e5db68ec6f9e}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">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="qlonglong" 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.PreferSingleLineComments">false</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="bool" key="EditorConfiguration.UseIndenter">false</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="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">10</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="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_mingw81_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\86198\Desktop\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/86198/Desktop/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\86198\Desktop\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/86198/Desktop/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\86198\Desktop\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/86198/Desktop/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</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>
<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="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<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:C:/Users/86198/Desktop/tomato1227/tomato1227.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Users/86198/Desktop/tomato1227/tomato1227.pro</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.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">C:/Users/86198/Desktop/build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@ -1,263 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 11.0.3, 2024-01-16T12:00:39. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{0b75770b-fd0a-46a4-bbf9-c9fd6b2a44bc}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">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="qlonglong" 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.PreferSingleLineComments">false</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="bool" key="EditorConfiguration.UseIndenter">false</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="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<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>
<value type="bool" key="ClangTools.PreferConfigFile">true</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="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_mingw81_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">F:\tomato\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">F:/tomato/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">F:\tomato\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">F:/tomato/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">F:\tomato\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">F:/tomato/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</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>
<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="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:F:/tomato/tomato1227/tomato1227.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">F:/tomato/tomato1227/tomato1227.pro</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">F:/tomato/build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@ -1,311 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 12.0.1, 2024-01-26T09:23:55. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{1009ea28-efb8-46ce-b0b8-d4f802a27ecf}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">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="qlonglong" 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="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</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="bool" key="EditorConfiguration.UseIndenter">false</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="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<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>
<value type="bool" key="ClangTools.PreferConfigFile">true</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 type="QVariantMap" key="ClangdSettings">
<value type="bool" key="blockIndexing">false</value>
<value type="bool" key="useGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_mingw81_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\2024124</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/2024124</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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</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>
<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="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">tomato12272</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/Users/succtech/Desktop/20240124_2223/tomato1227.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Users/succtech/Desktop/20240124_2223/tomato1227.pro</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">true</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@ -1,263 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 10.0.2, 2024-01-17T15:17:03. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{2ef3400b-7837-46e6-9c79-6f91af76e1d5}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">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="qlonglong" 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.PreferSingleLineComments">false</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="bool" key="EditorConfiguration.UseIndenter">false</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="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">2</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="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_mingw81_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">G:\project\tomato\tomato1227</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">G:/project/tomato/tomato1227</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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">G:\project\tomato\tomato1227</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">G:/project/tomato/tomato1227</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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">G:\project\tomato\tomato1227</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">G:/project/tomato/tomato1227</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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</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>
<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="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<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:G:/project/tomato/tomato1227/tomato1227.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">G:/project/tomato/tomato1227/tomato1227.pro</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.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">G:/project/tomato/tomato1227</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@ -1,185 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 12.0.2, 2024-04-08T16:18:52. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{81d103d8-fd18-4f01-a65a-92e8628dbfcd}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">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="qlonglong" 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="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</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="bool" key="EditorConfiguration.UseIndenter">false</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="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">2</value>
<value type="bool" key="ClangTools.PreferConfigFile">true</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="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_mingw81_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\QT\projects\0126tomato\20240124_2223</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/QT/projects/0126tomato/20240124_2223</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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</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>
<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="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/QT/projects/0126tomato/20240124_2223/tomato1227.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">E:/QT/projects/0126tomato/20240124_2223/tomato1227.pro</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">E:/QT/projects/0126tomato/20240124_2223</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@ -1,267 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 12.0.1, 2024-02-28T07:37:41. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{a29e9816-bd57-47f9-a79d-a2fcc651cb89}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">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="qlonglong" 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="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</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="bool" key="EditorConfiguration.UseIndenter">false</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="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<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>
<value type="bool" key="ClangTools.PreferConfigFile">true</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="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_mingw81_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\project\0126tomato\20240124_2223</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/project/0126tomato/20240124_2223</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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\project\0126tomato\20240124_2223</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/project/0126tomato/20240124_2223</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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\project\0126tomato\20240124_2223</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/project/0126tomato/20240124_2223</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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</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>
<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="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/project/0126tomato/20240124_2223/tomato1227.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/project/0126tomato/20240124_2223/tomato1227.pro</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/project/0126tomato/20240124_2223</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@ -1,267 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 12.0.1, 2024-01-22T20:59:52. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{f5ab958a-1c85-4aac-9ade-662345558262}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">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="qlonglong" 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="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</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="bool" key="EditorConfiguration.UseIndenter">false</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="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<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>
<value type="bool" key="ClangTools.PreferConfigFile">true</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="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_mingw81_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\succtech\Desktop\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/succtech/Desktop/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\succtech\Desktop\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/succtech/Desktop/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\succtech\Desktop\build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/succtech/Desktop/build-tomato1227-Desktop_Qt_5_15_2_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="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>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</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.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</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.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">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="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</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>
<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="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/Users/succtech/Desktop/tomato2024120/tomato1227.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Users/succtech/Desktop/tomato2024120/tomato1227.pro</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">C:/Users/succtech/Desktop/build-tomato1227-Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@ -1,272 +0,0 @@
# {05D8C294-F295-4dfb-9D01-096BD04049F4}
# GenApi persistence file (version 3.0.1)
# Device = HIKROBOT::HIKCamera -- HIKROBOT GigE Vision Camera Interface -- Device version = 1.2.0 -- Product GUID = EE4B7E09-DA29-4956-A1EC-212263331CFC -- Product version GUID = 79ace398-62e3-44a6-8845-f81aaf104382
ReverseX 0
ReverseY 0
PixelFormat BayerRG8
DecimationHorizontal DecimationHorizontal1
DecimationVertical DecimationVertical1
AcquisitionMode Continuous
AcquisitionBurstFrameCount 1
AcquisitionFrameRate 23.14
AcquisitionFrameRateEnable 1
TriggerCacheEnable 0
ExposureMode Timed
ExposureTimeMode Standard
ExposureTime 1500
ExposureAuto Off
AutoExposureTimeLowerLimit 15
AutoExposureTimeUpperLimit 42663
HDREnable 0
ActionDeviceKey 0
ChunkModeActive 0
CCMEnable 1
ColorTransformationSelector RGBtoRGB
ColorTransformationEnable 1
ColorTransformationValueSelector Gain00
Gain 0
GainAuto Off
AutoGainLowerLimit 0
AutoGainUpperLimit 23.9812
DigitalShiftEnable 0
BlackLevel 240
BlackLevelEnable 1
BalanceWhiteAuto Continuous
BalanceColorTemperatureMode NarrowMode
UserSetDefault Default
GevHeartbeatTimeout 3000
GevGVCPHeartbeatDisable 0
GevMCTT 0
GevMCRC 0
GevIEEE1588 0
GevGVSPExtendedIDMode Off
ActionSelector 0
ActionGroupMask 0
ActionSelector 0
ActionSelector 0
ActionGroupKey 0
ActionSelector 0
AutoFunctionAOISelector AOI1
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI2
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI2
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIUsageIntensity 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI2
AutoFunctionAOIUsageWhiteBalance 0
AutoFunctionAOISelector AOI1
BinningSelector Region0
BinningHorizontal BinningHorizontal1
BinningSelector Region0
BinningSelector Region0
BinningVertical BinningVertical1
BinningSelector Region0
CounterSelector Counter0
CounterEventSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterResetSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterValue 1
CounterSelector Counter0
DeviceLinkSelector 0
DeviceLinkHeartbeatMode On
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
DeviceStreamChannelPacketSize 1500
DeviceStreamChannelSelector 0
EventSelector AcquisitionStart
EventNotification Off
EventSelector AcquisitionEnd
EventNotification Off
EventSelector FrameStart
EventNotification Off
EventSelector FrameEnd
EventNotification Off
EventSelector FrameBurstStart
EventNotification Off
EventSelector FrameBurstEnd
EventNotification Off
EventSelector ExposureStart
EventNotification Off
EventSelector ExposureEnd
EventNotification Off
EventSelector Line0RisingEdge
EventNotification Off
EventSelector Line0FallingEdge
EventNotification Off
EventSelector FrameStartOverTrigger
EventNotification Off
EventSelector StreamTransferOverflow
EventNotification Off
EventSelector FrameTriggerWait
EventNotification Off
EventSelector AcquisitionStart
FileSelector UserSet1
FileOperationSelector Open
FileSelector UserSet2
FileOperationSelector Open
FileSelector UserSet3
FileOperationSelector Open
FileSelector DPC
FileOperationSelector Open
FileSelector LUTLuminance1
FileOperationSelector Open
FileSelector LUTLuminance2
FileOperationSelector Open
FileSelector LUTLuminance3
FileOperationSelector Open
FileSelector UserSet1
FileSelector UserSet1
FileOpenMode Read
FileSelector UserSet2
FileOpenMode Read
FileSelector UserSet3
FileOpenMode Read
FileSelector DPC
FileOpenMode Read
FileSelector LUTLuminance1
FileOpenMode Read
FileSelector LUTLuminance2
FileOpenMode Read
FileSelector LUTLuminance3
FileOpenMode Read
FileSelector UserSet1
FrameSpecInfoSelector Timestamp
FrameSpecInfo 0
FrameSpecInfoSelector Gain
FrameSpecInfo 0
FrameSpecInfoSelector Exposure
FrameSpecInfo 0
FrameSpecInfoSelector BrightnessInfo
FrameSpecInfo 0
FrameSpecInfoSelector WhiteBalance
FrameSpecInfo 0
FrameSpecInfoSelector Framecounter
FrameSpecInfo 0
FrameSpecInfoSelector ExtTriggerCount
FrameSpecInfo 0
FrameSpecInfoSelector LineInputOutput
FrameSpecInfo 0
FrameSpecInfoSelector ROIPosition
FrameSpecInfo 0
FrameSpecInfoSelector Timestamp
GevStreamChannelSelector 0
GevSCPSPacketSize 1500
GevStreamChannelSelector 0
GevStreamChannelSelector 0
GevSCPD 400
GevStreamChannelSelector 0
HDRSelector 0
HDRShutter 15
HDRSelector 1
HDRShutter 15
HDRSelector 2
HDRShutter 15
HDRSelector 3
HDRShutter 15
HDRSelector 0
HDRSelector 0
HDRGain 0
HDRSelector 1
HDRGain 0
HDRSelector 2
HDRGain 0
HDRSelector 3
HDRGain 0
HDRSelector 0
LineSelector Line1
LineMode Strobe
LineSelector Line2
LineMode Input
LineSelector Line0
LineSelector Line1
LineSource ExposureStartActive
LineSelector Line0
LineSelector Line1
LineInverter 0
LineSelector Line0
LineSelector Line1
StrobeEnable 0
LineSelector Line0
LineSelector Line0
LineDebouncerTime 50
LineSelector Line2
LineDebouncerTime 50
LineSelector Line0
LineSelector Line1
StrobeLineDuration 0
LineSelector Line0
LineSelector Line1
StrobeLineDelay 0
LineSelector Line0
LineSelector Line1
StrobeLinePreDelay 0
LineSelector Line0
RegionSelector Region0
RegionDestination Stream0
RegionSelector Region0
RegionSelector Region0
Width 2448
RegionSelector Region0
RegionSelector Region0
Height 2048
RegionSelector Region0
RegionSelector Region0
OffsetX 0
RegionSelector Region0
RegionSelector Region0
OffsetY 0
RegionSelector Region0
TestPatternGeneratorSelector Region0
TestPattern Off
TestPatternGeneratorSelector Region0
TriggerSelector FrameBurstStart
TriggerMode Off
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerSource Line0
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerActivation RisingEdge
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerDelay 0
TriggerSelector FrameBurstStart
DeviceConnectionSelector 0
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
RegionSelector Region0
TestPatternGeneratorSelector Region0
BinningSelector Region0
FrameSpecInfoSelector Timestamp
TriggerSelector FrameBurstStart
HDRSelector 0
LineSelector Line0
ActionSelector 0
CounterSelector Counter0
FileSelector UserSet1
FileOperationSelector Open
EventSelector AcquisitionStart
AutoFunctionAOISelector AOI1
UserSetSelector Default
GevSupportedOptionSelector CommandsConcatenation
GevStreamChannelSelector 0

View File

@ -1,272 +0,0 @@
# {05D8C294-F295-4dfb-9D01-096BD04049F4}
# GenApi persistence file (version 3.0.1)
# Device = HIKROBOT::HIKCamera -- HIKROBOT GigE Vision Camera Interface -- Device version = 1.2.0 -- Product GUID = EE4B7E09-DA29-4956-A1EC-212263331CFC -- Product version GUID = 79ace398-62e3-44a6-8845-f81aaf104382
ReverseX 0
ReverseY 0
PixelFormat BayerRG8
DecimationHorizontal DecimationHorizontal1
DecimationVertical DecimationVertical1
AcquisitionMode Continuous
AcquisitionBurstFrameCount 1
AcquisitionFrameRate 23.14
AcquisitionFrameRateEnable 1
TriggerCacheEnable 0
ExposureMode Timed
ExposureTimeMode Standard
ExposureTime 1500
ExposureAuto Off
AutoExposureTimeLowerLimit 15
AutoExposureTimeUpperLimit 42663
HDREnable 0
ActionDeviceKey 0
ChunkModeActive 0
CCMEnable 1
ColorTransformationSelector RGBtoRGB
ColorTransformationEnable 1
ColorTransformationValueSelector Gain00
Gain 0
GainAuto Off
AutoGainLowerLimit 0
AutoGainUpperLimit 23.9812
DigitalShiftEnable 0
BlackLevel 240
BlackLevelEnable 1
BalanceWhiteAuto Continuous
BalanceColorTemperatureMode NarrowMode
UserSetDefault Default
GevHeartbeatTimeout 3000
GevGVCPHeartbeatDisable 0
GevMCTT 0
GevMCRC 0
GevIEEE1588 0
GevGVSPExtendedIDMode Off
ActionSelector 0
ActionGroupMask 0
ActionSelector 0
ActionSelector 0
ActionGroupKey 0
ActionSelector 0
AutoFunctionAOISelector AOI1
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI2
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI2
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIUsageIntensity 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI2
AutoFunctionAOIUsageWhiteBalance 0
AutoFunctionAOISelector AOI1
BinningSelector Region0
BinningHorizontal BinningHorizontal1
BinningSelector Region0
BinningSelector Region0
BinningVertical BinningVertical1
BinningSelector Region0
CounterSelector Counter0
CounterEventSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterResetSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterValue 1
CounterSelector Counter0
DeviceLinkSelector 0
DeviceLinkHeartbeatMode On
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
DeviceStreamChannelPacketSize 1500
DeviceStreamChannelSelector 0
EventSelector AcquisitionStart
EventNotification Off
EventSelector AcquisitionEnd
EventNotification Off
EventSelector FrameStart
EventNotification Off
EventSelector FrameEnd
EventNotification Off
EventSelector FrameBurstStart
EventNotification Off
EventSelector FrameBurstEnd
EventNotification Off
EventSelector ExposureStart
EventNotification Off
EventSelector ExposureEnd
EventNotification Off
EventSelector Line0RisingEdge
EventNotification Off
EventSelector Line0FallingEdge
EventNotification Off
EventSelector FrameStartOverTrigger
EventNotification Off
EventSelector StreamTransferOverflow
EventNotification Off
EventSelector FrameTriggerWait
EventNotification Off
EventSelector AcquisitionStart
FileSelector UserSet1
FileOperationSelector Open
FileSelector UserSet2
FileOperationSelector Open
FileSelector UserSet3
FileOperationSelector Open
FileSelector DPC
FileOperationSelector Open
FileSelector LUTLuminance1
FileOperationSelector Open
FileSelector LUTLuminance2
FileOperationSelector Open
FileSelector LUTLuminance3
FileOperationSelector Open
FileSelector UserSet1
FileSelector UserSet1
FileOpenMode Read
FileSelector UserSet2
FileOpenMode Read
FileSelector UserSet3
FileOpenMode Read
FileSelector DPC
FileOpenMode Read
FileSelector LUTLuminance1
FileOpenMode Read
FileSelector LUTLuminance2
FileOpenMode Read
FileSelector LUTLuminance3
FileOpenMode Read
FileSelector UserSet1
FrameSpecInfoSelector Timestamp
FrameSpecInfo 0
FrameSpecInfoSelector Gain
FrameSpecInfo 0
FrameSpecInfoSelector Exposure
FrameSpecInfo 0
FrameSpecInfoSelector BrightnessInfo
FrameSpecInfo 0
FrameSpecInfoSelector WhiteBalance
FrameSpecInfo 0
FrameSpecInfoSelector Framecounter
FrameSpecInfo 0
FrameSpecInfoSelector ExtTriggerCount
FrameSpecInfo 0
FrameSpecInfoSelector LineInputOutput
FrameSpecInfo 0
FrameSpecInfoSelector ROIPosition
FrameSpecInfo 0
FrameSpecInfoSelector Timestamp
GevStreamChannelSelector 0
GevSCPSPacketSize 1500
GevStreamChannelSelector 0
GevStreamChannelSelector 0
GevSCPD 400
GevStreamChannelSelector 0
HDRSelector 0
HDRShutter 15
HDRSelector 1
HDRShutter 15
HDRSelector 2
HDRShutter 15
HDRSelector 3
HDRShutter 15
HDRSelector 0
HDRSelector 0
HDRGain 0
HDRSelector 1
HDRGain 0
HDRSelector 2
HDRGain 0
HDRSelector 3
HDRGain 0
HDRSelector 0
LineSelector Line1
LineMode Strobe
LineSelector Line2
LineMode Input
LineSelector Line0
LineSelector Line1
LineSource ExposureStartActive
LineSelector Line0
LineSelector Line1
LineInverter 0
LineSelector Line0
LineSelector Line1
StrobeEnable 0
LineSelector Line0
LineSelector Line0
LineDebouncerTime 50
LineSelector Line2
LineDebouncerTime 50
LineSelector Line0
LineSelector Line1
StrobeLineDuration 0
LineSelector Line0
LineSelector Line1
StrobeLineDelay 0
LineSelector Line0
LineSelector Line1
StrobeLinePreDelay 0
LineSelector Line0
RegionSelector Region0
RegionDestination Stream0
RegionSelector Region0
RegionSelector Region0
Width 2448
RegionSelector Region0
RegionSelector Region0
Height 2048
RegionSelector Region0
RegionSelector Region0
OffsetX 0
RegionSelector Region0
RegionSelector Region0
OffsetY 0
RegionSelector Region0
TestPatternGeneratorSelector Region0
TestPattern Off
TestPatternGeneratorSelector Region0
TriggerSelector FrameBurstStart
TriggerMode Off
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerSource Line0
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerActivation RisingEdge
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerDelay 0
TriggerSelector FrameBurstStart
DeviceConnectionSelector 0
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
RegionSelector Region0
TestPatternGeneratorSelector Region0
BinningSelector Region0
FrameSpecInfoSelector Timestamp
TriggerSelector FrameBurstStart
HDRSelector 0
LineSelector Line0
ActionSelector 0
CounterSelector Counter0
FileSelector UserSet1
FileOperationSelector Open
EventSelector AcquisitionStart
AutoFunctionAOISelector AOI1
UserSetSelector Default
GevSupportedOptionSelector CommandsConcatenation
GevStreamChannelSelector 0

View File

@ -1,279 +0,0 @@
# {05D8C294-F295-4dfb-9D01-096BD04049F4}
# GenApi persistence file (version 3.0.1)
# Device = HIKROBOT::HIKCamera -- HIKROBOT GigE Vision Camera Interface -- Device version = 1.2.0 -- Product GUID = EE4B7E09-DA29-4956-A1EC-212263331CFC -- Product version GUID = 79ace398-62e3-44a6-8845-f81aaf104382
ReverseX 0
ReverseY 0
PixelFormat BayerRG8
DecimationHorizontal DecimationHorizontal1
DecimationVertical DecimationVertical1
AcquisitionMode Continuous
AcquisitionBurstFrameCount 1
AcquisitionFrameRate 23.14
AcquisitionFrameRateEnable 1
TriggerCacheEnable 0
ExposureMode Timed
ExposureTimeMode Standard
ExposureTime 1500
ExposureAuto Off
AutoExposureTimeLowerLimit 15
AutoExposureTimeUpperLimit 42663
HDREnable 0
ActionDeviceKey 0
ChunkModeActive 0
CCMEnable 1
ColorTransformationSelector RGBtoRGB
ColorTransformationEnable 1
ColorTransformationValueSelector Gain22
Gain 0
GainAuto Off
AutoGainLowerLimit 0
AutoGainUpperLimit 23.9812
DigitalShiftEnable 0
BlackLevel 240
BlackLevelEnable 1
BalanceWhiteAuto Off
UserSetDefault Default
GevHeartbeatTimeout 3000
GevGVCPHeartbeatDisable 0
GevMCTT 0
GevMCRC 0
GevIEEE1588 0
GevGVSPExtendedIDMode Off
ActionSelector 0
ActionGroupMask 0
ActionSelector 0
ActionSelector 0
ActionGroupKey 0
ActionSelector 0
AutoFunctionAOISelector AOI1
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI2
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI2
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIUsageIntensity 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI2
AutoFunctionAOIUsageWhiteBalance 0
AutoFunctionAOISelector AOI1
BalanceRatioSelector Red
BalanceRatio 1458
BalanceRatioSelector Green
BalanceRatio 1024
BalanceRatioSelector Blue
BalanceRatio 1957
BalanceRatioSelector Red
BinningSelector Region0
BinningHorizontal BinningHorizontal1
BinningSelector Region0
BinningSelector Region0
BinningVertical BinningVertical1
BinningSelector Region0
CounterSelector Counter0
CounterEventSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterResetSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterValue 1
CounterSelector Counter0
DeviceLinkSelector 0
DeviceLinkHeartbeatMode On
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
DeviceStreamChannelPacketSize 1500
DeviceStreamChannelSelector 0
EventSelector AcquisitionStart
EventNotification Off
EventSelector AcquisitionEnd
EventNotification Off
EventSelector FrameStart
EventNotification Off
EventSelector FrameEnd
EventNotification Off
EventSelector FrameBurstStart
EventNotification Off
EventSelector FrameBurstEnd
EventNotification Off
EventSelector ExposureStart
EventNotification Off
EventSelector ExposureEnd
EventNotification Off
EventSelector Line0RisingEdge
EventNotification Off
EventSelector Line0FallingEdge
EventNotification Off
EventSelector FrameStartOverTrigger
EventNotification Off
EventSelector StreamTransferOverflow
EventNotification Off
EventSelector FrameTriggerWait
EventNotification Off
EventSelector StreamTransferOverflow
FileSelector UserSet1
FileOperationSelector Open
FileSelector UserSet2
FileOperationSelector Open
FileSelector UserSet3
FileOperationSelector Open
FileSelector DPC
FileOperationSelector Open
FileSelector LUTLuminance1
FileOperationSelector Open
FileSelector LUTLuminance2
FileOperationSelector Open
FileSelector LUTLuminance3
FileOperationSelector Open
FileSelector UserSet1
FileSelector UserSet1
FileOpenMode Read
FileSelector UserSet2
FileOpenMode Read
FileSelector UserSet3
FileOpenMode Read
FileSelector DPC
FileOpenMode Read
FileSelector LUTLuminance1
FileOpenMode Read
FileSelector LUTLuminance2
FileOpenMode Read
FileSelector LUTLuminance3
FileOpenMode Read
FileSelector UserSet1
FrameSpecInfoSelector Timestamp
FrameSpecInfo 0
FrameSpecInfoSelector Gain
FrameSpecInfo 0
FrameSpecInfoSelector Exposure
FrameSpecInfo 0
FrameSpecInfoSelector BrightnessInfo
FrameSpecInfo 0
FrameSpecInfoSelector WhiteBalance
FrameSpecInfo 0
FrameSpecInfoSelector Framecounter
FrameSpecInfo 0
FrameSpecInfoSelector ExtTriggerCount
FrameSpecInfo 0
FrameSpecInfoSelector LineInputOutput
FrameSpecInfo 0
FrameSpecInfoSelector ROIPosition
FrameSpecInfo 0
FrameSpecInfoSelector Timestamp
GevStreamChannelSelector 0
GevSCPSPacketSize 1500
GevStreamChannelSelector 0
GevStreamChannelSelector 0
GevSCPD 400
GevStreamChannelSelector 0
HDRSelector 0
HDRShutter 15
HDRSelector 1
HDRShutter 15
HDRSelector 2
HDRShutter 15
HDRSelector 3
HDRShutter 15
HDRSelector 0
HDRSelector 0
HDRGain 0
HDRSelector 1
HDRGain 0
HDRSelector 2
HDRGain 0
HDRSelector 3
HDRGain 0
HDRSelector 0
LineSelector Line1
LineMode Strobe
LineSelector Line2
LineMode Input
LineSelector Line0
LineSelector Line1
LineSource ExposureStartActive
LineSelector Line0
LineSelector Line1
LineInverter 0
LineSelector Line0
LineSelector Line1
StrobeEnable 0
LineSelector Line0
LineSelector Line0
LineDebouncerTime 100
LineSelector Line2
LineDebouncerTime 50
LineSelector Line0
LineSelector Line1
StrobeLineDuration 0
LineSelector Line0
LineSelector Line1
StrobeLineDelay 0
LineSelector Line0
LineSelector Line1
StrobeLinePreDelay 0
LineSelector Line0
RegionSelector Region0
RegionDestination Stream0
RegionSelector Region0
RegionSelector Region0
Width 880
RegionSelector Region0
RegionSelector Region0
Height 1840
RegionSelector Region0
RegionSelector Region0
OffsetX 700
RegionSelector Region0
RegionSelector Region0
OffsetY 156
RegionSelector Region0
TestPatternGeneratorSelector Region0
TestPattern Off
TestPatternGeneratorSelector Region0
TriggerSelector FrameBurstStart
TriggerMode On
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerSource Line0
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerActivation RisingEdge
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerDelay 0
TriggerSelector FrameBurstStart
DeviceConnectionSelector 0
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
RegionSelector Region0
TestPatternGeneratorSelector Region0
BinningSelector Region0
FrameSpecInfoSelector Timestamp
TriggerSelector FrameBurstStart
HDRSelector 0
LineSelector Line0
ActionSelector 0
CounterSelector Counter0
FileSelector UserSet1
FileOperationSelector Open
EventSelector StreamTransferOverflow
BalanceRatioSelector Red
AutoFunctionAOISelector AOI1
UserSetSelector Default
GevSupportedOptionSelector CommandsConcatenation
GevStreamChannelSelector 0

279
top.mfs
View File

@ -1,279 +0,0 @@
# {05D8C294-F295-4dfb-9D01-096BD04049F4}
# GenApi persistence file (version 3.0.1)
# Device = HIKROBOT::HIKCamera -- HIKROBOT GigE Vision Camera Interface -- Device version = 1.2.0 -- Product GUID = EE4B7E09-DA29-4956-A1EC-212263331CFC -- Product version GUID = 79ace398-62e3-44a6-8845-f81aaf104382
ReverseX 0
ReverseY 0
PixelFormat BayerRG8
DecimationHorizontal DecimationHorizontal1
DecimationVertical DecimationVertical1
AcquisitionMode Continuous
AcquisitionBurstFrameCount 1
AcquisitionFrameRate 23.14
AcquisitionFrameRateEnable 1
TriggerCacheEnable 0
ExposureMode Timed
ExposureTimeMode Standard
ExposureTime 700
ExposureAuto Off
AutoExposureTimeLowerLimit 15
AutoExposureTimeUpperLimit 42663
HDREnable 0
ActionDeviceKey 0
ChunkModeActive 0
CCMEnable 1
ColorTransformationSelector RGBtoRGB
ColorTransformationEnable 1
ColorTransformationValueSelector Gain22
Gain 0
GainAuto Off
AutoGainLowerLimit 0
AutoGainUpperLimit 23.9812
DigitalShiftEnable 0
BlackLevel 240
BlackLevelEnable 1
BalanceWhiteAuto Off
UserSetDefault Default
GevHeartbeatTimeout 3000
GevGVCPHeartbeatDisable 0
GevMCTT 0
GevMCRC 0
GevIEEE1588 0
GevGVSPExtendedIDMode Off
ActionSelector 0
ActionGroupMask 0
ActionSelector 0
ActionSelector 0
ActionGroupKey 0
ActionSelector 0
AutoFunctionAOISelector AOI1
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI2
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI2
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIUsageIntensity 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI2
AutoFunctionAOIUsageWhiteBalance 0
AutoFunctionAOISelector AOI1
BalanceRatioSelector Red
BalanceRatio 1458
BalanceRatioSelector Green
BalanceRatio 1024
BalanceRatioSelector Blue
BalanceRatio 1957
BalanceRatioSelector Red
BinningSelector Region0
BinningHorizontal BinningHorizontal1
BinningSelector Region0
BinningSelector Region0
BinningVertical BinningVertical1
BinningSelector Region0
CounterSelector Counter0
CounterEventSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterResetSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterValue 1
CounterSelector Counter0
DeviceLinkSelector 0
DeviceLinkHeartbeatMode On
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
DeviceStreamChannelPacketSize 1500
DeviceStreamChannelSelector 0
EventSelector AcquisitionStart
EventNotification Off
EventSelector AcquisitionEnd
EventNotification Off
EventSelector FrameStart
EventNotification Off
EventSelector FrameEnd
EventNotification Off
EventSelector FrameBurstStart
EventNotification Off
EventSelector FrameBurstEnd
EventNotification Off
EventSelector ExposureStart
EventNotification Off
EventSelector ExposureEnd
EventNotification Off
EventSelector Line0RisingEdge
EventNotification Off
EventSelector Line0FallingEdge
EventNotification Off
EventSelector FrameStartOverTrigger
EventNotification Off
EventSelector StreamTransferOverflow
EventNotification Off
EventSelector FrameTriggerWait
EventNotification Off
EventSelector StreamTransferOverflow
FileSelector UserSet1
FileOperationSelector Open
FileSelector UserSet2
FileOperationSelector Open
FileSelector UserSet3
FileOperationSelector Open
FileSelector DPC
FileOperationSelector Open
FileSelector LUTLuminance1
FileOperationSelector Open
FileSelector LUTLuminance2
FileOperationSelector Open
FileSelector LUTLuminance3
FileOperationSelector Open
FileSelector UserSet1
FileSelector UserSet1
FileOpenMode Read
FileSelector UserSet2
FileOpenMode Read
FileSelector UserSet3
FileOpenMode Read
FileSelector DPC
FileOpenMode Read
FileSelector LUTLuminance1
FileOpenMode Read
FileSelector LUTLuminance2
FileOpenMode Read
FileSelector LUTLuminance3
FileOpenMode Read
FileSelector UserSet1
FrameSpecInfoSelector Timestamp
FrameSpecInfo 0
FrameSpecInfoSelector Gain
FrameSpecInfo 0
FrameSpecInfoSelector Exposure
FrameSpecInfo 0
FrameSpecInfoSelector BrightnessInfo
FrameSpecInfo 0
FrameSpecInfoSelector WhiteBalance
FrameSpecInfo 0
FrameSpecInfoSelector Framecounter
FrameSpecInfo 0
FrameSpecInfoSelector ExtTriggerCount
FrameSpecInfo 0
FrameSpecInfoSelector LineInputOutput
FrameSpecInfo 0
FrameSpecInfoSelector ROIPosition
FrameSpecInfo 0
FrameSpecInfoSelector Timestamp
GevStreamChannelSelector 0
GevSCPSPacketSize 1500
GevStreamChannelSelector 0
GevStreamChannelSelector 0
GevSCPD 400
GevStreamChannelSelector 0
HDRSelector 0
HDRShutter 15
HDRSelector 1
HDRShutter 15
HDRSelector 2
HDRShutter 15
HDRSelector 3
HDRShutter 15
HDRSelector 0
HDRSelector 0
HDRGain 0
HDRSelector 1
HDRGain 0
HDRSelector 2
HDRGain 0
HDRSelector 3
HDRGain 0
HDRSelector 0
LineSelector Line1
LineMode Strobe
LineSelector Line2
LineMode Input
LineSelector Line0
LineSelector Line1
LineSource ExposureStartActive
LineSelector Line0
LineSelector Line1
LineInverter 0
LineSelector Line0
LineSelector Line1
StrobeEnable 0
LineSelector Line0
LineSelector Line0
LineDebouncerTime 100
LineSelector Line2
LineDebouncerTime 50
LineSelector Line0
LineSelector Line1
StrobeLineDuration 0
LineSelector Line0
LineSelector Line1
StrobeLineDelay 0
LineSelector Line0
LineSelector Line1
StrobeLinePreDelay 0
LineSelector Line0
RegionSelector Region0
RegionDestination Stream0
RegionSelector Region0
RegionSelector Region0
Width 848
RegionSelector Region0
RegionSelector Region0
Height 2048
RegionSelector Region0
RegionSelector Region0
OffsetX 700
RegionSelector Region0
RegionSelector Region0
OffsetY 0
RegionSelector Region0
TestPatternGeneratorSelector Region0
TestPattern Off
TestPatternGeneratorSelector Region0
TriggerSelector FrameBurstStart
TriggerMode On
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerSource Line0
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerActivation RisingEdge
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerDelay 0
TriggerSelector FrameBurstStart
DeviceConnectionSelector 0
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
RegionSelector Region0
TestPatternGeneratorSelector Region0
BinningSelector Region0
FrameSpecInfoSelector Timestamp
TriggerSelector FrameBurstStart
HDRSelector 0
LineSelector Line0
ActionSelector 0
CounterSelector Counter0
FileSelector UserSet1
FileOperationSelector Open
EventSelector StreamTransferOverflow
BalanceRatioSelector Red
AutoFunctionAOISelector AOI1
UserSetSelector Default
GevSupportedOptionSelector CommandsConcatenation
GevStreamChannelSelector 0

279
top2.mfs
View File

@ -1,279 +0,0 @@
# {05D8C294-F295-4dfb-9D01-096BD04049F4}
# GenApi persistence file (version 3.0.1)
# Device = HIKROBOT::HIKCamera -- HIKROBOT GigE Vision Camera Interface -- Device version = 1.2.0 -- Product GUID = EE4B7E09-DA29-4956-A1EC-212263331CFC -- Product version GUID = 79ace398-62e3-44a6-8845-f81aaf104382
ReverseX 0
ReverseY 0
PixelFormat BayerRG8
DecimationHorizontal DecimationHorizontal1
DecimationVertical DecimationVertical1
AcquisitionMode Continuous
AcquisitionBurstFrameCount 1
AcquisitionFrameRate 23.14
AcquisitionFrameRateEnable 1
TriggerCacheEnable 0
ExposureMode Timed
ExposureTimeMode Standard
ExposureTime 700
ExposureAuto Off
AutoExposureTimeLowerLimit 15
AutoExposureTimeUpperLimit 42663
HDREnable 0
ActionDeviceKey 0
ChunkModeActive 0
CCMEnable 1
ColorTransformationSelector RGBtoRGB
ColorTransformationEnable 1
ColorTransformationValueSelector Gain22
Gain 0
GainAuto Off
AutoGainLowerLimit 0
AutoGainUpperLimit 23.9812
DigitalShiftEnable 0
BlackLevel 240
BlackLevelEnable 1
BalanceWhiteAuto Off
UserSetDefault Default
GevHeartbeatTimeout 3000
GevGVCPHeartbeatDisable 0
GevMCTT 0
GevMCRC 0
GevIEEE1588 0
GevGVSPExtendedIDMode Off
ActionSelector 0
ActionGroupMask 0
ActionSelector 0
ActionSelector 0
ActionGroupKey 0
ActionSelector 0
AutoFunctionAOISelector AOI1
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI2
AutoFunctionAOIWidth 2448
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI2
AutoFunctionAOIHeight 2048
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetX 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI2
AutoFunctionAOIOffsetY 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI1
AutoFunctionAOIUsageIntensity 0
AutoFunctionAOISelector AOI1
AutoFunctionAOISelector AOI2
AutoFunctionAOIUsageWhiteBalance 0
AutoFunctionAOISelector AOI1
BalanceRatioSelector Red
BalanceRatio 1458
BalanceRatioSelector Green
BalanceRatio 1024
BalanceRatioSelector Blue
BalanceRatio 1957
BalanceRatioSelector Red
BinningSelector Region0
BinningHorizontal BinningHorizontal1
BinningSelector Region0
BinningSelector Region0
BinningVertical BinningVertical1
BinningSelector Region0
CounterSelector Counter0
CounterEventSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterResetSource Off
CounterSelector Counter0
CounterSelector Counter0
CounterValue 1
CounterSelector Counter0
DeviceLinkSelector 0
DeviceLinkHeartbeatMode On
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
DeviceStreamChannelPacketSize 1500
DeviceStreamChannelSelector 0
EventSelector AcquisitionStart
EventNotification Off
EventSelector AcquisitionEnd
EventNotification Off
EventSelector FrameStart
EventNotification Off
EventSelector FrameEnd
EventNotification Off
EventSelector FrameBurstStart
EventNotification Off
EventSelector FrameBurstEnd
EventNotification Off
EventSelector ExposureStart
EventNotification Off
EventSelector ExposureEnd
EventNotification Off
EventSelector Line0RisingEdge
EventNotification Off
EventSelector Line0FallingEdge
EventNotification Off
EventSelector FrameStartOverTrigger
EventNotification Off
EventSelector StreamTransferOverflow
EventNotification Off
EventSelector FrameTriggerWait
EventNotification Off
EventSelector StreamTransferOverflow
FileSelector UserSet1
FileOperationSelector Open
FileSelector UserSet2
FileOperationSelector Open
FileSelector UserSet3
FileOperationSelector Open
FileSelector DPC
FileOperationSelector Open
FileSelector LUTLuminance1
FileOperationSelector Open
FileSelector LUTLuminance2
FileOperationSelector Open
FileSelector LUTLuminance3
FileOperationSelector Open
FileSelector UserSet1
FileSelector UserSet1
FileOpenMode Read
FileSelector UserSet2
FileOpenMode Read
FileSelector UserSet3
FileOpenMode Read
FileSelector DPC
FileOpenMode Read
FileSelector LUTLuminance1
FileOpenMode Read
FileSelector LUTLuminance2
FileOpenMode Read
FileSelector LUTLuminance3
FileOpenMode Read
FileSelector UserSet1
FrameSpecInfoSelector Timestamp
FrameSpecInfo 0
FrameSpecInfoSelector Gain
FrameSpecInfo 0
FrameSpecInfoSelector Exposure
FrameSpecInfo 0
FrameSpecInfoSelector BrightnessInfo
FrameSpecInfo 0
FrameSpecInfoSelector WhiteBalance
FrameSpecInfo 0
FrameSpecInfoSelector Framecounter
FrameSpecInfo 0
FrameSpecInfoSelector ExtTriggerCount
FrameSpecInfo 0
FrameSpecInfoSelector LineInputOutput
FrameSpecInfo 0
FrameSpecInfoSelector ROIPosition
FrameSpecInfo 0
FrameSpecInfoSelector Timestamp
GevStreamChannelSelector 0
GevSCPSPacketSize 1500
GevStreamChannelSelector 0
GevStreamChannelSelector 0
GevSCPD 400
GevStreamChannelSelector 0
HDRSelector 0
HDRShutter 15
HDRSelector 1
HDRShutter 15
HDRSelector 2
HDRShutter 15
HDRSelector 3
HDRShutter 15
HDRSelector 0
HDRSelector 0
HDRGain 0
HDRSelector 1
HDRGain 0
HDRSelector 2
HDRGain 0
HDRSelector 3
HDRGain 0
HDRSelector 0
LineSelector Line1
LineMode Strobe
LineSelector Line2
LineMode Input
LineSelector Line0
LineSelector Line1
LineSource ExposureStartActive
LineSelector Line0
LineSelector Line1
LineInverter 0
LineSelector Line0
LineSelector Line1
StrobeEnable 0
LineSelector Line0
LineSelector Line0
LineDebouncerTime 100
LineSelector Line2
LineDebouncerTime 50
LineSelector Line0
LineSelector Line1
StrobeLineDuration 0
LineSelector Line0
LineSelector Line1
StrobeLineDelay 0
LineSelector Line0
LineSelector Line1
StrobeLinePreDelay 0
LineSelector Line0
RegionSelector Region0
RegionDestination Stream0
RegionSelector Region0
RegionSelector Region0
Width 880
RegionSelector Region0
RegionSelector Region0
Height 1840
RegionSelector Region0
RegionSelector Region0
OffsetX 700
RegionSelector Region0
RegionSelector Region0
OffsetY 156
RegionSelector Region0
TestPatternGeneratorSelector Region0
TestPattern Off
TestPatternGeneratorSelector Region0
TriggerSelector FrameBurstStart
TriggerMode On
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerSource Line0
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerActivation RisingEdge
TriggerSelector FrameBurstStart
TriggerSelector FrameBurstStart
TriggerDelay 0
TriggerSelector FrameBurstStart
DeviceConnectionSelector 0
DeviceLinkSelector 0
DeviceStreamChannelSelector 0
RegionSelector Region0
TestPatternGeneratorSelector Region0
BinningSelector Region0
FrameSpecInfoSelector Timestamp
TriggerSelector FrameBurstStart
HDRSelector 0
LineSelector Line0
ActionSelector 0
CounterSelector Counter0
FileSelector UserSet1
FileOperationSelector Open
EventSelector StreamTransferOverflow
BalanceRatioSelector Red
AutoFunctionAOISelector AOI1
UserSetSelector Default
GevSupportedOptionSelector CommandsConcatenation
GevStreamChannelSelector 0

File diff suppressed because it is too large Load Diff

View File

@ -4,206 +4,309 @@
#include <QDateTime> #include <QDateTime>
#include "QSemaphore" #include "QSemaphore"
#include "vector" #include "vector"
#include <QTcpServer>
#include <QTcpSocket>
#define sys_file2 "./sys_daytime2.txt"
//外部引用
extern ProcessImg *processimg; extern ProcessImg *processimg;
extern SendThread *sendthread; extern SendThread *sendthread;
extern RecvThread *recvthread; extern RecvThread *recvthread;
using namespace std;
extern CameraL *cameraL;
extern CameraL *cameraL;
extern SpecCamera *speccamera; extern SpecCamera *speccamera;
extern QSemaphore emptybuff; extern QSemaphore emptybuff;
bool is_timeout;
extern tomato tomato; extern tomato tomato;
//起动标志位
bool change_passionFlag = 0; // c++的省略命名申明
bool change_tomatoFlag = 0; using namespace std;
bool is_timeout;
int start_flag=1; int start_flag=1;
int save_flag=0; int save_flag=0;
//0为番茄 1为百香果
int fruit_flag;
int resoult_count = 1;
int i = 1;
//外部用用
extern int camStatusret; extern int camStatusret;
extern int camStatusret1; extern int camStatusret1;
extern int camStatusret2; extern int camStatusret2;
extern int img_count; extern int img_count;
extern int img_count1; extern int img_count1;
extern int img_count2; extern int img_count2;
//定义管道名称
extern HANDLE hPipe;
extern HANDLE specPipe;
extern HANDLE RPipe;
extern QString pipeName;
extern QString pipeName2;
extern QString rePipe;
int pipe_counter=1; int pipe_counter=1;
modbus_t* CZ;
//这是 Widge 的构造函数 在你点击运行之后 会执行
Widget::Widget(QWidget *parent) Widget::Widget(QWidget *parent)
: QWidget(parent) : QWidget(parent)
, ui(new Ui::Widget) , ui(new Ui::Widget)
{ {
ui->setupUi(this); ui->setupUi(this);
//直接导入本地时间(方法二)
QFile daytime_file(sys_file2);
QDateTime lastDateTime;
if (daytime_file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QString line;
QTextStream in(&daytime_file);
while (!in.atEnd()) {
line = in.readLine();
}
QStringList parts = line.split(" - ");
if (parts.size() > 0) {
lastDateTime = QDateTime::fromString(parts.first(), "yyyy-MM-dd HH:mm:ss");
}
daytime_file.close();
}
if (lastDateTime.isValid() && lastDateTime > QDateTime::currentDateTime()) {
QMessageBox::about(this, "错误", "时间校验不通过");
throw ExpiredException();
}
QDateTime expiryDate = QDateTime::fromString("2024-08-01 14:00:00", "yyyy-MM-dd HH:mm:ss");
QDateTime currentDate = QDateTime::currentDateTime();
if (currentDate >= expiryDate) {
throw ExpiredException();
}
//处理光谱数据的线程
processimg = new ProcessImg(); processimg = new ProcessImg();
//发送给python端线程
sendthread = new SendThread(); sendthread = new SendThread();
//接收python端线程
recvthread = new RecvThread(); recvthread = new RecvThread();
//new 代表给三个线程开辟空间
// connectModbus_CZ();
initparam(); initparam();
/**连接相机*/ /**连接相机*/
cameraL = new CameraL(); cameraL = new CameraL();
bool ret = cameraL->initCameraL(); //初始化RGB相机
bool RGB_ret = cameraL->initCameraL();
if(camStatusret ==0 && RGB_ret)
if(camStatusret==0){ {
ui->RGBstatus->setText("已连接"); ui->RGBstatus->setText("已连接");
ui->RGBstatus->setStyleSheet("QLabel{color:rgb(0,255,0);}"); ui->RGBstatus->setStyleSheet("QLabel{color:rgb(0,255,0);}");
} }
if(camStatusret1==0){ if(camStatusret1 ==0 && RGB_ret)
{
ui->RGBstatus_1->setText("已连接"); ui->RGBstatus_1->setText("已连接");
ui->RGBstatus_1->setStyleSheet("QLabel{color:rgb(0,255,0);}"); ui->RGBstatus_1->setStyleSheet("QLabel{color:rgb(0,255,0);}");
} }
if(camStatusret2==0){ if(camStatusret2 ==0 && RGB_ret)
{
ui->RGBstatus_2->setText("已连接"); ui->RGBstatus_2->setText("已连接");
ui->RGBstatus_2->setStyleSheet("QLabel{color:rgb(0,255,0);}"); ui->RGBstatus_2->setStyleSheet("QLabel{color:rgb(0,255,0);}");
} }
//初始化光谱相机
speccamera = new SpecCamera(); speccamera = new SpecCamera();
bool spec_ret = speccamera->init_SpecCamera();
bool ret3 = speccamera->init_SpecCamera(); if(spec_ret == true)
{
if(ret3==true){
ui->spec_camera_status->setText("已连接"); ui->spec_camera_status->setText("已连接");
ui->spec_camera_status->setStyleSheet("QLabel{color:rgb(0,255,0);}"); ui->spec_camera_status->setStyleSheet("QLabel{color:rgb(0,255,0);}");
} }
//初始化称重模块
connectModbus_CZ();
//初始化机械手
connect_socket_Jxs();
//管道建立连接
connectPipe();
} }
Widget::~Widget() Widget::~Widget()
{ {
delete ui; delete ui;
// if(sendthread != nullptr)
// {
// delete sendthread;
// sendthread = nullptr;
// }
// if(recvthread != nullptr)
// {
// delete recvthread;
// recvthread = nullptr;
// }
// if(processimg != nullptr)
// {
// delete processimg;
// processimg = nullptr;
// }
} }
//初始话参数 并非实际相机的参数 而是 ui 界面上的 tab3 上的控件参数
void Widget::initparam() void Widget::initparam()
{ {
camStatusret=-1; camStatusret=-1;
camStatusret1=-1; camStatusret1=-1;
camStatusret2=-1; camStatusret2=-1;
ui->tabWidget->setCurrentIndex(1); ui->tabWidget->setCurrentIndex(2);
setMinimumSize(QSize(1200, 600)); setMinimumSize(QSize(1200, 600));
setWindowState(Qt::WindowMaximized); setWindowState(Qt::WindowMaximized);
//初始化第一个相机参数
ui->exSpinBox_left->setRange(0, 9999500.00);
ui->exSpinBox_left->setSingleStep(0.01);
ui->GainSpinBox_left->setRange(0, 16.98);
ui->GainSpinBox_left->setSingleStep(0.01);
ui->wbSpinBox_left_2->setRange(0, 4095);
//初始化第二个相机参数
ui->exspinBox_right->setRange(0, 9999500.00);
ui->exspinBox_right->setSingleStep(0.01);
ui->GainspinBox_right->setRange(0, 16.98);
ui->GainspinBox_right->setSingleStep(0.01);
ui->wbspinBox_right->setRange(0, 4095);
//初始化第三个相机参数
ui->exspinBox_top->setRange(0, 9999500.00);
ui->exspinBox_top->setSingleStep(0.01);
ui->GainspinBox_top->setRange(0, 16.98);
ui->GainspinBox_top->setSingleStep(0.01);
ui->wbspinBox_top->setRange(0, 4095);
} }
void Widget::connectModbus_CZ() void Widget::connectModbus_CZ()
{ {
//称重模块 //称重模块
int status = -1; CZ = modbus_new_tcp("192.168.101.110",2000);
CZ = modbus_new_rtu("COM7", 9600, 'N', 8, 1); modbus_set_slave(CZ, 1); //设置modbus从机地址
modbus_set_slave(CZ, 3); //设置modbus从机地址 int status = modbus_connect(CZ);
status = modbus_connect(CZ);
if(status == -1) if(status == -1)
{ {
qDebug() << "modbus connect failed"; qDebug() << "modbus connect failed";
ui->lowermachine_status->setText("未连接");
ui->lowermachine_status->setStyleSheet("QLabel{color:rgb(255,0,0);}");
} }
else else
{ {
qDebug() << "status" << status; ui->plc_status->setStyleSheet("QLabel{color:rgb(0,255,0);}");
qDebug() << "connect plc success"; ui->plc_status->setText("已连接");
ui->lowermachine_status->setStyleSheet("QLabel{background-color:rgb(0,255,0);}");
ui->lowermachine_status->setText("已连接");
} }
modbus_set_response_timeout(CZ, 0, 1000000); modbus_set_response_timeout(CZ, 0, 1000000);
} }
void Widget::connect_socket_Jxs()
{
server = new QTcpServer();
server->listen(QHostAddress::Any, 21123);
bool is_timeout;
server->waitForNewConnection(5000, &is_timeout);
if(is_timeout == true)
{
qDebug() << "Jxs connect failed";
return;
}
socket = server->nextPendingConnection();
void Widget::on_btn_start_clicked() ui->jxs_status->setStyleSheet("QLabel{color:rgb(0,255,0);}");
ui->jxs_status->setText("已连接");
}
void Widget::connectPipe()
{ {
// 创建并连接到命名管道
hPipe = CreateFile(
(LPCWSTR)pipeName.utf16(), // 管道名称
GENERIC_WRITE, // 写入访问
0, // 不共享
NULL, // 默认安全属性
OPEN_EXISTING, // 打开现有管道
FILE_ATTRIBUTE_NORMAL, // 默认属性
NULL // 没有模板文件
);
if(start_flag){
processimg->start();
// sendthread->start();
// recvthread->start();
// 创建并连接到命名管道(光谱相机发送)
specPipe = CreateFile(
(LPCWSTR)pipeName2.utf16(), // 管道名称
GENERIC_WRITE, // 写入访问
0, // 不共享
NULL, // 默认安全属性
OPEN_EXISTING, // 打开现有管道
FILE_ATTRIBUTE_NORMAL, // 默认属性
NULL // 没有模板文件
);
// 创建并连接到命名管道
RPipe = CreateFile(
(LPCWSTR)rePipe.utf16(), // 管道名称
GENERIC_READ, // 更改为读取访问
0, // 不共享
NULL, // 默认安全属性
OPEN_EXISTING, // 打开现有管道
FILE_ATTRIBUTE_NORMAL, // 默认属性
NULL // 没有模板文件
);
if (RPipe == INVALID_HANDLE_VALUE) {
qWarning() << "Failed to open pipe for reading:" << GetLastError();
return;
}
}
//点击 ui 界面的开始按钮
void Widget::on_btn_start_clicked()
{
//start_flag 为 1
if(start_flag)
{
QFile file(sys_file2);
if (file.open(QIODevice::Append | QIODevice::Text)) {
QTextStream out(&file);
out << QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss") << " - " << "\n";
file.close();
}
ui->btn_start->setStyleSheet("background-color: red;");
cameraL->open_camera2();
cameraL->set_acquisition_mode();
cameraL->start_capture();
speccamera->start_capture(); speccamera->start_capture();
//开启线程 也就是执行一次对应线程的 run() 函数 在 thread 里面有 即执行三个线程的 while1 死循环 一直监听
processimg->start();
sendthread->start();
recvthread->start();
//连接信号跟槽函数
connect(cameraL,SIGNAL(send_Rgbimage(QImage&)),this,SLOT(showimg(QImage&)),Qt::BlockingQueuedConnection); connect(cameraL,SIGNAL(send_Rgbimage(QImage&)),this,SLOT(showimg(QImage&)),Qt::BlockingQueuedConnection);
connect(cameraL,SIGNAL(send_Rgbimage1(QImage&)),this,SLOT(showimg1(QImage&)),Qt::BlockingQueuedConnection); connect(cameraL,SIGNAL(send_Rgbimage1(QImage&)),this,SLOT(showimg1(QImage&)),Qt::BlockingQueuedConnection);
connect(cameraL,SIGNAL(send_Rgbimage2(QImage&,QImage&,QImage&)),this,SLOT(showimg2(QImage&,QImage&,QImage&)),Qt::BlockingQueuedConnection); connect(cameraL,SIGNAL(send_Rgbimage2(QImage&,QImage&,QImage&)),this,SLOT(showimg2(QImage&,QImage&,QImage&)),Qt::BlockingQueuedConnection);
// connect(speccamera,SIGNAL(show_SpecImg(QImage)),this,SLOT(show_specImgSlots(QImage))); connect(speccamera,SIGNAL(show_SpecImg(QImage)),this,SLOT(show_specImgSlots(QImage)));
connect(recvthread,SIGNAL(recv_Data(quint16,quint16,quint16,quint32,QImage)),this,SLOT(receiveDataSlots(quint16,quint16,quint16,quint32,QImage))); connect(recvthread,SIGNAL(recv_Data(quint16,quint8,quint16,quint8,quint16,quint32,quint16,quint16,QImage)),this,SLOT(receiveDataSlots(quint16,quint8,quint16,quint8,quint16,quint32,quint16,quint16,QImage)));
cameraL->set_acquisition_mode();
cameraL->start_capture();
ui->btn_start->setText("停止采集");
start_flag=0; start_flag=0;
}else{
ui->tabWidget->setCurrentIndex(3);
// qDebug()<<"Start Success!";
}
//start_flag 为 0
else
{
QFile file(sys_file2);
if (file.open(QIODevice::Append | QIODevice::Text)) {
QTextStream out(&file);
out << QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss") << " - " << "\n";
file.close();
}
ui->btn_start->setStyleSheet("background-color: white;");
cameraL->stop_capture(); cameraL->stop_capture();
speccamera->stop_capture();
disconnect(cameraL,SIGNAL(send_Rgbimage(QImage&)),this,SLOT(showimg(QImage&))); disconnect(cameraL,SIGNAL(send_Rgbimage(QImage&)),this,SLOT(showimg(QImage&)));
disconnect(cameraL,SIGNAL(send_Rgbimage1(QImage&)),this,SLOT(showimg1(QImage&))); disconnect(cameraL,SIGNAL(send_Rgbimage1(QImage&)),this,SLOT(showimg1(QImage&)));
disconnect(cameraL,SIGNAL(send_Rgbimage2(QImage&,QImage&,QImage&)),this,SLOT(showimg2(QImage&,QImage&,QImage&))); disconnect(cameraL,SIGNAL(send_Rgbimage2(QImage&,QImage&,QImage&)),this,SLOT(showimg2(QImage&,QImage&,QImage&)));
speccamera->stop_capture(); disconnect(speccamera,SIGNAL(show_SpecImg(QImage)),this,SLOT(show_specImgSlots(QImage)));
/* disconnect(recvthread,SIGNAL(recv_Data(quint16,quint8,quint16,quint8,quint16,quint32,quint16,quint16,QImage)),this,SLOT(receiveDataSlots(quint16,quint8,quint16,quint8,quint16,quint32,quint16,quint16,QImage)));
*
* */
ui->showimg_left->clear(); ui->showimg_left->clear();
ui->showimg_right->clear(); ui->showimg_right->clear();
ui->label_topL->clear(); ui->label_topL->clear();
ui->label_topM->clear(); ui->label_topM->clear();
ui->label_topR->clear(); ui->label_topR->clear();
qDebug() << "Stop Success!";
ui->btn_start->setText("开始采集");
start_flag=1; start_flag=1;
// qDebug() << "Stop Success!";
} }
} }
@ -218,7 +321,6 @@ void Widget::showimg(QImage& img)
ui->showimg_left->show(); ui->showimg_left->show();
} }
//左侧 //左侧
void Widget::showimg1(QImage& img) void Widget::showimg1(QImage& img)
{ {
@ -229,13 +331,9 @@ void Widget::showimg1(QImage& img)
ui->showimg_right->show(); ui->showimg_right->show();
} }
/* //顶部
*
* */
void Widget::showimg2(QImage& img,QImage& img1,QImage& img2) void Widget::showimg2(QImage& img,QImage& img1,QImage& img2)
{ {
// pipe_counter++;
// qDebug()<<"pipe_counter: "<<pipe_counter;
pix = QPixmap::fromImage(img.scaled(ui->label_topL->width(),ui->label_topL->height(),Qt::KeepAspectRatio)); pix = QPixmap::fromImage(img.scaled(ui->label_topL->width(),ui->label_topL->height(),Qt::KeepAspectRatio));
ui->label_topL->setScaledContents(true); ui->label_topL->setScaledContents(true);
ui->label_topL->setPixmap(pix); ui->label_topL->setPixmap(pix);
@ -258,41 +356,24 @@ void Widget::on_save_img_clicked()
} }
void Widget::on_btn_PWenter_clicked() //退出
{
QString password = "110";
QString input = ui->lineEdit_password->text();
if(input==password&&ui->lineEdit_user->text()!=""){
ui->tabWidget->setCurrentIndex(1);
}else if(input==password&&ui->lineEdit_user->text()==""){
QMessageBox::information(this,"提示","请输入操作人员!");
}else{
QMessageBox::information(this,"提示","密码错误!");
input.clear();
ui->lineEdit_password->text();
}
}
void Widget::on_btn_quit_clicked() void Widget::on_btn_quit_clicked()
{ {
qApp->quit(); qApp->quit();
} }
void Widget::on_btn_quit2_clicked() //保存图片按钮
{
qApp->quit();
}
void Widget::on_btn_save_clicked() void Widget::on_btn_save_clicked()
{ {
if(!save_flag){ if(!save_flag)
ui->btn_save->setText("不保存图片"); {
ui->btn_save->setStyleSheet("background-color: red;");
save_flag=1; save_flag=1;
}else{ }
ui->btn_save->setText("保存图片"); else
{
ui->btn_save->setStyleSheet("background-color: white;");
save_flag=0; save_flag=0;
} }
} }
@ -303,120 +384,16 @@ void Widget::on_btn_setparam_clicked()
ui->tabWidget->setCurrentIndex(2); ui->tabWidget->setCurrentIndex(2);
} }
//导入参数 实际没用 因为相机参数会预先写死 并不会在运行途中更换
void Widget::on_btn_enterparam_clicked() void Widget::on_btn_enterparam_clicked()
{ {
// //left
// Camera_param setL;
// setL.exposure_time = ui->exSpinBox_left->text().toFloat();
// setL.gain = ui->GainSpinBox_left->text().toDouble();
// setL.white_balance_ratio = ui->wbSpinBox_left_2->text().toInt();
// cameraL->set_param(setL);
// cameraL->stop_capture();
// usleep(1000);
// cameraL->get_param();
// if(!cameraL->save_config_file())
// {
// qDebug()<<"SAVE FAILED";
// }
// //right
// Camera_paramR setsR;
// setsR.exposure_time = ui->exspinBox_right->text().toFloat();
// setsR.gain = ui->GainspinBox_right->text().toDouble();
// setsR.white_balance_ratio = ui->wbspinBox_right->text().toInt();
// qDebug()<<setsR.exposure_time;
// cameraR->set_param2(setsR);
// cameraR->stop_capture2();
// usleep(1000);
// cameraR->get_param2();
// if(!cameraR->save_config_file2())
// {
// qDebug()<<"SAVE FAILED";
// }
// //top
// Camera_paramTop settop;
// settop.exposure_time = ui->exspinBox_top->text().toFloat();
// settop.gain = ui->GainspinBox_top->text().toDouble();
// settop.white_balance_ratio = ui->wbspinBox_top->text().toInt();
// cameratop->set_param(settop);
// cameratop->stop_capture();
// usleep(1000);
// cameratop->get_param();
// if(!cameratop->save_config_file())
// {
// qDebug()<<"SAVE FAILED";
// }
// qDebug()<<"设置成功";
}
void Widget::on_btn_return_clicked()
{
ui->tabWidget->setCurrentIndex(1);
} }
//接受线程收到数据 长径、短径等等 在 ui 界面显示
void Widget::receiveDataSlots(quint16 brix,quint8 greenPercentage,quint16 diameter,quint8 weight,quint16 defectNum,quint32 totalDefectArea,quint16 height,quint16 width,QImage img)
void Widget::on_passionBtn_clicked() //切换百香果模型
{
change_passionFlag = 1;
change_tomatoFlag = 0;
uint8_t send_buf_switch[13];
send_buf_switch[0] = 0xAA;
send_buf_switch[1] = 0x00;
send_buf_switch[2] = 0x00;
send_buf_switch[3] = 0x00;
send_buf_switch[4] = 0x05;
send_buf_switch[5] = ' ';
send_buf_switch[6] = ' ';
send_buf_switch[7] = 'P';
send_buf_switch[8] = 'A';
send_buf_switch[9] = 0xFF;
send_buf_switch[10] = 0xFF;
send_buf_switch[11] = 0xFF;
send_buf_switch[12] = 0xBB;
// sendthread->send_socket->write((const char*)send_buf_switch,sizeof(send_buf_switch));
}
void Widget::on_tomatoBtn_clicked() //切换番茄模型
{
change_tomatoFlag = 1;
change_passionFlag = 0;
uint8_t send_buf_switch[13];
send_buf_switch[0] = 0xAA;
send_buf_switch[1] = 0x00;
send_buf_switch[2] = 0x00;
send_buf_switch[3] = 0x00;
send_buf_switch[4] = 0x05;
send_buf_switch[5] = ' ';
send_buf_switch[6] = ' ';
send_buf_switch[7] = 'T';
send_buf_switch[8] = 'O';
send_buf_switch[9] = 0xFF;
send_buf_switch[10] = 0xFF;
send_buf_switch[11] = 0xFF;
send_buf_switch[12] = 0xBB;
// sendthread->send_socket->write((const char*)send_buf_switch,sizeof(send_buf_switch));
}
void Widget::receiveDataSlots(quint16 longD, quint16 shortD, quint16 QNum, quint32 QArea,QImage img)
{ {
img = img.rgbSwapped(); img = img.rgbSwapped();
@ -424,13 +401,185 @@ void Widget::receiveDataSlots(quint16 longD, quint16 shortD, quint16 QNum, quint
ui->show_resultsImg->setScaledContents(true); ui->show_resultsImg->setScaledContents(true);
ui->show_resultsImg->setPixmap(pix); ui->show_resultsImg->setPixmap(pix);
ui->show_resultsImg->show(); ui->show_resultsImg->show();
ui->longdia_linedit->setText(QString::number(longD));
ui->shortdia_linedit->setText(QString::number(shortD)); float brix_float = brix;
ui->QueNum_linedit->setText(QString::number(QNum)); float totalDefectArea_float = totalDefectArea;
ui->QArea_linedit->setText(QString::number(QArea)); float greenPercentage_float = greenPercentage;
float diameter_float = diameter;
// ui->Tdangdu_line->setText(QString::number(brix_float/1000)); //
// ui->Zhijing_line->setText(QString::number(diameter_float/100)); //cm
// ui->Shuliang_line->setText(QString::number(defectNum));
// ui->Mianji_line->setText(QString::number(totalDefectArea_float/1000)); //cm^2
// ui->Zhanbi_line->setText(QString::number(greenPercentage_float/100)); //
//重量是g
//读取称重数据
uint16_t read = 0;
modbus_read_registers(CZ,0x40000,1,&read);
qDebug()<<"称重数据"<<read;
int level = 5;
//百香果
if(fruit_flag)
{
if(diameter = 0)
{
level = 4;
}
else
{
if(defectNum = 0)
{
level = 4;
}
else
{
if(totalDefectArea_float/1000 > 2)
{
level = 4;
}
else
{
if(read > 90)
{
level = 1;
}
else if(read < 65)
{
level = 3;
}
else
{
level = 2;
}
}
}
}
}
//番茄
else
{
if(diameter == 0)
{
level = 5;
}
else
{
if(defectNum != 0)
{
level = 5;
}
else
{
if(totalDefectArea_float/1000 >= Quexianmianji)
{
level = 5;
}
else
{
if(greenPercentage_float/100 >= Yansezhanbi)
{
if(diameter_float/100 >= Zhijing -2)
{
level = 3;
}
else
{
level = 4;
}
}
else
{
if(diameter_float/100 >= Zhijing)
{
level = 1;
}
else
{
level = 2;
}
}
}
}
}
}
// ui->resoult_line->setText(QString::number(level));
qDebug()<<"果子等级为:"<<level;
//窗口显示
if(resoult_count%25 == 0)
{
ui->resoult_info_label->clear();
}
QString resout_info;
QString fruit_resoult_flag;
//百香果
if(fruit_flag)
{
if(defectNum == 0)
{
fruit_resoult_flag = "";
}
else
{
fruit_resoult_flag = "";
}
resout_info = QString("当前百香果编号为:%1 糖度值为: %2 直径为: %3 %4皱缩 缺陷面积为: %5 最终识别结果为:%6 ").arg(resoult_count).arg(brix_float/1000).arg(diameter_float/100).arg(fruit_resoult_flag).arg(totalDefectArea_float/1000).arg(level);
ui->resoult_info_label->appendPlainText(resout_info);
}
//番茄
else
{
if(defectNum == 0)
{
fruit_resoult_flag = "";
}
else
{
fruit_resoult_flag = "";
}
resout_info = QString("当前番茄编号为:%1 直径为: %2 %3裂口 缺陷面积为: %4 绿色占比为: %5 最终识别结果为:%6 ").arg(resoult_count).arg(diameter_float/100).arg(fruit_resoult_flag).arg(totalDefectArea_float/1000).arg(greenPercentage_float/100).arg(level);
ui->resoult_info_label->appendPlainText(resout_info);
}
resoult_count++ ;
QFile file("./image/output.txt");
if (file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text))
{
QTextStream out(&file);
out << resout_info << "\n";
file.close();
}
i++;
// 给机械手发送信息
QString txt = QString("[X:0;Y:0;A:0;ATTR:%1;ID:%2]").arg(level).arg(fruit_flag);
QByteArray byteArray = txt.toUtf8();
socket->write(byteArray);
// qDebug()<<"发送机械手信息等级为:"<<level;
//给plc发送信息
uint16_t write[2];
write[0] = resoult_count;
write[1] = level;
modbus_write_registers(CZ,0x40001,2,write);
// qDebug()<<"发送plc信息等级为:"<<level;
//称重数据在 read 里面
} }
//显示光谱伪彩色图 实际效果很差 就取消了
//展示一条折线
void Widget::show_specImgSlots(QImage img) void Widget::show_specImgSlots(QImage img)
{ {
// qDebug()<<"2"; // qDebug()<<"2";
@ -444,3 +593,71 @@ void Widget::show_specImgSlots(QImage img)
ui->spec_camera_show->show(); ui->spec_camera_show->show();
} }
void Widget::on_view_results_clicked()
{
QString resoult_path = "C:/Users/succtech/Desktop/20240425/image";
// 打开文件选择对话框,并设置默认路径
QString filePath = QFileDialog::getOpenFileName(this, "查看结果", resoult_path);
}
void Widget::on_tab4_ReturnToMain_clicked()
{
ui->tabWidget->setCurrentIndex(1);
}
void Widget::on_choose_pa_clicked()
{
fruit_flag = 1;
//tab2
ui->passionBtn->setStyleSheet("background-color: red;");
ui->tomatoBtn->setStyleSheet("background-color: white;");
//tab3
ui->choose_pa->setStyleSheet("background-color: red;");
ui->choose_to->setStyleSheet("background-color: white;");
//tab4
ui->choose_pa_2->setStyleSheet("background-color: red;");
ui->choose_to_2->setStyleSheet("background-color: white;");
ui->tabWidget->setCurrentIndex(1);
}
void Widget::on_choose_to_clicked()
{
fruit_flag = 0;
//tab2
ui->tomatoBtn->setStyleSheet("background-color: red;");
ui->passionBtn->setStyleSheet("background-color: white;");
//tab3
ui->choose_to->setStyleSheet("background-color: red;");
ui->choose_pa->setStyleSheet("background-color: white;");
//tab4
ui->choose_to_2->setStyleSheet("background-color: red;");
ui->choose_pa_2->setStyleSheet("background-color: white;");
ui->tabWidget->setCurrentIndex(1);
}
void Widget::on_tab3_ReturnToMain_clicked()
{
ui->tabWidget->setCurrentIndex(1);
}
void Widget::on_show_resoult_clicked()
{
ui->tabWidget->setCurrentIndex(3);
}
void Widget::on_set_threshoid_clicked()
{
Tangdu = ui->InputNum1->text().toInt();
Zhijing = ui->InputNum2->text().toInt();
Yansezhanbi = ui->InputNum3->text().toInt();
Quexianshuliang = ui->InputNum4->text().toInt();
Quexianmianji = ui->InputNum5->text().toInt();
}

View File

@ -12,9 +12,18 @@
#include <QImage> #include <QImage>
#define SAVE_IMAGE_PATH "F:/tomato/tomato1227/image/left" #define SAVE_IMAGE_PATH "F:/tomato/tomato1227/image/left"
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
//ui界面的类 窗口的各种控件按钮、文字输入行、label等
namespace Ui { class Widget; } namespace Ui { class Widget; }
QT_END_NAMESPACE QT_END_NAMESPACE
class ExpiredException : public std::exception {
public:
const char* what() const throw() {
return "程序试用期已过,请联系供应商!";
}
};
class Widget : public QWidget class Widget : public QWidget
{ {
Q_OBJECT Q_OBJECT
@ -22,9 +31,26 @@ class Widget : public QWidget
public: public:
Widget(QWidget *parent = nullptr); Widget(QWidget *parent = nullptr);
~Widget(); ~Widget();
int Tangdu;
int Zhijing = 7;
float Yansezhanbi = 0.3;
int Quexianshuliang = 0;
float Quexianmianji = 0.5;
void initparam(); void initparam();
void connectModbus_CZ(); void connectModbus_CZ();
void connect_socket_Jxs();
void connectPipe();
QTcpServer *server;
QTcpSocket *socket;
modbus_t* CZ;
private slots: private slots:
void on_btn_start_clicked(); void on_btn_start_clicked();
@ -36,31 +62,35 @@ private slots:
void on_save_img_clicked(); void on_save_img_clicked();
void on_btn_PWenter_clicked();
void on_btn_quit_clicked(); void on_btn_quit_clicked();
void on_btn_quit2_clicked();
void on_btn_save_clicked(); void on_btn_save_clicked();
void on_btn_setparam_clicked(); void on_btn_setparam_clicked();
void on_btn_enterparam_clicked(); void on_btn_enterparam_clicked();
void on_btn_return_clicked(); void receiveDataSlots(quint16,quint8,quint16,quint8,quint16,quint32,quint16,quint16,QImage);
void on_passionBtn_clicked();
void on_tomatoBtn_clicked();
void receiveDataSlots(quint16 longD,quint16 shortD,quint16 QNum,quint32 ,QImage img);
void show_specImgSlots(QImage); void show_specImgSlots(QImage);
void on_view_results_clicked();
void on_tab4_ReturnToMain_clicked();
void on_choose_pa_clicked();
void on_choose_to_clicked();
void on_tab3_ReturnToMain_clicked();
void on_show_resoult_clicked();
void on_set_threshoid_clicked();
private: private:
Ui::Widget *ui; Ui::Widget *ui;
//画板 负责接收QImage并显示 不能直接显示QImage变量
QPixmap pix; QPixmap pix;
QPixmap pix1; QPixmap pix1;
QPixmap pix2; QPixmap pix2;

2282
widget.ui

File diff suppressed because it is too large Load Diff