📄 sysinit.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(&_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&&_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 + -