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

📄 autosearch.cpp

📁 通过PC并口模拟I2C信号
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	((Cnim*)m_pParent)->m_demod->message2(t);
	//2222222222222222222222222

		if(check_same_transponder(FREQ)){ // same transponder locked again?
			//-- new TP search --
			flag=demod_288_algo(); // search TP without "check_signal"
			// ((Cnim*)m_pParent)->nim_receive();
			((Cnim*)m_pParent)->update(); // update status
			FREQ=freq-((Cnim*)m_pParent)->nim_status.df;
			BAUD=((Cnim*)m_pParent)->nim_status.symbolrate;
			//
			t.Format("[%d] (%d,%d)",flag,FREQ, BAUD); 
			message(t);
	//2222222222222222222222222
	((Cnim*)m_pParent)->m_demod->message2(t);
	//2222222222222222222222222
			//
			if(flag && check_same_transponder(FREQ)){ //lock status OK? , same transponder?
				//--new TP found !!--

				message("< OK!! >");
				t.Format("[%d] (%d,%d)",flag,FREQ, BAUD); 

				message(t);
				tp[tp_num].freq =FREQ;
				tp[tp_num].baud =BAUD;
				//test060727
				tp[tp_num].freq_original=freq;
				tp[tp_num].freq_offset=((Cnim*)m_pParent)->nim_status.df;
				//
				freq=tp[tp_num].freq;	// to calculate the next frequency, 
										// original freqency should be set to the locked frequency .
				//
				freq_step=calculate_freq_step_from_baud(BAUD); //calculate freq step based on the baud
				//
				tp_num+=1;
				//
				t.Format(" (freq_step=%d)",freq_step); 
				message(t);
	//2222222222222222222222222
	((Cnim*)m_pParent)->m_demod->message2(t);
	//2222222222222222222222222

				set_dialog_list();

	//2222222222222222222222222
	//CString t;
	t=" -> OK!!";
	((Cnim*)m_pParent)->m_demod->message2(t);
	//2222222222222222222222222

			}
			else{
				//--locked, but old TP--
				freq_step=freq_step_original; //freq step set to the original value

	//2222222222222222222222222
	t=" -> same TP / lock NG";
	((Cnim*)m_pParent)->m_demod->message2(t);
	//2222222222222222222222222

			}
		}
		else{
			//same TP
			freq_step=freq_step_original; //freq step set to the original value
	//2222222222222222222222222
	t=" -> same TP";
	((Cnim*)m_pParent)->m_demod->message2(t);
	//2222222222222222222222222

		}
	}
	else{
		//NG
		freq_step=freq_step_original;
	//2222222222222222222222222
	t=" -> NG";
	((Cnim*)m_pParent)->m_demod->message2(t);
	//2222222222222222222222222
	}
	//2222222222222222222222222
	((Cnim*)m_pParent)->m_demod->message2("");
	//2222222222222222222222222

	t.Format("LK_flag?=%d",flag); 
	message(t);
	//-=-=-=-=-=-=-=--=-=-=-=-=-=-=--=-=-=-=-=-=-=--=-=-=-=-=-=-=--=-=-=-=-=-=-=- 



//		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);
//		((Cnim*)m_pParent)->nim_receive();
//		((Cnim*)m_pParent)->update();
//		
//	//	if(flag) {
//	//		int i;
//	//		for(i=0;i<=10;i++)
//	//		{
//	//			Sleep(100);
//	//			((Cnim*)m_pParent)->update();
//	//			t.Format(" (%ld,%ld)",freq-((Cnim*)m_pParent)->nim_status.df,((Cnim*)m_pParent)->nim_status.symbolrate); 
//	//			message(t);
//	//		}
//	//	}
//
//		FREQ=freq-((Cnim*)m_pParent)->nim_status.df;
//		BAUD=((Cnim*)m_pParent)->nim_status.symbolrate;
//
//		flag=LK();
//		if(flag){
//	//	if(1){
//			message("< LOCK!! >");
//			t.Format("freq=%ld,  (%d,%d) same?=%d", freq, FREQ, BAUD, check_same_transponder(FREQ)); 
//			message(t);
//			if(check_same_transponder(FREQ)){ //same transponder locked again?
//				tp[tp_num].freq =FREQ;
//				tp[tp_num].baud =BAUD;
//				//test060727
//				tp[tp_num].freq_original=freq;
//				tp[tp_num].freq_offset=((Cnim*)m_pParent)->nim_status.df;
//				//
//				tp_num+=1;
//				freq_step=calculate_freq_step_from_baud(BAUD);
//				//
//				set_dialog_list();
//			}
//		}
//		else{
//			freq_step=freq_step_original;
//		}
//		t.Format("LK_flag?=%d",flag); 
//		message(t);
//
//

}

int Cautosearch::LK()
{
	return ((Cnim*)m_pParent)->nim_status.lk;
}

void Cautosearch::set_start_parameter()
{
	freq_count=0;
	tp_num=0;
	freq=freq_start;
	freq_step_original=freq_step;
	reset_tp();
	set_dialog_list_reset();

	//time-----
	_ftime( &tstruct_original );
	//---------

}

long Cautosearch::calculate_freq_step_from_baud(long baud) //kHz
{
	long freq_step_;
	freq_step_=baud/2+freq_step_original;

	t_global.Format(" [freq_step_:%ld (baud:%ld original:%ld)]",freq_step_,baud,freq_step_original);
	message(t_global);

	return freq_step_;
}

BOOL Cautosearch::check_same_transponder(long freq)
{
	message("<check_same_transponder>");

	CString t;

	BOOL flag=1;//1:OK, 0:NG

//	if(tp_num!=0)
	{
		int i=0;
		do{
			if( (tp[i].freq-500<freq) && (freq<tp[i].freq+500) )
				flag=0;

	t.Format("  tp[%d].freq= %d <--> %d",i,tp[i].freq,freq); 
	message(t);

			i++;
		} while( (i<tp_num) && (flag==1) );

	t.Format("  flag=%d",flag); 
	message(t);
	//message("");

	}
	return flag;
}

void Cautosearch::reset_tp()
{
	int i;
	for(i=0;i<=500;i++){
		tp[i].baud=0;
		tp[i].freq=0;
	}
}

void Cautosearch::show_result()
{
	int i;
	CString t; 
	message_reset();
	message("<search result>");
	t.Format(" freq start:%.3lf, stop:%.3lf, step:%.3lf [MHz]",double(freq_start)/1000.,double(freq_stop)/1000.,double(freq_step)/1000. );
	message(t);
	t.Format(" time=%.3lf[s]",double(elapsed_time)/1000.);
	message(t);
	t.Format("\tfreq[kHz]\tbaud[ksps]");
	message(t);

//	message("");
	for(i=0;i<tp_num;i++)
	{
		t.Format("[%.3d] \t  %ld\t  %ld",i,tp[i].freq,tp[i].baud);
		//t.Format("[%.3d] \t %ld(%ld)\t %ld",i,tp[i].freq,tp[i].freq_original,tp[i].baud);
		//t.Format("[%.3d] \t %ld(%ld/%ld)\t %ld",i,tp[i].freq,tp[i].freq_original,tp[i].freq_offset,tp[i].baud);

		//t.Format("[%.3d] \tfreq=%ld\tbaud=%ld",i,tp[i].freq,tp[i].baud);
		message(t);
	}
	show_message();
}

void Cautosearch::OnDblclkLISTresult() 
{
	show_result();
}

void Cautosearch::set_dialog_list()
{

	set_dialog_list_reset();
	CString t;
	CListBox* pLB=(CListBox*)GetDlgItem(IDC_LIST_result);
	set_dialog_list_time();
	t.Format("      freq[kHz]\t baud[ksps]");
	pLB->AddString(t);
	int i;
	for(i=0;i<tp_num;i++){
		t.Format("[%.3d]  %.7ld\t %.5ld",i,tp[i].freq,tp[i].baud);
		pLB->AddString(t);
	}

//	set_dialog_list_reset();
//	CString t;
//	CListBox* pLB=(CListBox*)GetDlgItem(IDC_LIST_result);
//	int i;
//	for(i=0;i<tp_num;i++){
//		t.Format("[%.3d] freq=%ld\tbaud=%ld",i,tp[i].freq,tp[i].baud);
//		pLB->AddString(t);
//	}



}

void Cautosearch::set_dialog_list_reset()
{
	CString string;
	CListBox* pLB=(CListBox*)GetDlgItem(IDC_LIST_result);
	while( (pLB-> DeleteString( 0 ))>0 );

}

void Cautosearch::set_dialog_list_finish()
{
	set_dialog_list_reset();
	CString t;
	CListBox* pLB=(CListBox*)GetDlgItem(IDC_LIST_result);
	t.Format(" << finished >>");
	pLB->AddString(t);

}

int Cautosearch::get_elapsed_time()
{
	char   *stopstring="";
	_ftime( &tstruct );
	CString t;
	t.Format( "%.3u", (tstruct.time*1000+tstruct.millitm)-(tstruct_original.time*1000+tstruct_original.millitm));
	return strtol( t, &stopstring,10);
}

void Cautosearch::set_dialog_list_time()
{
	CString t;
	CListBox* pLB=(CListBox*)GetDlgItem(IDC_LIST_result);
	pLB->DeleteString(0);
	pLB->DeleteString(0);
	//	pLB->DeleteString(0);
	//	pLB->InsertString(0,"");

	t.Format(" time=%.3lf[s] (TP=%d)",double(get_elapsed_time())/1000.,tp_num);
	//t.Format(" time=%.3lf[s]",double(get_elapsed_time())/1000.);

	pLB->InsertString(0,t);
	pLB->InsertString(0,"<search result>");
}

//V0.04[061109] [STB0288+ix2410]
void Cautosearch::demod_288_init()
{
	((Cnim*)m_pParent)->demod_288_init();
}

BOOL Cautosearch::check_signal()
{
	return ((Cnim*)m_pParent)->check_signal();
}

BOOL Cautosearch::demod_288_algo()
{
	return ((Cnim*)m_pParent)->demod_288_algo();
}

⌨️ 快捷键说明

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