📄 keyproce.cpp
字号:
#include <graphics.h>
#include <conio.h>
#include <ctype.h>
#include <dos.h>
#include <assert.h>
#include <bios.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <stdio.h>
#include "g_func.h"
#include "keydef.h"
#include "global.h"
#include "cursor.h"
#include "numkeyp.h"
#include "updown.h"
#include "keyproce.h"
#include "powerkey.h"
#include "marker.h"
#include "freqkey.h"
#include "measkey.h"
#include "store.h"
#include "verify.h"
#include "average.h"
#include "ch.h"
#include "sweepkey.h"
#include "status.h"
#include "scale.h"
#include "display.h"
#include "format.h"
#include "system.h"
//#include "keylink.h"
extern char*sweep_t[];
extern char*above_or_below[];
extern char*store_file[10];
//extern KeyLink *keylink;
BOOL _sys_exit=FALSE;
BOOL _sys_Reset=FALSE;
BOOL KeyBusy = FALSE;
KEY lastkey;
//void key_process(KEY key)
void key_process()
{
// if(keylink->IsEmpty())
// return;
int key;// = keylink->GetKey();
char counts=1;
// if((key = keylink->GetKey())==0)
// return;
// if(!StoreKeyEnable && _keyid == STORE && _softkeyid != 0 && key != F6){
// keylink->AddKey(key);
// return;
// }
if(_bios_keybrd(_KEYBRD_READY)){
key = _bios_keybrd(_KEYBRD_READ);
if(key==0x4800||key==0x5000||key==0x4d00||key==0x4b00){
counts=1;
while(_bios_keybrd(_KEYBRD_READY)){
if(key == _bios_keybrd(_KEYBRD_READ))
counts++;
else
break;
}
}
if(key & 0x00ff){
key &= 0x00ff;
key = tolower(key);
}
}
else if(inportb(0x2fd) & 0x01){
key = inportb(0x2f8);
// outportb(0x2fd,0);
if(key >= 1 && key <= 7){
key = (0x3a+key)<<8;
}
if(key==0x0b)
key= 0x3b00;
else if(key==0x02)
key= 0x3c00;
else if(key==0x03)
key= 0x3d00;
else if(key==0x04)
key= 0x3e00;
else if(key==0x05)
key= 0x3f00;
else if(key==0x06)
key= 0x4000;
else if(key==0x07)
key= 0x4100;
else if(key==0x0a)
key= DOWN;
else if(key==0x09)
key= UP;
else if(key==0x11){
BYTE a[3000];
int index,i,len;
if(alternative==OFF&&ch_sel==0){
index=0;
BYTE *pa=(BYTE*)&y_a[0];
BYTE *pf=(BYTE*)&_freq[0];
BYTE *pt=(BYTE*)&_status[0];
BYTE *pp=(BYTE*)&_power[0];
BYTE *ps=(BYTE*)&_sweep[0];
BYTE *pl=(BYTE*)&_scale[0];
BYTE *pab=(BYTE*)&_chab[0];
BYTE *pm=(BYTE*)&_marker[0];
BYTE *py=(BYTE*)&_system;
index+=2;
a[index++]=(BYTE)alternative;
a[index++]=(BYTE)(alternative>>8);
a[index++]=(BYTE)ch_sel;
a[index++]=(BYTE)(ch_sel>>8);
for(i=0;i<sizeof(_STATUS);i++)
a[index++]=*(pt++);
for(i=0;i<_status[ch_sel].sweep_points * 2;i++)
a[index++]=*(pa++);
for(i=0;i<sizeof(_FREQ);i++)
a[index++]=*(pf++);
for(i=0;i<sizeof(_POWER);i++)
a[index++]=*(pp++);
for(i=0;i<sizeof(_SWEEP);i++)
a[index++]=*(ps++);
for(i=0;i<sizeof(_SCALE);i++)
a[index++]=*(pl++);
for(i=0;i<sizeof(_CHAB);i++)
a[index++]=*(pab++);
for(i=0;i<sizeof(_MARKER);i++)
a[index++]=*(pm++);
for(i=0;i<sizeof(_SYSTEM);i++)
a[index++]=*(py++);
len=index;
a[0]=len&0x0ff;
a[1]=(BYTE)(len>>8);
send_ch(a,len);
}
else if(alternative==OFF&&ch_sel==1){
// BYTE a[2000];
BYTE *pab=(BYTE*)&y_b[0];
BYTE *pfb=(BYTE*)&_freq[1];
BYTE *ptb=(BYTE*)&_status[1];
BYTE *ppb=(BYTE*)&_power[1];
BYTE *psb=(BYTE*)&_sweep[1];
BYTE *plb=(BYTE*)&_scale[1];
BYTE *pabb=(BYTE*)&_chab[1];
BYTE *pmb=(BYTE*)&_marker[1];
BYTE *pyb=(BYTE*)&_system;
// int ,i,len;
index=0;
index+=2;
a[index++]=(BYTE)alternative;
a[index++]=(BYTE)(alternative>>8);
a[index++]=(BYTE)ch_sel;
a[index++]=(BYTE)(ch_sel>>8);
for(i=0;i<sizeof(_STATUS);i++)
a[index++]=*(ptb++);
for(i=0;i<_status[ch_sel].sweep_points * 2;i++)
a[index++]=*(pab++);
for(i=0;i<sizeof(_FREQ);i++)
a[index++]=*(pfb++);
for(i=0;i<sizeof(_POWER);i++)
a[index++]=*(ppb++);
for(i=0;i<sizeof(_SWEEP);i++)
a[index++]=*(psb++);
for(i=0;i<sizeof(_SCALE);i++)
a[index++]=*(plb++);
for(i=0;i<sizeof(_CHAB);i++)
a[index++]=*(pabb++);
for(i=0;i<sizeof(_MARKER);i++)
a[index++]=*(pmb++);
for(i=0;i<sizeof(_SYSTEM);i++)
a[index++]=*(pyb++);
len=index;
a[0]=len&0x0ff;
a[1]=(BYTE)(len>>8);
send_ch(a,len);
}
else if(alternative==ON){
index=0;
BYTE *pa=(BYTE*)&y_a[0];
BYTE *pf=(BYTE*)&_freq[0];
BYTE *pt=(BYTE*)&_status[0];
BYTE *pp=(BYTE*)&_power[0];
BYTE *ps=(BYTE*)&_sweep[0];
BYTE *pl=(BYTE*)&_scale[0];
BYTE *pab=(BYTE*)&_chab[0];
BYTE *pm=(BYTE*)&_marker[0];
BYTE *py=(BYTE*)&_system;
index+=2;
a[index++]=(BYTE)alternative;
a[index++]=(BYTE)(alternative>>8);
a[index++]=(BYTE)ch_sel;
a[index++]=(BYTE)(ch_sel>>8);
for(i=0;i<sizeof(_STATUS);i++)
a[index++]=*(pt++);
for(i=0;i<_status[0].sweep_points * 2;i++)
a[index++]=*(pa++);
for(i=0;i<sizeof(_FREQ);i++)
a[index++]=*(pf++);
for(i=0;i<sizeof(_POWER);i++)
a[index++]=*(pp++);
for(i=0;i<sizeof(_SWEEP);i++)
a[index++]=*(ps++);
for(i=0;i<sizeof(_SCALE);i++)
a[index++]=*(pl++);
for(i=0;i<sizeof(_CHAB);i++)
a[index++]=*(pab++);
for(i=0;i<sizeof(_MARKER);i++)
a[index++]=*(pm++);
for(i=0;i<sizeof(_SYSTEM);i++)
a[index++]=*(py++);
// len=index;
// a[0]=len&0x0ff;
// a[1]=(BYTE)(len>>8);
// send_ch(a,len);
// else if(alternative==OFF&&ch_sel==1){
// BYTE a[2000];
BYTE *pa_b=(BYTE*)&y_b[0];
BYTE *pfb=(BYTE*)&_freq[1];
BYTE *ptb=(BYTE*)&_status[1];
BYTE *ppb=(BYTE*)&_power[1];
BYTE *psb=(BYTE*)&_sweep[1];
BYTE *plb=(BYTE*)&_scale[1];
BYTE *pabb=(BYTE*)&_chab[1];
BYTE *pmb=(BYTE*)&_marker[1];
BYTE *pyb=(BYTE*)&_system;
// int ,i,len;
// index=0;
// index+=2;
// a[index++]=(BYTE)alternative;
// a[index++]=(BYTE)(alternative>>8);
// a[index++]=(BYTE)ch_sel;
// a[index++]=(BYTE)(ch_sel>>8);
for(i=0;i<sizeof(_STATUS);i++)
a[index++]=*(ptb++);
for(i=0;i<_status[1].sweep_points * 2;i++)
a[index++]=*(pa_b++);
for(i=0;i<sizeof(_FREQ);i++)
a[index++]=*(pfb++);
for(i=0;i<sizeof(_POWER);i++)
a[index++]=*(ppb++);
for(i=0;i<sizeof(_SWEEP);i++)
a[index++]=*(psb++);
for(i=0;i<sizeof(_SCALE);i++)
a[index++]=*(plb++);
for(i=0;i<sizeof(_CHAB);i++)
a[index++]=*(pabb++);
for(i=0;i<sizeof(_MARKER);i++)
a[index++]=*(pmb++);
for(i=0;i<sizeof(_SYSTEM);i++)
a[index++]=*(pyb++);
len=index;
a[0]=len&0x0ff;
a[1]=(BYTE)(len>>8);
send_ch(a,len);
}
}
}
else
return;
FILE *fp;
if(key=='x'|key=='X')
_sys_exit=1;
else if (key==0x1b){
// if((fp=fopen("datafile.dat","r"))!=NULL)
remove("datafile.dat");
// if((fp=fopen("scale.dat","r"))!=NULL)
remove("scale.dat");
// if((fp=fopen("marker.dat","r"))!=NULL)
remove("marker.dat");
// if((fp=fopen("display.dat","r"))!=NULL)
remove("display.dat");
// for(int i=0;i<10;i++)
// remove(store_file[i]);
_sys_Reset=1;
}
else
{
if(key=='f'|key=='p'|key=='s'|key=='t'|key=='r'|key=='y'|key=='u'|key=='o'
|key=='a'|key=='d'|key=='g'|key=='l'|key=='v'|key=='b'|key=='m')
hardkey_process(key);
else if(key==0x3b00|key==0x3c00|key==0x3d00|key==0x3e00|key==0x3f00|key==0x4000|key==0x4100)
softkey_process(key);
else if(key==N0|key==N1|key==N2|key==N3|key==N4|key==N5|key==N6|key==N7
|key==N8|key==N9|key==KHZ|key==MHZ|key==HZ|key==MV|key==DBM
|key=='-'|key==CLR|key=='.' \
|key==LR_L|key==LR_R|key==DOWN|key==UP|key==ENTER|key==CURSOR)
numberkey_process(key,counts);
}
}
void hardkey_process(KEY key)
{
if(_disp.disp_way==1||_disp.disp_way==2||_sweep[ch_sel].flag1==1)
return;
switch(key)
{
case 'u':
case MEASURE: //u
// if(_disp.disp_way==1)
measure_hardkey();
break;
case 'r':
case STORE: //r
// if(_disp.disp_way==1)
store_hardkey();
break;
case 'v':
case VERIFY: //v
// if(_disp.disp_way==1)
verify_hardkey();
break;
case 'g':
case AVERAGE: //g
// if(_disp.disp_way==1)
average_hardkey();
break;
case 'a':
case CHA: //a
// chab_hardkey();
// break;
case 'b':
case CHB: //b
// if(_disp.disp_way==1)
chab_hardkey(key);
break;
case 'f':
case 'F':
case FREQ: //f
// if(_disp.disp_way==1)
freq_hardkey();
break;
case 'P':
case 'p':
case POWER: //p
// if(_disp.disp_way==1)
power_hardkey();
break;
case 's':
case SWEEP: //s
// if(_disp.disp_way==1)
sweep_hardkey();
break;
case 't':
case RECALL: //t
// if(_disp.disp_way==1)
recall_hardkey();
break;
case 'l':
case SCALE: //l
// if(_disp.disp_way==1)
scale_hardkey();
break;
case 'm':
case MARKER: //m
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -