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

📄 scale.cpp

📁 串口可交换程序
💻 CPP
字号:
#include <graphics.h>
#include <stdio.h>
#include <math.h>
#include <string.h>

#include "cursor.h"
#include "keydef.h"
#include "g_func.h"
#include "global.h"
#include "numkeyp.h"
#include "scale.h"
#include "updown.h"

const char *scale[]={"刻   度","自动刻度","单位/格>>","参考电平","参考位置","","",""};
const char *scale2[]={"单位/格","0.1/格","0.2/格","0.5/格","  1/格","  2/格","  5/格"," 10/格"};

void scale_hardkey()
{
	_keyid=SCALE;
	refresh_up();
	if(_lst_sclkey[ch_sel][0]==0)
		_softkeyid=1;
	else
		_softkeyid=_lst_sclkey[ch_sel][0];
	rst_num_mem();
	disp_menu12((char **)scale,7);
	border_scale();
	_softkeyid1=0;
	refresh_updown_scale();
	if(_softkeyid==1||_softkeyid==2){
		digital_en=0;
		curs_flag=0;
	}
	else {
		digital_en=1;
		curs_flag=1;
		if(_softkeyid==3){
			init_cur_vol(_scale[ch_sel].ref_vol);
		}
		else if(_softkeyid==4){
			init_cur_pos();
		}
	}
}
void scale_softkey(KEY key)
{
//	float old_unit;
	switch (key)
	{
	case F1:
		if(_softkeyid==2&&_softkeyid1!=0)
		{
	//		old_unit=_scale[ch_sel].scale_unit;
			_scale[ch_sel].scale_unit=0.1;
			_lst_sclkey[ch_sel][1]=1;
			disp_menu12((char **)scale,7);

			_softkeyid1=0;
			border_scale();
			refresh_updown_scale();
			refresh_up();
			scl_xch = TRUE;
		}
		else
		{	_softkeyid=1;
			_lst_sclkey[ch_sel][0]=1;
			_softkeyid1=0;
			curs_flag=0;
			border_scale();
			AutoScale();
			scl_xch = TRUE;
			refresh_up();
			refresh_updown_scale();
		}
		digital_en=0;
		break;
	case F2:
		if(_softkeyid==2&&_softkeyid1!=0)
		{
  //			old_unit=_scale[ch_sel].scale_unit;
			_scale[ch_sel].scale_unit=0.2;
			_lst_sclkey[ch_sel][1]=2;
			disp_menu12((char **)scale,7);

			_softkeyid1=0;
			border_scale();
			refresh_updown_scale();
			refresh_up();
			scl_xch = TRUE;
		}
		else
		{	_softkeyid=2;
			_lst_sclkey[ch_sel][0]=2;
//			if(_lst_sclkey[ch_sel][1]==0){
				if(fabs(_scale[ch_sel].scale_unit - 0.1) < 0.01)
					_softkeyid1=21;
				else if(fabs(_scale[ch_sel].scale_unit - 0.2) < 0.01)
					_softkeyid1=22;
				else if(fabs(_scale[ch_sel].scale_unit - 0.5) < 0.01)
					_softkeyid1=23;
				else if(fabs(_scale[ch_sel].scale_unit - 1) < 0.01)
					_softkeyid1=24;
				else if(fabs(_scale[ch_sel].scale_unit - 2) < 0.01)
					_softkeyid1=25;
				else if(fabs(_scale[ch_sel].scale_unit - 5) < 0.01)
					_softkeyid1=26;
				else if(fabs(_scale[ch_sel].scale_unit - 10) < 0.01)
					_softkeyid1=27;
				else {
					_scale[ch_sel].scale_unit = 10;
					_softkeyid1=27;
				}
//			}
//			else
//				_softkeyid1=20+_lst_sclkey[ch_sel][1];

			curs_flag=0;
			refresh_updown_scale();
			disp_menu12((char **)scale2,7);
		}
		border_scale();
		digital_en=0;
		break;
	case F3:
		if(_softkeyid==2&&_softkeyid1!=0)
		{
//			old_unit=_scale[ch_sel].scale_unit;
			_scale[ch_sel].scale_unit=0.5;
			_lst_sclkey[ch_sel][1]=3;
			digital_en=0;
			disp_menu12((char **)scale,7);

			_softkeyid1=0;border_scale();
			refresh_updown_scale();
			refresh_up();
			scl_xch = TRUE;
		}
		else
		{
			_softkeyid=3;
			_softkeyid1=0;
			_lst_sclkey[ch_sel][0]=3;
			rst_num_mem();
			digital_en=1;
			refresh_updown_scale();
			init_cur_vol(_scale[ch_sel].ref_vol);
			curs_flag=1;
			border_scale();
		}
		break;
	case F4:
		if(_softkeyid==2&&_softkeyid1!=0)
		{
	 //		old_unit=_scale[ch_sel].scale_unit;
			_scale[ch_sel].scale_unit=1;
			_lst_sclkey[ch_sel][1]=4;
			digital_en=0;
			disp_menu12((char **)scale,7);

			_softkeyid1=0;border_scale();
			refresh_updown_scale();
			refresh_up();
			scl_xch = TRUE;
		}
		else
		{
			_softkeyid=4;
			_softkeyid1=0;
			_lst_sclkey[ch_sel][0]=4;
			rst_num_mem();
			digital_en=1;
			refresh_updown_scale();
			init_cur_pos();
			curs_flag=0;
			border_scale();
		}
		break;
	case F5:
		if(_softkeyid==2)
		{
   //			old_unit=_scale[ch_sel].scale_unit;
			_scale[ch_sel].scale_unit=2;
			_lst_sclkey[ch_sel][1]=5;
			digital_en=0;

			disp_menu12((char **)scale,7);

			_softkeyid1=0;border_scale();
			refresh_up();refresh_updown_scale();
			scl_xch = TRUE;
		}
		break;
	case F6:
		if(_softkeyid==2)
		{	_softkeyid1=26;
 //			old_unit=_scale[ch_sel].scale_unit;
			_scale[ch_sel].scale_unit=5;
			_lst_sclkey[ch_sel][1]=6;
			digital_en=0;
			disp_menu12((char **)scale,7);

			_softkeyid1=0;border_scale();

			refresh_up();refresh_updown_scale();
			scl_xch = TRUE;
		}
		break;
	case F7:
		if(_softkeyid==2)
		{	_softkeyid1=27;
 //			old_unit=_scale[ch_sel].scale_unit;
			_scale[ch_sel].scale_unit=10;
			_lst_sclkey[ch_sel][1]=7;
			digital_en=0;
			disp_menu12((char **)scale,7);

			_softkeyid1=0;border_scale();

			refresh_up();
			refresh_updown_scale();
			scl_xch = TRUE;
			_softkeyid=0;
		}
	default:
		break;
	}
	vision();
}
void refresh_updown_scale()
{
	char msg[20]; 
	int i;
	CLR_LN4;

	if(_softkeyid==1){
		Outchar12(35,462,"自动刻度",TEXTFURLN);
	}
	else if(_softkeyid==2){
		Outchar12(35,462,"单位/格:",TEXTFURLN);
		refr_scl_f2();
	}
	else if(_softkeyid==3){
		Outchar12(35,462,"参考电平:",TEXTFURLN);
		refr_scl_f3();
	}
	else if(_softkeyid==4){
		Outchar12(35,462,"参考位置:",TEXTFURLN);
		refr_scl_f4();
	}
	vision();
}
void border_scale()
{
	erase_smal_border(1);
	for(int i=1;i<=7;i++)
		erase_smal_border(i);
	if(_softkeyid1==0)
		draw_smal_border(_softkeyid);
	else
		draw_smal_border(_softkeyid1-10*_softkeyid);
}
void vision()
{
	int i;
//	char is_under=0;
	char msg[6];
	clear_rect(0,A_LY-5,32,A_RY+15);
	clear_rect(0,A_LY-5,32,A_RY+15);
//从最上面开始向下写
//	float cur_scl=_scale[ch_sel].ref_vol+_scale[ch_sel].scale_unit*(10-_scale[ch_sel].ref_pos);
	int  cur_ch_sel=ch_sel;
	char second=0;
again:
	float cur_scl=_scale[cur_ch_sel].ref_vol+
				_scale[cur_ch_sel].scale_unit*(10-_scale[cur_ch_sel].ref_pos);
	for(i=0;i<=10;i++){
		if(i==10-_scale[cur_ch_sel].ref_pos){
//			is_under=1;
			cur_scl-=_scale[cur_ch_sel].scale_unit;
			continue;
		}
		int int_part=(int)cur_scl;
		float f_part=cur_scl-int_part;
		if(f_part<-0.95){
			int_part-=1;
			f_part=0.0;
		}
//		if(int_part>=100)
		if(cur_scl>=100)
			sprintf(msg,"%d",int_part);
//		else if(int_part<100&&int_part>-10)
		else if(cur_scl<100&&cur_scl>-10+1e-2)
			sprintf(msg,"%.1f",cur_scl);
		else if(f_part>-0.05)// print integer
			sprintf(msg,"%d",int_part);
		else{	//print xiaoshu
			sprintf(msg,"%.1f",f_part);
			msg[0]=msg[2];
			msg[1]=msg[3];
			msg[2]='\0';
		}
		if(cur_ch_sel==0)
			setcolor(_system.colora);
		else
			setcolor(_system.colorb);
//		int i;
		if(strlen(msg)==1){
			msg[4]='\0';
			msg[3]=msg[0];
			msg[2]=' ';
			msg[1]=' ';
			msg[0]=' ';
		}
		else if(strlen(msg)==2){
			msg[4]='\0';
			msg[3]=msg[1];
			msg[2]=msg[0];
			msg[1]=' ';
			msg[0]=' ';
		}
		else if(strlen(msg)==3){
			msg[4]='\0';
			msg[3]=msg[2];
			msg[2]=msg[1];
			msg[1]=msg[0];
			msg[0]=' ';
		}
		disable();
		if(second==1){
			if(_disp.disp_way==0)
				outtextxy(0,A_LY+40*i+10,msg);
			else if(_disp.disp_way==2)
				outtextxy(0,A_LY+32*i+10,msg);

		}
		else{
			if(_disp.disp_way==0)
				outtextxy(0,A_LY+40*i,msg);
			else if(_disp.disp_way==2)
				outtextxy(0,A_LY+32*i,msg);
		}
		cur_scl-=_scale[cur_ch_sel].scale_unit;
	}
	draw_triangle(_scale[cur_ch_sel].ref_pos,second);
	if(alternative==ON&&second==0){
		cur_ch_sel=1-cur_ch_sel;
		second=1;
		goto again;
	}
}
BOOL StoreScale()
{
	disable();
	FILE* fp;
	if((fp = fopen("Scale.dat","wb"))==NULL){
		return FALSE;
	}
	fwrite(_scale,sizeof(_SCALE),2,fp);
	fclose(fp);
	delay(500);
	return TRUE;
}
void AutoScale()
{
	float max = _marker[ch_sel].max_mkr.power;
	float min = _marker[ch_sel].min_mkr.power;
	float diff = max - min;
	if(diff/10 >= 5)
		_scale[ch_sel].scale_unit = 10;
	else if(diff/10 >= 2)
		_scale[ch_sel].scale_unit = 5;
	else if(diff/10 >= 1)
		_scale[ch_sel].scale_unit = 2;
	else if(diff/10 >= 0.5)
		_scale[ch_sel].scale_unit = 1;
	else if(diff/10 >= 0.2)
		_scale[ch_sel].scale_unit = 0.5;
	else if(diff/10 >= 0.1)
		_scale[ch_sel].scale_unit = 0.2;
	else
		_scale[ch_sel].scale_unit = 0.1;
	float cen = (max + min)/2;
//	printf("%.2f %.2f %.2f\n",max,min,cen);
//	if(_chab[ch_sel].flag==0)
//		cen -= _power[ch_sel].output_power;
	_scale[ch_sel].ref_pos = 5;
	_scale[ch_sel].ref_vol = (int)cen;
}

⌨️ 快捷键说明

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