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

📄 autosearch.cpp

📁 通过PC并口模拟I2C信号
💻 CPP
📖 第 1 页 / 共 2 页
字号:

//V0.03[060728]

// autosearch.cpp : 僀儞僾儕儊儞僥乕僔儑儞 僼傽僀儖
//
//NOTE:
//this code is tested only under a limited signal conditon,
//so may not meet the signal condition of every satellite at every location.
//


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

#include"nim.h"

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

/////////////////////////////////////////////////////////////////////////////
// Cautosearch 僟僀傾儘僌


Cautosearch::Cautosearch(CWnd* pParent /*=NULL*/)
	: CDialog(Cautosearch::IDD, pParent)
{
	//{{AFX_DATA_INIT(Cautosearch)
		m_pParent=pParent;
		m_nID=Cautosearch::IDD;
	m_freq = _T("");
	m_freq_count = _T("");
	m_freq_start = _T("");
	m_freq_step = _T("");
	m_freq_stop = _T("");
	//}}AFX_DATA_INIT
}


void Cautosearch::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Cautosearch)
	DDX_Text(pDX, IDC_EDIT_freq, m_freq);
	DDX_Text(pDX, IDC_EDIT_freq_count, m_freq_count);
	DDX_Text(pDX, IDC_EDIT_freq_start, m_freq_start);
	DDX_Text(pDX, IDC_EDIT_freq_step, m_freq_step);
	DDX_Text(pDX, IDC_EDIT_freq_stop, m_freq_stop);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Cautosearch, CDialog)
	//{{AFX_MSG_MAP(Cautosearch)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_BUTTON_start, OnBUTTONstart)
	ON_BN_CLICKED(IDC_BUTTON_stop, OnBUTTONstop)
	ON_EN_KILLFOCUS(IDC_EDIT_freq_start, OnKillfocusEDITfreqstart)
	ON_EN_KILLFOCUS(IDC_EDIT_freq_stop, OnKillfocusEDITfreqstop)
	ON_EN_KILLFOCUS(IDC_EDIT_freq_step, OnKillfocusEDITfreqstep)
	ON_BN_CLICKED(IDC_BUTTON_test, OnBUTTONtest)
	ON_LBN_DBLCLK(IDC_LIST_result, OnDblclkLISTresult)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Cautosearch 儊僢僙乕僕 僴儞僪儔
//message---
#include "message.h"
void Cautosearch::show_message()
{
	Cmessage dlg	;
	msg = message_gloval	;
	dlg.message = msg	;
	dlg.DoModal()	;


}

void Cautosearch::message_reset()
{
	message_gloval="";
	msg="";
	//time-----
	_ftime( &tstruct_original );
	//---------

}

void Cautosearch::message(CString message)
{
	CString t;
	//time-----
//	_ftime( &tstruct );
//	t.Format( "%.3u |", (tstruct.time*1000+tstruct.millitm)-(tstruct_original.time*1000+tstruct_original.millitm));
//	message_gloval+=t;
//	message_gloval+="\t";
	//---------
	message_gloval+=message	;
	message_gloval+=" #"	;


}

void Cautosearch::message_top(CString t)
{
	t+="#";
	message_gloval=t+message_gloval;
}


BOOL Cautosearch::OnInitDialog() 
{
	CDialog::OnInitDialog();

	set_initial_parameter();
	

	init_dialog();
	
	return TRUE;  // 僐儞僩儘乕儖偵僼僅乕僇僗傪愝掕偟側偄偲偒丄栠傝抣偼 TRUE 偲側傝傑偡
	              // 椺奜: OCX 僾儘僷僥傿 儁乕僕偺栠傝抣偼 FALSE 偲側傝傑偡
}

void Cautosearch::OnTimer(UINT nIDEvent) 
{
	if(nIDEvent==0)
	{
		set_dialog_list_time();
		freq+=freq_step;
message("");
t_global.Format("ooo freq=%ld (%d) ooo",freq,freq_step);
		message(t_global);
		check_lock();
		set_dialog();

		freq_count+=1;

		//V0.04[061109] [STB0288+ix2410]
		//modify the stop frequency
		if(freq>freq_stop) 
		//if(freq_count>=freq_count_num) 

		{
			autosearch_stop();
//			KillTimer(0);
		}

		//CString t; t.Format("%d",freq); MessageBox(t);
	}
	CDialog::OnTimer(nIDEvent);
}

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

}

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

void Cautosearch::OnBUTTONstart() 
{
	set_start_parameter();

	autosearch_start();
//	SetTimer(0,100,NULL);
}

void Cautosearch::OnBUTTONstop() 
{
	autosearch_stop();
//	KillTimer(0);
}

void Cautosearch::init_dialog()
{
	freq=freq_start;
	freq_count_num=long((freq_stop-freq_start)/freq_step)+1;
	freq_count=0;

	m_freq_start.Format(" %.3lf",double(freq_start)/1000.);
	m_freq_stop.Format(" %.3lf",double(freq_stop)/1000.);
	m_freq_step.Format(" %.3lf",double(freq_step)/1000.);
	m_freq_count.Format(" %.3d/%.3d",freq_count,freq_count_num-1);
	m_freq.Format(" %.3lf",double(freq)/1000.);
	UpdateData(FALSE);

}

void Cautosearch::set_dialog()
{
	//V0.04[061109] [STB0288+ix2410]
	//modify the count down display
	m_freq_count.Format(" %.3d/%.3d",(freq_stop-freq)/freq_step_original,freq_count_num-1);
	//m_freq_count.Format(" %.3d/%.3d",freq_count,freq_count_num-1);
	//
	m_freq.Format(" %.3lf",double(freq)/1000.);
	UpdateData(FALSE);

}

void Cautosearch::get_dialog()
{
	UpdateData(TRUE);
	double data;
	sscanf(m_freq_start, "%lf", &data );
	freq_start=long(data*1000.);
	sscanf(m_freq_stop, "%lf", &data );
	freq_stop=long(data*1000.);
	sscanf(m_freq_step, "%lf", &data );
	freq_step=long(data*1000.);
}

void Cautosearch::OnKillfocusEDITfreqstart() 
{
	get_dialog();
	init_dialog();
}

void Cautosearch::OnKillfocusEDITfreqstop() 
{
	get_dialog();
	init_dialog();
}

void Cautosearch::OnKillfocusEDITfreqstep() 
{
	get_dialog();
	init_dialog();
}

void Cautosearch::OnBUTTONtest() 
{

	((Cnim*)m_pParent)->tuner.freq=freq*1000;
	((Cnim*)m_pParent)->demod.symbolrate=0;

	((Cnim*)m_pParent)->nim_receive();

	((Cnim*)m_pParent)->update();

	tp[0].freq =freq+((Cnim*)m_pParent)->nim_status.df;
	tp[0].baud =((Cnim*)m_pParent)->nim_status.symbolrate;
//	((Cnim*)m_pParent)->nim_status.

//	CString t; t.Format("LK=%d, df=%d, ",((Cnim*)m_pParent)->nim_status.lk,((Cnim*)m_pParent)->nim_status.df); MessageBox(t);
	CString t; t.Format("LK=%d, freq=%d, baud=%d",((Cnim*)m_pParent)->nim_status.lk,tp[0].freq,tp[0].baud); MessageBox(t);


}

void Cautosearch::set_initial_parameter()
{
	freq_start=950000;	//khz
	freq_stop=2150000;	//khz
	freq_step=2000;		//khz :2MHz step
	tp_num=0; //count locked TP
}



void Cautosearch::autosearch_start()
{
	long time;
	time=100;
	message_reset();
	//
	//V0.04[061109] [STB0288+ix2410]
	//initialize before start autsearch 
	demod_288_init();
	//
	SetTimer(0,time,NULL);

//message reset(2)
((Cnim*)m_pParent)->m_demod->message_reset();

}

void Cautosearch::autosearch_stop()
{
	KillTimer(0);
//	show_message();
//	show_result();

	elapsed_time=get_elapsed_time();

//show message(2)
//((Cnim*)m_pParent)->m_demod->show_message();

}

void Cautosearch::check_lock()
{
	//V0.04[061109] [STB0288+ix2410]
	//modify "check_lock" algorythm
	//-=-=-=-=-=-=-=--=-=-=-=-=-=-=--=-=-=-=-=-=-=--=-=-=-=-=-=-=- 
	CString t; 
	message("     -----");
	t.Format("(%d)",freq_count); 
	message(t);
	BOOL flag;
	long FREQ,BAUD;
	((Cnim*)m_pParent)->tuner.freq=freq*1000;
	((Cnim*)m_pParent)->demod.symbolrate=0;
	//
	t.Format("freq=%d",freq*1000); 
	message(t);

	//2222222222222222222222222
	((Cnim*)m_pParent)->m_demod->message2(t);
	//2222222222222222222222222

	flag=check_signal();

	if(flag){ //signal exist?
//	if(1){
		//--SIGNAL EXIST--
		((Cnim*)m_pParent)->update(); // update status
		FREQ=freq-((Cnim*)m_pParent)->nim_status.df;
		BAUD=((Cnim*)m_pParent)->nim_status.symbolrate;

		message("< SIGNAL EXISIT!! >");
		t.Format("(%d,%d)",FREQ, BAUD); 
		message(t);
	//2222222222222222222222222

⌨️ 快捷键说明

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