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

📄 winclass.cpp

📁 基于PC104平台
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//       File name winclass.cpp
//         Defined all functions used by interface
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "winclass.h"
extern WORD CardStatusYx;
extern CWindows win;
extern BOOLEAN ResetState;
extern INT32U SecuCode;
extern INT32U AccessCode;
#define POSITEM(x) x+1
extern BOOLEAN SecuCheck();
extern void Watchdog();
extern void ClearWatchdog();
extern void PC_DispClrScr(INT8U color);
extern void PC_DispStr(INT8U x, INT8U y, INT8U *s, INT8U color);
extern void PC_DispClrLine(INT8U y, INT8U color);
extern void PC_DispWindow(INT8U schar, INT8U x1, INT8U y1, INT8U width, INT8U len, INT8U color, BOOLEAN shadow, INT8U shcolor, BYTE Frame, BYTE fmcolor);
extern void PC_DispChar(INT8U x, INT8U y, INT8U c, INT8U color);
extern void PC_DispGetRegion(INT8U *s, INT8U x, INT8U y, INT8U width, INT8U len);
extern void PC_DispPutRegion(INT8U *s, INT8U x, INT8U y, INT8U width, INT8U len);

#define MAINMENUNO 6

INT8U *MenuName[] = {" Setting ", " Infomation ", " Operation ",
							" State ", " Table ", " Help "};
INT8U Menux[] = {0, 9, 21, 32, 39, 46};

INT8U *SubName[10][10] = {
		{" Hardware     ", " YX Info     ", " Manual YK    ", " System State ", " YC Sequence ", " Functions  "},
		{" Port         ", " YC Info     ", " Modify Time  ", " Port Message ", " YM Sequence ", " Keys       "},
		{" Sample Data  ", " YM Info     ", " System Reset ", "              ", " Protect YX  ", " Options    "},
		{" YK Keep Time ", " Running Log ", "              ", "              ", " YC Define   ", " Infomation "},
		{"              ", " YXBW Log    ", "              ", "              ", " YM Define   ", " Opreation  "},
		{"              ", " SOE Log     ", "              ", "              ", " YK Define   ", " State      "},
		{"              ", "             ", "              ", "              ", "             ", " Table      "}};

INT8U SubNo[] = {5,6,3,2,6,7};
INT8U SubWidth[] = {14,13,14,14,13,12};

void disprbuf(INT8U data, INT8U portno)
{
	if (win.message_port_no == portno) {
		message_buf.rbuff[message_buf.rnext] = data;
		message_buf.rnext++;
		if (message_buf.rnext >= message_buf.rsize)
			message_buf.rnext = 0;
		message_buf.rcount++;
		if (message_buf.rcount > message_buf.rsize) {
			message_buf.rcount = message_buf.rsize;
			message_buf.rstart++;
			if (message_buf.rstart >= message_buf.rsize)
				message_buf.rstart = 0;
		}//if(=message_buf[portno].rcount>=message_buf[portno].rsize)
	}
}//void disprbuf(BYTE data,BYTE portno)
////////////////////////////////////////////////////////////////////////////////////////////////////////
void disptbuf(INT8U data, INT8U portno)
{
	if (win.message_port_no == portno) {
		message_buf.tbuff[message_buf.tnext] = data;
		message_buf.tnext++;
		if (message_buf.tnext >= message_buf.tsize)
			message_buf.tnext = 0;
		message_buf.tcount++;
		if (message_buf.tcount > message_buf.tsize) {
			message_buf.tcount = message_buf.tsize;
			message_buf.tstart++;
			if (message_buf.tstart >= message_buf.tsize)
				message_buf.tstart = 0;
		}//if(message_buf[portno].tcount>message_buf[portno].tsize)
	}
}//void disptbuf(BYTE data,BYTE portno)

void CWindows::initial()
{
	FILE *fp;
	char s[40];
	mainmenuno = oldmainmenuno = 0x00;            //set main menu item no to the first
	itemmenuno = olditemmenuno = 0x00;            //set sub menu item no to the first
	item_flag=FALSE;        //if a menu is opened
	window_flag=FALSE;      //if a window is opened
	help_window_flag=FALSE; //if a help window is opened
	check_time.checktimeflag=FALSE;
	cursor_flag=FALSE;     //if cursor on
	pageno = pagelineno = pagedotno = 0;
	keyin_buf.lenlimit=3; //ggg 11.23
	message_port_no=0x00;
	message_pause_flag=FALSE;
	acstandard_flag=FALSE; //ac_standarding flag

	displaymode=FALSE;   //for display message :: display with check(FALSE) without(TRUE)

  if((fp=fopen("hardset.par","rb"))==NULL)
  {
//	sprintf(s,"Cannot open file hardset.par !\n");
//	PC_DispStr(getx(),gety(),s,BLUE << 4 | LIGHTRED);
	cprintf(s,"Cannot open file hardset.par !\n");
	return ;
  }//if((fp=fopen("hardset.par","rb"))==NULL)
  fread(&hardwareset,sizeof(struct hardset_t),7,fp);
  fclose(fp);
//ggg set_addr_intno
	hardwareset[0].address = 0x280;     //moxa1
	hardwareset[1].address = 0x340;     //moxa2 0x230;
	hardwareset[2].address = 0x2d0;     //ai
	hardwareset[3].address = 0x300;     //ad
	hardwareset[0].intno = 12;
	hardwareset[1].intno = 15;
	hardwareset[3].intno = 7;
//ggg set_addr_intno
	if ((fp = fopen("portset.par", "rb")) == NULL) {
		MessageBox("Can't open file portset.par !");
		return;
	}//if((fp=fopen("portset.par","rb"))==NULL)
	fread(&port_set,sizeof(struct portset_t),10,fp);
	fclose(fp);

	if ((fp = fopen("access.par", "rb")) == NULL) {
		MessageBox("Can't open file access.par !");
		return;
	}//if((=fopen("portset.par","rb"))==NULL)
	fread(&AccessCode,sizeof(INT32U),1,fp);
	fclose(fp);

	if ((fp = fopen("datasour.par", "rb")) == NULL) {
		MessageBox("Can't open file datasour.par !");
		return;
	}//if((fp=fopen("datasour.par","rb"))==NULL)
	fread(&datasource,sizeof(struct datasource_t),1,fp);
	fclose(fp);

	if ((fp = fopen("yktime.par", "rb")) == NULL) {
		MessageBox("Can't open file yktime.par !");
		return;
	}//if((fp=fopen("yktime.par","rb"))==NULL)
	fread(&yk_time,sizeof(yk_time),1,fp);
	fclose(fp);

	if ((fp = fopen("yxcompre.par", "rb")) == NULL) {
		MessageBox("Cannot open file yxcompre.par !\n");
		return;
	}//if((fp=fopen("yxcompre.par","rb"))==NULL)

	fread(&yx_compress,sizeof(yx_compress),1,fp);
	fclose(fp);

	if ((fp = fopen("ycsequen.par", "rb")) == NULL) {
		MessageBox("Can't open file ycsequen.par !");
		return;
	}//if((fp=fopen("ycsequen.par","rb"))==NULL)
	fread(&yc_sequence,sizeof(yc_sequence),1,fp);
	fclose(fp);

	if ((fp = fopen("ymsequen.par", "rb")) == NULL) {
		MessageBox("Can't open file ymsequen.par !");
		return;
	}//if((fp=fopen("ymsequen.par","rb"))==NULL)
	fread(&ym_sequence,sizeof(ym_sequence),1,fp);
	fclose(fp);

	if ((fp = fopen("protyx.par", "rb")) == NULL) {
		MessageBox("Cann't open file protyx.par !");
		return;
	}//if((fp=fopen("protyx.par","rb"))==NULL)
	fread(&protect_yx,sizeof(protect_yx),1,fp);
	fclose(fp);

	if ((fp = fopen("ycdefine.par", "rb")) == NULL) {
		MessageBox("Can't open file ycdefine.par !");
		return;
	}//if((fp=fopen("ycdefine.par","rb"))==NULL)
	fread(&yc_define,sizeof(yc_define),1,fp);
	fclose(fp);

	if ((fp = fopen("ymdefine.par", "rb")) == NULL) {
		MessageBox("Can't open file ymdefine.par !");
		return;
	}//if((fp=fopen("ymdefine.par","rb"))==NULL)
	fread(&ym_define,sizeof(ym_define),1,fp);
	fclose(fp);

	if ((fp = fopen("yxinfo.par", "rb")) == NULL) {
		MessageBox("Can't open file yxinfo.par !");
		return;
	}//if((fp=fopen("yxinfo.par","rb"))==NULL)
	fread(&yx_info,sizeof(struct yx_info_t),1,fp);
	fclose(fp);

	if ((fp = fopen("ycinfo.par", "rb")) == NULL) {
		MessageBox("Can't open file ycinfo.par !");
		return;
	}//if((fp=fopen("ycinfo.par","rb"))==NULL)
	fread(&yc_info,sizeof(struct yc_info_t),1,fp);
	fclose(fp);

	if ((fp = fopen("yminfo.par", "rb")) == NULL) {
		MessageBox("Can't open file yminfo.par !");
		return;
	}//if((fp=fopen("yminfo.par","rb"))==NULL)
	fread(&ym_info,sizeof(struct ym_info_t),1,fp);
	fclose(fp);

	if ((fp = fopen("password.par", "rb")) == NULL)	{
		MessageBox("Can't open file password.par !");
		return;
	}//if((fp=fopen("password.par","rb"))==NULL)
	fread(&password,sizeof(password),1,fp);
	fclose(fp);

	if ((fp = fopen("device.par", "rb")) == NULL) {
		MessageBox("Can't open file device.par !");
		return ;
	}
	fread(&comyk_tbl, sizeof(comyk_tbl), 1, fp);
	fclose(fp);
}

void CWindows::DrawBackGround()
{
	PC_DispWindow('

⌨️ 快捷键说明

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