123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484 |
- // CDetectorDlg.cpp: 实现文件
- //
- #include "pch.h"
- #include "resource.h" // 主符号
- #include "CDetectorDlg.h"
- #include "afxdialogex.h"
- #include "CImageViewDlg.h"
- #include "CConfigDlg.h"
- using namespace placeholders;
- #define MSG_IMAGE_NOTIFY (WM_USER+111)
- // CDetectorDlg 对话框
- IMPLEMENT_DYNAMIC(CDetectorDlg, CDiosBasicDlg)
- CDetectorDlg::CDetectorDlg(CWnd* pParent /*=nullptr*/)
- : CDiosBasicDlg(Dev_Detector, IDD_DIALOG5, pParent)
- {
- }
- CDetectorDlg::~CDetectorDlg()
- {
- }
- void CDetectorDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialogEx::DoDataExchange(pDX);
- DDX_Control(pDX, IDC_EDIT1, m_EditDetectorID);
- DDX_Control(pDX, IDC_EDIT2, m_EditAcqMode);
- DDX_Control(pDX, IDC_EDIT3, m_EditSyncMode);
- DDX_Control(pDX, IDC_EDIT4, m_EditXWinSize);
- //DDX_Text(pDX, IDC_EDIT1, m_nDetectorID);
- //DDV_MinMaxUInt(pDX, m_nDetectorID, 0, 5);
- //DDX_Text(pDX, IDC_EDIT2, m_nAcqMode);
- //DDV_MinMaxUInt(pDX, m_nAcqMode, 0, 5);
- //DDX_Text(pDX, IDC_EDIT3, m_nSyncMode);
- //DDV_MinMaxUInt(pDX, m_nSyncMode, 0, 5);
- //DDX_Text(pDX, IDC_EDIT4, m_nXWindowSize);
- DDX_Control(pDX, IDC_EDIT5, m_EditDetectorType);
- DDX_Control(pDX, IDC_EDIT6, m_EditConnection);
- DDX_Control(pDX, IDC_EDIT7, m_EditBattery);
- DDX_Control(pDX, IDC_EDIT8, m_EditWifi);
- DDX_Control(pDX, IDC_EDIT9, m_EditTemperature);
- DDX_Control(pDX, IDC_EDIT10, m_EditDetectorStatus);
- DDX_Control(pDX, IDC_EDIT11, m_EditXwindowStatus);
- DDX_Control(pDX, IDC_EDIT12, m_EditExpTime);
- DDX_Control(pDX, IDC_EDIT13, m_EditStartMode);
- }
- BEGIN_MESSAGE_MAP(CDetectorDlg, CDialogEx)
- ON_MESSAGE(MSG_IMAGE_NOTIFY, ShowRawImage)
- ON_BN_CLICKED(IDC_BUTTON3, &CDetectorDlg::OnBnClickedButton3)
- ON_BN_CLICKED(IDC_BUTTON1, &CDetectorDlg::OnBnClickedButton1)
- ON_BN_CLICKED(IDC_BUTTON2, &CDetectorDlg::OnBnClickedButton2)
- ON_BN_CLICKED(IDC_BUTTON4, &CDetectorDlg::OnBnClickedButton4)
- ON_BN_CLICKED(IDC_BUTTON12, &CDetectorDlg::OnBnClickedButton12)
- ON_BN_CLICKED(IDC_BUTTON5, &CDetectorDlg::OnBnClickedButton5)
- ON_BN_CLICKED(IDC_BUTTON6, &CDetectorDlg::OnBnClickedButton6)
- ON_BN_CLICKED(IDC_BUTTON7, &CDetectorDlg::OnBnClickedButton7)
- ON_BN_CLICKED(IDC_BUTTON8, &CDetectorDlg::OnBnClickedButton8)
- ON_BN_CLICKED(IDC_BUTTON9, &CDetectorDlg::OnBnClickedButton9)
- ON_BN_CLICKED(IDC_BUTTON10, &CDetectorDlg::OnBnClickedButton10)
- ON_BN_CLICKED(IDC_BUTTON11, &CDetectorDlg::OnBnClickedButton11)
- ON_EN_KILLFOCUS(IDC_EDIT1, &CDetectorDlg::OnEnKillfocusEdit1)
- ON_EN_KILLFOCUS(IDC_EDIT2, &CDetectorDlg::OnEnKillfocusEdit2)
- ON_EN_KILLFOCUS(IDC_EDIT3, &CDetectorDlg::OnEnKillfocusEdit3)
- ON_EN_KILLFOCUS(IDC_EDIT4, &CDetectorDlg::OnEnKillfocusEdit4)
- ON_EN_KILLFOCUS(IDC_EDIT12, &CDetectorDlg::OnEnKillfocusEdit12)
- END_MESSAGE_MAP()
- // CDetectorDlg 消息处理程序
- //初始化配置
- BOOL CDetectorDlg::OnInitDialog()
- {
- CDiosBasicDlg::OnInitDialog();
- return TRUE;
- }
- //设备初始化
- bool CDetectorDlg::AppInitial(bool act)
- {
- CreatMode(act);
- m_CurrentDev = CDeviceSET::GetInstance()->m_CDeviceMap.find(Dev_Detector);
- CString log;
- try
- {
- if (act)
- {
- if (nullptr != m_pDevice)
- {
- m_pDevice->EventCenter->OnDataNotify.Push(bind(&CDetectorDlg::OnDataNotify, this, _1, _2, _3, _4, _5, _6));
- m_pDevice->EventCenter->OnMaxBlockSize.Push(bind(&CDetectorDlg::OnMaxBlockSize, this, _1, _2, _3, _4, _5));
- }
- else
- {
- mLog::Debug("(FPD)- FPDDevice not Create");
- }
- }
- }
- catch (const ResDataObjectExption&)
- {
- log.Format("(FPD)- open FPD file failed");
- mLog::Error(log);
- ToolsDlgLog(log);
- return false;
- }
- catch (...)
- {
- log.Format("(FPD)- FPD AppInitial failed");
- mLog::Error(log);
- ToolsDlgLog(log);
- return false;
- }
- return true;
- }
- //获取初始值
- bool CDetectorDlg::GetInitData()
- {
- CString log;
- CString tempStr;
- string strTempValue;
- if (m_pDevice != nullptr)
- {
- //xxxxxxxxxxxx = atoi(DevGetValue(Dev_Detector, nsFPD::AttrKey::DetectorType).c_str());
- //tempStr.Format("%d", xxxxxxxx);
- //xxxxxxx.SetWindowText(tempStr);
- }
- return true;
- }
- //设置消息对照表
- void CDetectorDlg::SetMagMap()
- {
- auto HW_UNKNOWN = [this](int NotifyCode, string key, string context)
- {
- CString strNotify;
- strNotify.Format("(FPD)- FPD can not deal with Attribute[%s] \n", key.c_str());
- ToolsDlgLog(strNotify);
- };
- auto HW_Battery = [this](int NotifyCode, string key, string context)//Battery
- {
- m_EditBattery.SetWindowText(context.c_str());
- };
- auto HW_Wifi = [this](int NotifyCode, string key, string context)//Wifi
- {
- m_EditWifi.SetWindowText(context.c_str());
- };
- auto HW_Temperature = [this](int NotifyCode, string key, string context)//Temperature
- {
- m_EditTemperature.SetWindowText(context.c_str());
- };
- auto HW_DetectorStatus = [this](int NotifyCode, string key, string context)//DetectorStatus
- {
- m_EditDetectorStatus.SetWindowText(context.c_str());
- };
- auto HW_XwindowStatus = [this](int NotifyCode, string key, string context)//XwindowStatus
- {
- m_EditXwindowStatus.SetWindowText(context.c_str());
- };
- //Detector
- m_mapFrame["UnKnown"] = tFrameMapItem(HW_UNKNOWN);
- m_mapFrame[nsFPD::AttrKey::Remain_Power_Value] = tFrameMapItem(HW_Battery);
- m_mapFrame[nsFPD::AttrKey::Wifi_Strength_Value] = tFrameMapItem(HW_Wifi);
- m_mapFrame[nsFPD::AttrKey::Temperature_Value] = tFrameMapItem(HW_Temperature);
- m_mapFrame[nsFPD::AttrKey::DetectorStatus] = tFrameMapItem(HW_DetectorStatus);
- m_mapFrame[nsFPD::AttrKey::XwindowStatus] = tFrameMapItem(HW_XwindowStatus);
- }
- void CDetectorDlg::OnDataNotify(CDetectorDlg* pThis, int nCode, string key, string ctx, string strHeader, char* buf, int len)
- {
- if (pThis != nullptr)
- {
- if (pThis->m_pImage == NULL)
- {
- pThis->m_pImage = new WORD[len];
- pThis->m_nImageBytes = len;
- }
- else if (pThis->m_nImageBytes < len)
- {
- delete[] pThis->m_pImage;
- pThis->m_pImage = new WORD[len];
- pThis->m_nImageBytes = len;
- }
- memcpy(pThis->m_pImage, buf, len);
- if (key == nsFPD::AttrKey::ImgDataInfo)
- {
- ResDataObject rdoInfo;
- try
- {
- if (rdoInfo.decode(ctx.c_str()))
- {
- pThis->m_nImageW = rdoInfo["Width"];
- pThis->m_nImageH = rdoInfo["Height"];
- }
- }
- catch (...)
- {
- ToolsDlgMSG("FPDError", "nDataNotify ResDataObjectExption");
- }
- }
- CString strMsg;
- strMsg.Format("%d, %s :%s, buf=0x%p len=%i\n", nCode, key.c_str(), ctx.c_str(), buf, len);
- ToolsDlgMSG("OnDataNotify", strMsg);
- ::PostMessage(pThis->GetSafeHwnd(), MSG_IMAGE_NOTIFY, 0, 0);
- }
- }
- void CDetectorDlg::OnMaxBlockSize(CDetectorDlg* pThis, string str, DWORD dw1, DWORD dw2, DWORD dw3, DWORD dw4)
- {
- CString strMsg;
- if (pThis != nullptr)
- {
- strMsg.Format("%s, %i, %i, %i, %i", str.c_str(), dw1, dw2, dw3, dw4);
- ToolsDlgMSG("OnMaxBlockSize", strMsg);
- }
- }
- void CDetectorDlg::InitPageElements(bool act)
- {
- if (act)
- {
- ShowPageElements(FALSE, TRUE, FALSE, FALSE);
- SetMagMap();
- GetInitData();
- }
- else
- {
- ShowPageElements(TRUE, FALSE, TRUE, FALSE);
- }
- }
- //设置窗口元素显示
- void CDetectorDlg::ShowPageElements(bool init, bool exit, bool cfg, bool general)
- {
- __super::ShowPageElements(init, exit, cfg, general);
- bool temp = exit;
- //EnterExam
- GetDlgItem(IDC_BUTTON4)->EnableWindow(temp);
- //ExitExam
- GetDlgItem(IDC_BUTTON12)->EnableWindow(temp);
- //ActiveFPD
- GetDlgItem(IDC_BUTTON5)->EnableWindow(temp);
- GetDlgItem(IDC_EDIT1)->EnableWindow(temp);
- //SetAcqMode
- GetDlgItem(IDC_BUTTON6)->EnableWindow(temp);
- GetDlgItem(IDC_EDIT2)->EnableWindow(temp);
- //SetSyncMode
- GetDlgItem(IDC_BUTTON7)->EnableWindow(temp);
- GetDlgItem(IDC_EDIT3)->EnableWindow(temp);
- //SetXWinSize
- GetDlgItem(IDC_BUTTON8)->EnableWindow(temp);
- GetDlgItem(IDC_EDIT4)->EnableWindow(temp);
- //PrepareAcq
- GetDlgItem(IDC_BUTTON9)->EnableWindow(temp);
- //StartAcq
- GetDlgItem(IDC_BUTTON10)->EnableWindow(temp);
- //StopAcq
- GetDlgItem(IDC_BUTTON11)->EnableWindow(temp);
- //EnterExam
- GetDlgItem(IDC_EDIT5)->EnableWindow(temp);
- //EnterExam
- GetDlgItem(IDC_EDIT6)->EnableWindow(temp);
- //EnterExam
- GetDlgItem(IDC_EDIT7)->EnableWindow(temp);
- //EnterExam
- GetDlgItem(IDC_EDIT8)->EnableWindow(temp);
- //EnterExam
- GetDlgItem(IDC_EDIT9)->EnableWindow(temp);
- //SetXWinSize
- GetDlgItem(IDC_BUTTON13)->EnableWindow(temp);
- GetDlgItem(IDC_EDIT12)->EnableWindow(temp);
- }
- //选择配置
- void CDetectorDlg::OnBnClickedButton3()
- {
- CString log;
- nsCFG::CConfigDlg dlgcfg(Dev_Detector,
- m_strCfgLib,
- m_strCfgFile);
- dlgcfg.DoModal();
- if (m_strCfgFile.empty())
- {
- log.Format("(FPD)- FPD m_strCfgFile is empty");
- mLog::Warn(log);
- ToolsDlgLog(log);
- }
- else
- {
- ShowPageElements(TRUE, FALSE, TRUE, FALSE);
- }
- }
- //初始化
- void CDetectorDlg::OnBnClickedButton1()
- {
- CString log;
- if (m_pDriver == nullptr)
- if (!m_pDevice)
- {
- if (AppInitial(true))
- {
- ShowPageElements(FALSE, TRUE, FALSE, FALSE);
- SetMagMap();
- GetInitData();
- mLog::Debug("(FPD)- FPD Initial success");
- }
- else
- {
- log.Format("(FPD)- FPD Initial fail");
- mLog::Error(log);
- ToolsDlgLog(log);
- }
- }
- else
- {
- log.Format("(FPD)- m_pDevice not empty");
- mLog::Warn(log);
- ToolsDlgLog(log);
- }
- else
- {
- log.Format("(FPD)- m_pDriver not empty");
- mLog::Warn(log);
- ToolsDlgLog(log);
- }
- }
- //退出
- void CDetectorDlg::OnBnClickedButton2()
- {
- if (AppInitial(false))
- {
- ShowPageElements(TRUE, FALSE, TRUE, FALSE);
- }
- }
- //调用图片显示窗口
- LRESULT CDetectorDlg::ShowRawImage(WPARAM wParam, LPARAM lParam)
- {
- CImageViewDlg dlgImage;
- dlgImage.m_nwidth = m_nImageW;
- dlgImage.m_nheight = m_nImageH;
- dlgImage.m_pdata = new unsigned short[dlgImage.m_nwidth * dlgImage.m_nheight];
- for (int i = 0; i < dlgImage.m_nwidth * dlgImage.m_nheight; ++i)
- {
- dlgImage.m_pdata[i] = m_pImage[i];
- }
- dlgImage.DoModal();
- //dlgImage.ShowWindow(SW_SHOW);
- delete[] dlgImage.m_pdata;
- return 0;
- }
- //EnterExam
- void CDetectorDlg::OnBnClickedButton4()
- {
- DevActionValue(nsFPD::ActionKey::EnterExam, { to_string(1) });
- }
- //ActiveFPD
- void CDetectorDlg::OnBnClickedButton5()
- {
- DevActionValue(nsFPD::ActionKey::DiosActiveDetector, { to_string(m_nDetectorID) });
- }
- //SetAcqMode
- void CDetectorDlg::OnBnClickedButton6()
- {
- char data[20]{ 0 };
- strncpy_s(data, m_strAcqMode.c_str(), 19);
- DevActionValue(nsFPD::ActionKey::SetAcqMode, { data });
- }
- //SetSyncMode
- void CDetectorDlg::OnBnClickedButton7()
- {
- DevActionValue(nsFPD::ActionKey::SetSyncMode, { to_string(m_nSyncMode) });
- }
- //SetXWinSize
- void CDetectorDlg::OnBnClickedButton8()
- {
- DevActionValue(nsFPD::ActionKey::SetXwindowSize, { to_string(m_nXWindowSize) });
- }
- //PrepareAcq
- void CDetectorDlg::OnBnClickedButton9()
- {
- DevAction(nsFPD::ActionKey::PrepareAcquisition);
- }
- //StartAcq
- void CDetectorDlg::OnBnClickedButton10()
- {
- //DevAction(nsFPD::ActionKey::StartAcquisition);
- char data[20]{ 0 };
- strncpy_s(data, m_strStartMode.c_str(), 19);
- DevActionValue(nsFPD::ActionKey::StartAcquisition, { data });
- }
- //StopAcq
- void CDetectorDlg::OnBnClickedButton11()
- {
- DevAction(nsFPD::ActionKey::StopAcquisition);
- }
- //ExitExam
- void CDetectorDlg::OnBnClickedButton12()
- {
- DevActionValue(nsFPD::ActionKey::EnterExam, { to_string(2) });
- }
- //SetExpTime
- void CDetectorDlg::OnBnClickedButton13()
- {
- DevActionValue(nsFPD::ActionKey::SetExposureTimes, { to_string(m_nExpTime) });
- }
- //DetectorID_Value
- void CDetectorDlg::OnEnKillfocusEdit1()
- {
- CString tempStr;
- m_EditDetectorID.GetWindowText(tempStr);
- m_nDetectorID = atoi(tempStr);
- }
- //AcqMode_Value
- void CDetectorDlg::OnEnKillfocusEdit2()
- {
- CString tempStr;
- m_EditAcqMode.GetWindowText(tempStr);
- m_strAcqMode = tempStr;
- }
- //SyncMode_Value
- void CDetectorDlg::OnEnKillfocusEdit3()
- {
- CString tempStr;
- m_EditSyncMode.GetWindowText(tempStr);
- m_nSyncMode = atoi(tempStr);
- }
- //XWinSize_Value
- void CDetectorDlg::OnEnKillfocusEdit4()
- {
- CString tempStr;
- m_EditXWinSize.GetWindowText(tempStr);
- m_nXWindowSize = atoi(tempStr);
- }
- //XWinSize_Value
- void CDetectorDlg::OnEnKillfocusEdit12()
- {
- CString tempStr;
- m_EditExpTime.GetWindowText(tempStr);
- m_nExpTime = atoi(tempStr);
- }
- //StartMode_Value
- void CDetectorDlg::OnEnKillfocusEdit13()
- {
- CString tempStr;
- m_EditStartMode.GetWindowText(tempStr);
- m_strStartMode = tempStr;
- }
|