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

📄 ber.cpp

📁 通过PC并口模拟I2C信号
💻 CPP
字号:
// ber.cpp : 僀儞僾儕儊儞僥乕僔儑儞 僼傽僀儖
//

#include "stdafx.h"
#include "demo.h"
#include "ber.h"

#include"nim.h"

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

/////////////////////////////////////////////////////////////////////////////
// Cber 僟僀傾儘僌


Cber::Cber(CWnd* pParent /*=NULL*/)
	: CDialog(Cber::IDD, pParent)
{
	//{{AFX_DATA_INIT(Cber)
	m_ber = _T("");
	m_ber_ave = _T("");
		m_pParent=pParent;
		m_nID=Cber::IDD;
	m_num = _T("");
	//}}AFX_DATA_INIT
}


void Cber::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Cber)
	DDX_Text(pDX, IDC_EDIT_vber, m_ber);
	DDX_Text(pDX, IDC_EDIT_vber_ave, m_ber_ave);
	DDX_Text(pDX, IDC_EDIT_num, m_num);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Cber, CDialog)
	//{{AFX_MSG_MAP(Cber)
	ON_BN_CLICKED(IDC_BUTTON_reset, OnBUTTONreset)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Cber 儊僢僙乕僕 僴儞僪儔


BOOL Cber::Create()
{
	return CDialog::Create(m_nID,m_pParent);
}

void Cber::OnOK() 
{
	((Cnim*)m_pParent)->BoxDone_ber();
	//DestroyWindow();
	KillTimer(0);
	CDialog::OnOK();
}

void Cber::OnCancel() 
{
	// TODO: 偙偺埵抲偵摿暿側屻張棟傪捛壛偟偰偔偩偝偄丅
	
	CDialog::OnCancel();
}

void Cber::set_dialog()
{
	calculate_ber();
	m_ber.Format(" %.3e",ber.ber);
	m_ber_ave.Format(" %.3e",ber.ber_ave);
	m_num.Format(" %ld ",ber.num);
	UpdateData(FALSE);

}

BOOL Cber::OnInitDialog() 
{
	CDialog::OnInitDialog();
	init_calculate_ber();
	SetTimer(0,200,NULL);
	return TRUE;  // 僐儞僩儘乕儖偵僼僅乕僇僗傪愝掕偟側偄偲偒丄栠傝抣偼 TRUE 偲側傝傑偡
	              // 椺奜: OCX 僾儘僷僥傿 儁乕僕偺栠傝抣偼 FALSE 偲側傝傑偡
}

void Cber::OnTimer(UINT nIDEvent) 
{
	set_dialog();
	CDialog::OnTimer(nIDEvent);
}

void Cber::calculate_ber()
{
	((Cnim*)m_pParent)->get_status();
	ber.ber=double(((Cnim*)m_pParent)->nim_status.viterbi_ber)*1.e-7;
	ber.ber_sum+=ber.ber;
	ber.ber_ave=ber.ber_sum/double(ber.num+1);
	ber.num+=1;
	if(ber.num>ber.num_max) {
		init_calculate_ber();
	}

}

void Cber::init_calculate_ber()
{
	ber.num=0;
	ber.num_max=10000;
	ber.ber=0.;
	ber.ber_sum=0.;
	ber.ber_ave=0.;
}

void Cber::OnBUTTONreset() 
{
	init_calculate_ber();
	
}

⌨️ 快捷键说明

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