📄 autosearch.cpp
字号:
//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 + -