void CGxSingleCamDlg::DoDataExchange(CDataExchange* pDX)//用于将控件中的数据加载到变量中,或将变量的数据更新到控件中。
{
CDialog::DoDataExchange(pDX);
//DDX_Check(pDX, IDC_CHECK_SAVE_BMP, m_bCheckSaveBmp);
DDX_Text(pDX, IDC_EDIT_SHUTTER, m_dEditShutterValue);
DDX_Text(pDX, IDC_EDIT_GAIN, m_dEditGainValue);
DDX_Text(pDX, IDC_EDIT_BALANCE_WHITE_SERISE, m_dEditBalanceRatioValue);
DDX_Control(pDX, IDC_SHOW_PICTURE_STATIC, m_p1);
DDX_Control(pDX, IDC_SHOW_PICTURE_STATIC2, m_p2);
DDX_Control(pDX, IDC_SHOW_PICTURE_STATIC3, m_p3);
DDX_Control(pDX, IDC_SHOW_PICTURE_STATIC4, m_p4);
}
BEGIN_MESSAGE_MAP(CGxSingleCamDlg, CDialog)//消息宏
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BTN_OPEN_DEVICE, &CGxSingleCamDlg::OnBnClickedBtnOpenDevice)
ON_BN_CLICKED(IDC_BTN_CLOSE_DEVICE, &CGxSingleCamDlg::OnBnClickedBtnCloseDevice)
ON_BN_CLICKED(IDC_BTN_START_SNAP, &CGxSingleCamDlg::OnBnClickedBtnStartSnap)
ON_BN_CLICKED(IDC_BTN_STOP_SNAP, &CGxSingleCamDlg::OnBnClickedBtnStopSnap)
//ON_CBN_SELCHANGE(IDC_COMBO_TRIGGER_MODE, &CGxSingleCamDlg::OnCbnSelchangeComboTriggerMode)
//ON_CBN_SELCHANGE(IDC_COMBO_TRIGGER_SOURCE, &CGxSingleCamDlg::OnCbnSelchangeComboTriggerSource)
//ON_CBN_SELCHANGE(IDC_COMBO_TRIGGER_ACTIVE, &CGxSingleCamDlg::OnCbnSelchangeComboTriggerActive)
//ON_BN_CLICKED(IDC_CHECK_SAVE_BMP, &CGxSingleCamDlg::OnBnClickedCheckSaveBmp)
ON_WM_CLOSE()
ON_CBN_SELCHANGE(IDC_COMBO_BALANCE_WHITE_AUTO, &CGxSingleCamDlg::OnCbnSelchangeComboBalanceWhiteAuto)
ON_CBN_SELCHANGE(IDC_COMBO_BALANCE_WHITE_SELECT, &CGxSingleCamDlg::OnCbnSelchangeComboBalanceWhiteSelect)
//ON_BN_CLICKED(IDC_BTN_SOFTTRIGGER, &CGxSingleCamDlg::OnBnClickedBtnSofttrigger)
ON_EN_KILLFOCUS(IDC_EDIT_GAIN, &CGxSingleCamDlg::OnEnKillfocusEditGain)
ON_EN_KILLFOCUS(IDC_EDIT_BALANCE_WHITE_SERISE, &CGxSingleCamDlg::OnEnKillfocusEditBalanceWhiteSerise)
ON_WM_TIMER()
ON_EN_KILLFOCUS(IDC_EDIT_SHUTTER, &CGxSingleCamDlg::OnEnKillfocusEditShutter)
ON_BN_CLICKED(IDC_BUTTON1, &CGxSingleCamDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON2, &CGxSingleCamDlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON4, &CGxSingleCamDlg::OnBnClickedButton4)
ON_BN_CLICKED(IDC_BUTTON8, &CGxSingleCamDlg::OnBnClickedButton8)
END_MESSAGE_MAP()
// CGxSingleCamDlg 消息处理程序
BOOL CGxSingleCamDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置窗口为可调整大小
//ModifyStyle(0, WS_THICKFRAME | WS_OVERLAPPEDWINDOW); // 使窗口可缩放
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
try
{
//初始化设备
IGXFactory::GetInstance().Init();
//将窗口指针指向picture控件
m_pWnd = GetDlgItem(IDC_SHOW_PICTURE_STATIC);
m_pSampleCaptureEventHandle = new CSampleCaptureEventHandler();
//获取可执行程序的当前路径
char strFileName[MAX_PATH] = {0};
string strSavePath = "";
size_t nPos = 0;
GetModuleFileName(NULL,(LPCH)strFileName,MAX_PATH);
strSavePath = strFileName;
nPos = strSavePath.find_last_of('\\');
m_strSavePath = strSavePath.substr(0,nPos);
m_strSavePath = m_strSavePath +"\\GxSingleCamImages";
//设置定时器
SetTimer(0,1000,NULL);
//更新界面
__UpdateUI();
}
catch (CGalaxyException& e)
{
if (m_pSampleCaptureEventHandle != NULL)
{
delete m_pSampleCaptureEventHandle;
m_pSampleCaptureEventHandle = NULL;
}
MessageBox(e.what());
return FALSE;
}
catch (std::exception& e)
{
if (m_pSampleCaptureEventHandle != NULL)
{
delete m_pSampleCaptureEventHandle;
m_pSampleCaptureEventHandle = NULL;
}
MessageBox(e.what());
return FALSE;
}
// 初始化控件(可选,MFC 默认会绑定)
m_Edit1.SubclassDlgItem(IDC_EDIT1, this);
m_Edit2.SubclassDlgItem(IDC_EDIT2, this);
m_Edit3.SubclassDlgItem(IDC_EDIT3, this);
m_Edit4.SubclassDlgItem(IDC_EDIT4, this);
m_Edit5.SubclassDlgItem(IDC_EDIT5, this);
m_Edit6.SubclassDlgItem(IDC_EDIT6, this);
m_Edit7.SubclassDlgItem(IDC_EDIT7, this);
m_Edit8.SubclassDlgItem(IDC_EDIT8, this);
m_Edit9.SubclassDlgItem(IDC_EDIT9, this);
// 初始化 Modbus 连接
ctx = modbus_new_rtu("COM7", 115200, 'N', 8, 1);
if (ctx == nullptr) {
AfxMessageBox(_T("Unable to create the libmodbus context!"));
return FALSE;
}
// 设置 Modbus 从站ID
modbus_set_slave(ctx, 1);
// 设置超时
modbus_set_response_timeout(ctx, 0, 200000);
// 打开连接
if (modbus_connect(ctx) == -1) {
AfxMessageBox(_T("Connection failed!"));
modbus_free(ctx);
return FALSE;
}
// 设置定时器,每 200 毫秒更新一次显示
SetTimer(1, 200, NULL);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}修复代码
最新发布