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

📄 gprsdialdlg.cpp

📁 采用sangsung公司的s3c2410芯片
💻 CPP
字号:
// GPRSDialDlg.cpp : implementation file
//

#include "stdafx.h"
#include "GPRSDial.h"
#include "GPRSDialDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CGPRSDialDlg dialog

CGPRSDialDlg::CGPRSDialDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CGPRSDialDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CGPRSDialDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CGPRSDialDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CGPRSDialDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CGPRSDialDlg, CDialog)
	//{{AFX_MSG_MAP(CGPRSDialDlg)
	ON_BN_CLICKED(IDC_DIAL, OnDial)
	ON_BN_CLICKED(IDC_TAKE, OnTake)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CGPRSDialDlg message handlers


/**************************************

  实  验  代  码

***************************************/

BOOL CGPRSDialDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);				// Set big icon
	SetIcon(m_hIcon, FALSE);			// Set small icon
	CenterWindow(GetDesktopWindow());	// center to the hpc screen

	// 初始化 GPRS
	BOOL ret = m_GPRS.GPRS_Init(_T("COM1:"), 115200, (DWORD)this);
	if (ret == FALSE)
	{
		MessageBox(_T("GPRS初始化失败,请检查是否安装正确."));
		return FALSE;
	}
	
	// 设置 GPRS 接收回调函数
	m_GPRS.OnGPRSRecv = OnGPRSRecv;		
	return TRUE;
}


/*******************************************************************************************
函数名称: CALLBACK CGPRSDialDlg::OnGPRSRecv
描    述: GPRS 接收回调函数, 当有电话打入或对方挂机时, 将执行该函数
输入参数: DWORD UserParam: 用户在调用 GPRS_Init() 函数时传入的参数.
		  DWORD Status	 : GPRS 状态
		  CString strData: 状态对应的字符串, 如果有电话打入, 则该字符为来电号码	
输出参数: 无
返    回: 无
********************************************************************************************/
void CALLBACK CGPRSDialDlg::OnGPRSRecv(DWORD UserParam, DWORD Status, CString strData)
{
	CGPRSDialDlg *pDlg = (CGPRSDialDlg *)UserParam;	

	if (Status == GPRS_STATUS_RECEIVE_CALL)								/* 有电话打入 */
	{
		pDlg->SetDlgItemText(IDC_DISP_CALLCODE, strData);				/* 来电显示 */
	}

	if (Status == GPRS_STATUS_OTHER_SIDE_HANDUP)
	{																	/* 对方已挂机 */
		CButton *ButTake = (CButton *)pDlg->GetDlgItem(IDC_TAKE);
		CButton *ButDial = (CButton *)pDlg->GetDlgItem(IDC_DIAL);
		
		if ((ButDial->GetState() & 0x003) == 1)
		{																/* 本机拨出的情况 */
			pDlg->SetDlgItemText(IDC_EDIT_DIALCODE, _T("对方已挂机."));
			Sleep(2000);
			pDlg->SetDlgItemText(IDC_EDIT_DIALCODE, _T(""));
		}
		else
		{																/* 来电的情况 */	
			pDlg->SetDlgItemText(IDC_DISP_CALLCODE, _T("对方已挂机."));
			Sleep(2000);
			pDlg->SetDlgItemText(IDC_DISP_CALLCODE, _T(""));
		}

		ButTake->SetWindowText(_T("接听"));								/* 恢复按键原状态 */
		ButDial->SetWindowText(_T("拨号"));
		ButTake->SetCheck(0);
		ButDial->SetCheck(0);
	}
}


/*******************************************************************************************
函数名称: CGPRSDialDlg::OnDial()
描    述: 单击 "拨号" 按键事件代码   
********************************************************************************************/
void CGPRSDialDlg::OnDial() 
{
	BOOL ret;
	CString strDialCode;
	CButton *Key = (CButton *)GetDlgItem(IDC_DIAL);

	GetDlgItemText(IDC_EDIT_DIALCODE, strDialCode);		/* 获取拨号号码 */

	UINT state = Key->GetState();
	if ((state & 0x0003) == 1)							/* 按键按下 */
	{
		if (strDialCode == _T(""))						/* 输入号码有误 */
		{
			MessageBox(_T("请输入拨号号码."));
			Key->SetCheck(0);							/* 恢复按键原状态 */
			Key->SetWindowText(_T("拨号"));
			return;
		}	
		
		ret = m_GPRS.GPRS_DialUp(strDialCode);
		if (ret == FALSE)								/* 拨号失败 */
		{
			Key->SetCheck(0);							
			Key->SetWindowText(_T("拨号"));				/* 恢复按键原状态 */	
			return;
		}

		Key->SetWindowText(_T("挂机"));					/* 提示下次操作 */
	}
	else
	{													/* 按键未按下 */
		ret = m_GPRS.GPRS_DialDown();
		if (ret == FALSE)
		{												/* 挂机失败 */
			MessageBox(_T("挂机失败."));
		}

		Key->SetWindowText(_T("拨号"));					/* 提示下次操作 */
	}
}


/*******************************************************************************************
函数名称: CGPRSDialDlg::OnTake()
描    述: 单击 "接听" 按键事件代码   
********************************************************************************************/
void CGPRSDialDlg::OnTake() 
{
	BOOL ret;
	CButton *Key = (CButton *)GetDlgItem(IDC_TAKE);

	UINT state = Key->GetState();
	if ((state & 0x0003) == 1)							/* 按键按下 */
	{
		ret = m_GPRS.GPRS_TakeTheCall();				/* 接听来电 */
		if (ret == FALSE)
		{												/* 接听失败 */
			Key->SetCheck(0);
			Key->SetWindowText(_T("接听"));				/* 按键恢复原来的状态 */
			MessageBox(_T("接听失败."));
		}

		Key->SetWindowText(_T("挂断"));					/* 提示下一次操作动作 */
	}	
	else
	{
		ret = m_GPRS.GPRS_HangUpTheCall();				/* 挂机 */
		if (ret == FALSE)
		{
			MessageBox(_T("挂断失败."));				/* 挂机失败 */
		}

		Key->SetWindowText(_T("接听"));					/* 按键恢复原来的状态 */
	}

}

⌨️ 快捷键说明

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