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

📄 keyproce.cpp

📁 串口可交换程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#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 + -