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

📄 mainfrm.cpp

📁 通过PC并口模拟I2C信号
💻 CPP
字号:
// MainFrm.cpp : CMainFrame 僋儔僗偺摦嶌偺掕媊傪峴偄傑偡丅
//

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

#include "MainFrm.h"

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


/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_COMMAND(ID_MENUITEM_open, OnMENUITEMopen)
	ON_COMMAND(ID_MENUITEM_save, OnMENUITEMsave)
	ON_COMMAND(ID_MENUITEM_mop, OnMENUITEMmop)
	ON_COMMAND(ID_MENUITEM_pll, OnMENUITEMpll)
	ON_COMMAND(ID_MENUITEM_nim, OnMENUITEMnim)
	ON_WM_DESTROY()
	ON_COMMAND(ID_MENUITEM_demod, OnMENUITEMdemod)
	ON_COMMAND(ID_MENUITEM_config, OnMENUITEMconfig)
//	ON_COMMAND(ID_MENUITEM_test, OnMENUITEMtest)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMainFrame 僋儔僗偺峔抸/徚柵

CMainFrame::CMainFrame()
{
	get_application_file_name();
	pa.index=0;//0:digital, 1:analog

	//V0.02[050804]
	pt.application=pa.Application_Name[0];
	
	set_parameter_from_config_file(pa.Application_File_Name[0]);
	//-----
//	I2C_SPEED=1;
//	PORT_ADDRESS=0x378;	
//	NT=1,  DLL=1;


	//init_i2c( pi.I2C_SPEED,  pi.PORT_ADDRESS,  pi.NT,  pi.DLL);
	init_i2c( d[4],  d[10],  1,  1);
	//-----



	SetWindowText("");
	UpdateData(FALSE);

}

CMainFrame::~CMainFrame()
{
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	return TRUE;

}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame 僋儔僗偺恌抐

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

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

void CMainFrame::OnDestroy() 
{
	CFrameWnd::OnDestroy();

	//iiiii
//		//-----
//		m_i2c.End();
//		//-----
}

void CMainFrame::OnMENUITEMopen() 
{
	CString file_name="init.cfg";
	CFileDialog opendlg( TRUE,"cfg",file_name,
						OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
						"Conifg Files(*.cfg)|*.cfg|All Files(*.*)|*.*||" );
	if( opendlg.DoModal() == IDOK ){
		file_name = opendlg.GetPathName();
		set_parameter_from_config_file(file_name);
	}
}

void CMainFrame::OnMENUITEMsave() 
{
	CString file_name="init.cfg";
	file_name=init_cfg_filename_from_applicaiton(pt.application);
	CFileDialog savedlg(FALSE,"cfg",file_name,
		OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"Config Files(*.cfg)|*.cfg|All Files(*.*)|*.*||");
	if( savedlg.DoModal() == IDOK ){
		file_name = savedlg.GetPathName();
		set_config_file_from_parameter(file_name);
	}
}

void CMainFrame::OnMENUITEMmop() 
{
	open_dialog_mop();
}

void CMainFrame::OnMENUITEMpll() 
{
	open_dialog_pll();
}

void CMainFrame::OnMENUITEMnim() 
{
	open_dialog_nim();
}

void CMainFrame::init_i2c(int I2C_SPEED, int PORT_ADDRESS, int NT, int DLL)//iiiii
{
	d[4]=I2C_SPEED;	
	d[10]=PORT_ADDRESS;




//	//	m_i2c.I2C_SPEED=1;	
//	//	m_i2c.PORT_ADDRESS=0x378;	
//		m_i2c.I2C_SPEED=I2C_SPEED;	
//		m_i2c.PORT_ADDRESS=PORT_ADDRESS;
//		m_i2c.NT=NT;
//		m_i2c.DLL=DLL;
//		m_i2c.Init();



}

void CMainFrame::open_dialog_mop()
{
	//modless dialog
	if (m_mop == NULL)
	{
		m_mop = new Cmop(this);
		if (m_mop->Create() == TRUE){
//			GetDlgItem(IDOK)->EnableWindow(FALSE);
		}
	}
	else
		m_mop->SetActiveWindow();
}

void CMainFrame::BoxDone()
{
	if( (m_mop==NULL) && (m_demod==NULL)/**/ ){
//		GetDlgItem(IDOK)->EnableWindow();
	}
}

void CMainFrame::BoxDone_mop()
{
	m_mop=NULL;
	BoxDone();
	
}

void CMainFrame::open_dialog_demod()
{
	//modless dialog
	if (m_demod == NULL)
	{
		m_demod = new Cdemod(this);
		if (m_demod->Create() == TRUE){
//			GetDlgItem(IDOK)->EnableWindow(FALSE);
		}
	}
	else
		m_demod->SetActiveWindow();
}

void CMainFrame::BoxDone_demod()
{
	m_demod=NULL;
	BoxDone();
}

void CMainFrame::OnMENUITEMdemod() 
{
	open_dialog_demod();
}

void CMainFrame::open_dialog_pll()
{
	//modless dialog
	if (m_pll == NULL)
	{
		m_pll = new Cpll(this);
		if (m_pll->Create() == TRUE){
//			GetDlgItem(IDOK)->EnableWindow(FALSE);
		}
	}
	else
		m_pll->SetActiveWindow();
}

void CMainFrame::BoxDone_pll()
{
	m_pll=NULL;
	BoxDone();
}

void CMainFrame::open_dialog_nim()
{
	//modless dialog
	if (m_nim == NULL)
	{
		m_nim = new Cnim(this);
//		CString file_name;
		set_nim_parameter_from_config_file(m_nim);

		if (m_nim->Create() == TRUE){
//			GetDlgItem(IDOK)->EnableWindow(FALSE);
		}
	}
	else
		m_nim->SetActiveWindow();

}

void CMainFrame::BoxDone_nim()
{

	set_nim_config_file_from_parameter(m_nim);

	m_nim=NULL;
	BoxDone();
}


CString CMainFrame::test()
{
 	char file_name[100]="setup.cfg";
// 	char name[100]="";
// 	char name2[100]="";
 	char name[10][100];
// 	char file_name[10][100];

	CString t;

	FILE *file;
 	if ( (file=fopen(file_name,"r")) == NULL ){
 		MessageBox("can not open!!");
 		return "";
 	}
// 	fscanf(file,"%s\t%s",&name,&name2);
 	fscanf(file,"%s\t%s",&name[0][0],&name[1][0]);
	t=(name[0]);
	MessageBox(name[0]);

	t=(name[1]);
	MessageBox(t);
 
// 	return name[0][0];
 	return "a";

}

void CMainFrame::get_application_file_name()
{
 	char file_name[100]="setup.cfg";
	CString t;
	FILE *file;
 	if ( (file=fopen(file_name,"r")) == NULL ){
 		MessageBox("can not open!!");
 		//return "";
 	}
	else{
		int i=0;
		do{
 			fscanf(file,"%s\t%s",&(pa.Application_Name[i][0]),&(pa.Application_File_Name[i][0]));
			t=pa.Application_Name[i]; 
			i++;
		}while(t!="");
	}
}

int CMainFrame::file_open(CString file_name, int *d)
{

	FILE	*stream;
	int		i;
	long	data;	

	if ( (stream=fopen(file_name,"r")) == NULL ){
		return(1);
	}
	//initial data[hex]
	for(i=0;i<=9;i++){
		fscanf(stream,"%d",&data);
   		d[i]=data;
	}
	//register setting[hex]
	for(i=10;i<=30+0xFF;i++){
	//for(i=10;i<=1000;i++){
		fscanf(stream,"%x",&data);
   		d[i]=data;
	}

	fclose(stream);
	return(0);
}

int CMainFrame::file_save(CString file_name, int *d)
{
	int		i;
	FILE	*stream;

	if ( (stream=fopen(file_name,"w")) == NULL ){
		return(1);
	}
	//initial data[dec]
	for(i=0;i<=9;i++){
		fprintf( stream,"%ld\n",d[i]);
	}
	//register setting[hex]
	for(i=10;i<=29;i++){
		fprintf( stream,"%.2X\n",d[i]);
	}
	for(i=30;i<=30+0xFF;i++){
		fprintf( stream,"%.2X\n",d[i]);
	}
	fclose(stream);
	return(0);
}

void CMainFrame::set_parameter_from_config_file(CString file_name)
{

	if(!file_open(file_name,d)) {
		pi.I2C_SPEED=d[4];
		pi.PORT_ADDRESS=d[10];	
		pi.NT=1;
		pi.DLL=1;	
	}
	else MessageBox("can not open!?");


//	int d[100];
//	if(!file_open(file_name,d)) {
//		pt.if_freq=d[0];
//		pt.freq=d[1];
//		pt.freq_step=d[2];
//		pt.xtal=d[5];
//
//		int i;
//		int num=9;
//		for(i=0;i<num;i++){
//			pt.byte[i]=d[20+i];
//		}
//		
//		pi.I2C_SPEED=d[4];
//		pi.PORT_ADDRESS=d[10];	
//		pi.NT=1;
//		pi.DLL=1;	
//	}
//	else MessageBox("can not open!?");

}

int CMainFrame::pll_getdata(int byte1)
{
//		return m_i2c.pll_getdata(byte1);//iiiii
	return 0;
}

CString CMainFrame::init_cfg_filename_from_application(CString application)
{
	CString file_name,t;
	int index;
	index=index_from_application(application);
	return pa.Application_File_Name[index];
}

int CMainFrame::index_from_application(CString application)
{
	int i=0;
	CString name;
	do{
		name=pa.Application_Name[i];
		if(application==name){
			break;
		}
		i++;
	}while(name!="");

//	CString t; 
//	t.Format("%d",i); MessageBox(t);

	return i;
}

void CMainFrame::set_config_file_from_parameter(CString file_name)
{

	//d[4]=pi.I2C_SPEED;
	//d[10]=pi.PORT_ADDRESS;	

	if(file_save(file_name,d)) MessageBox("can not save!?");


//	int d[100];
//
//	d[0]=pt.if_freq;
//	d[1]=pt.freq;
//	d[2]=pt.freq_step;
//	d[5]=pt.xtal;
//
//	int i;
//	int num=9;
//	for(i=0;i<num;i++){
//		d[20+i]=pt.byte[i];
//	}
//	
//	d[4]=pi.I2C_SPEED;
//	d[10]=pi.PORT_ADDRESS;	
//
//	if(file_save(file_name,d)) MessageBox("can not save!?");
}

void CMainFrame::open_dialog_config()
{
	//modless dialog
	if (m_config == NULL)
	{
		m_config = new Cconfig(this);
		if (m_config->Create() == TRUE){
//			GetDlgItem(IDOK)->EnableWindow(FALSE);
		}
	}
	else
		m_config->SetActiveWindow();
}

void CMainFrame::BoxDone_config()
{
	m_config=NULL;
	BoxDone();
}

void CMainFrame::OnMENUITEMconfig() 
{
	open_dialog_config();
	
}

void CMainFrame::init_i2c()
{
	//init_i2c( pi.I2C_SPEED,  pi.PORT_ADDRESS,  pi.NT,  pi.DLL);
	init_i2c(d[4],d[10],1,1);
}

//V0.02[050804]
CString CMainFrame::init_cfg_filename_from_applicaiton(CString application)
{

	CString file_name="init.cfg";
	int i=0;
	do{
		if(application==pa.Application_Name[i]) {
			file_name=pa.Application_File_Name[i];
			break;
		}
		i++;
	}while (pa.Application_File_Name[i]!="");
	return file_name;

}

void CMainFrame::set_nim_parameter_from_config_file(Cnim* m_nim)
//void CMainFrame::set_nim_parameter_from_config_file(Cnim* m_nim,CString file_name)
{

	int i;
	int num=5;

	//PLL
	m_nim->tuner.if_freq=d[0];	//Hz
	m_nim->tuner.freq=d[1];		//Hz
	//	m_nim->tuner.freq_=double(d[1])/1000.;
	m_nim->tuner.xtal=d[5];
	m_nim->tuner.iq_wiring=d[7]; //IQ wiring 	

	num=5;
	for(i=0;i<num;i++){
		m_nim->tuner.byte[i]=d[20+i];
	}
	//DEMOD
	m_nim->demod.symbolrate=d[3];	//sps
	//	m_nim->demod.symbolrate_=double(d[3])/1000.;
	m_nim->demod.xtal=d[6];

	m_nim->demod.slave_address=d[12];

	num=0xFF;
	for(i=0;i<=num;i++){
		m_nim->demod.reg[i]=d[30+i];
	}

	//i2c
	m_nim->m_i2c.I2C_SPEED=d[4];	
	m_nim->m_i2c.PORT_ADDRESS=d[10];	
	m_nim->m_i2c.NT=1; //NT;
	m_nim->m_i2c.DLL=1; //DLL;

}

void CMainFrame::set_nim_config_file_from_parameter(Cnim* m_nim)
//void CMainFrame::set_nim_config_file_from_parameter(Cnim* m_nim,CString file_name)
{
	int i;
	int num=5;

	d[0]=m_nim->tuner.if_freq;
	d[1]=m_nim->tuner.freq;				//Hz
	//	d[1]=long(m_nim->tuner.freq_*1000.); //khz->hz

	num=5;
	for(i=0;i<num;i++){
		d[20+i]=m_nim->tuner.byte[i];
	}
	//DEMOD
	d[3]=m_nim->demod.symbolrate;		//sps
	//	d[3]=long(m_nim->demod.symbolrate_*1000);
	num=0xFF;
	for(i=0;i<=num;i++){
		d[30+i]=m_nim->demod.reg[i];
	}
	
//	d[4]=pi.I2C_SPEED;
//	d[10]=pi.PORT_ADDRESS;	

//	if(file_save(file_name,d)) MessageBox("can not save!?");
}

void CMainFrame::OnMENUITEMtest() 
{
	MessageBox("test");
	// TODO: 偙偺埵抲偵僐儅儞僪 僴儞僪儔梡偺僐乕僪傪捛壛偟偰偔偩偝偄
	
}

⌨️ 快捷键说明

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