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

📄 pathsimview.cpp

📁 信道仿真源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	m_TestTextCtrl2.SetWindowText( str);
#endif
	//go draw the data plots
	if(m_pCPlotData && ( pDoc->m_SimState==SIMSTATE_ON ))
		m_pCPlotData->DrawPlot();
	return 0;
}
//////////////////////////////////////////////////////////////////////
// Called when process has finished due to error or file done.
//////////////////////////////////////////////////////////////////////
afx_msg LRESULT CPathSimView::OnDone(UINT x, LONG y)
{
CPathSimDoc* pDoc = GetDocument();
	pDoc->m_SimState = SIMSTATE_OFF;
	m_StartCtrl.EnableWindow(TRUE);
	m_StopCtrl.EnableWindow(FALSE);
	EnableAllCtrls(TRUE);
	return 0;
}
//////////////////////////////////////////////////////////////////////
// Called when process has finished due to error or file done.
//////////////////////////////////////////////////////////////////////
afx_msg LRESULT CPathSimView::OnError(UINT x, LONG y)
{
CPathSimDoc* pDoc = GetDocument();
CString err;
	pDoc->m_SimState = SIMSTATE_ON;
	m_StartCtrl.EnableWindow(TRUE);
	m_StopCtrl.EnableWindow(FALSE);
	EnableAllCtrls(TRUE);
	m_pCIOCntrl->GetErrorMsg(err);
	::AfxMessageBox(err);
	return 0;
}

//called by clicking on the start button or if wait period is over
void CPathSimView::OnStart() 
{
CPathSimDoc* pDoc = GetDocument();
	ASSERT(pDoc);
	if( (pDoc->m_InputSelect==USE_WAVEFILE) &&
			(pDoc->m_OutputSelect==USE_WAVEFILE))
		pDoc->m_WaveToWave = TRUE;
	else
		pDoc->m_WaveToWave = FALSE;
	switch(	pDoc->m_SimState)
	{
		case SIMSTATE_OFF:
			if(!pDoc->m_UseDelayStart)
			{
				if(m_pCIOCntrl)
					m_pCIOCntrl->StartIO(m_hWnd,pDoc);
				pDoc->m_StartTime = CTime::GetCurrentTime();
				pDoc->m_SimState = SIMSTATE_ON;
			}
			else
				pDoc->m_SimState = SIMSTATE_WAIT;
			break;
		case SIMSTATE_WAIT:
			if(m_pCIOCntrl)
				m_pCIOCntrl->StartIO(m_hWnd,pDoc);
			pDoc->m_StartTime = CTime::GetCurrentTime();
			pDoc->m_SimState = SIMSTATE_ON;
			break;
		case SIMSTATE_ON:
			break;
	}
	EnableAllCtrls(FALSE);
	m_StartCtrl.EnableWindow(FALSE);
	m_StopCtrl.EnableWindow(TRUE);
}

void CPathSimView::OnStop()
{
CPathSimDoc* pDoc = GetDocument();
	switch(	pDoc->m_SimState)
	{
		case SIMSTATE_ON:
		case SIMSTATE_WAIT:
			if(m_pCIOCntrl)
				m_pCIOCntrl->StopIO();
			pDoc->m_SimState = SIMSTATE_OFF;
			break;
		case SIMSTATE_OFF:
			break;
	}
	m_StartCtrl.EnableWindow(TRUE);
	m_StopCtrl.EnableWindow(FALSE);
	EnableAllCtrls(TRUE);
}


void CPathSimView::EnableAllCtrls(BOOL val)
{
CWnd* pWnd;
	pWnd = GetDlgItem( IDC_INSELECT ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val);
	pWnd = GetDlgItem( IDC_OUTSELECT ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val);
	pWnd = GetDlgItem( IDC_EDITDELAY1 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val);
	pWnd = GetDlgItem( IDC_EDITDELAY2 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val);
	pWnd = GetDlgItem( IDC_EDITSPREAD0 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val&m_Path0On);
	pWnd = GetDlgItem( IDC_EDITSPREAD1 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val&m_Path1On);
	pWnd = GetDlgItem( IDC_EDITSPREAD2 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val&m_Path2On);
	pWnd = GetDlgItem( IDC_EDITOFFSET0 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val&m_Path0On);
	pWnd = GetDlgItem( IDC_EDITOFFSET1 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val&m_Path1On);
	pWnd = GetDlgItem( IDC_EDITOFFSET2 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val&m_Path2On);
	pWnd = GetDlgItem( IDC_EDITSNR ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(m_AWGNOn);
	pWnd = GetDlgItem( IDC_AWGNONOFF ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val);
	pWnd = GetDlgItem( IDC_PATHONOFF0 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val);
	pWnd = GetDlgItem( IDC_PATHONOFF1 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val);
	pWnd = GetDlgItem( IDC_PATHONOFF2 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val);
	pWnd = GetDlgItem( IDC_EDITRUNTIME ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val);
	pWnd = GetDlgItem( IDC_STARTEDIT_HOUR ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val&m_UseDelayStart);
	pWnd = GetDlgItem( IDC_STARTEDIT_MIN ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val&m_UseDelayStart);
	pWnd = GetDlgItem( IDC_USEDELAYSTART ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(val);
}

void CPathSimView::OnInselect() 
{
CPathSimDoc* pDoc = GetDocument();
CInDlg dlg;
	dlg.m_InputSelect = pDoc->m_InputSelect;
	dlg.m_InFileName = pDoc->m_InFileName;
	dlg.m_InFilePath = pDoc->m_InFilePath;
	dlg.m_InFileInfo = pDoc->m_InFileInfo;
	dlg.m_InFileLength = pDoc->m_InFileLength;
	if (dlg.DoModal() == IDOK)
	{
		pDoc->m_InputSelect = dlg.m_InputSelect;
		pDoc->m_InFileName = dlg.m_InFileName;
		pDoc->m_InFilePath = dlg.m_InFilePath;
		pDoc->m_InFileInfo = dlg.m_InFileInfo;
		pDoc->m_InFileLength = dlg.m_InFileLength;
	}
	if(pDoc->m_InputSelect == USE_WAVEFILE)
	{
		m_InInfoCtrl.SetWindowText(	pDoc->m_InFileInfo );
		m_InFileCtrl.SetWindowText(	pDoc->m_InFileName );
		pDoc->m_InFileLength = dlg.m_InFileLength;
		OnKillfocusEditruntime();
	}
	else
	{
		m_InFileCtrl.SetWindowText(	_T("SoundCard") );
		m_InInfoCtrl.SetWindowText(	_T("8KHz, 16Bit,Mono"));
	}
}

void CPathSimView::OnOutselect() 
{
CPathSimDoc* pDoc = GetDocument();
COutDlg dlg;
CString str;
	dlg.m_OutputSelect = pDoc->m_OutputSelect;
	dlg.m_OutFilePath = pDoc->m_OutFilePath;
	dlg.m_OutFileName = pDoc->m_OutFileName;
	if (dlg.DoModal() == IDOK)
	{
		pDoc->m_OutputSelect = dlg.m_OutputSelect;
		pDoc->m_OutFilePath = dlg.m_OutFilePath;
		pDoc->m_OutFileName = dlg.m_OutFileName;
	}
	if(pDoc->m_OutputSelect == USE_WAVEFILE)
	{
		str = pDoc->m_OutFileName;
		if(pDoc->m_AppendTitle)
			str.Replace( _T("."),  _T("''Title''.") );
		m_OutFileCtrl.SetWindowText( str );
		m_OutInfoCtrl.SetWindowText( _T("") );
	}
	else
	{
		m_OutFileCtrl.SetWindowText( _T("SoundCard") );
		m_OutInfoCtrl.SetWindowText( _T("8KHz, 16Bit,Mono"));
	}
	UpdateDiskInfo();
	
}


void CPathSimView::OnDeltaposSnrspin(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	UpdateData(TRUE);			// get latest SNR value from edit box
	m_SNRSetValue = m_SNRSetValue - pNMUpDown->iDelta;
	if(m_SNRSetValue>100)
		m_SNRSetValue = 100;
	if(m_SNRSetValue< -50)
		m_SNRSetValue = -50;
	GetDocument()->m_SNRSetValue = m_SNRSetValue;
	UpdateData(FALSE);			// put latest SNR value into edit box
	m_pCIOCntrl->SetSNRValue(m_SNRSetValue);
	*pResult = 0;
}

void CPathSimView::OnKillfocusEdittitle() 
{
	UpdateData(TRUE);
	GetDocument()->m_SimTitle = m_SimTitle;
}

void CPathSimView::OnKillfocusEditruntime() 
{
CPathSimDoc* pDoc = GetDocument();
INT intime;
	UpdateData(TRUE);
	m_TimeLimit = m_TimeLimit*60;
	if(pDoc->m_InputSelect == USE_WAVEFILE)
	{
		intime = (pDoc->m_InFileLength/8000) +1;
		if( m_TimeLimit > intime )
			m_TimeLimit = intime;
	}
	pDoc->m_TimeLimit = m_TimeLimit;
	UpdateDiskInfo();
	m_TimeLimit = pDoc->m_TimeLimit/60;
	UpdateData(FALSE);
}

void CPathSimView::OnUsedelaystart() 
{
CWnd* pWnd;
	UpdateData(TRUE);
	GetDocument()->m_UseDelayStart = m_UseDelayStart;
	pWnd = GetDlgItem( IDC_STARTEDIT_HOUR ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(m_UseDelayStart);
	pWnd = GetDlgItem( IDC_STARTEDIT_MIN ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(m_UseDelayStart);
}

void CPathSimView::OnKillfocusStarteditHour() 
{
	UpdateData(TRUE);
	GetDocument()->m_DelayStartHour = m_DelayStartHour;
}

void CPathSimView::OnKillfocusStarteditMin() 
{
	UpdateData(TRUE);
	GetDocument()->m_DelayStartMin = m_DelayStartMin;
}



void CPathSimView::OnKillfocusEditdelay1() 
{
	UpdateData(TRUE);
	GetDocument()->m_Delay1 = m_Delay1;
}

void CPathSimView::OnKillfocusEditdelay2() 
{
	UpdateData(TRUE);
	GetDocument()->m_Delay2 = m_Delay2;
}

void CPathSimView::OnKillfocusEditoffset0() 
{
	UpdateData(TRUE);
	GetDocument()->m_Offset0 = m_Offset0;
}

void CPathSimView::OnKillfocusEditoffset1() 
{
	UpdateData(TRUE);
	GetDocument()->m_Offset1 = m_Offset1;
}

void CPathSimView::OnKillfocusEditoffset2() 
{
	UpdateData(TRUE);
	GetDocument()->m_Offset2 = m_Offset2;
}




void CPathSimView::OnKillfocusEditsnr() 
{
	UpdateData(TRUE);
	GetDocument()->m_SNRSetValue = m_SNRSetValue;
	m_pCIOCntrl->SetSNRValue(m_SNRSetValue);
}

void CPathSimView::OnPathChange() 
{
CWnd* pWnd;
CPathSimDoc* pDoc = GetDocument();
	UpdateData(TRUE);
	pDoc->m_AWGNOn = m_AWGNOn;
	pDoc->m_Path0On = m_Path0On;
	pDoc->m_Path1On = m_Path1On;
	pDoc->m_Path2On = m_Path2On;
	pWnd = GetDlgItem( IDC_EDITSNR ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(m_AWGNOn);
	pWnd = GetDlgItem( IDC_EDITOFFSET0 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(m_Path0On);
	pWnd = GetDlgItem( IDC_EDITOFFSET1 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(m_Path1On);
	pWnd = GetDlgItem( IDC_EDITOFFSET2 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(m_Path2On);
	pWnd = GetDlgItem( IDC_EDITSPREAD0 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(m_Path0On);
	pWnd = GetDlgItem( IDC_EDITSPREAD1 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(m_Path1On);
	pWnd = GetDlgItem( IDC_EDITSPREAD2 ); ASSERT_VALID(pWnd);
	pWnd->EnableWindow(m_Path2On);
	if((m_Path0On|m_Path1On|m_Path2On) )
	{
		m_Bypass1Ctrl.ShowWindow( SW_HIDE);	
		m_Bypass2Ctrl.ShowWindow( SW_HIDE);	
		pDoc->m_DirectPathActive = FALSE;
	}
	else
	{
		m_Bypass1Ctrl.ShowWindow( SW_RESTORE);
		m_Bypass2Ctrl.ShowWindow( SW_RESTORE);
		pDoc->m_DirectPathActive = TRUE;
	}
}


void CPathSimView::OnKillfocusEditspread0() 
{
	UpdateData(TRUE);
	GetDocument()->m_Spread0 = m_Spread0;
	
}

void CPathSimView::OnKillfocusEditspread1() 
{
	UpdateData(TRUE);
	GetDocument()->m_Spread1 = m_Spread1;
	
}

void CPathSimView::OnKillfocusEditspread2() 
{
	UpdateData(TRUE);
	GetDocument()->m_Spread2 = m_Spread2;
	
}

⌨️ 快捷键说明

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