⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adjustdlg.cpp

📁 Led识别与统计系统,基于DELPHI 7.0下
💻 CPP
字号:
// AdjustDlg.cpp : implementation file
//

#include "stdafx.h"
#include "HVViewer.h"
#include "AdjustDlg.h"


#include "Mainfrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif



/////////////////////////////////////////////////////////////////////////////
// CAdjustDlg dialog


CAdjustDlg::CAdjustDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CAdjustDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAdjustDlg)
	m_strGain = _T("");
	m_lTintLower = 1000;
	m_lTintUpper = 60;
	m_nHBlanking = 0;
	m_nVBlanking = 0;
	//}}AFX_DATA_INIT
	
	SetDefaultData();
}



void CAdjustDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAdjustDlg)
	DDX_Control(pDX, IDC_SB_VBLANKING, m_ctrVBlk);
	DDX_Control(pDX, IDC_SB_HBLANKING, m_ctrHBlk);
	DDX_Control(pDX, IDC_CM_ADC, m_ctlCMADC);
	DDX_Control(pDX, IDC_CM_GAIN, m_ctlCMGain);
	DDX_Control(pDX, IDC_SB_GAIN, m_ctlGain);
	DDX_Text(pDX, IDC_TEXT_GAIN, m_strGain);
	DDX_Text(pDX, IDC_EDIT_TINT_LOWER, m_lTintLower);
	DDV_MinMaxLong(pDX, m_lTintLower, 1, 1000000);
	DDX_Text(pDX, IDC_EDIT_TINT_UPPER, m_lTintUpper);
	DDV_MinMaxLong(pDX, m_lTintUpper, 1, 10000);
	DDX_Text(pDX, IDC_EDIT_HBLANKING, m_nHBlanking);
	DDV_MinMaxInt(pDX, m_nHBlanking, -9, 1930);
	DDX_Text(pDX, IDC_EDIT_VBLANKING, m_nVBlanking);
	DDV_MinMaxInt(pDX, m_nVBlanking, -9, 1930);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAdjustDlg, CDialog)
	//{{AFX_MSG_MAP(CAdjustDlg)
	ON_WM_HSCROLL()
	ON_BN_CLICKED(ID_ADJUST_DEFAULT, OnAdjustDefault)
	ON_BN_CLICKED(ID_ADJUST_RESET, OnAdjustReset)
	ON_CBN_SELCHANGE(IDC_CM_GAIN, OnSelchangeCmGain)
	ON_CBN_SELCHANGE(IDC_CM_ADC, OnSelchangeCmAdc)
	ON_EN_CHANGE(IDC_EDIT_TINT_UPPER, OnChangeEditTintUpper)
	ON_EN_CHANGE(IDC_EDIT_TINT_LOWER, OnChangeEditTintLower)
	ON_EN_CHANGE(IDC_EDIT_HBLANKING, OnChangeEditHblanking)
	ON_EN_CHANGE(IDC_EDIT_VBLANKING, OnChangeEditVblanking)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAdjustDlg message handlers
//从MainFrame类中得到值
void CAdjustDlg::ResetData()
{
	BOOL bEqual = TRUE;
	int i = 0;
	
	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	ASSERT(pFrame);
	
	//m_lRstTintUpper = pFrame->m_lTintUpper;
	//m_lRstTintLower = pFrame->m_lTintLower;	
	m_lADCLevel = pFrame->m_lADCLevel;

	m_nVBlanking = m_nRstVBlanking;
	m_nHBlanking = m_nRstHBlanking;

	m_lTintLower = m_lRstTintLower;
	m_lTintUpper = m_lRstTintUpper;

	CopyMemory(m_lGain, pFrame->m_lGain, sizeof(long) * 4);	
	m_lGain[4] = 0;
	for (i = 0; i < 4; i++){
		m_lGain[4] += m_lGain[i];
	}
	m_lGain[4] /= 4;
	
	m_nGainChannel = (m_lGain[4] == m_lGain[0]) ? 4 : 0;
}



//设置默认值
void CAdjustDlg::SetDefaultData()
{

	m_lTintLower = 1000;
	m_lTintUpper = 60;	

	m_lADCLevel			= ADC_LEVEL2;
	
	for (int i = 0; i < 5; i++){
		m_lGain[i]	= 8;
	}

	m_nGainChannel		= 4;

	m_nVBlanking = 0;
	m_nHBlanking = 0;
	

}



void CAdjustDlg::ResetControl()
{	
	m_ctlGain.SetScrollPos(m_lGain[m_nGainChannel]);	
	m_strGain.Format("%d", m_lGain[m_nGainChannel]);


	//m_lTintLower = m_lRstTintLower;
	//m_lTintUpper = m_lRstTintUpper;

	
	m_ctlCMGain.SetCurSel(m_nGainChannel);
	m_ctlCMADC.SetCurSel(m_lADCLevel);

	m_ctrVBlk.SetScrollPos(m_nVBlanking);
	m_ctrHBlk.SetScrollPos(m_nHBlanking);
	
	UpdateData(FALSE);
}




BOOL CAdjustDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here

	m_ctlGain.SetScrollRange(0, 127, TRUE);
	
	m_ctlCMGain.AddString("Red  channel");
	m_ctlCMGain.AddString("Red  channel green");
	m_ctlCMGain.AddString("Blue channel green");
	m_ctlCMGain.AddString("Blue channel");
	m_ctlCMGain.AddString("All  channel");

	m_ctlCMADC.AddString("Level 0");
	m_ctlCMADC.AddString("Level 1");
	m_ctlCMADC.AddString("Level 2");
	m_ctlCMADC.AddString("Level 3");

	m_nGainChannel = 4;

	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	ASSERT(pFrame);

	//取得消隐的边界值
	DWORD pBlankSize[4];
	int nBufSize = 0;
	int nHmin = -9;
	int nVmin = -9;
	int nHmax = 1930;
	int nVmax = 1930;		
	
	if(pFrame->m_bIsBlkSizeSprted)
	{
		HVGetDeviceInfo(pFrame->m_hhv,DESC_DEVICE_BLANKSIZE,NULL,&nBufSize);	
		HVGetDeviceInfo(pFrame->m_hhv,DESC_DEVICE_BLANKSIZE,pBlankSize,&nBufSize);	
		
		nHmin = (int)pBlankSize[0];
		nVmin = (int)pBlankSize[1];
		nHmax = (int)pBlankSize[2];
		nVmax = (int)pBlankSize[3];	
	}

	
	m_ctrVBlk.SetScrollRange(nVmin, nVmax, TRUE);
	m_ctrHBlk.SetScrollRange(nHmin, nHmax, TRUE);


	m_nRstHBlanking = pFrame->m_nHBlanking;	
	m_nRstVBlanking = pFrame->m_nVBlanking;

	m_lRstTintUpper = pFrame->m_lTintUpper;
	m_lRstTintLower = pFrame->m_lTintLower;	


	ResetData();
	ResetControl();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}






void CAdjustDlg::ResetHVDevice()
{
	long lValue = 0;

	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	ASSERT(pFrame);

	pFrame->SetBlanking(m_nHBlanking,m_nVBlanking);
	pFrame->SetExposureTime(pFrame->GetOutputWinWdith(),m_lTintUpper,m_lTintLower);

	HVADCControl(pFrame->m_hhv, ADC_BITS, m_lADCLevel);
	
	for (int i = 0; i < 4; i++){
		lValue = (m_nGainChannel < 4) ? m_lGain[i] : m_lGain[4];
		HVAGCControl(pFrame->m_hhv, RED_CHANNEL + i, lValue);
	}
}




void CAdjustDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
	int nCurPos = 0;
	int i = 0;

	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	ASSERT(pFrame);

	nCurPos = pScrollBar->GetScrollPos();
	switch( nSBCode ){
	case SB_THUMBPOSITION:
		pScrollBar->SetScrollPos( nPos );
		break;
	case SB_LINERIGHT:
		nCurPos = pScrollBar->GetScrollPos();
		nCurPos++;
		pScrollBar->SetScrollPos( nCurPos );
		break;
	case SB_LINELEFT:
		nCurPos = pScrollBar->GetScrollPos();
		nCurPos--;
		pScrollBar->SetScrollPos( nCurPos );
		break;
	case SB_PAGERIGHT:
		nCurPos = pScrollBar->GetScrollPos();
		nCurPos += 10;
		pScrollBar->SetScrollPos( nCurPos );
		break;
	case SB_PAGELEFT:
		nCurPos = pScrollBar->GetScrollPos();
		nCurPos -= 10;
		pScrollBar->SetScrollPos( nCurPos );
		break;
	case SB_THUMBTRACK:
		pScrollBar->SetScrollPos( nPos );
		break;
	default:
		break;
	}

	 if (pScrollBar == &m_ctlGain) {
		m_lGain[m_nGainChannel] = nCurPos;
		m_strGain.Format("%d", nCurPos);
		if (m_nGainChannel < 4) {
			HVAGCControl(pFrame->m_hhv, RED_CHANNEL + m_nGainChannel, nCurPos);
		} else {
			for (i = 0; i < 4; i++){
				HVAGCControl(pFrame->m_hhv, RED_CHANNEL + i, nCurPos);
			}
		}
	}
	 
	 else if (pScrollBar == (CScrollBar* )GetDlgItem(IDC_SB_HBLANKING)) 
	 {
		m_nHBlanking = nCurPos;
		 pFrame->SetBlanking(m_nHBlanking,m_nVBlanking);
		 
	 }

	 else if (pScrollBar == (CScrollBar* )GetDlgItem(IDC_SB_VBLANKING)) 
	 {
		 m_nVBlanking = nCurPos;
		 pFrame->SetBlanking(m_nHBlanking,m_nVBlanking);
	 }

	UpdateData(FALSE);
	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}



void CAdjustDlg::OnOK() 
{
	// TODO: Add extra validation here
	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	ASSERT(pFrame);
		
	pFrame->m_lTintLower = m_lTintLower;
	pFrame->m_lTintUpper = m_lTintUpper;

	pFrame->m_lADCLevel		= m_lADCLevel;
	
	for (int i = 0; i < 4; i++){
		pFrame->m_lGain[i] = (m_nGainChannel < 4) ? m_lGain[i] : m_lGain[4];
	}
	
	CDialog::OnOK();
}


void CAdjustDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	ResetData();
	ResetHVDevice();

	CDialog::OnCancel();
}



void CAdjustDlg::OnAdjustDefault() 
{
	// TODO: Add your control notification handler code here
	SetDefaultData();
	ResetControl();
	ResetHVDevice();
}



void CAdjustDlg::OnAdjustReset() 
{
	// TODO: Add your control notification handler code here
	ResetData();
	ResetControl();
	ResetHVDevice();
}

void CAdjustDlg::OnSelchangeCmGain() 
{
	// TODO: Add your control notification handler code here
	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	ASSERT(pFrame);

	m_nGainChannel = m_ctlCMGain.GetCurSel();
	m_strGain.Format("%d", m_lGain[m_nGainChannel]);
	m_ctlGain.SetScrollPos(m_lGain[m_nGainChannel], TRUE);

	UpdateData(FALSE);

	if (m_nGainChannel < 4) {
		HVAGCControl(pFrame->m_hhv, RED_CHANNEL + m_nGainChannel, m_lGain[m_nGainChannel]);
	} else {
		for (int i = 0; i < 4; i++){
			HVAGCControl(pFrame->m_hhv, RED_CHANNEL + i, m_lGain[4]);
		}
	}
}



void CAdjustDlg::OnSelchangeCmAdc() 
{
	// TODO: Add your control notification handler code here
	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	ASSERT(pFrame);
	
	m_lADCLevel = m_ctlCMADC.GetCurSel();
	HVADCControl(pFrame->m_hhv, ADC_BITS, m_lADCLevel);
}

void CAdjustDlg::OnChangeEditTintUpper() 
{
	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	ASSERT(pFrame);
	UpdateData(TRUE);

	pFrame->m_lTintUpper = m_lTintUpper;		
	//When outputwindow changes, change the exposure 
	pFrame->SetExposureTime(pFrame->GetOutputWinWdith(),m_lTintUpper,m_lTintLower);
	
}

void CAdjustDlg::OnChangeEditTintLower() 
{
	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	ASSERT(pFrame);
	UpdateData(TRUE);

	pFrame->m_lTintLower = m_lTintLower;	
	//When outputwindow changes, change the exposure 
	pFrame->SetExposureTime(pFrame->GetOutputWinWdith(),m_lTintUpper,m_lTintLower);
	
}


void CAdjustDlg::OnChangeEditHblanking() 
{

	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	ASSERT(pFrame);
	UpdateData(TRUE);
	pFrame->SetBlanking(m_nHBlanking,m_nVBlanking);
	m_ctrHBlk.SetScrollPos(m_nHBlanking);
	
}

void CAdjustDlg::OnChangeEditVblanking() 
{

	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	ASSERT(pFrame);
	UpdateData(TRUE);
	pFrame->SetBlanking(m_nHBlanking,m_nVBlanking);
	m_ctrVBlk.SetScrollPos(m_nVBlanking);
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -