📄 gprsdialdlg.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 + -