Browse Source

启动前添加延时2s

取消双边滤波等功能
保存图片时,同时保存png,tiff和二进制文件
将关闭K和关闭B独立出来
添加数字增强功能
添加状态栏显示
添加打开保存路径的功能
开机自动打开统计功能
master
zara 1 year ago
parent
commit
a65e58d3ad
  1. 75
      CMakeLists.txt
  2. 53
      CMakeLists.txt.user
  3. 6
      avgfilter.cpp
  4. 230
      install.nsi
  5. 230
      install.nsi.in
  6. 2
      main.cpp
  7. 346
      mainwindow.cpp
  8. 27
      mainwindow.h
  9. 198
      mainwindow.ui
  10. 30
      menu1.cpp
  11. 4
      menu1.h
  12. 110
      menu1.ui
  13. 21
      menu2.cpp
  14. 31
      menu2.ui
  15. 15
      menu4.cpp
  16. 5
      menu4.h
  17. 37
      menu4.ui
  18. 9
      qt5app.rc.in
  19. 17
      readme.txt
  20. 13
      usbcontrol.cpp
  21. BIN
      中芯热诚上位机使用说明.docx
  22. BIN
      注意事项.docx

75
CMakeLists.txt

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.5)
set(PROJECT_VERSION 1.4.0.0)
set(PROJECT_VERSION 1.4.1.2)
add_definitions(-DProjectVersion=\"${PROJECT_VERSION}\")
project(zxrcClient LANGUAGES CXX)
project(zxrcClient VERSION ${PROJECT_VERSION} LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
@ -12,6 +12,15 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -12,6 +12,15 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
configure_file(qt5app.rc.in
qt5app.rc
@ONLY
)
configure_file(install.nsi.in
install.nsi
@ONLY
)
set(QFluentDIR "C:/QFluentWidgets_v170")
set(OpenCV_DIR "C:/opencv/build")
@ -74,10 +83,15 @@ set(PROJECT_SOURCES @@ -74,10 +83,15 @@ set(PROJECT_SOURCES
protocol.h
datathread.cpp
datathread.h
qt5app.rc
qt5app.rc.in
${CMAKE_CURRENT_BINARY_DIR}/qt5app.rc
)
###
###CLIENT
###0zxj03,,
###1,
###2zxj02,.
add_executable (zxrcClient WIN32 ${PROJECT_SOURCES})
target_include_directories (zxrcClient PRIVATE ${INCLUDE_DIRS})
@ -85,22 +99,37 @@ target_link_directories (zxrcClient PRIVATE ${LIB_DIRS}) @@ -85,22 +99,37 @@ target_link_directories (zxrcClient PRIVATE ${LIB_DIRS})
target_link_libraries (zxrcClient PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries (zxrcClient PRIVATE QFluentWidgets::Widgets ${LIBS})
target_link_libraries (zxrcClient PRIVATE ${OpenCV_LIBS})
add_executable (zxrcClientSim WIN32 ${PROJECT_SOURCES})
target_include_directories (zxrcClientSim PRIVATE ${INCLUDE_DIRS})
target_link_directories (zxrcClientSim PRIVATE ${LIB_DIRS})
target_link_libraries (zxrcClientSim PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries (zxrcClientSim PRIVATE QFluentWidgets::Widgets ${LIBS})
target_link_libraries (zxrcClientSim PRIVATE ${OpenCV_LIBS})
target_compile_definitions (zxrcClientSim PRIVATE CLIENT=1)
add_executable (zxrcClientPC WIN32 ${PROJECT_SOURCES})
target_include_directories (zxrcClientPC PRIVATE ${INCLUDE_DIRS})
target_link_directories (zxrcClientPC PRIVATE ${LIB_DIRS})
target_link_libraries (zxrcClientPC PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries (zxrcClientPC PRIVATE QFluentWidgets::Widgets ${LIBS})
target_link_libraries (zxrcClientPC PRIVATE ${OpenCV_LIBS})
target_compile_definitions (zxrcClientPC PRIVATE CLIENT=2)
target_compile_definitions (zxrcClient PRIVATE CLIENT=0)
#add_executable (zxrcClientSim WIN32 ${PROJECT_SOURCES})
#target_include_directories (zxrcClientSim PRIVATE ${INCLUDE_DIRS})
#target_link_directories (zxrcClientSim PRIVATE ${LIB_DIRS})
#target_link_libraries (zxrcClientSim PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
#target_link_libraries (zxrcClientSim PRIVATE QFluentWidgets::Widgets ${LIBS})
#target_link_libraries (zxrcClientSim PRIVATE ${OpenCV_LIBS})
#target_compile_definitions (zxrcClientSim PRIVATE CLIENT=1)
set(LOCALALGO
avgfilter.cpp
avgfilter.h
bila.cpp
bila.h
clhe.cpp
clhe.h
dde.cpp
dde.h
sagauss.cpp
sagauss.h
twopoint.cpp
twopoint.h
)
#add_executable (zxrcClientPC WIN32 ${LOCALALGO} ${PROJECT_SOURCES})
#target_include_directories (zxrcClientPC PRIVATE ${INCLUDE_DIRS})
#target_link_directories (zxrcClientPC PRIVATE ${LIB_DIRS})
#target_link_libraries (zxrcClientPC PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
#target_link_libraries (zxrcClientPC PRIVATE QFluentWidgets::Widgets ${LIBS})
#target_link_libraries (zxrcClientPC PRIVATE ${OpenCV_LIBS})
#target_compile_definitions (zxrcClientPC PRIVATE CLIENT=2)

53
CMakeLists.txt.user

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 11.0.1, 2024-05-19T19:02:09. -->
<!-- Written by QtCreator 11.0.1, 2024-05-30T18:06:14. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
@ -96,7 +96,7 @@ @@ -96,7 +96,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_msvc2019_64_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">2</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="CMake.Build.Type">Debug</value>
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
@ -180,7 +180,19 @@ @@ -180,7 +180,19 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.CopyStep.Source">D:\WorkSpace\zxrcClientNew\zxrcClient\logo.ico</value>
<value type="QString" key="ProjectExplorer.CopyStep.Target">D:\WorkSpace/zxrcClientNew/build-zxrcClient-Desktop_Qt_5_15_2_MSVC2019_64bit-Release/logo.ico</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CopyFileStep</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.CopyStep.Source">D:\WorkSpace\zxrcClientNew\zxrcClient\readme.txt</value>
<value type="QString" key="ProjectExplorer.CopyStep.Target">D:\WorkSpace\zxrcClientNew\build-zxrcClient-Desktop_Qt_5_15_2_MSVC2019_64bit-Release\readme.txt</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CopyFileStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">3</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>
@ -401,42 +413,9 @@ @@ -401,42 +413,9 @@
<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="bool" key="RunConfiguration.UseTerminal">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/WorkSpace/zxrcClientNew/build-zxrcClient-Desktop_Qt_5_15_2_MSVC2019_64bit-Release</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
<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">zxrcClientSim</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.zxrcClientSim</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">zxrcClientSim</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:/WorkSpace/zxrcClientNew/build-zxrcClient-Desktop_Qt_5_15_2_MSVC2019_64bit-Release</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.2">
<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">zxrcClientPC</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.zxrcClientPC</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">zxrcClientPC</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:/WorkSpace/zxrcClientNew/build-zxrcClient-Desktop_Qt_5_15_2_MSVC2019_64bit-Release</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">3</value>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>

6
avgfilter.cpp

@ -39,18 +39,16 @@ void avgfilter::slotprocimg(cv::Mat img) @@ -39,18 +39,16 @@ void avgfilter::slotprocimg(cv::Mat img)
emit signalsendimg(img);
}
else{
// cv::Mat dst(img.rows,img.cols,CV_16UC1);
cv::Mat dst = (256-para)*(img/256)+para*(lastmat/256);
for(int i = 0;i< img.rows;i++){
for(int j = 0;j<img.cols;j++){
if(abs(int(img.at<ushort>(i,j))- int(dst.at<ushort>(i,j)))>(320))
// dst.at<ushort>(i,j) = (255-para)*(img.at<ushort>(i,j)/256)+para*(lastmat.at<ushort>(i,j)/256);
// else
dst.at<ushort>(i,j) = img.at<ushort>(i,j);
}
}
// qDebug()<<dst.type();
dst.copyTo(lastmat);
emit signalsendimg(dst);
}

230
install.nsi

@ -0,0 +1,230 @@ @@ -0,0 +1,230 @@
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "中芯热成上位机"
!define PRODUCT_VERSION "1.2.13"
!define PRODUCT_PUBLISHER "zxrc"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\zxrcClient.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
SetCompressor lzma
; MUI 1.67 compatible ------
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; Language Selection Dialog Settings
!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\zxrcClient.exe"
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "SimpChinese"
; Reserve files
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\中芯热成上位机"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd
Section "MainSection" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "zxrcClient.exe"
CreateDirectory "$SMPROGRAMS\中芯热成上位机"
CreateShortCut "$SMPROGRAMS\中芯热成上位机\中芯热成上位机.lnk" "$INSTDIR\zxrcClient.exe"
CreateShortCut "$DESKTOP\中芯热成上位机.lnk" "$INSTDIR\zxrcClient.exe"
SetOverwrite try
File "D3Dcompiler_47.dll"
File "histviewer.exe"
SetOutPath "$INSTDIR\iconengines"
File "iconengines\qsvgicon.dll"
SetOutPath "$INSTDIR\imageformats"
File "imageformats\qgif.dll"
File "imageformats\qicns.dll"
File "imageformats\qico.dll"
File "imageformats\qjpeg.dll"
File "imageformats\qsvg.dll"
File "imageformats\qtga.dll"
File "imageformats\qtiff.dll"
File "imageformats\qwbmp.dll"
File "imageformats\qwebp.dll"
SetOutPath "$INSTDIR"
File "libEGL.dll"
File "libGLESv2.dll"
File "logo.ico"
File "opencv_videoio_ffmpeg470_64.dll"
File "opencv_world470.dll"
File "opengl32sw.dll"
SetOutPath "$INSTDIR\platforms"
File "platforms\qwindows.dll"
SetOutPath "$INSTDIR"
File "Qt5Charts.dll"
File "Qt5Core.dll"
File "Qt5Gui.dll"
File "Qt5SerialPort.dll"
File "Qt5Svg.dll"
File "Qt5Widgets.dll"
File "qtcsettings.cmake"
SetOutPath "$INSTDIR\styles"
File "styles\qwindowsvistastyle.dll"
SetOutPath "$INSTDIR\translations"
File "translations\qt_ar.qm"
File "translations\qt_bg.qm"
File "translations\qt_ca.qm"
File "translations\qt_cs.qm"
File "translations\qt_da.qm"
File "translations\qt_de.qm"
File "translations\qt_en.qm"
File "translations\qt_es.qm"
File "translations\qt_fi.qm"
File "translations\qt_fr.qm"
File "translations\qt_gd.qm"
File "translations\qt_he.qm"
File "translations\qt_hu.qm"
File "translations\qt_it.qm"
File "translations\qt_ja.qm"
File "translations\qt_ko.qm"
File "translations\qt_lv.qm"
File "translations\qt_pl.qm"
File "translations\qt_ru.qm"
File "translations\qt_sk.qm"
File "translations\qt_tr.qm"
File "translations\qt_uk.qm"
File "translations\qt_zh_TW.qm"
SetOutPath "$INSTDIR"
File "usbcam.lib"
File "zxrcClient.exp"
File "zxrcClient.lib"
File "更新记录.txt"
SectionEnd
Section -AdditionalIcons
CreateShortCut "$SMPROGRAMS\中芯热成上位机\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\zxrcClient.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\zxrcClient.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"
FunctionEnd
Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2
Abort
FunctionEnd
Section Uninstall
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\更新记录.txt"
Delete "$INSTDIR\zxrcClient.lib"
Delete "$INSTDIR\zxrcClient.exp"
Delete "$INSTDIR\usbcam.lib"
Delete "$INSTDIR\translations\qt_zh_TW.qm"
Delete "$INSTDIR\translations\qt_uk.qm"
Delete "$INSTDIR\translations\qt_tr.qm"
Delete "$INSTDIR\translations\qt_sk.qm"
Delete "$INSTDIR\translations\qt_ru.qm"
Delete "$INSTDIR\translations\qt_pl.qm"
Delete "$INSTDIR\translations\qt_lv.qm"
Delete "$INSTDIR\translations\qt_ko.qm"
Delete "$INSTDIR\translations\qt_ja.qm"
Delete "$INSTDIR\translations\qt_it.qm"
Delete "$INSTDIR\translations\qt_hu.qm"
Delete "$INSTDIR\translations\qt_he.qm"
Delete "$INSTDIR\translations\qt_gd.qm"
Delete "$INSTDIR\translations\qt_fr.qm"
Delete "$INSTDIR\translations\qt_fi.qm"
Delete "$INSTDIR\translations\qt_es.qm"
Delete "$INSTDIR\translations\qt_en.qm"
Delete "$INSTDIR\translations\qt_de.qm"
Delete "$INSTDIR\translations\qt_da.qm"
Delete "$INSTDIR\translations\qt_cs.qm"
Delete "$INSTDIR\translations\qt_ca.qm"
Delete "$INSTDIR\translations\qt_bg.qm"
Delete "$INSTDIR\translations\qt_ar.qm"
Delete "$INSTDIR\styles\qwindowsvistastyle.dll"
Delete "$INSTDIR\qtcsettings.cmake"
Delete "$INSTDIR\Qt5Widgets.dll"
Delete "$INSTDIR\Qt5Svg.dll"
Delete "$INSTDIR\Qt5SerialPort.dll"
Delete "$INSTDIR\Qt5Gui.dll"
Delete "$INSTDIR\Qt5Core.dll"
Delete "$INSTDIR\Qt5Charts.dll"
Delete "$INSTDIR\platforms\qwindows.dll"
Delete "$INSTDIR\opengl32sw.dll"
Delete "$INSTDIR\opencv_world470.dll"
Delete "$INSTDIR\opencv_videoio_ffmpeg470_64.dll"
Delete "$INSTDIR\logo.ico"
Delete "$INSTDIR\libGLESv2.dll"
Delete "$INSTDIR\libEGL.dll"
Delete "$INSTDIR\imageformats\qwebp.dll"
Delete "$INSTDIR\imageformats\qwbmp.dll"
Delete "$INSTDIR\imageformats\qtiff.dll"
Delete "$INSTDIR\imageformats\qtga.dll"
Delete "$INSTDIR\imageformats\qsvg.dll"
Delete "$INSTDIR\imageformats\qjpeg.dll"
Delete "$INSTDIR\imageformats\qico.dll"
Delete "$INSTDIR\imageformats\qicns.dll"
Delete "$INSTDIR\imageformats\qgif.dll"
Delete "$INSTDIR\iconengines\qsvgicon.dll"
Delete "$INSTDIR\histviewer.exe"
Delete "$INSTDIR\D3Dcompiler_47.dll"
Delete "$INSTDIR\zxrcClient.exe"
Delete "$SMPROGRAMS\中芯热成上位机\Uninstall.lnk"
Delete "$DESKTOP\中芯热成上位机.lnk"
Delete "$SMPROGRAMS\中芯热成上位机\中芯热成上位机.lnk"
RMDir "$SMPROGRAMS\中芯热成上位机"
RMDir "$INSTDIR\translations"
RMDir "$INSTDIR\styles"
RMDir "$INSTDIR\platforms"
RMDir "$INSTDIR\imageformats"
RMDir "$INSTDIR\iconengines"
RMDir "$INSTDIR"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd

230
install.nsi.in

@ -0,0 +1,230 @@ @@ -0,0 +1,230 @@
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "中芯热成上位机"
!define PRODUCT_VERSION "@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@.@CMAKE_PROJECT_VERSION_PATCH@.@CMAKE_PROJECT_VERSION_TWEAK@"
!define PRODUCT_PUBLISHER "zxrc"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\zxrcClient.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
SetCompressor lzma
; MUI 1.67 compatible ------
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; Language Selection Dialog Settings
!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\zxrcClient.exe"
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "SimpChinese"
; Reserve files
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\中芯热成上位机"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd
Section "MainSection" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "zxrcClient.exe"
CreateDirectory "$SMPROGRAMS\中芯热成上位机"
CreateShortCut "$SMPROGRAMS\中芯热成上位机\中芯热成上位机.lnk" "$INSTDIR\zxrcClient.exe"
CreateShortCut "$DESKTOP\中芯热成上位机.lnk" "$INSTDIR\zxrcClient.exe"
SetOverwrite try
File "D3Dcompiler_47.dll"
File "histviewer.exe"
SetOutPath "$INSTDIR\iconengines"
File "iconengines\qsvgicon.dll"
SetOutPath "$INSTDIR\imageformats"
File "imageformats\qgif.dll"
File "imageformats\qicns.dll"
File "imageformats\qico.dll"
File "imageformats\qjpeg.dll"
File "imageformats\qsvg.dll"
File "imageformats\qtga.dll"
File "imageformats\qtiff.dll"
File "imageformats\qwbmp.dll"
File "imageformats\qwebp.dll"
SetOutPath "$INSTDIR"
File "libEGL.dll"
File "libGLESv2.dll"
File "logo.ico"
File "opencv_videoio_ffmpeg470_64.dll"
File "opencv_world470.dll"
File "opengl32sw.dll"
SetOutPath "$INSTDIR\platforms"
File "platforms\qwindows.dll"
SetOutPath "$INSTDIR"
File "Qt5Charts.dll"
File "Qt5Core.dll"
File "Qt5Gui.dll"
File "Qt5SerialPort.dll"
File "Qt5Svg.dll"
File "Qt5Widgets.dll"
File "qtcsettings.cmake"
SetOutPath "$INSTDIR\styles"
File "styles\qwindowsvistastyle.dll"
SetOutPath "$INSTDIR\translations"
File "translations\qt_ar.qm"
File "translations\qt_bg.qm"
File "translations\qt_ca.qm"
File "translations\qt_cs.qm"
File "translations\qt_da.qm"
File "translations\qt_de.qm"
File "translations\qt_en.qm"
File "translations\qt_es.qm"
File "translations\qt_fi.qm"
File "translations\qt_fr.qm"
File "translations\qt_gd.qm"
File "translations\qt_he.qm"
File "translations\qt_hu.qm"
File "translations\qt_it.qm"
File "translations\qt_ja.qm"
File "translations\qt_ko.qm"
File "translations\qt_lv.qm"
File "translations\qt_pl.qm"
File "translations\qt_ru.qm"
File "translations\qt_sk.qm"
File "translations\qt_tr.qm"
File "translations\qt_uk.qm"
File "translations\qt_zh_TW.qm"
SetOutPath "$INSTDIR"
File "usbcam.lib"
File "zxrcClient.exp"
File "zxrcClient.lib"
File "更新记录.txt"
SectionEnd
Section -AdditionalIcons
CreateShortCut "$SMPROGRAMS\中芯热成上位机\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\zxrcClient.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\zxrcClient.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"
FunctionEnd
Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2
Abort
FunctionEnd
Section Uninstall
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\更新记录.txt"
Delete "$INSTDIR\zxrcClient.lib"
Delete "$INSTDIR\zxrcClient.exp"
Delete "$INSTDIR\usbcam.lib"
Delete "$INSTDIR\translations\qt_zh_TW.qm"
Delete "$INSTDIR\translations\qt_uk.qm"
Delete "$INSTDIR\translations\qt_tr.qm"
Delete "$INSTDIR\translations\qt_sk.qm"
Delete "$INSTDIR\translations\qt_ru.qm"
Delete "$INSTDIR\translations\qt_pl.qm"
Delete "$INSTDIR\translations\qt_lv.qm"
Delete "$INSTDIR\translations\qt_ko.qm"
Delete "$INSTDIR\translations\qt_ja.qm"
Delete "$INSTDIR\translations\qt_it.qm"
Delete "$INSTDIR\translations\qt_hu.qm"
Delete "$INSTDIR\translations\qt_he.qm"
Delete "$INSTDIR\translations\qt_gd.qm"
Delete "$INSTDIR\translations\qt_fr.qm"
Delete "$INSTDIR\translations\qt_fi.qm"
Delete "$INSTDIR\translations\qt_es.qm"
Delete "$INSTDIR\translations\qt_en.qm"
Delete "$INSTDIR\translations\qt_de.qm"
Delete "$INSTDIR\translations\qt_da.qm"
Delete "$INSTDIR\translations\qt_cs.qm"
Delete "$INSTDIR\translations\qt_ca.qm"
Delete "$INSTDIR\translations\qt_bg.qm"
Delete "$INSTDIR\translations\qt_ar.qm"
Delete "$INSTDIR\styles\qwindowsvistastyle.dll"
Delete "$INSTDIR\qtcsettings.cmake"
Delete "$INSTDIR\Qt5Widgets.dll"
Delete "$INSTDIR\Qt5Svg.dll"
Delete "$INSTDIR\Qt5SerialPort.dll"
Delete "$INSTDIR\Qt5Gui.dll"
Delete "$INSTDIR\Qt5Core.dll"
Delete "$INSTDIR\Qt5Charts.dll"
Delete "$INSTDIR\platforms\qwindows.dll"
Delete "$INSTDIR\opengl32sw.dll"
Delete "$INSTDIR\opencv_world470.dll"
Delete "$INSTDIR\opencv_videoio_ffmpeg470_64.dll"
Delete "$INSTDIR\logo.ico"
Delete "$INSTDIR\libGLESv2.dll"
Delete "$INSTDIR\libEGL.dll"
Delete "$INSTDIR\imageformats\qwebp.dll"
Delete "$INSTDIR\imageformats\qwbmp.dll"
Delete "$INSTDIR\imageformats\qtiff.dll"
Delete "$INSTDIR\imageformats\qtga.dll"
Delete "$INSTDIR\imageformats\qsvg.dll"
Delete "$INSTDIR\imageformats\qjpeg.dll"
Delete "$INSTDIR\imageformats\qico.dll"
Delete "$INSTDIR\imageformats\qicns.dll"
Delete "$INSTDIR\imageformats\qgif.dll"
Delete "$INSTDIR\iconengines\qsvgicon.dll"
Delete "$INSTDIR\histviewer.exe"
Delete "$INSTDIR\D3Dcompiler_47.dll"
Delete "$INSTDIR\zxrcClient.exe"
Delete "$SMPROGRAMS\中芯热成上位机\Uninstall.lnk"
Delete "$DESKTOP\中芯热成上位机.lnk"
Delete "$SMPROGRAMS\中芯热成上位机\中芯热成上位机.lnk"
RMDir "$SMPROGRAMS\中芯热成上位机"
RMDir "$INSTDIR\translations"
RMDir "$INSTDIR\styles"
RMDir "$INSTDIR\platforms"
RMDir "$INSTDIR\imageformats"
RMDir "$INSTDIR\iconengines"
RMDir "$INSTDIR"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd

2
main.cpp

@ -9,7 +9,7 @@ int main(int argc, char *argv[]) @@ -9,7 +9,7 @@ int main(int argc, char *argv[])
Q_INIT_RESOURCE(qfluentwidgets);
qfluentwidgets::setLicense("RjU5dGJZUE9ORkQ2SFg2T2RVaVQrMXEvUFpZSjdHU2x4NnNRR2p5VjRKYS8wWFppcE1sNjhtRVRoNmF4eHltSHg1dnVpWm12M0g4TzQxaEY5eUlTQXFodWo2dzQ1S3hPYWtMMXAvSkRDYXZNcyt0bg==");
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
// QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication a(argc, argv);
MainWindow w;

346
mainwindow.cpp

@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
#include "./ui_mainwindow.h"
#include <QDateTime>
#include <QDesktopServices>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
@ -24,7 +24,11 @@ MainWindow::~MainWindow() @@ -24,7 +24,11 @@ MainWindow::~MainWindow()
void MainWindow::initUI()
{
b_stat = false;
b_stat = true;
ui->pushButton_3->setChecked(true);
imageX = -10;
imageY = -10;
flip0 = false;
flip1 = false;
savevideo = false;
@ -32,15 +36,16 @@ void MainWindow::initUI() @@ -32,15 +36,16 @@ void MainWindow::initUI()
savesbin = false;
shotimg = false;
shotbin = false;
path = "";
fps = 0;
fpscount = 0;
path = QApplication::applicationDirPath()+"/";
setWindowTitle(QString(ProjectVersion));
setWindowTitle(QString::fromLocal8Bit("中芯热成上位机")+ QString(ProjectVersion));
setWindowIcon(QIcon("logo.ico"));
ui->splitter_2->setCollapsible(1,false);
ui->splitter->setCollapsible(1,false);
// QHBoxLayout lout = QHBoxLayout();
@ -62,7 +67,7 @@ void MainWindow::initUI() @@ -62,7 +67,7 @@ void MainWindow::initUI()
ui->toolbox->addItem(m3,u8"显示设置");
ui->toolbox->addItem(m4,u8"保存设置");
type = gray8;
type = gray16;
rows = ui->spinBox->value();
cols = ui->spinBox_2->value();
@ -78,12 +83,46 @@ void MainWindow::initUI() @@ -78,12 +83,46 @@ void MainWindow::initUI()
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->label->installEventFilter(this);
lfps = new QLabel;
lpath = new HyperlinkLabel;
lpath->setText(QString::fromLocal8Bit("当前保存路径为")+path);
lpath->setUrl(QUrl(path));
ui->statusbar->addWidget(lfps);
ui->statusbar->addWidget(lpath);
b_con = false;
d_con = 1;
d_con_bright = 0;
}
void MainWindow::initConnect()
{
connect(ucontrol,SIGNAL(signalSendMessage(QString)),this,SLOT(slotlogtext(QString)));
connect(usb,SIGNAL(signalMessage(QString)),this,SLOT(slotlogtext(QString)));
connect(m1,SIGNAL(signalsetGPOL(int)),ucontrol,SLOT(setGPOL(int)));
connect(m1,SIGNAL(signalsetIT(double)),ucontrol,SLOT(setIT(double)));
connect(m1,SIGNAL(signalopenTEC(bool)),ucontrol,SLOT(tec(bool)));
connect(m1,SIGNAL(signalset14bit(bool)),ucontrol,SLOT(bit14(bool)));
connect(m1,&menu1::signalset14bit,[=](bool b){
if(b){
type = gray16;
usb->SetImageInfo(gray16,rows,cols);
}
else{
type = gray8;
usb->SetImageInfo(gray8,rows,cols);
}
});
#if CLIENT == 0 || CLIENT==1
connect(usb,SIGNAL(signalGetImage(cv::Mat)),this,SLOT(slotShowImage(cv::Mat)));
connect(m1,SIGNAL(signalsavelow()),ucontrol,SLOT(savelow()));
connect(m1,SIGNAL(signalsavehigh()),ucontrol,SLOT(savehigh()));
connect(m1,SIGNAL(signalcalck()),ucontrol,SLOT(calck()));
@ -92,16 +131,7 @@ void MainWindow::initConnect() @@ -92,16 +131,7 @@ void MainWindow::initConnect()
connect(m1,SIGNAL(signalonepoint()),ucontrol,SLOT(onepoint()));
connect(m1,SIGNAL(signalsaveb()),ucontrol,SLOT(saveb()));
connect(m1,SIGNAL(signalopenb(bool)),ucontrol,SLOT(openb(bool)));
connect(m1,SIGNAL(signalsetGPOL(int)),ucontrol,SLOT(setGPOL(int)));
connect(m1,SIGNAL(signalsetIT(double)),ucontrol,SLOT(setIT(double)));
connect(m1,SIGNAL(signalopenTEC(bool)),ucontrol,SLOT(tec(bool)));
connect(m1,SIGNAL(signalset14bit(bool)),ucontrol,SLOT(bit14(bool)));
connect(m1,&menu1::signalset14bit,[=](bool b){
if(b)
usb->SetImageInfo(gray16,rows,cols);
else
usb->SetImageInfo(gray8,rows,cols);
});
connect(m2,SIGNAL(signalsag(bool)),ucontrol,SLOT(setsag(bool)));
connect(m2,SIGNAL(signalsetDDE(int)),ucontrol,SLOT(setDDE(int)));
connect(m2,SIGNAL(signalsetkf(int)),ucontrol,SLOT(setkf(int)));
@ -112,7 +142,89 @@ void MainWindow::initConnect() @@ -112,7 +142,89 @@ void MainWindow::initConnect()
///线性拉伸设置
///
///
connect(ucontrol,SIGNAL(signalSendMessage(QString)),this,SLOT(slotlogtext(QString)));
#elif CLIENT==2
connect(usb,SIGNAL(signalGetImage(cv::Mat)),m_tp,SLOT(slotprocimg(cv::Mat)));
connect(m_tp,SIGNAL(signalsendimg(cv::Mat)),m_avg,SLOT(slotprocimg(cv::Mat)));
connect(m_avg,SIGNAL(signalsendimg(cv::Mat)),m_bila,SLOT(slotprocimg(cv::Mat)));
connect(m_bila,SIGNAL(signalsendimg(cv::Mat)),m_sagauss,SLOT(slotprocimg(cv::Mat)));
connect(m_sagauss,SIGNAL(signalsendimg(cv::Mat)),m_dde,SLOT(slotprocimg(cv::Mat)));
connect(m_dde,SIGNAL(signalsendimg(cv::Mat)),m_clhe,SLOT(slotprocimg(cv::Mat)));
connect(m_clhe,SIGNAL(signalsendimg(cv::Mat)),this,SLOT(slotShowImage(cv::Mat)));
connect(m1,&menu1::signalsavelow,[=](){
m_tp->savelow();
});
connect(m1,&menu1::signalsavehigh,[=](){
m_tp->savehigh();
});
connect(m1,&menu1::signalcalck,[=](){
m_tp->calc();
});
connect(m1,&menu1::signalsavek,[=](){
m_tp->savek();
});
connect(m1,&menu1::signalsaveb,[=](){
m_tp->saveb();
});
connect(m1,&menu1::signalonepoint,[=](){
m_tp->onepoint();
});
connect(m1,&menu1::signalopenk,[=](bool b){
if(b){
m_tp->loaddata();
m_tp->on(cv::Size(cols,rows));
}
else{
m_tp->off();
}
});
connect(m2,&menu2::signalsag,[=](bool b){
if(b){
m_sagauss->setpara(3,0);
m_sagauss->on();
}
else{
m_sagauss->off();
}
});
connect(m2,&menu2::signalbila,[=](bool b){
if(b){
m_bila->setparas(5,10000,10);
}
else{
m_bila->off();
}
});
connect(m2,&menu2::signalsetDDE,[=](int value){
m_dde->setpara(value/512.0);
});
connect(m2,&menu2::signalsetkf,[=](int value){
m_avg->setpara(value);
});
connect(m2,&menu2::signalsethist,[=](int value){
m_clhe->setthreshold(value);
});
#endif
connect(m2,&menu2::signalsetDE,[=](bool b){
b_con = b;
});
connect(m2,&menu2::signalseterate,[=](double rate){
d_con = rate;
});
connect(m2,&menu2::signalsetbright,[=](int value){
d_con_bright = value;
});
connect(m3,&menu3::signalflip0,[=](bool b){
flip0 = b;
@ -154,6 +266,9 @@ void MainWindow::initConnect() @@ -154,6 +266,9 @@ void MainWindow::initConnect()
else{
path = dir+"/";
}
lpath->setText(QString::fromLocal8Bit("当前保存路径为")+path);
lpath->setUrl(QUrl(path));
});
connect(m4,&menu4::signalshotimg,[=](){
@ -164,6 +279,8 @@ void MainWindow::initConnect() @@ -164,6 +279,8 @@ void MainWindow::initConnect()
});
connect(m4,&menu4::signalsavevideo,[=](bool b){
if(b){
if(fps<10)
slotlogtext(QDateTime::currentDateTime().toString()+ QString::fromLocal8Bit(":当前帧率不稳定,请确保帧率稳定后再保存视频"));
QString now = QDateTime::currentDateTime().toString("yyyy_MM_dd_hh_mm_ss");
std::string filename = path.toStdString()+now.toStdString()+".mp4";
writer = new cv::VideoWriter(filename,cv::VideoWriter::fourcc('M','P','4','V'),fps,cv::Size(cols,rows),false);
@ -172,6 +289,8 @@ void MainWindow::initConnect() @@ -172,6 +289,8 @@ void MainWindow::initConnect()
savevideo =true;
}
else{
if(!savevideo)
return;
savevideo = false;
writer->release();
QDateTime t = QDateTime::currentDateTime();
@ -217,6 +336,12 @@ void MainWindow::initConnect() @@ -217,6 +336,12 @@ void MainWindow::initConnect()
});
connect(lpath,&QPushButton::clicked,[=](){
QDesktopServices::openUrl(QUrl(path));
});
}
void MainWindow::hideui()
@ -229,42 +354,53 @@ void MainWindow::hideui() @@ -229,42 +354,53 @@ void MainWindow::hideui()
void MainWindow::on_pushButton_clicked()// 开启传输
{
if(ui->pushButton->isChecked()){
QTimer *t = new QTimer;
connect(t,&QTimer::timeout,[=](){
on_pushButton_2_clicked();
usb->SetImageInfo(type,rows,cols);
usb->setStatu(true);
usb->start();
ui->pushButton->setText(u8"停止传输");
t->stop();
});
t->start(2000);
ui->label->setText(QString::fromLocal8Bit("开启传输中,请等待"));
}
else{
usb->setStatu(false);
usb->stopProcessData();
ui->pushButton->setText(u8"开始传输");
}
}
void MainWindow::on_pushButton_2_clicked()
{
//恢复默认设置
#ifndef CLIENT
ucontrol->bit14(false);
type = gray8;
ucontrol->bit14(true);
#elif CLIENT == 1
ucontrol->bit14(false);
type = gray8;
qDebug()<<"sim";
usb->SetImageInfo(type,rows,cols);
#elif CLIENT == 2
ucontrol->bit14(true);
type = gray16;
qDebug()<<"pc";
#endif
#if CLIENT == 0 || CLIENT == 1
ucontrol->setIT(5.0);
ucontrol->setGPOL(800);
ucontrol->sethist(200);
ucontrol->openk(true);
ucontrol->openb(true);
#elif CLIENT == 2
ucontrol->openk(false);
ucontrol->openb(false);
#endif
}
@ -283,32 +419,15 @@ void MainWindow::on_pushButton_3_clicked() @@ -283,32 +419,15 @@ void MainWindow::on_pushButton_3_clicked()
void MainWindow::slotShowImage(cv::Mat img)
{
fpscount +=1;
if(shotimg){
QString now = QDateTime::currentDateTime().toString("yyyy_MM_dd_hh_mm_ss");
QString file = path+ now+".png";
cv::imwrite(file.toLocal8Bit().toStdString(),img);
shotimg = false;
}
if(shotbin){
QDateTime t = QDateTime::currentDateTime();
QString filename = path+ t.toString("yyyy-MM-dd-hh-mm-ss");
if(type == gray8)
filename+= "-8bit.bin";
else if(type == gray16)
filename+= "-14bit.bin";
QFile file(filename);
file.open(QIODevice::NewOnly);
file.write((char*)img.data,img.total()*img.elemSize());
file.flush();
file.close();
shotbin = false;
if(flip0){
cv::flip(img,img,0);
}
if(savevideo){
writer->write(img);
if(flip1){
cv::flip(img,img,1);
}
if(savebin){
purefile->write((char*)img.data,img.total()*img.elemSize());
purefile->flush();
@ -329,13 +448,7 @@ void MainWindow::slotShowImage(cv::Mat img) @@ -329,13 +448,7 @@ void MainWindow::slotShowImage(cv::Mat img)
}
if(flip0){
cv::flip(img,img,0);
}
if(flip1){
cv::flip(img,img,1);
}
if(turnl){
@ -345,6 +458,33 @@ void MainWindow::slotShowImage(cv::Mat img) @@ -345,6 +458,33 @@ void MainWindow::slotShowImage(cv::Mat img)
}
if(b_con){
cv::Mat image;
img.convertTo(image,CV_32SC1);
double avg = cv::mean(image).val[0];
cv::Mat dst = cv::Mat(512,640,CV_16UC1);
int s,d;
for(int i = 0;i<image.rows;i++){
for (int j = 0; j< image.cols;j++){
s = image.at<int>(i,j) - avg;
d = s*d_con+avg+d_con_bright*4;
if(d<0)d = 0;
if(d>65535) d = 65535;
dst.at<ushort>(i,j) = d;
}
}
img = dst;
}
if(b_stat ){
if(img.type() == CV_16UC1)
lastimage = img/4;
@ -455,15 +595,50 @@ void MainWindow::slotShowImage(cv::Mat img) @@ -455,15 +595,50 @@ void MainWindow::slotShowImage(cv::Mat img)
ui->lineEdit_7->setText(QString::number(avg,'f',2));
ui->lineEdit_8->setText(QString::number(sigma,'f',2));
}
if(img.type() == CV_16UC1)
img.convertTo(img,CV_8UC1,1.0/257);
{
img.convertTo(img,CV_8UC1,1.0/257);
}
QImage image(img.data,img.cols,img.rows,img.cols,QImage::Format_Grayscale8);
QPixmap pix = QPixmap::fromImage(image);
if(shotimg){
QString now = QDateTime::currentDateTime().toString("yyyy_MM_dd_hh_mm_ss");
QString imgfile = path+ now+".png";
cv::imwrite(imgfile.toLocal8Bit().toStdString(),img);
QString t =path+now+".tiff";
cv::imwrite(t.toStdString(),img);
QString filename = path+now+".bin";
QFile file(filename);
file.open(QIODevice::NewOnly);
file.write((char*)img.data,img.total()*img.elemSize());
file.flush();
file.close();
shotimg = false;
}
if(shotbin){
QDateTime t = QDateTime::currentDateTime();
QString filename = path+ t.toString("yyyy-MM-dd-hh-mm-ss");
if(type == gray8)
filename+= "-8bit.bin";
else if(type == gray16)
filename+= "-14bit.bin";
QFile file(filename);
file.open(QIODevice::NewOnly);
file.write((char*)img.data,img.total()*img.elemSize());
file.flush();
file.close();
shotbin = false;
}
if(savevideo){
writer->write(img);
}
// QPixmap pix = QPixmap::fromImage(img);
if(b_stat){
if(b_stat &(!b_fullscreen)){
QPainter p(&pix);
QPen pen = p.pen();
QPen npen(QColor(0xad,0x14,0x53));
@ -475,8 +650,10 @@ void MainWindow::slotShowImage(cv::Mat img) @@ -475,8 +650,10 @@ void MainWindow::slotShowImage(cv::Mat img)
}
p.setPen(pen);
}
ui->label->setPixmap(pix);
if(b_fullscreen)
ui->label->setPixmap(pix.scaled(ui->label->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
else
ui->label->setPixmap(pix);
}
@ -487,15 +664,11 @@ void MainWindow::slotlogtext(QString msg) @@ -487,15 +664,11 @@ void MainWindow::slotlogtext(QString msg)
void MainWindow::slotlogstatus()
{
QString msg = QString::fromLocal8Bit("当前图像深度为");
if(type==gray8){
msg+=QString::fromLocal8Bit( "8位");
}
else{
msg+=QString::fromLocal8Bit("14位");
}
msg+=QString::fromLocal8Bit(",帧率为")+QString::number(fps);
ui->statusbar->showMessage(msg);
lfps->setText(QString::fromLocal8Bit("当前帧率为")+QString::number(fps));
}
bool MainWindow::eventFilter(QObject *obj, QEvent *e)
@ -506,6 +679,23 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *e) @@ -506,6 +679,23 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *e)
imageY =ev->y();
return true;
}
if(obj == ui->label && e->type()== QEvent::MouseButtonDblClick){
b_fullscreen = !b_fullscreen;
if(b_fullscreen){
ui->label->setWindowFlag(Qt::Window);
ui->label->showFullScreen();
ui->label->setAlignment(Qt::AlignHCenter);
}
else{
ui->label->setWindowFlags(Qt::SubWindow);
ui->label->showNormal();
ui->label->setAlignment(Qt::AlignLeft|Qt::AlignTop);
}
return true;
}
return false;
}
@ -542,6 +732,16 @@ void MainWindow::initIns() @@ -542,6 +732,16 @@ void MainWindow::initIns()
slotlogstatus();
});
t->start(1000);
#if CLIENT == 2
m_avg = new avgfilter();
m_bila = new bila();
m_dde = new dde();
m_sagauss = new sagauss();
m_tp = new twoPoint();
m_clhe = new clhe();
#endif
}

27
mainwindow.h

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
#include <QMainWindow>
#include <QFile>
#include <QLabel>
#include "menu1.h"
#include "menu2.h"
#include "menu3.h"
@ -13,6 +14,15 @@ @@ -13,6 +14,15 @@
#include "protocol.h"
#include "avgfilter.h"
#include "bila.h"
#include "dde.h"
#include "sagauss.h"
#include "twopoint.h"
#include "clhe.h"
#include "qfluentwidgets"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
@ -68,6 +78,16 @@ private: @@ -68,6 +78,16 @@ private:
menu3* m3;
menu4* m4;
QLabel* lfps ;
HyperlinkLabel* lpath;
avgfilter* m_avg;
bila* m_bila;
dde* m_dde;
sagauss* m_sagauss;
twoPoint* m_tp;
clhe* m_clhe;
usbcontrol* ucontrol;
usbthread* usb;
@ -84,6 +104,8 @@ private: @@ -84,6 +104,8 @@ private:
bool turnr;
bool b_stat;//
bool b_fullscreen;
int imageY;
int imageX;
@ -104,6 +126,11 @@ private: @@ -104,6 +126,11 @@ private:
int fpscount;
bool b_con;
double d_con;
double d_con_bright;
cv::Mat lastimage;
};

198
mainwindow.ui

@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>1092</width>
<width>1374</width>
<height>607</height>
</rect>
</property>
@ -14,20 +14,7 @@ @@ -14,20 +14,7 @@
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="5">
<widget class="SpinBox" name="spinBox_2">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>10000</number>
</property>
<property name="value">
<number>640</number>
</property>
</widget>
</item>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="TogglePushButton" name="pushButton">
<property name="text">
@ -35,17 +22,17 @@ @@ -35,17 +22,17 @@
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_2">
<item row="0" column="1">
<widget class="PushButton" name="pushButton_2">
<property name="text">
<string> 行数 </string>
<string>恢复默认</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="PushButton" name="pushButton_2">
<item row="0" column="2">
<widget class="QLabel" name="label_2">
<property name="text">
<string>恢复默认</string>
<string> 行数 </string>
</property>
</widget>
</item>
@ -69,23 +56,43 @@ @@ -69,23 +56,43 @@
</property>
</widget>
</item>
<item row="0" column="5">
<widget class="SpinBox" name="spinBox_2">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>10000</number>
</property>
<property name="value">
<number>640</number>
</property>
</widget>
</item>
<item row="1" column="0" colspan="6">
<widget class="Splitter" name="splitter_2">
<widget class="Splitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="Splitter" name="splitter_1">
<property name="orientation">
<enum>Qt::Vertical</enum>
<widget class="ToolBox" name="toolbox" native="true">
<property name="minimumSize">
<size>
<width>350</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>16777215</height>
</size>
</property>
<widget class="ToolBox" name="toolbox" native="true"/>
<widget class="QTextBrowser" name="textBrowser"/>
</widget>
<widget class="QScrollArea" name="scrollArea">
<property name="minimumSize">
<size>
<width>648</width>
<height>520</height>
<width>660</width>
<height>532</height>
</size>
</property>
<property name="widgetResizable">
@ -96,8 +103,8 @@ @@ -96,8 +103,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>646</width>
<height>518</height>
<width>658</width>
<height>530</height>
</rect>
</property>
<widget class="QLabel" name="label">
@ -116,12 +123,28 @@ @@ -116,12 +123,28 @@
</widget>
</widget>
<widget class="QWidget" name="widget_2" native="true">
<layout class="QGridLayout" name="gridLayout_2">
<item row="8" column="1">
<widget class="QLineEdit" name="lineEdit_6"/>
<property name="minimumSize">
<size>
<width>350</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>16777215</height>
</size>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="2">
<widget class="TogglePushButton" name="pushButton_3">
<property name="text">
<string>暂停统计</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="lineEdit_3"/>
<item row="1" column="0" colspan="2">
<widget class="QTableWidget" name="tableWidget"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_4">
@ -130,22 +153,19 @@ @@ -130,22 +153,19 @@
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QTableWidget" name="tableWidget"/>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_2"/>
</item>
<item row="0" column="0" colspan="2">
<widget class="TogglePushButton" name="pushButton_3">
<item row="3" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>开始统计</string>
<string>中心点纵坐标</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_2"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
@ -153,6 +173,16 @@ @@ -153,6 +173,16 @@
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="lineEdit_3"/>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>区域均方差</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="lineEdit_4"/>
</item>
@ -163,70 +193,56 @@ @@ -163,70 +193,56 @@
</property>
</widget>
</item>
<item row="13" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
<item row="7" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>截止点数</string>
</property>
</spacer>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_5">
<item row="7" column="1">
<widget class="QLineEdit" name="lineEdit_5"/>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>中心点纵坐标</string>
<string>溢出点数</string>
</property>
</widget>
</item>
<item row="10" column="0">
<item row="8" column="1">
<widget class="QLineEdit" name="lineEdit_6"/>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>全局平均值</string>
</property>
</widget>
</item>
<item row="10" column="1">
<item row="9" column="1">
<widget class="QLineEdit" name="lineEdit_7"/>
</item>
<item row="11" column="0">
<item row="10" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>全局均方</string>
<string>全局均方</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>区域均方根</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="lineEdit_5"/>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>截止点数</string>
</property>
</widget>
<item row="10" column="1">
<widget class="QLineEdit" name="lineEdit_8"/>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>溢出点数</string>
<item row="11" column="0" colspan="2">
<widget class="QTextBrowser" name="textBrowser">
<property name="maximumSize">
<size>
<width>400</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item row="11" column="1">
<widget class="QLineEdit" name="lineEdit_8"/>
</item>
</layout>
</widget>
</widget>
@ -267,15 +283,15 @@ @@ -267,15 +283,15 @@
<container>1</container>
</customwidget>
<customwidget>
<class>Splitter</class>
<extends>QSplitter</extends>
<class>PushButton</class>
<extends>QPushButton</extends>
<header location="global">qfluentwidgets</header>
<container>1</container>
</customwidget>
<customwidget>
<class>PushButton</class>
<extends>QPushButton</extends>
<class>Splitter</class>
<extends>QSplitter</extends>
<header location="global">qfluentwidgets</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>

30
menu1.cpp

@ -6,6 +6,8 @@ menu1::menu1(QWidget *parent) : @@ -6,6 +6,8 @@ menu1::menu1(QWidget *parent) :
ui(new Ui::menu1)
{
ui->setupUi(this);
ui->pushButton_12->hide();
}
menu1::~menu1()
@ -46,13 +48,7 @@ void menu1::on_pushButton_4_clicked() @@ -46,13 +48,7 @@ void menu1::on_pushButton_4_clicked()
void menu1::on_pushButton_5_clicked()
{
emit signalopenk(ui->pushButton_5->isChecked());
if(ui->pushButton_5->isChecked()){
ui->pushButton_5->setText(u8"关闭K值");
}
else{
ui->pushButton_5->setText(u8"开启K值");
}
emit signalopenk(true);
}
@ -70,13 +66,7 @@ void menu1::on_pushButton_7_clicked() @@ -70,13 +66,7 @@ void menu1::on_pushButton_7_clicked()
void menu1::on_pushButton_8_clicked()
{
emit signalopenb(ui->pushButton_8->isChecked());
if(ui->pushButton_8->isChecked()){
ui->pushButton_8->setText(u8"关闭B值");
}
else{
ui->pushButton_8->setText(u8"开启B值");
}
emit signalopenb(true);
}
@ -115,3 +105,15 @@ void menu1::on_pushButton_12_clicked() @@ -115,3 +105,15 @@ void menu1::on_pushButton_12_clicked()
}
}
void menu1::on_pushButton_13_clicked()
{
emit signalopenk(false);
}
void menu1::on_pushButton_14_clicked()
{
emit signalopenb(false);
}

4
menu1.h

@ -55,6 +55,10 @@ private slots: @@ -55,6 +55,10 @@ private slots:
void on_pushButton_12_clicked();
void on_pushButton_13_clicked();
void on_pushButton_14_clicked();
private:
Ui::menu1 *ui;
};

110
menu1.ui

@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>209</width>
<width>256</width>
<height>640</height>
</rect>
</property>
@ -14,24 +14,17 @@ @@ -14,24 +14,17 @@
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>存低温背景</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="pushButton_2">
<item row="7" column="0">
<widget class="TogglePushButton" name="pushButton_11">
<property name="text">
<string>存高温背景</string>
<string>开启TEC</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="pushButton_3">
<item row="7" column="1">
<widget class="TogglePushButton" name="pushButton_12">
<property name="text">
<string>计算K值</string>
<string>切换14Bit</string>
</property>
</widget>
</item>
@ -42,10 +35,33 @@ @@ -42,10 +35,33 @@
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="TogglePushButton" name="pushButton_5">
<item row="6" column="0">
<widget class="DoubleSpinBox" name="doubleSpinBox">
<property name="maximum">
<double>35.000000000000000</double>
</property>
<property name="value">
<double>5.000000000000000</double>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QPushButton" name="pushButton_9">
<property name="text">
<string>开启K值</string>
<string>设置GPOL(mv)</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="SpinBox" name="spinBox">
<property name="maximum">
<number>4000</number>
</property>
<property name="singleStep">
<number>0</number>
</property>
<property name="value">
<number>800</number>
</property>
</widget>
</item>
@ -56,62 +72,66 @@ @@ -56,62 +72,66 @@
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QPushButton" name="pushButton_7">
<item row="0" column="0">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>保存B值</string>
<string>存低温背景</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="TogglePushButton" name="pushButton_8">
<item row="6" column="1">
<widget class="QPushButton" name="pushButton_10">
<property name="text">
<string>开启B值</string>
<string>设置积分时间(ms)</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="SpinBox" name="spinBox">
<property name="maximum">
<number>4000</number>
<item row="1" column="0">
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>计算K值</string>
</property>
<property name="singleStep">
<number>0</number>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>存高温背景</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QPushButton" name="pushButton_9">
<item row="3" column="1">
<widget class="QPushButton" name="pushButton_7">
<property name="text">
<string>设置GPOL(mv)</string>
<string>保存B值</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="DoubleSpinBox" name="doubleSpinBox">
<property name="maximum">
<double>35.000000000000000</double>
<item row="2" column="0">
<widget class="QPushButton" name="pushButton_5">
<property name="text">
<string>开启K值</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QPushButton" name="pushButton_10">
<item row="2" column="1">
<widget class="QPushButton" name="pushButton_13">
<property name="text">
<string>设置积分时间(ms)</string>
<string>关闭K值</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="TogglePushButton" name="pushButton_11">
<item row="4" column="0">
<widget class="QPushButton" name="pushButton_8">
<property name="text">
<string>开启TEC</string>
<string>开启B值</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="TogglePushButton" name="pushButton_12">
<item row="4" column="1">
<widget class="QPushButton" name="pushButton_14">
<property name="text">
<string>切换14Bit</string>
<string>关闭B值</string>
</property>
</widget>
</item>

21
menu2.cpp

@ -6,6 +6,17 @@ menu2::menu2(QWidget *parent) : @@ -6,6 +6,17 @@ menu2::menu2(QWidget *parent) :
ui(new Ui::menu2)
{
ui->setupUi(this);
ui->pushButton->hide();
ui->pushButton_2->hide();
ui->pushButton_3->hide();
ui->pushButton_4->hide();
ui->pushButton_6->hide();
ui->spinBox->hide();
ui->spinBox_2->hide();
ui->spinBox_3->hide();
}
menu2::~menu2()
@ -15,11 +26,11 @@ menu2::~menu2() @@ -15,11 +26,11 @@ menu2::~menu2()
void menu2::hideui()
{
ui->label->hide();
ui->label_2->hide();
ui->spinBox_4->hide();
ui->doubleSpinBox->hide();
ui->pushButton_5->hide();
// ui->label->hide();
// ui->label_2->hide();
// ui->spinBox_4->hide();
// ui->doubleSpinBox->hide();
// ui->pushButton_5->hide();
}
void menu2::on_pushButton_clicked()

31
menu2.ui

@ -21,16 +21,6 @@ @@ -21,16 +21,6 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="SpinBox" name="spinBox">
<property name="maximum">
<number>1023</number>
</property>
<property name="value">
<number>250</number>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
@ -87,7 +77,17 @@ @@ -87,7 +77,17 @@
</widget>
</item>
<item row="5" column="1">
<widget class="DoubleSpinBox" name="doubleSpinBox"/>
<widget class="DoubleSpinBox" name="doubleSpinBox">
<property name="decimals">
<number>4</number>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_2">
@ -97,7 +97,11 @@ @@ -97,7 +97,11 @@
</widget>
</item>
<item row="6" column="1">
<widget class="SpinBox" name="spinBox_4"/>
<widget class="SpinBox" name="spinBox_4">
<property name="maximum">
<number>16000</number>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="TogglePushButton" name="pushButton_6">
@ -106,6 +110,9 @@ @@ -106,6 +110,9 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="SpinBox" name="spinBox"/>
</item>
</layout>
</widget>
<customwidgets>

15
menu4.cpp

@ -10,6 +10,9 @@ menu4::menu4(QWidget *parent) : @@ -10,6 +10,9 @@ menu4::menu4(QWidget *parent) :
ui(new Ui::menu4)
{
ui->setupUi(this);
dir = QApplication::applicationDirPath();
// process.setProgram("explorer.exe");
ui->pushButton_3->hide();
}
menu4::~menu4()
@ -19,7 +22,7 @@ menu4::~menu4() @@ -19,7 +22,7 @@ menu4::~menu4()
void menu4::on_pushButton_clicked()
{
QString dir = QFileDialog::getExistingDirectory(this,QString::fromLocal8Bit("设置存储位置"));
dir = QFileDialog::getExistingDirectory(this,QString::fromLocal8Bit("设置存储位置"));
emit signalsetdir(dir);
qDebug()<<dir;
}
@ -66,3 +69,13 @@ void menu4::on_pushButton_6_clicked() @@ -66,3 +69,13 @@ void menu4::on_pushButton_6_clicked()
emit signalsavesbin(ui->spinBox->value());
}
#include <QProcess>
void menu4::on_pushButton_7_clicked()
{
// QStringList arg;
// arg.append(dir);
// process.setArguments(arg);
process.start("explorer.exe",QStringList("D:/workspace"));
// process.start("notepad.exe",QStringList(dir));
}

5
menu4.h

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
#define MENU4_H
#include <QWidget>
#include <QProcess>
namespace Ui {
class menu4;
@ -38,8 +39,12 @@ private slots: @@ -38,8 +39,12 @@ private slots:
void on_pushButton_6_clicked();
void on_pushButton_7_clicked();
private:
Ui::menu4 *ui;
QString dir;
QProcess process;
};
#endif // MENU4_H

37
menu4.ui

@ -14,45 +14,52 @@ @@ -14,45 +14,52 @@
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="5" column="0">
<widget class="SpinBox" name="spinBox"/>
<item row="7" column="0">
<widget class="SpinBox" name="spinBox">
<property name="minimum">
<number>2</number>
</property>
<property name="maximum">
<number>1024</number>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QPushButton" name="pushButton_6">
<item row="6" column="0" colspan="2">
<widget class="TogglePushButton" name="pushButton_5">
<property name="text">
<string>保存指定帧数数据</string>
<string>保存连续原始数据</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="TogglePushButton" name="pushButton_5">
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>保存连续原始数据</string>
<string>保存单帧原始数据</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<item row="5" column="0" colspan="2">
<widget class="TogglePushButton" name="pushButton_4">
<property name="text">
<string>保存视频</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_3">
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>保存单帧原始数据</string>
<string>保存单帧图像</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_2">
<item row="7" column="1">
<widget class="QPushButton" name="pushButton_6">
<property name="text">
<string>保存单帧图像</string>
<string>保存指定帧数数据</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<item row="1" column="0" colspan="2">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>设置文件保存路径</string>

9
qt5app.rc → qt5app.rc.in

@ -2,8 +2,9 @@ @@ -2,8 +2,9 @@
1 VERSIONINFO
FILEVERSION 1,4,0,0
PRODUCTVERSION 1,4,0,0
FILEVERSION @CMAKE_PROJECT_VERSION_MAJOR@,@CMAKE_PROJECT_VERSION_MINOR@,@CMAKE_PROJECT_VERSION_PATCH@,@CMAKE_PROJECT_VERSION_TWEAK@
PRODUCTVERSION @CMAKE_PROJECT_VERSION_MAJOR@,@CMAKE_PROJECT_VERSION_MINOR@,@CMAKE_PROJECT_VERSION_PATCH@,@CMAKE_PROJECT_VERSION_TWEAK@
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -21,12 +22,12 @@ BEGIN @@ -21,12 +22,12 @@ BEGIN
VALUE "Comments", "client"
VALUE "CompanyName", "zxrc"
VALUE "FileDescription", "zxrc"
VALUE "FileVersion", "1.4.0.0"
VALUE "FileVersion", " @CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@.@CMAKE_PROJECT_VERSION_PATCH@.@CMAKE_PROJECT_VERSION_TWEAK@"
VALUE "InternalName", "zxrc"
VALUE "LegalCopyright", "zxrctech"
VALUE "OriginalFilename", "zxrcClient.exe"
VALUE "ProductName", "zxrcClient"
VALUE "ProductVersion", "1.2.13.0"
VALUE "ProductVersion", " @CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@.@CMAKE_PROJECT_VERSION_PATCH@.@CMAKE_PROJECT_VERSION_TWEAK@"
END
END
BLOCK "VarFileInfo"

17
readme.txt

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
版本:1.4.1.1
启动前添加延时2s
取消双边滤波等功能
保存图片时,同时保存png,tiff和二进制文件
版本:1.4.1.0
将关闭K和关闭B独立出来
添加数字增强功能
添加状态栏显示
添加打开保存路径的功能
版本:1.4.0.0
使用新UI实现了图像的采集保存和机芯控制
同时编译了两个程序, 即zxrcClient.exe 和zxrcClientSim.exe, 其中Sim为简化版的意思, 即提供给普通客户使用的版本.其中去掉了一些功能.
当前版本号为1.4.0.0, 后续更新中, 添加新功能, 或修复较大bug时, 会增加第三位计数, 修复修复小bug时, 只会增加第四位计数

13
usbcontrol.cpp

@ -13,9 +13,14 @@ usbcontrol::usbcontrol(QObject* parent): @@ -13,9 +13,14 @@ usbcontrol::usbcontrol(QObject* parent):
int usbcontrol::sendMessage(char *msg, int msglen)
{
if(msglen!=8)
if(msglen!=8){
return -1;
else
}
// else
for(int i = 0;i<4;i++){
qDebug()<<QString::number(msg[i],16);
}
msg[7]=0;
for(int i = 1;i<7;i++){
msg[7] +=msg[i];
@ -348,8 +353,10 @@ void usbcontrol::setIT(double value) @@ -348,8 +353,10 @@ void usbcontrol::setIT(double value)
msg[1] = 0x02;
msg[2] = 0x10;
int v = value*6250/4;//转换为int型
// int v = value*6250/4;//转换为int型
int v = value*6250/5;
msg[3] = v/256;
msg[4] = v%256;
sendMessage(msg,8);

BIN
中芯热诚上位机使用说明.docx

Binary file not shown.

BIN
注意事项.docx

Binary file not shown.
Loading…
Cancel
Save