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

📄 setparam.c

📁 本程序是使用CDMA450模块开发的一个无线公话完整程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	XShowComponent(&gTimeSetWnd->wnd.comp);
	
	MoveTo(41, 32);//yu MoveTo(50, 40);
	DrawText((BYTE*)"-", 0, 1);
	MoveTo(70, 32);//yu MoveTo(85, 40);
	DrawText((BYTE*)"-", 0, 1);
	MoveTo(51, 58);//yu MoveTo(60, 72);
	DrawText((BYTE*)":", 0, 1);
	v_WriteLcdBuff();
	
	while (XGetMessage(&msg) != -1)
		XDispatchMessage(&msg);
	
	XDestroyWindow(&gTimeSetWnd->wnd);
	if (1 == gTimeSetWnd->res) {
//		char	timestr[8];
		gTimeSetWnd->year = (WORD)XEditBoxGetValue(&gTimeSetWnd->ebox[0]);
		gTimeSetWnd->mon  = (BYTE)XEditBoxGetValue(&gTimeSetWnd->ebox[1]);
		gTimeSetWnd->day  = (BYTE)XEditBoxGetValue(&gTimeSetWnd->ebox[2]);
		gTimeSetWnd->hour = (BYTE)XEditBoxGetValue(&gTimeSetWnd->ebox[3]);
		gTimeSetWnd->min  = (BYTE)XEditBoxGetValue(&gTimeSetWnd->ebox[4]);
		gTimeSetWnd->sec  = 0;
//		gTimeSetWnd->sec  = (BYTE)XEditBoxGetValue(&gTimeSetWnd->ebox[5]);
		SetSysTime(gTimeSetWnd->hour, gTimeSetWnd->min, gTimeSetWnd->sec);
		SetSysDate(gTimeSetWnd->year, gTimeSetWnd->mon, gTimeSetWnd->day);
		XTipWndShow(TranslateChar("设置成功"),1);
		
//yu		sprintf(timestr, "%02d:%02d", gTimeSetWnd->hour, gTimeSetWnd->min);
//yu		showCurrentTime(timestr);
	}
	
	free(gTimeSetWnd);
	gTimeSetWnd = NULL;
	return 0;
}
#endif
#if 1
typedef struct {
	window_t	wnd;
	editbox_t	ebox[2];
	BYTE		hour;
	BYTE		min;
	BYTE		sec;
	BYTE		pos;
	int			res;
} Alarm_set_t;
static Alarm_set_t	*gAlarmSetWnd;
static int AlarmSetProc(XMSG *msg)
{
	switch (msg->message) {
	case MSG_PAINT:
		EraseRect(&msg->comp->rc);
		break;
	case MSG_KEYDOWN:
		switch (msg->param1) {
		case KEY_D0:
		case KEY_D1:
		case KEY_D2:
		case KEY_D3:
		case KEY_D4:
		case KEY_D5:
		case KEY_D6:
		case KEY_D7:
		case KEY_D8:
		case KEY_D9:
			if (XEditBoxKeyHandle(&gAlarmSetWnd->ebox[gAlarmSetWnd->pos], msg->param1)) {//显示自己处理反白
				gAlarmSetWnd->pos++;
				gAlarmSetWnd->pos %= 2;
				//checkValidDays();//时间有效性判断
				XEditBoxSetActive(&gAlarmSetWnd->ebox[gAlarmSetWnd->pos], ACTIVED);//更新显示框
				XShowComponent(&gAlarmSetWnd->ebox[gAlarmSetWnd->pos].comp);//显示
				v_WriteLcdBuff();//
			}
			break;
		case KEY_MDOWN://yu KEY_UP:
		case KEY_MUP://yu KEY_DOWN:
			XEditBoxSetActive(&gAlarmSetWnd->ebox[gAlarmSetWnd->pos], INACTIVED);
			XShowComponent(&gAlarmSetWnd->ebox[gAlarmSetWnd->pos].comp);
			if (gAlarmSetWnd->pos>0)
				gAlarmSetWnd->pos = 0;
			else
				gAlarmSetWnd->pos = 1;
			//checkValidDays();
			XEditBoxSetActive(&gAlarmSetWnd->ebox[gAlarmSetWnd->pos], ACTIVED);
			XShowComponent(&gAlarmSetWnd->ebox[gAlarmSetWnd->pos].comp);
			v_WriteLcdBuff();
			break;
		case KEY_OK:
			if(0>XEditBoxSetActive(&gAlarmSetWnd->ebox[gAlarmSetWnd->pos], INACTIVED))//YU ADD
				{
				XEditBoxSetActive(&gAlarmSetWnd->ebox[gAlarmSetWnd->pos], ACTIVED);
				XShowComponent(&gAlarmSetWnd->ebox[gAlarmSetWnd->pos].comp);
				v_WriteLcdBuff();
				break;
				}
			gAlarmSetWnd->res = 1;
		case KEY_CANCEL:
			XPostQuitMessage((window_t*)msg->comp);
			break;
		default:
			break;
		}
		break;
	default:
		return XDefaultWindowProc(msg);
	}
	
	return 0;
}
#if 1
static DWORD GetAlarmTim(int AlarID)
{
	DWORD	time;
	time = gDevicePara.AlarmClk[AlarID].hour;
	time = (time<<8) + gDevicePara.AlarmClk[AlarID].min;
	time = (time<<8) + 0;
	return time;
}
static void SetAlarmTime(BYTE hour, BYTE min, BYTE sec,int AlarID)
{
	gDevicePara.AlarmClk[AlarID].hour = (hour&0x1F);
	gDevicePara.AlarmClk[AlarID].min  = (min&0x3F);
	gDevicePara.AlarmClk[AlarID].enFLAG=1;
	Para_Store(&gDevicePara);
	
}
int CmpAlarmTime(BYTE hour, BYTE min, BYTE sec)
{
	if(1==gDevicePara.AlarmClk[0].enFLAG)
	{
		if((gDevicePara.AlarmClk[0].hour == hour)&&\
			(gDevicePara.AlarmClk[0].min  == min)&&(0==sec))
			return 0;
	}
	if(1==gDevicePara.AlarmClk[1].enFLAG)
	{
		if((gDevicePara.AlarmClk[1].hour == hour)&&\
		(gDevicePara.AlarmClk[1].min  == min)&&(0==sec))
		return 1;
	}
	if(1==gDevicePara.AlarmClk[2].enFLAG)
	{
		if((gDevicePara.AlarmClk[2].hour == hour)&&\
		(gDevicePara.AlarmClk[2].min  == min)&&(0==sec))
			return 2;
	}
	return -1;
}
#endif
extern char *cfgName_3[];
static int AlarmClockWindow(int AlarID)
{
	rect		area;
	DWORD		val;
	//BYTE		days;
	XMSG		msg;
	
	gAlarmSetWnd = (Alarm_set_t*)malloc(sizeof(Alarm_set_t));
	if (NULL == gAlarmSetWnd)
		return -1;
	
	gAlarmSetWnd->pos = 0;
	gAlarmSetWnd->res = -1;
#if 1
	val = GetAlarmTim(AlarID);
	gAlarmSetWnd->hour = (BYTE)((val>>16)&0xFF);
	gAlarmSetWnd->min  = (BYTE)((val>>8)&0xFF);
	gAlarmSetWnd->sec  = (BYTE)(val&0xFF);

#endif


	SetRect(&area, 8, 15, LCD_WIDTH-1, 30);//yu SetRect(&area, 10, 22, LCD_WIDTH-1, 38);
	
	SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH, LCD_HEIGHT);
	XCreateWindow(NULL, &gAlarmSetWnd->wnd, &area, "Alarm", AlarmSetProc, FALSE);
	XSetBaseWindow(&gAlarmSetWnd->wnd);
//--------
	SetRect(&area, 30, 40, LCD_WIDTH-1, 55);//yu SetRect(&area, 36, 53, LCD_WIDTH-1, 68);
	XCreateEditBox(&gAlarmSetWnd->wnd.comp, &gAlarmSetWnd->ebox[0], &area, 2, 0);
	XEditBoxSetRange(&gAlarmSetWnd->ebox[0], 0, 23);
	XEditBoxSetValue(&gAlarmSetWnd->ebox[0], gAlarmSetWnd->hour);
	
	SetRect(&area, 62, 40, LCD_WIDTH-1, 55);//yu SetRect(&area, 70, 53, LCD_WIDTH-1, 68);
	XCreateEditBox(&gAlarmSetWnd->wnd.comp, &gAlarmSetWnd->ebox[1], &area, 2, 0);
	XEditBoxSetRange(&gAlarmSetWnd->ebox[1], 0, 59);
	XEditBoxSetValue(&gAlarmSetWnd->ebox[1], gAlarmSetWnd->min);
	XEditBoxSetActive(&gAlarmSetWnd->ebox[0], ACTIVED);

	XShowComponent(&gAlarmSetWnd->wnd.comp);
	

	MoveTo(8, 15+HZ_MAIN);
	DrawString((BYTE*)TranslateChar(cfgName_3[AlarID]));                                        
	MoveTo(51, 58);//yu MoveTo(60, 72);
	DrawText((BYTE*)":", 0, 1);
	v_WriteLcdBuff();
	
	while (XGetMessage(&msg) != -1)
		XDispatchMessage(&msg);
	
	XDestroyWindow(&gAlarmSetWnd->wnd);
	if (1 == gAlarmSetWnd->res) {
//		char	timestr[8];
		gAlarmSetWnd->hour = (BYTE)XEditBoxGetValue(&gAlarmSetWnd->ebox[0]);
		gAlarmSetWnd->min  = (BYTE)XEditBoxGetValue(&gAlarmSetWnd->ebox[1]);
		SetAlarmTime(gAlarmSetWnd->hour, gAlarmSetWnd->min, gAlarmSetWnd->sec,AlarID);
		//------------------
		show_Icon_AlarmClock(1);
		XTipWndShow(TranslateChar("闹钟开启"),1);

	}
	
	free(gAlarmSetWnd);
	gAlarmSetWnd = NULL;
	return 0;
}
#if 1
#define MAX_Dis_En_able 2
const static char *YNcfgName[] = {
		"关",
		"开",//TRUE
};

int AlarmClockOFF(int AlarID)
{
int		selMenu, id = 1;

	selMenu = gDevicePara.AlarmClk[AlarID].enFLAG;
	while (id) {
		id = XSelectWindow((char**)YNcfgName, MAX_Dis_En_able, selMenu);//,TRUE
		if (id < 0)
			break;
		selMenu = id;
		if(0==id)
			{
			gDevicePara.AlarmClk[AlarID].enFLAG=0;
			//show_Icon_AlarmClock(0);
			show_Icon_AlarmClock(gDevicePara.AlarmClk[0].enFLAG+gDevicePara.AlarmClk[1].enFLAG+gDevicePara.AlarmClk[2].enFLAG);
			Para_Store(&gDevicePara);
			XTipWndShow(TranslateChar("闹钟关闭"),1);
			id = 0;
			}
		else
			id = 0;
		}
		return 0;
}

#endif
	
void SetAlarmClock(int AlarID)
{	
	if(gDevicePara.AlarmClk[AlarID].enFLAG==1)
		{	AlarmClockOFF(AlarID);
			if(gDevicePara.AlarmClk[AlarID].enFLAG==1)
				AlarmClockWindow(AlarID);//修改闹钟时间时间
		
		}
	else{
			AlarmClockWindow(AlarID);//设置并且开启闹钟
		}
}
#endif
#if 1
typedef struct {
	window_t	wnd;
	editbox_t	ebox[5];
	BYTE		sec;
	BYTE		pos;
	int			res;
} timeLed_set_t;
static timeLed_set_t	*gtimeLedSetWnd;
static int timeLedSetProc(XMSG *msg)
{
	switch (msg->message) {
	case MSG_PAINT:
		EraseRect(&msg->comp->rc);
		break;
	case MSG_KEYDOWN:
		switch (msg->param1) {
		case KEY_D0:
		case KEY_D1:
		case KEY_D2:
		case KEY_D3:
		case KEY_D4:
		case KEY_D5:
		case KEY_D6:
		case KEY_D7:
		case KEY_D8:
		case KEY_D9:
			if (XEditBoxKeyHandle(&gtimeLedSetWnd->ebox[gtimeLedSetWnd->pos], msg->param1)) {//显示自己处理反白
				gtimeLedSetWnd->pos=0;	//gtimeLedSetWnd->pos++;
				//gtimeLedSetWnd->pos %= 5;
				XEditBoxSetActive(&gtimeLedSetWnd->ebox[gtimeLedSetWnd->pos], ACTIVED);//更新显示框
				XShowComponent(&gtimeLedSetWnd->ebox[gtimeLedSetWnd->pos].comp);//显示
				v_WriteLcdBuff();//
			}
			break;
		case KEY_OK:
			if(0>XEditBoxSetActive(&gtimeLedSetWnd->ebox[gtimeLedSetWnd->pos], INACTIVED))//YU ADD
				{
				XEditBoxSetActive(&gtimeLedSetWnd->ebox[gtimeLedSetWnd->pos], ACTIVED);
				XShowComponent(&gtimeLedSetWnd->ebox[gtimeLedSetWnd->pos].comp);
				v_WriteLcdBuff();
				break;
				}
			gtimeLedSetWnd->res = 1;
		case KEY_CANCEL:
			XPostQuitMessage((window_t*)msg->comp);
			break;
		default:
			break;
		}
		break;
	default:
		return XDefaultWindowProc(msg);
	}
	
	return 0;
}

int u_LEDTIME_set(void)
//int timeLedSetWindow(void)
{
	rect		area;
	//DWORD		val;
	//BYTE		days;
	XMSG		msg;
	
	gtimeLedSetWnd = (timeLed_set_t*)malloc(sizeof(timeLed_set_t));
	if (NULL == gtimeLedSetWnd)
		return -1;
	
	gtimeLedSetWnd->pos = 0;
	gtimeLedSetWnd->res = -1;
#if 1
	gtimeLedSetWnd->sec  = gDevicePara.dev.idleTime;
#endif
	
	SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH, LCD_HEIGHT);
	XCreateWindow(NULL, &gtimeLedSetWnd->wnd, &area, "timeLed", timeLedSetProc, FALSE);
	XSetBaseWindow(&gtimeLedSetWnd->wnd);
//年
//	SetRect(&area, 8, 15, LCD_WIDTH-1, 30);//yu SetRect(&area, 10, 22, LCD_WIDTH-1, 38);
//---------	
	SetRect(&area, 30, 40, LCD_WIDTH-1, 55);//yu SetRect(&area, 36, 53, LCD_WIDTH-1, 68);
	XCreateEditBox(&gtimeLedSetWnd->wnd.comp, &gtimeLedSetWnd->ebox[0], &area, 2, 0);
	XEditBoxSetRange(&gtimeLedSetWnd->ebox[0], 0, 99);
	XEditBoxSetValue(&gtimeLedSetWnd->ebox[0], gtimeLedSetWnd->sec);
	
	XEditBoxSetActive(&gtimeLedSetWnd->ebox[0], ACTIVED);

	XShowComponent(&gtimeLedSetWnd->wnd.comp);
	
	MoveTo(2, 32);//yu MoveTo(50, 40);
	DrawString((BYTE*)TranslateChar("背景灯时间"));
	MoveTo(51, 58);//yu MoveTo(60, 72);
	DrawText((BYTE*)"S", 0, 1);
	v_WriteLcdBuff();
	
	while (XGetMessage(&msg) != -1)
		XDispatchMessage(&msg);
	
	XDestroyWindow(&gtimeLedSetWnd->wnd);
	if (1 == gtimeLedSetWnd->res) {
//		char	timeLedstr[8];
		gtimeLedSetWnd->sec  = (BYTE)XEditBoxGetValue(&gtimeLedSetWnd->ebox[0]);

		//----------
		gDevicePara.dev.idleTime = gtimeLedSetWnd->sec;
		Para_Store(&gDevicePara);
		//----------
		XTipWndShow(TranslateChar("设置成功"),1);
		
//yu		sprintf(timeLedstr, "%02d:%02d", gtimeLedSetWnd->hour, gtimeLedSetWnd->min);
//yu		showCurrenttimeLed(timeLedstr);
	}
	
	free(gtimeLedSetWnd);
	gtimeLedSetWnd = NULL;
	return 0;
}



#endif

⌨️ 快捷键说明

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