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

📄 sysinit.cpp

📁 串口可交换程序
💻 CPP
字号:
#include <stdio.h>
#include <io.h>
#include <graphics.h>
#include <fcntl.h>
#include "keydef.h"
#include "global.h"
#include "g_func.h"
#include "freqkey.h"
#include "sweepkey.h"
#include "numkeyp.h"
#include "set7249.h"
#include "display.h"

extern char old_ch_sel;
extern ON_OFF old_a_on_off;
extern ON_OFF old_b_on_off;
extern  char disp_switch;
extern	char	*freq[];
extern char *store_file[];
extern void set_relay(float);
extern int aflag;
extern void graph();
extern void graph1();
extern MDAMAP*mda_map;

void InitFreq();
void InitPower();
void InitSweep();
void InitStatus();
void InitScale();
void InitMarker();
void InitDisp();
void InitFormat();
void InitAvg();
void InitChab();
void InitStore();
void InitSystem();
void LoadVerify();

void InitOthers();
void LoadData(int i);

void init_vars()
{
	char i,j;
	FILE *fp;
	if((fp=fopen("datafile.dat","rb"))==NULL){
		goto set_mem;
	}
	fread(_freq,sizeof(_FREQ),2,fp);
	fread(_power,sizeof(_POWER),2,fp);
	fread(_sweep,sizeof(_SWEEP),2,fp);
	fread(_chab,sizeof(_CHAB),2,fp);
	fread(_format,sizeof(_FORMAT),2,fp);
	fread(_avg,sizeof(_AVG),2,fp);
	fread(_status,sizeof(_STATUS),2,fp);
	fread(&_system,sizeof(_SYSTEM),1,fp);
	fread(&ch_sel,sizeof(char),1,fp);
	fread(&alternative,sizeof(char),1,fp);
	fread(&amp_on_off,sizeof(char),1,fp);
	fclose(fp);
	for(i=0;i<2;i++)
		if( _freq[i].start_freq<100000||_freq[i].start_freq>50000000
		  ||_freq[i].end_freq<100000||_freq[i].end_freq>50000000
		  ||_freq[i].dot_freq<100000||_freq[i].dot_freq>50000000
		  ||_freq[i].end_freq-_freq[i].start_freq != _freq[i].freq_width
		  ||(_freq[i].end_freq+_freq[i].start_freq)/2 != _freq[i].center_freq
		  ||_power[i].output_power<-70||_power[i].output_power>13
		  ||_power[i].start_power<-70||_power[i].start_power>13
		  ||_power[i].end_power<-70||_power[i].end_power>13
		  ||(_power[i].flag!=ON&&_power[i].flag!=OFF)
		  ||_sweep[i].sweep_time<50||_sweep[i].sweep_time>100000
		  ||(_status[i].sweep_points!=51&&_status[i].sweep_points!=101&&_status[i].sweep_points!=251&&_status[i].sweep_points!=501)
		  ||(_status[i].trig_way!=0&&_status[i].trig_way!=1)
		  ||(_chab[i].on_off!=ON&&_chab[i].on_off!=OFF)
		  ||(_chab[i].flag!=0&&_chab[i].flag!=1)
		  ||(ch_sel!=0&&ch_sel!=1)
		  ||(alternative!=0&&alternative!=1)
		  ||(amp_on_off!=ON&&amp_on_off!=OFF))
			goto set_mem;
	if((fp=fopen("Scale.dat","rb"))==NULL){
		goto set_scale;
	}
	fread(_scale,sizeof(_SCALE),2,fp);
	fclose(fp);
	for(i=0;i<2;i++)
		if(_scale[i].scale_unit==0||
		   _scale[i].ref_pos<0||_scale[i].ref_pos>10||
		   _scale[i].ref_vol<-99||_scale[i].ref_vol>99)
			goto set_mem;
	if((fp=fopen("Marker.dat","rb"))==NULL){
		goto set_marker;
	}
	fread(_marker,sizeof(_MARKER),2,fp);
	fclose(fp);
	for(i=0;i<2;i++){
		for(j=0;j<8;j++)
			if(_marker[i].mark[j].freq==0)
				goto set_mem;
		for(j=0;j<3;j++)
			if(_marker[i].marker_fun[j].power<-70||_marker[i].marker_fun[j].power>-0.01)
				goto set_mem;
		if(_marker[i].cen_mkr.set_attenuate>-0.01
			||_marker[i].max_mkr.freq < _freq[i].start_freq
			||_marker[i].max_mkr.freq > _freq[i].end_freq
			||_marker[i].min_mkr.freq < _freq[i].start_freq
			||_marker[i].min_mkr.freq > _freq[i].end_freq
			||_marker[i].cen_mkr.freq < _freq[i].start_freq
			||_marker[i].cen_mkr.freq > _freq[i].end_freq)
			goto set_mem;
	}
	if((fp=fopen("Store.inf","rb"))!=NULL){
		fread(&_store,sizeof(_STORE),1,fp);
		fclose(fp);
	}
	else
		InitStore();
	if((fp=fopen("Display.dat","rb"))==NULL){
		goto set_disp;
	}
	fread(&_disp,sizeof(_DISP),1,fp);
	fread(&old_ch_sel,sizeof(char),1,fp);
	fread(&old_a_on_off,sizeof(ON_OFF),1,fp);
	fread(&old_b_on_off,sizeof(ON_OFF),1,fp);
	fclose(fp);
	if(_disp.cen_freq==0)
		goto set_mem;
	if(_freq[0].start_freq==0||_freq[1].start_freq==0
		||_freq[0].end_freq==0||_freq[1].end_freq==0
		||_freq[0].dot_freq==0||_freq[1].dot_freq==0
		||_sweep[0].sweep_time==0||_sweep[1].sweep_time==0
		||_status[0].sweep_points==0||_status[1].sweep_points==0){
		goto set_mem;
	}
	goto exit_sysinit;
set_mem:
	InitFreq();
	InitPower();
	InitSweep();
	InitStatus();
	InitFormat();
	InitAvg();
	InitChab();
	InitStore();
	InitSystem();
	amp_on_off = OFF;
set_scale:
	InitScale();
set_marker:
	InitMarker();
set_disp:
	InitDisp();

exit_sysinit:
//set attenuaton
	for(i=0;i<10;i++){
		if((fp=fopen(store_file[i],"r")) != NULL){
			fclose(fp);
			_store.mem_info[i] = 1;
		}
	}
	_isverify = FALSE;
	InitOthers();
	if(alternative){
		if(_chab[0].on_off==OFF)
			LoadData(0);
		if(_chab[1].on_off==OFF)
			LoadData(1);
	}
	if(amp_on_off == OFF)
		outport(0x370,cmd_word&=0xefff);
	else
		outport(0x370,cmd_word|=0x1000);
	set_relay(_power[ch_sel].output_power);

	for(i=0;i<2;i++){
		_lst_frqkey[i][0]=0;			//初始化
		_lst_frqkey[i][1]=0;
		_lst_pwrkeys[i][0]=0;
		_lst_pwrkeys[i][1]=0;
		_lst_sclkey[i][0]=0;
		_lst_sclkey[i][1]=0;
		_lst_chkey[i][0]=0;
		_lst_chkey[i][1]=0;
		_lst_mkrkeys[i][0]=0;
		_lst_mkrkeys[i][1]=0;
		_lst_fmtkey[i]=0;
		_lst_avgkey[i]=0;
		_lst_strkey[i]=0;
		_lst_statkey[i][0]=0;
		_lst_statkey[i][1]=0;
		_lst_statkey[i][2]=0;
		_lst_meakey[i][0]=0;
		_lst_meakey[i][1]=0;
	}
	_lst_dspkey[0]=0;
	_lst_dspkey[1]=0;
	_lst_syskey[0]=0;
	_lst_syskey[1]=0;

//	refresh_up();
//	update_cs_f();
	chs = ch_sel;
//	if(_chab[0].on_off==OFF&&_chab[1].on_off==OFF)
//		_chab[ch_sel].on_off = ON;
//	_keyid=FREQ;
//	freq_hardkey();
	if(_disp.disp_way == 0){
		refresh_up();
		graph();
		if(_sweep[ch_sel].flag1 == 1){
			_keyid=SWEEP;
			refr_ln3();
			sweep_hardkey();
			_sweep[ch_sel].flag1 = 0;
			sweep_softkey(F2);
		}
		else{
			_keyid=FREQ;
			freq_hardkey();
			if(_freq[ch_sel].is_dot_freq)
				freq_softkey(F5);
		}
	}
	else{
		_keyid=DISPLAY;
		display_hardkey();
		if(_disp.disp_way==1){
			mda_map->Realloc(-1);
			draw_form();
			for(i=0;i<17;i++){
				wri_form(i);
			}
			display_softkey(F2);
			disp_switch = 1;
		}
		else if(_disp.disp_way==2){
//		printf("a");delay(3000);
			mda_map->Realloc(320);
			mda_map->ScreenClear();
			graph1();
			refresh_up();
			vision();
			display_softkey(F3);
			refr_disp();
			disp_switch = 2;
		}
//		delay(4000);
	}
}

void InitFreq()
{
	for(int i=0;i<2;i++){
		_freq[i].start_freq=100000;	//频率初始化
		_freq[i].end_freq=50000000;
		_freq[i].is_dot_freq=FALSE;
		_freq[i].dot_freq=50000000;
		_freq[i].resolve=HZ;
	}
	update_cs_f();
	ch_sel = 1-ch_sel;
	update_cs_f();
	ch_sel = 1-ch_sel;
}
void InitPower()
{
	for(int i=0;i<2;i++){
		_power[i].output_power=0;	//功率初始化
		_power[i].power_sweep=OFF;
		_power[i].start_power=0.0;
		_power[i].end_power=0.0;
		_power[i].flag=ON;		//射频功率置“开”
	}
}
void InitSweep()
{
	for(int i=0;i<2;i++){
		_sweep[i].sweep_time = 50;	//扫描初始化,扫描时间50MS
		_sweep[i].flag1 = 0;		//扫描方式,自动
		_sweep[i].swp_pc = 0;		//扫描点数
	}
	alternative = OFF;		//交替扫描,关
}
void InitStatus()
{
	for(int i=0;i<2;i++){
		_status[i].sweep_points = 501;
		_status[i].trig_way = 0;
		_status[i].keep_start = 0;
	}
}
void InitScale()
{
	for(int i=0;i<2;i++){
		_scale[i].scale_unit = 10;	//刻度初始化
		_scale[i].ref_vol = 0;
		_scale[i].ref_pos = 5;
	}
}
void InitDisp()
{
	_disp.cen_freq = 455000;
	_disp.freq_diff = 2000;
	_disp.loss = 4;
	_disp.ripple_bw = 7500;
	_disp.ripple = 4;
	_disp.flag1=0;
	_disp.db_bw1.attenuation = -6;
	_disp.db_bw1.freq.freq_l.above_below = 0;
	_disp.db_bw1.freq.freq_l.freq = 440000;
	_disp.db_bw1.freq.freq_r.above_below = 1;
	_disp.db_bw1.freq.freq_r.freq = 460000;
	_disp.db_bw1.bandwidth.above_below = 1;
	_disp.db_bw1.bandwidth.freq = 20000;

	_disp.db_bw2.attenuation = -50;
	_disp.db_bw2.freq.freq_l.above_below = 1;
	_disp.db_bw2.freq.freq_l.freq = 430000;
	_disp.db_bw2.freq.freq_r.above_below = 0;
	_disp.db_bw2.freq.freq_r.freq = 470000;
	_disp.db_bw2.bandwidth.above_below = 0;
	_disp.db_bw2.bandwidth.freq = 40000;

	_disp.sb_att.freq_offset = 100000;
	_disp.sb_att.attenuation = -45;
	_disp.disp_way=0;
	_disp.time_disp=0;
	for(int i=0;i<8;i++)
	_disp.active[i]=OFF;

}
void InitFormat()
{
	for(int i=0;i<2;i++){
//		_format[i].flag1=0;
		_format[i].flag2=0;
	}
}
void InitAvg()
{
	for(int i=0;i<2;i++){
		_avg[i].on_off=0;	//初始化平均,平均置关
		_avg[i].avg_times=2;
	}
}
void InitMarker()
{
	int t;
	for(int i=0;i<2;i++){
		for(t=0;t<8;t++)		//频标初始化
		{
			_marker[i].mark[t].freq=1000000;
			_marker[i].mark[t].on_off=OFF;
		}
		for(t=0;t<3;t++)
		{
			_marker[i].marker_fun[t].freq[0]=1000000;
			_marker[i].marker_fun[t].freq[1]=1000000;
			_marker[i].marker_fun[t].on_off=OFF;
		}
		_marker[i].marker_fun[0].power=-3.0;
		_marker[i].marker_fun[1].power=-6.0;
		_marker[i].marker_fun[2].power=-30.0;

		_marker[i].marker_follow_flag=1;

		_marker[i].max_mkr.on_off = OFF;
		_marker[i].min_mkr.on_off = OFF;
		_marker[i].cen_mkr.on_off = OFF;
		_marker[i].cen_mkr.set_attenuate=-6;
		_marker[i].max_mkr.freq = _freq[i].center_freq;
		_marker[i].min_mkr.freq = _freq[i].center_freq;
		_marker[i].cen_mkr.freq = _freq[i].center_freq;
	}
}
void InitStore()
{
//	for(int i=0;i<10;i++)
//		_store.mem_info[i]=0;
//	_store.is_store = FALSE;
//	_store.is_recall = FALSE;
	_store.mem_sel = 0;
}
void InitChab()
{
	for(int i=0;i<2;i++){
		_chab[i].bandwidth = 1000;
		_chab[i].flag = 0;
	}
	_chab[0].on_off=ON;
	_chab[1].on_off=OFF;
	ch_sel = chs = 0;
}
void InitSystem()
{
//	_system.gpib_addr = 0;
	_system.colora=GREEN;
	_system.colorb=MAGENTA;
}
void InitOthers()
{
	int i;

	_softkeyid1=0;
	_softkeyid2=0;
	_softkeyid3=0;

	for(i=0;i<20;i++)
		number_keys[i]=0;
	index=0;
	num_unit = 0;
	sign = 1;
	
	stat_xch = 0;
	
	cmd_word = 0x142;
	for(i=0;i<501;i++){
		y_a[i] = y_b[i] = y_a_verify[i] = y_b_verify[i] = 0;
	}
//	LoadVerify();
	x_map = y_map = 0;
	init_table();
/*
	_disp.active1 = TRUE;
	_disp.active2 = TRUE;
	_disp.active3 = TRUE;
	_disp.active4 = TRUE;
	_disp.active5 = TRUE;
	_disp.active6 = TRUE;
	_disp.active7 = TRUE;
	_disp.active8 = TRUE;
	_disp.active9 = TRUE;
*/
}
void LoadData(int i)
{
	FILE *fp;
	if(i==0) {
		if((fp = fopen("chadata.dat","rb+"))==NULL){
			return;
		}
		fread(y_a,sizeof(int),_status[0].sweep_points,fp);
		fclose(fp);
	}
	else if(i==1) {
		if((fp = fopen("chbdata.dat","rb+"))==NULL){
			return;
		}
		fread(y_b,sizeof(int),_status[1].sweep_points,fp);
		fclose(fp);
	}
}
void LoadVerify()
{
	FILE* fp;
	if((fp = fopen("verify.dat","rb"))==NULL){
		return;
	}
	fread(y_a_verify,sizeof(int),_status[0].sweep_points,fp);
	fread(y_b_verify,sizeof(int),_status[1].sweep_points,fp);
	fclose(fp);
}

⌨️ 快捷键说明

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