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

📄 answercall.c

📁 基于东南大学开发的SEP3203的ARM7中的所有驱动
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "asixwin.h"
#include "bitmap.h"
#include "alarm_q.h"
#include "select.h"

#include "sys\at.h"

STATUS CallErrorNoCarry(void);
STATUS CallErrorBusy(void);
STATUS CallErrorWrongNum(void);


STATUS AnswerCall(void)
{
	U8	quit;
	U16	lcd_w,lcd_h;
	U32	boxid,st1,st2,bt1,bt2;
	AT_RPS at_rps;
	U32	response;
	U8	i;
	U32 pGC;

	static char  phone_num[40];
	static	MSG     Msg;

	pGC = GetGC();
	memset( (void *)&Msg, 0x0, sizeof(Msg) );
	
	lcd_w = ASIX_LCD_W;
	lcd_h = ASIX_LCD_H;
	
	boxid = CreateWindow(WNDCLASS_WIN, NULL, WS_BORDER | WS_SAVESCREEN,
		2, 40, 116, 80, 0, 0, NULL);
	
	if (boxid==0) return ASIX_ERROR;
	
	st1 = CreateWindow(WNDCLASS_STATIC, "电话呼叫,来自:", WS_CHILD|SS_TEXT, 4,42,100,18,boxid,0,NULL);
	bt1 = CreateWindow(WNDCLASS_BUTTON, "接听", WS_CHILD| BS_REGULAR,
		10, 100, 40, 18, boxid, 0, NULL);
	bt2 = CreateWindow(WNDCLASS_BUTTON, "拒接", WS_CHILD| BS_REGULAR,
		60, 100, 40, 18, boxid, 0, NULL);

	/* get phone number */
	while(Receive_AT_RPS(&at_rps, 500))
	{
		response = Trans_AT_RPS(&at_rps);
		if(response == AT_RPS_CLIP)
		{
			i=0;
			while(at_rps.para[i]!=',')
			{
				phone_num[i] = at_rps.para[i];
				i++;
			}
			phone_num[i]=0;
			/* show phone number */
			st2 = CreateWindow(WNDCLASS_STATIC, phone_num, WS_CHILD|SS_TEXT, 2,62,110,40,boxid,0,NULL);
			break;
		}
	}
	
	quit = FALSE;	
	while(!quit)
	{
		ASIXGetMessage(&Msg,NULL,0,0);
				
		switch (Msg.message )
		{
			case	WM_COMMAND:
				if (Msg.lparam == bt1)
				{
					Send_AT_CMD("ATA");
					while(Receive_AT_RPS(&at_rps, 1000))
					{
						response = Trans_AT_RPS(&at_rps);
						switch(response)
						{
							case AT_RPS_OK:
								break;
								
							case AT_RPS_NO_CARRIER:
								//CallErrorBusy();
								TextOut(pGC, "对方已挂断",5, 80, 0, GPC_BLACK, GPC_REPLACE_STYLE);
								quit = TRUE;
								break;
								
							default:
								break;
						}
					}
					Clear_AT_RPS(1);
				}
				
				if (Msg.lparam ==bt2)
				{
					quit = TRUE;
				}

				break;
				
			case	WM_QUIT:
			//	quit = TRUE;
				break;
		}
		
		DefWindowProc(Msg.message, Msg.lparam, Msg.data, Msg.wparam);
	}
	
	DestroyWindow(boxid);
	
	return ASIX_OK;
	
}

STATUS CallErrorBusy(void)
{
	U8	quit;
	U16	lcd_w,lcd_h;
	U32	boxid,st1,st2,answer_call,denial_call;

	static char  phone_num[]="请呆会再拨";
	static	MSG     Msg;
	
	memset( (void *)&Msg, 0x0, sizeof(Msg) );
	
	lcd_w = ASIX_LCD_W;
	lcd_h = ASIX_LCD_H;
	
		
	boxid = CreateWindow(WNDCLASS_WIN, NULL, WS_BORDER | WS_SAVESCREEN,
		2, 40, 116, 80, 0, 0, NULL);
	
	if (boxid==0) return ASIX_ERROR;
	
	st1 = CreateWindow(WNDCLASS_STATIC, "线路忙!", WS_CHILD|SS_TEXT, 4,42,100,18,boxid,0,NULL);
	st2 = CreateWindow(WNDCLASS_STATIC, phone_num, WS_CHILD|SS_TEXT, 2,62,110,18,boxid,0,NULL);
	answer_call = CreateWindow(WNDCLASS_BUTTON, "重拨", WS_CHILD| BS_REGULAR,
		10, 100, 40, 18, boxid, 0, NULL);
	denial_call = CreateWindow(WNDCLASS_BUTTON, "取消", WS_CHILD| BS_REGULAR,
		60, 100, 40, 18, boxid, 0, NULL);
	
	quit = FALSE;
	
	while(!quit)
	{
		ASIXGetMessage(&Msg,NULL,0,0);
				
		switch (Msg.message )
		{
			case	WM_COMMAND:
				if (Msg.lparam == answer_call)
				{
					CallErrorNoCarry();
					//quit = TRUE;
				}
				
				if (Msg.lparam ==denial_call)
				{
					quit = TRUE;
				}
							
			case	WM_QUIT:
				//quit = TRUE;
				break;
		}
		
		DefWindowProc(Msg.message, Msg.lparam, Msg.data, Msg.wparam);
	}
	
	DestroyWindow(boxid);
	
	return ASIX_OK;
	
}


STATUS CallErrorNoCarry(void)
{
	U8	quit;
	U16	lcd_w,lcd_h;
	U32	boxid,st1,st2,answer_call,denial_call;

	static char  phone_num[]="请呆会再拨";
	static	MSG     Msg;
	
	memset( (void *)&Msg, 0x0, sizeof(Msg) );
	
	lcd_w = ASIX_LCD_W;
	lcd_h = ASIX_LCD_H;
	
		
	boxid = CreateWindow(WNDCLASS_WIN, NULL, WS_BORDER | WS_SAVESCREEN,
		2, 40, 116, 80, 0, 0, NULL);
	
	if (boxid==0) return ASIX_ERROR;
	
	st1 = CreateWindow(WNDCLASS_STATIC, "没有信号!", WS_CHILD|SS_TEXT, 4,42,100,18,boxid,0,NULL);
	st2 = CreateWindow(WNDCLASS_STATIC, phone_num, WS_CHILD|SS_TEXT, 2,62,110,18,boxid,0,NULL);
	answer_call = CreateWindow(WNDCLASS_BUTTON, "重拨", WS_CHILD| BS_REGULAR,
		10, 100, 40, 18, boxid, 0, NULL);
	denial_call = CreateWindow(WNDCLASS_BUTTON, "取消", WS_CHILD| BS_REGULAR,
		60, 100, 40, 18, boxid, 0, NULL);
	
	quit = FALSE;
	
	while(!quit)
	{
		ASIXGetMessage(&Msg,NULL,0,0);
				
		switch (Msg.message )
		{
			case	WM_COMMAND:
				if (Msg.lparam == answer_call)
				{
					CallErrorWrongNum();
					//quit = TRUE;
				}
				
				if (Msg.lparam ==denial_call)
				{
					quit = TRUE;
				}
							
			case	WM_QUIT:
				//quit = TRUE;
				break;
		}
		
		DefWindowProc(Msg.message, Msg.lparam, Msg.data, Msg.wparam);
	}
	
	DestroyWindow(boxid);
	
	return ASIX_OK;
	
}


STATUS CallErrorWrongNum(void)
{
	U8	quit;
	U16	lcd_w,lcd_h;
	U32	boxid,st1,st2,answer_call,denial_call;

	static char  phone_num[]="请重新确认";
	static	MSG     Msg;
	
	memset( (void *)&Msg, 0x0, sizeof(Msg) );
	
	lcd_w = ASIX_LCD_W;
	lcd_h = ASIX_LCD_H;
	
		
	boxid = CreateWindow(WNDCLASS_WIN, NULL, WS_BORDER | WS_SAVESCREEN,
		2, 40, 116, 80, 0, 0, NULL);
	
	if (boxid==0) return ASIX_ERROR;
	
	st1 = CreateWindow(WNDCLASS_STATIC, "错误的号码!!", WS_CHILD|SS_TEXT, 4,42,100,18,boxid,0,NULL);
	st2 = CreateWindow(WNDCLASS_STATIC, phone_num, WS_CHILD|SS_TEXT, 2,62,110,18,boxid,0,NULL);
	answer_call = CreateWindow(WNDCLASS_BUTTON, "重拨", WS_CHILD| BS_REGULAR,
		10, 100, 40, 18, boxid, 0, NULL);
	denial_call = CreateWindow(WNDCLASS_BUTTON, "取消", WS_CHILD| BS_REGULAR,
		60, 100, 40, 18, boxid, 0, NULL);
	
	quit = FALSE;
	
	while(!quit)
	{
		ASIXGetMessage(&Msg,NULL,0,0);
				
		switch (Msg.message )
		{
			case	WM_COMMAND:
				if (Msg.lparam == answer_call)
				{
					CallErrorBusy();
					//quit = TRUE;
				}
				
				if (Msg.lparam ==denial_call)
				{
					quit = TRUE;
				}
							
			case	WM_QUIT:
				//quit = TRUE;
				break;
		}
		
		DefWindowProc(Msg.message, Msg.lparam, Msg.data, Msg.wparam);
	}
	
	DestroyWindow(boxid);
	
	return ASIX_OK;
	
}

⌨️ 快捷键说明

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