From 25d5d266b062c025b465fe6eb22c58cf90f52d0a Mon Sep 17 00:00:00 2001 From: xin Date: Wed, 18 May 2022 09:36:31 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CDlgInform.cpp | 41 +++ CDlgInform.h | 25 ++ IrisFODISCalibrationTool.aps | Bin 0 -> 110060 bytes IrisFODISCalibrationTool.rc | Bin 0 -> 13408 bytes IrisFODIS_CalibrationTool.cpp | 107 ++++++ IrisFODIS_CalibrationTool.h | 32 ++ IrisFODIS_CalibrationTool.sln | 31 ++ IrisFODIS_CalibrationTool.vcxproj | 221 +++++++++++ IrisFODIS_CalibrationTool.vcxproj.filters | 69 ++++ IrisFODIS_CalibrationTool.vcxproj.user | 6 + IrisFODIS_CalibrationToolDlg.cpp | 429 ++++++++++++++++++++++ IrisFODIS_CalibrationToolDlg.h | 95 +++++ framework.h | 49 +++ pch.cpp | 5 + pch.h | 16 + res/IrisFODISCalibrationTool.rc2 | Bin 0 -> 704 bytes res/IrisFODIS_CalibrationTool.ico | Bin 0 -> 67777 bytes resource.h | 30 ++ targetver.h | 8 + 19 files changed, 1164 insertions(+) create mode 100644 CDlgInform.cpp create mode 100644 CDlgInform.h create mode 100644 IrisFODISCalibrationTool.aps create mode 100644 IrisFODISCalibrationTool.rc create mode 100644 IrisFODIS_CalibrationTool.cpp create mode 100644 IrisFODIS_CalibrationTool.h create mode 100644 IrisFODIS_CalibrationTool.sln create mode 100644 IrisFODIS_CalibrationTool.vcxproj create mode 100644 IrisFODIS_CalibrationTool.vcxproj.filters create mode 100644 IrisFODIS_CalibrationTool.vcxproj.user create mode 100644 IrisFODIS_CalibrationToolDlg.cpp create mode 100644 IrisFODIS_CalibrationToolDlg.h create mode 100644 framework.h create mode 100644 pch.cpp create mode 100644 pch.h create mode 100644 res/IrisFODISCalibrationTool.rc2 create mode 100644 res/IrisFODIS_CalibrationTool.ico create mode 100644 resource.h create mode 100644 targetver.h diff --git a/CDlgInform.cpp b/CDlgInform.cpp new file mode 100644 index 0000000..ac307e0 --- /dev/null +++ b/CDlgInform.cpp @@ -0,0 +1,41 @@ +// CDlgInform.cpp: 实现文件 +// + +#include "pch.h" +#include "IrisFODIS_CalibrationTool.h" +#include "CDlgInform.h" +#include "afxdialogex.h" + + +// CDlgInform 对话框 + +IMPLEMENT_DYNAMIC(CDlgInform, CDialogEx) + +CDlgInform::CDlgInform(CWnd* pParent /*=nullptr*/) + : CDialogEx(IDD_DIALOG_INFORM, pParent) +{ + +} + +CDlgInform::~CDlgInform() +{ +} + +void CDlgInform::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_STATIC_INFORMATION, m_staInfo); +} + +LRESULT CDlgInform::OnInformUpdate(WPARAM wParam, LPARAM lParam) +{ + UpdateData(FALSE); + return 0; +} + + +BEGIN_MESSAGE_MAP(CDlgInform, CDialogEx) +END_MESSAGE_MAP() + + +// CDlgInform 消息处理程序 diff --git a/CDlgInform.h b/CDlgInform.h new file mode 100644 index 0000000..3f2678e --- /dev/null +++ b/CDlgInform.h @@ -0,0 +1,25 @@ +#pragma once + + +// CDlgInform 对话框 + +class CDlgInform : public CDialogEx +{ + DECLARE_DYNAMIC(CDlgInform) + +public: + CDlgInform(CWnd* pParent = nullptr); // 标准构造函数 + virtual ~CDlgInform(); + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_DIALOG_INFORM }; +#endif + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + LRESULT OnInformUpdate(WPARAM wParam, LPARAM lParam); + DECLARE_MESSAGE_MAP() +public: + CStatic m_staInfo; +}; diff --git a/IrisFODISCalibrationTool.aps b/IrisFODISCalibrationTool.aps new file mode 100644 index 0000000000000000000000000000000000000000..a489603b2f74ebda5650bad0f2c5350b52049e9d GIT binary patch literal 110060 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 literal 0 HcmV?d00001 diff --git a/IrisFODISCalibrationTool.rc b/IrisFODISCalibrationTool.rc new file mode 100644 index 0000000000000000000000000000000000000000..7cd1bf9a973791410f5fb6c660364dd776911b81 GIT binary patch literal 13408 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 Ck*CH0 literal 0 HcmV?d00001 diff --git a/IrisFODIS_CalibrationTool.cpp b/IrisFODIS_CalibrationTool.cpp new file mode 100644 index 0000000..9411b57 --- /dev/null +++ b/IrisFODIS_CalibrationTool.cpp @@ -0,0 +1,107 @@ + +// IrisFODIS_CalibrationTool.cpp: 定义应用程序的类行为。 +// + +#include "pch.h" +#include "framework.h" +#include "IrisFODIS_CalibrationTool.h" +#include "IrisFODIS_CalibrationToolDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// CIrisFODISCalibrationToolApp + +BEGIN_MESSAGE_MAP(CIrisFODISCalibrationToolApp, CWinApp) + ON_COMMAND(ID_HELP, &CWinApp::OnHelp) +END_MESSAGE_MAP() + + +// CIrisFODISCalibrationToolApp 构造 + +CIrisFODISCalibrationToolApp::CIrisFODISCalibrationToolApp() +{ + // 支持重新启动管理器 + m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART; + + // TODO: 在此处添加构造代码, + // 将所有重要的初始化放置在 InitInstance 中 +} + + +// 唯一的 CIrisFODISCalibrationToolApp 对象 + +CIrisFODISCalibrationToolApp theApp; + + +// CIrisFODISCalibrationToolApp 初始化 + +BOOL CIrisFODISCalibrationToolApp::InitInstance() +{ + // 如果一个运行在 Windows XP 上的应用程序清单指定要 + // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, + //则需要 InitCommonControlsEx()。 否则,将无法创建窗口。 + INITCOMMONCONTROLSEX InitCtrls; + InitCtrls.dwSize = sizeof(InitCtrls); + // 将它设置为包括所有要在应用程序中使用的 + // 公共控件类。 + InitCtrls.dwICC = ICC_WIN95_CLASSES; + InitCommonControlsEx(&InitCtrls); + + CWinApp::InitInstance(); + + + AfxEnableControlContainer(); + + // 创建 shell 管理器,以防对话框包含 + // 任何 shell 树视图控件或 shell 列表视图控件。 + CShellManager *pShellManager = new CShellManager; + + // 激活“Windows Native”视觉管理器,以便在 MFC 控件中启用主题 + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); + + // 标准初始化 + // 如果未使用这些功能并希望减小 + // 最终可执行文件的大小,则应移除下列 + // 不需要的特定初始化例程 + // 更改用于存储设置的注册表项 + // TODO: 应适当修改该字符串, + // 例如修改为公司或组织名 + SetRegistryKey(_T("应用程序向导生成的本地应用程序")); + + CIrisFODISCalibrationToolDlg dlg; + m_pMainWnd = &dlg; + INT_PTR nResponse = dlg.DoModal(); + if (nResponse == IDOK) + { + // TODO: 在此放置处理何时用 + // “确定”来关闭对话框的代码 + } + else if (nResponse == IDCANCEL) + { + // TODO: 在此放置处理何时用 + // “取消”来关闭对话框的代码 + } + else if (nResponse == -1) + { + TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n"); + TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n"); + } + + // 删除上面创建的 shell 管理器。 + if (pShellManager != nullptr) + { + delete pShellManager; + } + +#if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS) + ControlBarCleanUp(); +#endif + + // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序, + // 而不是启动应用程序的消息泵。 + return FALSE; +} + diff --git a/IrisFODIS_CalibrationTool.h b/IrisFODIS_CalibrationTool.h new file mode 100644 index 0000000..8619985 --- /dev/null +++ b/IrisFODIS_CalibrationTool.h @@ -0,0 +1,32 @@ + +// IrisFODIS_CalibrationTool.h: PROJECT_NAME 应用程序的主头文件 +// + +#pragma once + +#ifndef __AFXWIN_H__ + #error "include 'pch.h' before including this file for PCH" +#endif + +#include "resource.h" // 主符号 + + +// CIrisFODISCalibrationToolApp: +// 有关此类的实现,请参阅 IrisFODIS_CalibrationTool.cpp +// + +class CIrisFODISCalibrationToolApp : public CWinApp +{ +public: + CIrisFODISCalibrationToolApp(); + +// 重写 +public: + virtual BOOL InitInstance(); + +// 实现 + + DECLARE_MESSAGE_MAP() +}; + +extern CIrisFODISCalibrationToolApp theApp; diff --git a/IrisFODIS_CalibrationTool.sln b/IrisFODIS_CalibrationTool.sln new file mode 100644 index 0000000..d1cfb01 --- /dev/null +++ b/IrisFODIS_CalibrationTool.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1433 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IrisFODIS_CalibrationTool", "IrisFODIS_CalibrationTool.vcxproj", "{AFAC84D1-5AA4-4A09-B9B4-671323044546}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AFAC84D1-5AA4-4A09-B9B4-671323044546}.Debug|x64.ActiveCfg = Debug|x64 + {AFAC84D1-5AA4-4A09-B9B4-671323044546}.Debug|x64.Build.0 = Debug|x64 + {AFAC84D1-5AA4-4A09-B9B4-671323044546}.Debug|x86.ActiveCfg = Debug|Win32 + {AFAC84D1-5AA4-4A09-B9B4-671323044546}.Debug|x86.Build.0 = Debug|Win32 + {AFAC84D1-5AA4-4A09-B9B4-671323044546}.Release|x64.ActiveCfg = Release|x64 + {AFAC84D1-5AA4-4A09-B9B4-671323044546}.Release|x64.Build.0 = Release|x64 + {AFAC84D1-5AA4-4A09-B9B4-671323044546}.Release|x86.ActiveCfg = Release|Win32 + {AFAC84D1-5AA4-4A09-B9B4-671323044546}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {CD311250-AD82-4A76-89EF-4442BF8F0D59} + EndGlobalSection +EndGlobal diff --git a/IrisFODIS_CalibrationTool.vcxproj b/IrisFODIS_CalibrationTool.vcxproj new file mode 100644 index 0000000..6f609e2 --- /dev/null +++ b/IrisFODIS_CalibrationTool.vcxproj @@ -0,0 +1,221 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {AFAC84D1-5AA4-4A09-B9B4-671323044546} + MFCProj + IrisFODISCalibrationTool + 10.0.17134.0 + + + + Application + true + v141 + Unicode + Dynamic + + + Application + false + v141 + true + Unicode + Dynamic + + + Application + true + v141 + Unicode + Dynamic + + + Application + false + v141 + true + Unicode + Dynamic + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + Use + Level3 + Disabled + true + WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0804 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + Disabled + true + _WINDOWS;_DEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0804 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + MaxSpeed + true + true + true + WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + true + true + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0804 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + MaxSpeed + true + true + true + _WINDOWS;NDEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + true + true + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0804 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/IrisFODIS_CalibrationTool.vcxproj.filters b/IrisFODIS_CalibrationTool.vcxproj.filters new file mode 100644 index 0000000..f655c6f --- /dev/null +++ b/IrisFODIS_CalibrationTool.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + + + 资源文件 + + + + + 资源文件 + + + + + 资源文件 + + + \ No newline at end of file diff --git a/IrisFODIS_CalibrationTool.vcxproj.user b/IrisFODIS_CalibrationTool.vcxproj.user new file mode 100644 index 0000000..3174f2f --- /dev/null +++ b/IrisFODIS_CalibrationTool.vcxproj.user @@ -0,0 +1,6 @@ + + + + IrisFODISCalibrationTool.rc + + \ No newline at end of file diff --git a/IrisFODIS_CalibrationToolDlg.cpp b/IrisFODIS_CalibrationToolDlg.cpp new file mode 100644 index 0000000..9419d99 --- /dev/null +++ b/IrisFODIS_CalibrationToolDlg.cpp @@ -0,0 +1,429 @@ + +// IrisFODIS_CalibrationToolDlg.cpp: 实现文件 +// + +#include "pch.h" +#include "framework.h" +#include "IrisFODIS_CalibrationTool.h" +#include "IrisFODIS_CalibrationToolDlg.h" +#include "afxdialogex.h" + + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// 用于应用程序“关于”菜单项的 CAboutDlg 对话框 + +class CAboutDlg : public CDialogEx +{ +public: + CAboutDlg(); + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_ABOUTBOX }; +#endif + + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + +// 实现 +protected: + DECLARE_MESSAGE_MAP() +}; + +CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX) +{ +} + +void CAboutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); +} + +BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) +END_MESSAGE_MAP() + + +// CIrisFODISCalibrationToolDlg 对话框 + + + +CIrisFODISCalibrationToolDlg::CIrisFODISCalibrationToolDlg(CWnd* pParent /*=nullptr*/) + : CDialogEx(IDD_IRISFODIS_CALIBRATIONTOOL_DIALOG, pParent) +{ + m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); + m_vecFodisFile.clear(); +} + +void CIrisFODISCalibrationToolDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_EDIT_FODISDATA, m_ceFODISFilePath); + DDX_Control(pDX, IDC_LIST_DATAPATH, m_lbFilePath); + DDX_Control(pDX, IDC_EDIT_OUTPUTDATA, m_ceOutputPath); + DDX_Control(pDX, IDC_EDIT_CALDATA, m_ceCalFilePath); +} + +void CIrisFODISCalibrationToolDlg::ShowFileDialog(long lResID, LPCTSTR lpszDefExt, LPCTSTR lpszFilter, int iType) +{ + CFileDialog *cfdSave; + CString csFileExt; + cfdSave = new CFileDialog(true, lpszDefExt, NULL, OFN_FILEMUSTEXIST, lpszFilter, GetParent()); + if (IDOK == cfdSave->DoModal()) + { + csFileExt = cfdSave->GetFileExt(); + CString cstrSavePath = cfdSave->GetPathName(); + if (iType == 0) + { + ((CEdit *)GetDlgItem(lResID))->SetWindowText(cstrSavePath); + } + else if (iType == 1) + { + ((CListBox *)GetDlgItem(lResID))->AddString(cstrSavePath); + } + } + delete cfdSave; +} + +void CIrisFODISCalibrationToolDlg::ShowFolderDialog(long lResID, LPCTSTR lpszDefExt) +{ + BROWSEINFO bi; + char name[MAX_PATH]; + ZeroMemory(&bi, sizeof(BROWSEINFO)); + bi.hwndOwner = AfxGetMainWnd()->GetSafeHwnd(); + bi.pszDisplayName = (LPWSTR)name; + bi.lpszTitle = lpszDefExt; + bi.ulFlags = BIF_RETURNFSANCESTORS; + LPITEMIDLIST idl = SHBrowseForFolder(&bi); + CString strDirectoryPath; + SHGetPathFromIDList(idl, strDirectoryPath.GetBuffer(MAX_PATH)); + strDirectoryPath.ReleaseBuffer(); + if (strDirectoryPath.IsEmpty()) + { + return; + } + int iPos = strDirectoryPath.GetLength(); + if (iPos == 3) + { + ((CEdit *)GetDlgItem(lResID))->SetWindowTextW(strDirectoryPath); + } + else + { + ((CEdit *)GetDlgItem(lResID))->SetWindowTextW(strDirectoryPath + _T("\\")); + } + + UpdateData(false); +} + +void CIrisFODISCalibrationToolDlg::ResetListBoxHScrollBar(long lResID) +{ + CDC * dc = GetDC(); + SIZE s; + int index; + CString str; + long temp; + + for (index = 0; index < m_lbFilePath.GetCount(); index++) + { + m_lbFilePath.GetText(index, str); + s = dc->GetTextExtent(str, str.GetLength() + 1); // 获取字符串的像素大小 + temp = (long)SendDlgItemMessage(lResID, LB_GETHORIZONTALEXTENT, 0, 0); //temp得到滚动条的宽度 + if (s.cx > temp) + { + SendDlgItemMessage(lResID, LB_SETHORIZONTALEXTENT, (WPARAM)s.cx, 0); + } + + } + ReleaseDC(dc); +} + +void CIrisFODISCalibrationToolDlg::CreateInformDialog(CString cstrInformation, int iShow) +{ + if (m_pdlgInfo != NULL) + { + delete m_pdlgInfo; + m_pdlgInfo = NULL; + } + + m_pdlgInfo = new CDlgInform; + m_pdlgInfo->Create(IDD_DIALOG_INFORM, this); + m_pdlgInfo->m_staInfo.SetWindowTextW(cstrInformation); + m_pdlgInfo->CenterWindow(this); + m_pdlgInfo->ShowWindow(iShow); + m_pdlgInfo->m_staInfo.UpdateData(FALSE); + m_pdlgInfo->UpdateData(FALSE); +} + +UINT CIrisFODISCalibrationToolDlg::ThreadProcessFODISCal(LPVOID pParam) +{ + CIrisFODISCalibrationToolDlg *pCaller = (CIrisFODISCalibrationToolDlg *)pParam; + + CalFrame FPODISCalDataFrame; + tagDataFrame OneDataFrame; + CalDataFrame OneCalDataFrame; + CFile cfFPODISCal,cfOriFODISData,cfCalFODISData; + CString cstrOneOutputFilePath; + + if (cfFPODISCal.Open(pCaller->m_cstrCalFilePath, CFile::modeRead)) + { + //cfFPODISCal.Read(&FPODISCalDataFrame, sizeof(FPODISCalDataFrame)); + + cfFPODISCal.Read((char *)&FPODISCalDataFrame.uiExposureTimeInMS, sizeof(UINT));//U32 + cfFPODISCal.Read((char*)&FPODISCalDataFrame.fTemperature, sizeof(float)); + cfFPODISCal.Read((char*)&FPODISCalDataFrame.iPixels, sizeof(int)); + cfFPODISCal.Read((char*)FPODISCalDataFrame.fWaveLength, sizeof(float)*FPODISCalDataFrame.iPixels); + cfFPODISCal.Read((char*)FPODISCalDataFrame.dCal_Gain, sizeof(double)*FPODISCalDataFrame.iPixels); + cfFPODISCal.Read((char*)FPODISCalDataFrame.dCal_Offset, sizeof(double)*FPODISCalDataFrame.iPixels); + //bReadIS2Cal = true; + } + else + { + AfxMessageBox(L"Open cal file Err!!!"); + return -1; + } + + for (UINT ui = 0; ui < pCaller->m_vecFodisFile.size(); ui++) + { + + CString cstrInfo; + int iTempFileCount = (int)pCaller->m_vecFodisFile.size(); + cstrInfo.Format(_T("正在处理第%d个FODIS文件。。。共有%d个文件"), ui + 1, iTempFileCount); + + pCaller->m_pdlgInfo->m_staInfo.SetWindowText(cstrInfo); + pCaller->m_pdlgInfo->PostMessageW(MYWM_INFORM_UPDATE); + + if (cfOriFODISData.Open(pCaller->m_vecFodisFile[ui], CFile::modeRead)) + { + int iPos = pCaller->m_vecFodisFile[ui].ReverseFind('\\'); + cstrOneOutputFilePath = pCaller->m_cstrOutputFilePath + pCaller->m_vecFodisFile[ui].Right(pCaller->m_vecFodisFile[ui].GetLength()-iPos - 1); + iPos = cstrOneOutputFilePath.ReverseFind('.'); + cstrOneOutputFilePath = cstrOneOutputFilePath.Left(iPos) + L".is2r"; + + cfCalFODISData.Open(cstrOneOutputFilePath, CFile::modeCreate | CFile::modeWrite); + + while (cfOriFODISData.Read(&OneDataFrame, sizeof(OneDataFrame))) + { + OneCalDataFrame.dSyncTimes = OneDataFrame.dTimes; + OneCalDataFrame.fTemperature = OneDataFrame.fTemperature; + OneCalDataFrame.usExposureTime = OneDataFrame.usExposureTimeInMS; + for (int i=0;i< FPODISCalDataFrame.iPixels;i++) + { + OneCalDataFrame.fData[i] = (float)((float)OneDataFrame.lData[i] * FPODISCalDataFrame.dCal_Gain[i] * ((float)FPODISCalDataFrame.uiExposureTimeInMS / (float)OneDataFrame.usExposureTimeInMS)); + } + cfCalFODISData.Write(&OneCalDataFrame, sizeof(OneCalDataFrame)); + } + cfCalFODISData.Close(); + } + else + { + AfxMessageBox(L"Open FODIS data file Err!!!"); + return -2; + } + cfOriFODISData.Close(); + } + + return 0; +} + +BEGIN_MESSAGE_MAP(CIrisFODISCalibrationToolDlg, CDialogEx) + ON_WM_SYSCOMMAND() + ON_WM_PAINT() + ON_WM_QUERYDRAGICON() + ON_BN_CLICKED(IDC_BUTTON_FODISDATA, &CIrisFODISCalibrationToolDlg::OnBnClickedButtonFodisdata) + ON_BN_CLICKED(IDC_BUTTON_CALDATA, &CIrisFODISCalibrationToolDlg::OnBnClickedButtonCaldata) + ON_BN_CLICKED(IDC_BUTTON_OUTPUTDATA, &CIrisFODISCalibrationToolDlg::OnBnClickedButtonOutputdata) + ON_BN_CLICKED(IDC_BUTTON_STARTCALC, &CIrisFODISCalibrationToolDlg::OnBnClickedButtonStartcalc) +END_MESSAGE_MAP() + + +// CIrisFODISCalibrationToolDlg 消息处理程序 + +BOOL CIrisFODISCalibrationToolDlg::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + // 将“关于...”菜单项添加到系统菜单中。 + + // IDM_ABOUTBOX 必须在系统命令范围内。 + ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); + ASSERT(IDM_ABOUTBOX < 0xF000); + + CMenu* pSysMenu = GetSystemMenu(FALSE); + if (pSysMenu != nullptr) + { + BOOL bNameValid; + CString strAboutMenu; + bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); + ASSERT(bNameValid); + if (!strAboutMenu.IsEmpty()) + { + pSysMenu->AppendMenu(MF_SEPARATOR); + pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); + } + } + + // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 + // 执行此操作 + SetIcon(m_hIcon, TRUE); // 设置大图标 + SetIcon(m_hIcon, FALSE); // 设置小图标 + + // TODO: 在此添加额外的初始化代码 + + return TRUE; // 除非将焦点设置到控件,否则返回 TRUE +} + +void CIrisFODISCalibrationToolDlg::OnSysCommand(UINT nID, LPARAM lParam) +{ + if ((nID & 0xFFF0) == IDM_ABOUTBOX) + { + CAboutDlg dlgAbout; + dlgAbout.DoModal(); + } + else + { + CDialogEx::OnSysCommand(nID, lParam); + } +} + +// 如果向对话框添加最小化按钮,则需要下面的代码 +// 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序, +// 这将由框架自动完成。 + +void CIrisFODISCalibrationToolDlg::OnPaint() +{ + if (IsIconic()) + { + CPaintDC dc(this); // 用于绘制的设备上下文 + + SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); + + // 使图标在工作区矩形中居中 + int cxIcon = GetSystemMetrics(SM_CXICON); + int cyIcon = GetSystemMetrics(SM_CYICON); + CRect rect; + GetClientRect(&rect); + int x = (rect.Width() - cxIcon + 1) / 2; + int y = (rect.Height() - cyIcon + 1) / 2; + + // 绘制图标 + dc.DrawIcon(x, y, m_hIcon); + } + else + { + CDialogEx::OnPaint(); + } +} + +//当用户拖动最小化窗口时系统调用此函数取得光标 +//显示。 +HCURSOR CIrisFODISCalibrationToolDlg::OnQueryDragIcon() +{ + return static_cast(m_hIcon); +} + + + +void CIrisFODISCalibrationToolDlg::OnBnClickedButtonFodisdata() +{ + // TODO: 在此添加控件通知处理程序代码 + ShowFolderDialog(IDC_EDIT_FODISDATA, L"请选择数据路径"); + + m_vecFodisFile.clear(); + m_lbFilePath.ResetContent(); + bool bWorking = true; + + UpdateData(1); + m_ceFODISFilePath.GetWindowTextW(m_cstrFODISFilePath); + int iPos = m_cstrFODISFilePath.ReverseFind('\\'); + m_cstrFODISFilePath = m_cstrFODISFilePath.Left(iPos + 1); + + m_ceOutputPath.SetWindowTextW(m_cstrFODISFilePath+L"Cal\\"); + + CFileFind cfFinder; + bWorking = true; + CString cstrPath = m_cstrFODISFilePath + _T("*.dat"); + bool bRes = cfFinder.FindFile(cstrPath); + if (!bRes) + { + return; + } + while (bWorking) + { + bWorking = cfFinder.FindNextFile(); + + if (cfFinder.IsDots()) + { + continue; + } + + if (cfFinder.IsDirectory()) + { + CString str = cfFinder.GetFilePath(); + } + + else + { + CString str = cfFinder.GetFilePath(); + m_vecFodisFile.push_back(str); + } + } + + + for (UINT ui = 0; ui < m_vecFodisFile.size(); ui++) + { + m_lbFilePath.AddString(m_vecFodisFile[ui]); + } + + ResetListBoxHScrollBar(IDC_LIST_DATAPATH); +} + + +void CIrisFODISCalibrationToolDlg::OnBnClickedButtonCaldata() +{ + // TODO: 在此添加控件通知处理程序代码 + ShowFileDialog(IDC_EDIT_CALDATA, _T(".cal"), _T("Data Times Files (*.cal)|*.cal|"), 0); + +} + + +void CIrisFODISCalibrationToolDlg::OnBnClickedButtonOutputdata() +{ + // TODO: 在此添加控件通知处理程序代码 + ShowFolderDialog(IDC_EDIT_OUTPUTDATA, L"请选择保存数据路径"); +} + + +void CIrisFODISCalibrationToolDlg::OnBnClickedButtonStartcalc() +{ + // TODO: 在此添加控件通知处理程序代码 + if (m_vecFodisFile.size()==0) + { + AfxMessageBox(L"No FODIS Data File Found!!!"); + return; + } + + m_ceCalFilePath.GetWindowTextW(m_cstrCalFilePath); + if( m_cstrCalFilePath == L"") + { + AfxMessageBox(L"No Cal Data File Found!!!"); + return; + } + + m_ceOutputPath.GetWindowTextW(m_cstrOutputFilePath); + if (m_cstrOutputFilePath == L"") + { + AfxMessageBox(L"No Output Filepath!!!"); + return; + } + if (!PathIsDirectory(m_cstrOutputFilePath)) + { + CreateDirectory(m_cstrOutputFilePath, NULL); + } + + + CreateInformDialog(L"开始校准数据。。。", 1); + m_ptrdProcess = AfxBeginThread(ThreadProcessFODISCal, this); +} diff --git a/IrisFODIS_CalibrationToolDlg.h b/IrisFODIS_CalibrationToolDlg.h new file mode 100644 index 0000000..99a595f --- /dev/null +++ b/IrisFODIS_CalibrationToolDlg.h @@ -0,0 +1,95 @@ + +// IrisFODIS_CalibrationToolDlg.h: 头文件 +// + +#pragma once +#include +#include "CDlgInform.h" + + +typedef struct tagFODISCALDATAFRAME +{ + int iExposureTime; + int iPixels; + double dTemperature; + float pfWaveLength[2048]; + double pdGain[2048]; + double pdOffset[2048]; +}FPODISCalData; + +typedef struct tagCalibrationFrame +{ + UINT uiExposureTimeInMS; + float fTemperature; + int iPixels; + float fWaveLength[4096] = { 0 }; + double dCal_Gain[4096] = { 0 }; + double dCal_Offset[4096] = { 0 }; +}CalFrame; + +typedef struct tagDataFrame +{ + UINT usExposureTimeInMS; + int lData[4096]; + float fTemperature = 0; + double dTimes = 0; +}DataFrame; + +typedef struct tagCalDataFrame +{ + USHORT usExposureTime; + float fData[2048]; + float fTemperature; + double dSyncTimes; + +}CalDataFrame; + +// CIrisFODISCalibrationToolDlg 对话框 +class CIrisFODISCalibrationToolDlg : public CDialogEx +{ +// 构造 +public: + CIrisFODISCalibrationToolDlg(CWnd* pParent = nullptr); // 标准构造函数 + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_IRISFODIS_CALIBRATIONTOOL_DIALOG }; +#endif + + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + +private: + std::vector m_vecFodisFile; + CString m_cstrFODISFilePath,m_cstrCalFilePath,m_cstrOutputFilePath; + CWinThread * m_ptrdProcess; + CDlgInform * m_pdlgInfo; +private: + void ShowFileDialog(long lResID, LPCTSTR lpszDefExt, LPCTSTR lpszFilter, int iType); + void ShowFolderDialog(long lResID, LPCTSTR lpszDefExt); + void ResetListBoxHScrollBar(long lResID); + + void CreateInformDialog(CString cstrInformation, int iShow); +public: + static UINT ThreadProcessFODISCal(LPVOID pParam); + +// 实现 +protected: + HICON m_hIcon; + + // 生成的消息映射函数 + virtual BOOL OnInitDialog(); + afx_msg void OnSysCommand(UINT nID, LPARAM lParam); + afx_msg void OnPaint(); + afx_msg HCURSOR OnQueryDragIcon(); + DECLARE_MESSAGE_MAP() +public: + afx_msg void OnBnClickedButtonFodisdata(); + CEdit m_ceFODISFilePath; + CListBox m_lbFilePath; + afx_msg void OnBnClickedButtonCaldata(); + afx_msg void OnBnClickedButtonOutputdata(); + CEdit m_ceOutputPath; + afx_msg void OnBnClickedButtonStartcalc(); + CEdit m_ceCalFilePath; +}; diff --git a/framework.h b/framework.h new file mode 100644 index 0000000..5672fb5 --- /dev/null +++ b/framework.h @@ -0,0 +1,49 @@ +#pragma once + +#ifndef VC_EXTRALEAN +#define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料 +#endif + +#include "targetver.h" + +#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的 + +// 关闭 MFC 的一些常见且经常可放心忽略的隐藏警告消息 +#define _AFX_ALL_WARNINGS + +#include // MFC 核心组件和标准组件 +#include // MFC 扩展 + + +#include // MFC 自动化类 + + + +#ifndef _AFX_NO_OLE_SUPPORT +#include // MFC 对 Internet Explorer 4 公共控件的支持 +#endif +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC 对 Windows 公共控件的支持 +#endif // _AFX_NO_AFXCMN_SUPPORT + +#include // MFC 支持功能区和控制条 + + + + + + + + + +#ifdef _UNICODE +#if defined _M_IX86 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") +#elif defined _M_X64 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") +#else +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") +#endif +#endif + + diff --git a/pch.cpp b/pch.cpp new file mode 100644 index 0000000..b6fb8f4 --- /dev/null +++ b/pch.cpp @@ -0,0 +1,5 @@ +// pch.cpp: 与预编译标头对应的源文件 + +#include "pch.h" + +// 当使用预编译的头时,需要使用此源文件,编译才能成功。 diff --git a/pch.h b/pch.h new file mode 100644 index 0000000..aaf567a --- /dev/null +++ b/pch.h @@ -0,0 +1,16 @@ +// pch.h: 这是预编译标头文件。 +// 下方列出的文件仅编译一次,提高了将来生成的生成性能。 +// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 +// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。 +// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。 + +#ifndef PCH_H +#define PCH_H + +// 添加要在此处预编译的标头 +#include "framework.h" +#include + +#endif //PCH_H +#define PI 3.1415926 +#define MYWM_INFORM_UPDATE WM_USER+100 \ No newline at end of file diff --git a/res/IrisFODISCalibrationTool.rc2 b/res/IrisFODISCalibrationTool.rc2 new file mode 100644 index 0000000000000000000000000000000000000000..50fd1ff76cb4ad2a69696dc81f798622cba49b32 GIT binary patch literal 704 zcmd6ky9&ZU5JhicC8V{mTCfqs1pEUr3L+-r6D!dqf~X1jYPAroMEwIB!4DK0@o{%0 z*lH)sPLjJjcTQ%W4+91?L>UbT6fwa7Qxsss6}K;olM`DWcI$18+n ib4kMYtdlKw7-`?e$7-o}u6`z=bE>-PXn6O3|KtU7h-B9Q literal 0 HcmV?d00001 diff --git a/res/IrisFODIS_CalibrationTool.ico b/res/IrisFODIS_CalibrationTool.ico new file mode 100644 index 0000000000000000000000000000000000000000..d56fbcdfdf6eac0f4727c34770c26689271d96af GIT binary patch literal 67777 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 NK9A-8OQnhX{{?OVn?wKr literal 0 HcmV?d00001 diff --git a/resource.h b/resource.h new file mode 100644 index 0000000..e47e44a --- /dev/null +++ b/resource.h @@ -0,0 +1,30 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ 生成的包含文件。 +// 供 IrisFODISCalibrationTool.rc 使用 +// +#define IDM_ABOUTBOX 0x0010 +#define IDD_ABOUTBOX 100 +#define IDS_ABOUTBOX 101 +#define IDD_IRISFODIS_CALIBRATIONTOOL_DIALOG 102 +#define IDR_MAINFRAME 128 +#define IDD_DIALOG_INFORM 130 +#define IDC_EDIT_FODISDATA 1000 +#define IDC_BUTTON_FODISDATA 1001 +#define IDC_EDIT_CALDATA 1002 +#define IDC_LIST_DATAPATH 1003 +#define IDC_EDIT_OUTPUTDATA 1004 +#define IDC_BUTTON_STARTCALC 1006 +#define IDC_BUTTON_CALDATA 1007 +#define IDC_BUTTON_OUTPUTDATA 1008 +#define IDC_STATIC_INFORMATION 1017 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 132 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/targetver.h b/targetver.h new file mode 100644 index 0000000..91042b9 --- /dev/null +++ b/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// 包括 SDKDDKVer.h 将定义可用的最高版本的 Windows 平台。 + +// 如果要为以前的 Windows 平台生成应用程序,请包括 WinSDKVer.h,并将 +// 将 _WIN32_WINNT 宏设置为要支持的平台,然后再包括 SDKDDKVer.h。 + +#include