// CSynBoxDlg.cpp: 实现文件 // #include "pch.h" #include "resource.h" // 主符号 #include "CSynBoxDlg.h" #include "afxdialogex.h" #include "CConfigDlg.h" // CSynBoxDlg 对话框 IMPLEMENT_DYNAMIC(CSynBoxDlg, CDiosBasicDlg) CSynBoxDlg::CSynBoxDlg(CWnd* pParent /*=nullptr*/) : CDiosBasicDlg(Dev_SynBox, IDD_DIALOG4, pParent) { } CSynBoxDlg::~CSynBoxDlg() { } void CSynBoxDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT1, m_Edit_expmode); DDX_Control(pDX, IDC_EDIT2, m_Edit_workstation); DDX_Control(pDX, IDC_EDIT3, m_Edit_gensynstate); DDX_Control(pDX, IDC_EDIT4, m_Edit_AECsignal); DDX_Control(pDX, IDC_EDIT5, m_Edit_FrameRate); DDX_Control(pDX, IDC_EDIT6, m_Edit_EXPTimes); } BEGIN_MESSAGE_MAP(CSynBoxDlg, CDialogEx) ON_BN_CLICKED(IDC_BUTTON3, &CSynBoxDlg::OnBnClickedButton3) ON_BN_CLICKED(IDC_BUTTON1, &CSynBoxDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2, &CSynBoxDlg::OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON4, &CSynBoxDlg::OnBnClickedButton4) ON_BN_CLICKED(IDC_BUTTON5, &CSynBoxDlg::OnBnClickedButton5) ON_BN_CLICKED(IDC_BUTTON6, &CSynBoxDlg::OnBnClickedButton6) ON_BN_CLICKED(IDC_BUTTON7, &CSynBoxDlg::OnBnClickedButton7) ON_BN_CLICKED(IDC_BUTTON8, &CSynBoxDlg::OnBnClickedButton8) ON_BN_CLICKED(IDC_BUTTON9, &CSynBoxDlg::OnBnClickedButton9) ON_BN_CLICKED(IDC_BUTTON10, &CSynBoxDlg::OnBnClickedButton10) ON_BN_CLICKED(IDC_BUTTON11, &CSynBoxDlg::OnBnClickedButton11) ON_BN_CLICKED(IDC_BUTTON12, &CSynBoxDlg::OnBnClickedButton12) ON_BN_CLICKED(IDC_BUTTON13, &CSynBoxDlg::OnBnClickedButton13) ON_BN_CLICKED(IDC_BUTTON14, &CSynBoxDlg::OnBnClickedButton14) ON_BN_CLICKED(IDC_BUTTON15, &CSynBoxDlg::OnBnClickedButton15) ON_BN_CLICKED(IDC_BUTTON16, &CSynBoxDlg::OnBnClickedButton16) ON_BN_CLICKED(IDC_BUTTON17, &CSynBoxDlg::OnBnClickedButton17) ON_BN_CLICKED(IDC_BUTTON18, &CSynBoxDlg::OnBnClickedButton18) ON_BN_CLICKED(IDC_BUTTON19, &CSynBoxDlg::OnBnClickedButton19) ON_BN_CLICKED(IDC_BUTTON20, &CSynBoxDlg::OnBnClickedButton20) ON_BN_CLICKED(IDC_BUTTON21, &CSynBoxDlg::OnBnClickedButton21) ON_BN_CLICKED(IDC_BUTTON22, &CSynBoxDlg::OnBnClickedButton22) ON_EN_KILLFOCUS(IDC_EDIT1, &CSynBoxDlg::OnEnKillfocusEdit1) ON_EN_KILLFOCUS(IDC_EDIT2, &CSynBoxDlg::OnEnKillfocusEdit2) ON_EN_KILLFOCUS(IDC_EDIT3, &CSynBoxDlg::OnEnKillfocusEdit3) ON_EN_KILLFOCUS(IDC_EDIT4, &CSynBoxDlg::OnEnKillfocusEdit4) ON_EN_KILLFOCUS(IDC_EDIT5, &CSynBoxDlg::OnEnKillfocusEdit5) ON_EN_KILLFOCUS(IDC_EDIT6, &CSynBoxDlg::OnEnKillfocusEdit6) END_MESSAGE_MAP() // CSynBoxDlg 消息处理程序 //初始化配置 BOOL CSynBoxDlg::OnInitDialog() { CDiosBasicDlg::OnInitDialog(); return TRUE; } //设备初始化 bool CSynBoxDlg::AppInitial(bool act) { CString log; return CreatMode(act); } //获取初始值 bool CSynBoxDlg::GetInitData() { CString log; CString tempStr; string strTempValue; if (m_pDevice != nullptr) { m_nWS = atoi(DevGetValue(nsSYN::AttrKey::WORKSTATION).c_str()); tempStr.Format("%d", m_nWS); m_Edit_workstation.SetWindowText(tempStr); m_nExpMode = DevGetValue(nsSYN::AttrKey::EXPMODE).c_str(); tempStr.Format("%s", m_nExpMode.c_str()); m_Edit_expmode.SetWindowText(tempStr); m_nGenSynStatus = atoi(DevGetValue(nsSYN::AttrKey::DiosGeneratorSync).c_str()); tempStr.Format("%d", m_nGenSynStatus); m_Edit_gensynstate.SetWindowText(tempStr); GetDlgItem(IDC_BUTTON9)->SetWindowText("ExpDisable"); GetDlgItem(IDC_BUTTON12)->SetWindowText("stopWinReq"); } return true; } //设置消息对照表 void CSynBoxDlg::SetMagMap() { auto HW_UNKNOWN = [this](int NotifyCode, string key, string context) { CString strNotify; strNotify.Format("SYN can not deal with Attribute[%s] \n", key.c_str()); ToolsDlgLog(strNotify); }; auto HW_WORKSTATION = [this](int NotifyCode, string key, string context)//WORKSTATION { m_nWS = atoi(context.c_str()); m_Edit_workstation.SetWindowText(context.c_str()); }; auto HW_GENSYNSTATE = [this](int NotifyCode, string key, string context)//GENSYNSTATE { m_nGenSynStatus = atoi(context.c_str()); m_Edit_gensynstate.SetWindowText(context.c_str()); }; auto HW_EXPMODE = [this](int NotifyCode, string key, string context)//EXPMODE { m_nExpMode = context; m_Edit_expmode.SetWindowText(context.c_str()); }; //SYN Box m_mapFrame["UnKnown"] = tFrameMapItem(HW_UNKNOWN); m_mapFrame[nsSYN::AttrKey::WORKSTATION] = tFrameMapItem(HW_WORKSTATION); m_mapFrame[nsSYN::AttrKey::DiosGeneratorSync] = tFrameMapItem(HW_GENSYNSTATE); m_mapFrame[nsSYN::AttrKey::EXPMODE] = tFrameMapItem(HW_EXPMODE); } void CSynBoxDlg::InitPageElements(bool act) { if (act) { ShowPageElements(FALSE, TRUE, FALSE, FALSE); SetMagMap(); GetInitData(); } else { ShowPageElements(TRUE, FALSE, TRUE, FALSE); } } //设置窗口元素显示 void CSynBoxDlg::ShowPageElements(bool init, bool exit, bool cfg, bool general) { __super::ShowPageElements(init, exit, cfg, general); bool temp = exit; //SetFrameRate GetDlgItem(IDC_BUTTON4)->EnableWindow(temp); GetDlgItem(IDC_EDIT5)->EnableWindow(temp); //SetExpMode GetDlgItem(IDC_BUTTON5)->EnableWindow(temp); GetDlgItem(IDC_EDIT1)->EnableWindow(temp); //SetWS GetDlgItem(IDC_BUTTON6)->EnableWindow(temp); GetDlgItem(IDC_EDIT2)->EnableWindow(temp); //SetGenSyn GetDlgItem(IDC_BUTTON7)->EnableWindow(temp); GetDlgItem(IDC_EDIT3)->EnableWindow(temp); //SetExpTimes GetDlgItem(IDC_BUTTON8)->EnableWindow(temp); GetDlgItem(IDC_EDIT6)->EnableWindow(temp); //SetExp GetDlgItem(IDC_BUTTON9)->EnableWindow(temp); //SetAECSignal GetDlgItem(IDC_BUTTON10)->EnableWindow(temp); GetDlgItem(IDC_EDIT4)->EnableWindow(temp); //PrepareAcq GetDlgItem(IDC_BUTTON11)->EnableWindow(temp); //StartWinReq or StopWinReq GetDlgItem(IDC_BUTTON12)->EnableWindow(temp); //Recv Signal GetDlgItem(IDC_BUTTON14)->EnableWindow(temp); } //选择配置 void CSynBoxDlg::OnBnClickedButton3() { CString log; nsCFG::CConfigDlg dlgcfg(Dev_SynBox, m_strCfgLib, m_strCfgFile); dlgcfg.DoModal(); if (m_strCfgFile.empty()) { log.Format("(SYN)- SYN m_strCfgFile is empty"); mLog::Warn(log); ToolsDlgLog(log); } else { ShowPageElements(TRUE, FALSE, TRUE, FALSE); } } //初始化 void CSynBoxDlg::OnBnClickedButton1() { CString log; if (m_pDriver == nullptr) if (!m_pDevice) { if (AppInitial(true)) { ShowPageElements(FALSE, TRUE, FALSE, FALSE); SetMagMap(); GetInitData(); mLog::Debug("(SYN)- SYN Initial success"); } else { log.Format("(SYN)- SYN Initial fail"); mLog::Error(log); ToolsDlgLog(log); } } else { log.Format("(SYN)- m_pDevice not empty"); mLog::Warn(log); ToolsDlgLog(log); } else { log.Format("(SYN)- m_pDriver not empty"); mLog::Warn(log); ToolsDlgLog(log); } } //退出 void CSynBoxDlg::OnBnClickedButton2() { if (AppInitial(false)) { ShowPageElements(TRUE, FALSE, TRUE, FALSE); } } //SetFrameRate void CSynBoxDlg::OnBnClickedButton4() { DevActionValue(nsSYN::ActionKey::SetFrameRate, { to_string(m_nFrameRate) }); } //SetExpMode void CSynBoxDlg::OnBnClickedButton5() { char data[20]{ 0 }; strncpy_s(data, m_nExpMode.c_str(), 19); DevActionValue(nsSYN::ActionKey::SetExpMode, { data }); } //SetWS void CSynBoxDlg::OnBnClickedButton6() { DevActionValue(nsSYN::ActionKey::SetValue_WORKSTATION, { to_string(m_nWS) }); } //SetGenSyn void CSynBoxDlg::OnBnClickedButton7() { DevActionValue(nsSYN::ActionKey::SetGeneratortoSyncStatus, { to_string(m_nGenSynStatus) }); } //SetExpTimes void CSynBoxDlg::OnBnClickedButton8() { DevActionValue(nsSYN::ActionKey::SetExposureTimes, { to_string(m_nEXPTimes) }); } //SetExp? void CSynBoxDlg::OnBnClickedButton9() { if (m_bExpEnable) { GetDlgItem(IDC_BUTTON9)->SetWindowText("ExpDisable"); m_bExpEnable = false; DevAction(nsSYN::ActionKey::SetExpDisable); } else { m_bExpEnable = true; GetDlgItem(IDC_BUTTON9)->SetWindowText("ExpEnable"); DevAction(nsSYN::ActionKey::SetExpEnable); } } //SetAECSignal void CSynBoxDlg::OnBnClickedButton10() { DevActionValue(nsSYN::ActionKey::SetGenAECSignal, { to_string(m_nAECSignal) }); } //PrepareAcq void CSynBoxDlg::OnBnClickedButton11() { DevAction(nsSYN::ActionKey::PrepareAcquisition); } //StartWinReq or StopWinReq void CSynBoxDlg::OnBnClickedButton12() { if (m_bStartWinReq) { GetDlgItem(IDC_BUTTON12)->SetWindowText("StopWinReq"); m_bStartWinReq = false; DevAction(nsSYN::ActionKey::StopWindowRequest); } else { m_bStartWinReq = true; GetDlgItem(IDC_BUTTON12)->SetWindowText("StartWinReq"); DevAction(nsSYN::ActionKey::StartWindowRequest); } } // void CSynBoxDlg::OnBnClickedButton13() { // TODO: 在此添加控件通知处理程序代码 } //Recv Signal void CSynBoxDlg::OnBnClickedButton14() { if (m_bDebugSignal) { m_bDebugSignal = false; DevActionValue("DebugSignal", { to_string(m_bDebugSignal) }); } else { m_bDebugSignal = true; DevActionValue("DebugSignal", { to_string(m_bDebugSignal) }); } GetDlgItem(IDC_BUTTON15)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_EDIT8)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_BUTTON16)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_EDIT9)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_BUTTON17)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_EDIT10)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_BUTTON18)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_EDIT11)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_BUTTON19)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_EDIT12)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_BUTTON20)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_EDIT13)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_BUTTON21)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_EDIT14)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_BUTTON22)->EnableWindow(m_bDebugSignal); GetDlgItem(IDC_EDIT15)->EnableWindow(m_bDebugSignal); } //SendSignal_1 void CSynBoxDlg::OnBnClickedButton15() { CString tempStr; GetDlgItem(IDC_EDIT8)->GetWindowText(tempStr); string param = tempStr.GetBuffer(); DevActionValue("SendSignal", { param }); } //SendSignal_2 void CSynBoxDlg::OnBnClickedButton16() { CString tempStr; GetDlgItem(IDC_EDIT9)->GetWindowText(tempStr); string param = tempStr.GetBuffer(); DevActionValue("SendSignal", { param }); } //SendSignal_3 void CSynBoxDlg::OnBnClickedButton17() { CString tempStr; GetDlgItem(IDC_EDIT10)->GetWindowText(tempStr); string param = tempStr.GetBuffer(); DevActionValue("SendSignal", { param }); } //SendSignal_4 void CSynBoxDlg::OnBnClickedButton18() { CString tempStr; GetDlgItem(IDC_EDIT11)->GetWindowText(tempStr); string param = tempStr.GetBuffer(); DevActionValue("SendSignal", { param }); } //SendSignal_5 void CSynBoxDlg::OnBnClickedButton19() { CString tempStr; GetDlgItem(IDC_EDIT12)->GetWindowText(tempStr); string param = tempStr.GetBuffer(); DevActionValue("SendSignal", { param }); } //SendSignal_6 void CSynBoxDlg::OnBnClickedButton20() { CString tempStr; GetDlgItem(IDC_EDIT13)->GetWindowText(tempStr); string param = tempStr.GetBuffer(); DevActionValue("SendSignal", { param }); } //SendSignal_7 void CSynBoxDlg::OnBnClickedButton21() { CString tempStr; GetDlgItem(IDC_EDIT14)->GetWindowText(tempStr); string param = tempStr.GetBuffer(); DevActionValue("SendSignal", { param }); } //SendSignal_8 void CSynBoxDlg::OnBnClickedButton22() { CString tempStr; GetDlgItem(IDC_EDIT15)->GetWindowText(tempStr); string param = tempStr.GetBuffer(); DevActionValue("SendSignal", { param }); } //ExpMode_Value void CSynBoxDlg::OnEnKillfocusEdit1() { CString tempStr; m_Edit_expmode.GetWindowText(tempStr); m_nExpMode = tempStr; } //WS_Value void CSynBoxDlg::OnEnKillfocusEdit2() { CString tempStr; m_Edit_workstation.GetWindowText(tempStr); m_nWS = atoi(tempStr); } //GenSyn_Value void CSynBoxDlg::OnEnKillfocusEdit3() { CString tempStr; m_Edit_gensynstate.GetWindowText(tempStr); m_nGenSynStatus = atoi(tempStr); } //AECSignal_Value void CSynBoxDlg::OnEnKillfocusEdit4() { CString tempStr; m_Edit_AECsignal.GetWindowText(tempStr); m_nAECSignal = atoi(tempStr); } //FrameRate_Value void CSynBoxDlg::OnEnKillfocusEdit5() { CString tempStr; m_Edit_FrameRate.GetWindowText(tempStr); m_nFrameRate = atoi(tempStr); } void CSynBoxDlg::OnEnKillfocusEdit6() { CString tempStr; m_Edit_EXPTimes.GetWindowText(tempStr); m_nEXPTimes = atoi(tempStr); }