亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gprs.cpp

?? 周立功WinCE光盤資料
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// GPRS.cpp: implementation of the CGPRS class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "GPRS.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CGPRS::CGPRS()
{
	ResetGlobalVarial();
}

CGPRS::~CGPRS()
{
	if (pCeSerial->IsPortOpen() == TRUE)
	{
		pCeSerial->ClosePort();
	}

	if (pCeSerial)
		delete pCeSerial;
}


/*******************************************************************************************
函數(shù)名稱: ResetGlobalVarial
描    述: 復位一些全局變量為默認值
輸入參數(shù): 無
輸出參數(shù): 無
返    回: 無
********************************************************************************************/
void CGPRS::ResetGlobalVarial(void)
{
	bSendATCmd = FALSE;					/* 當前不處于發(fā)送命令狀態(tài) */	
	m_RespCnt = 0;							
	m_strRespBuf = _T("");
	ResetEvent(m_ATCmdRespEvent);		/* 復位 GPRS 響應事件*/
}



/*******************************************************************************************
函數(shù)名稱: GPRS_Init
描    述: GPRS 模塊初始化函數(shù)
輸入參數(shù): LPCTSTR Port   : 串口號, 如 "COM1:"
		  int BaudRate   : 串口波特率, 如 115200
		  DWORD UserParam: 用戶傳遞到該類中的參數(shù)
輸出參數(shù): 無
返    回: TRUE: 成功   FALSE: 失敗
********************************************************************************************/
BOOL CGPRS:: GPRS_Init(LPCTSTR Port, int BaudRate, DWORD UserParam)
{	
	BOOL ret;
	DWORD Trycount = 2;

	do{																/* 嘗試初始化 GPRS, 最多嘗試兩次 */
		Trycount--;

		pCeSerial = new CCeSerial;
		ret = pCeSerial->OpenPort(Port, BaudRate, 8, ONESTOPBIT, NOPARITY, TRUE, TRUE, (DWORD)this);
		if (ret == FALSE)											/* 打開串口, 數(shù)據(jù)位為8,停止位為1,無校驗位 */
		{
			delete pCeSerial;
			return FALSE;
		}

		pCeSerial->OnCommRecv = OnCommRecv;							/* 串口接收成功回調函數(shù) */
		m_UserParam = UserParam;									/* 保存用戶傳進來的參數(shù) */
		m_ATCmdRespEvent = CreateEvent(NULL, TRUE, FALSE, NULL);	/* 創(chuàng)建 GPRS 響應事件 */

		GPRS_SendATCmd(_T("AT"));									/* 嘗試模塊是否處于激活狀態(tài) */
		GPRS_WaitResponseOK();
		GPRS_SendATCmd(_T("AT"));									/* 嘗試模塊是否處于激活狀態(tài) */
		GPRS_WaitResponseOK();

		GPRS_SendATCmd(_T("AT$NOSLEEP=1"));							/* 禁止模塊進入睡眠模式 */
		ret = GPRS_WaitResponseOK();
		if (ret == FALSE)
		{
			delete pCeSerial;
			if (Trycount == 0) return FALSE;
		}
		else
			Trycount = 0;

	}while(Trycount > 0);

	GPRS_SendATCmd(_T("AT+CREG=1"));				
	ret = GPRS_WaitResponseOK();
	if (ret == FALSE)
		return FALSE;

	GPRS_SendATCmd(_T("AT+CLIP=1"));				/* 設置來電顯示 */	
	ret = GPRS_WaitResponseOK();
	if (ret == FALSE)
		return FALSE;

	GPRS_SendATCmd(_T("AT+CMGF=1"));				/* 設置為文本模式 */
	ret = GPRS_WaitResponseOK();
	if (ret == FALSE)
		return FALSE;
	
	GPRS_SendATCmd(_T("AT+CSCS=\"GSM\""));			/* 設置字符集 */
	ret = GPRS_WaitResponseOK();
	if (ret == FALSE)
		return FALSE;

	//GPRS_SendATCmd(_T("AT+CSMP=17,168,0,0"));	    /* 設置文本模式參數(shù) */
	//ret = GPRS_WaitResponseOK();
	//if (ret == FALSE)
	//	return FALSE;

	return TRUE;
}


/*******************************************************************************************
函數(shù)名稱: OnCommRecv
描    述: 串口接收成功回調函數(shù), 當串口正確接收到數(shù)據(jù)時, 該函數(shù)將被調用
輸入參數(shù): CString strCmd: 命令字
輸出參數(shù): DWORD UserParam : 用戶傳遞的參數(shù), 通常為CGPRS類的一個對象的指針
          BYTE *buf		  : 串口接收數(shù)據(jù)緩沖
		  DWORD buflen	  : 串口接收到的數(shù)據(jù)長度
返    回: 無
********************************************************************************************/
void CALLBACK CGPRS::OnCommRecv(DWORD UserParam, BYTE *buf, DWORD buflen)
{
	CGPRS *pGPRS = (CGPRS *)UserParam;	
	
	CString strTmp = _T("");
	LPTSTR pStr = strTmp.GetBuffer(buflen);	
	MultiByteToWideChar(CP_ACP, 0, (char *)buf, buflen, pStr, buflen); /* 將接收到的數(shù)據(jù)轉換為 Unicode 編碼 */
	strTmp.ReleaseBuffer();

	if (pGPRS->bSendATCmd == TRUE)
	{																	/* 之前用戶發(fā)送了 AT 指令 */
		pGPRS->m_strRespBuf.Insert(pGPRS->m_RespCnt, strTmp);			/* 保存數(shù)據(jù) */	
		SetEvent(pGPRS->m_ATCmdRespEvent);
		return;
	}
	
	if ((strTmp.Find(_T("RING")) >= 0) || 
		(strTmp.Find(_T("ring")) >= 0))
	{													/* 有電話打進來 */			
		CString strCallNum = pGPRS->GPRS_GetTheCallNum(strTmp);
		pGPRS->OnGPRSRecv(pGPRS->m_UserParam, GPRS_STATUS_RECEIVE_CALL,strCallNum);
	}
	
	if ((strTmp.Find(_T("NO CARRIER")) >= 0) || 
		(strTmp.Find(_T("no carrier")) >= 0))				
	{													/* 來電后, 對方掛機 */
		pGPRS->OnGPRSRecv(pGPRS->m_UserParam, GPRS_STATUS_OTHER_SIDE_HANDUP, "");
	}	

	pGPRS->bSendATCmd = FALSE;							/* 復位相關全局變量 */
	pGPRS->m_RespCnt = 0;							
	pGPRS->m_strRespBuf = _T("");
	ResetEvent(pGPRS->m_ATCmdRespEvent);
}


/*******************************************************************************************
函數(shù)名稱: GPRS_GetTheCallNum
描    述: 取得來電的電話號碼
輸入參數(shù): CString str:  來電時, GPRS 響應字符
輸出參數(shù): 無
返    回: 來電電話號碼
********************************************************************************************/
CString CGPRS::GPRS_GetTheCallNum(CString str)
{
	int pos1 = str.Find(_T("+CLIP: \""), 0);
	if (pos1 < 0)
		return "";
	else
		pos1 = pos1 + wcslen(_T("+CLIP: \""));

	int pos2 = str.Find(_T("\""), pos1);
	if (pos2 < 0)
		return "";

	CString strNum;
	strNum = str.Mid(pos1, pos2 - pos1);				  /* 取得電話號碼 */

	return strNum;
}


/*******************************************************************************************
函數(shù)名稱: GPRS_SendATCmd
描    述: 發(fā)送 AT 命令
輸入參數(shù): CString strCmd: 命令字
輸出參數(shù): 無
返    回: TRUE: 成功   FALSE: 失敗
********************************************************************************************/
BOOL CGPRS::GPRS_SendATCmd(CString strCmd)
{
	int len = strCmd.GetLength();
	BYTE *psendbuf = new BYTE[len + 2];
	
	m_RespCnt = 0;
	bSendATCmd = TRUE;								 /* 進入發(fā)送命令狀態(tài) */

	for(int i = 0; i < len;i++)
		psendbuf[i] = (char)strCmd.GetAt(i);		 /* 轉換為單字節(jié)字符 */

	psendbuf[len] = '\r';							 /* 加入結束符 */
	psendbuf[len + 1] = '\n';
	pCeSerial->Senddata(psendbuf, len + 2);			 /* 從串口發(fā)送數(shù)據(jù) */

	delete[] psendbuf;
	return TRUE;
}


/*******************************************************************************************
函數(shù)名稱: GPRS_WaitResponseOK
描    述: 等待 AT 命令響應 OK
輸入參數(shù): 無
輸出參數(shù): 無
返    回: 無
********************************************************************************************/
BOOL CGPRS::GPRS_WaitResponseOK(void)
{
	DWORD ret;
	BOOL bOK = TRUE;

	while(1)
	{	// 等待 0.5 秒, 如果得不到回復, 即為錯誤
		ret = WaitForSingleObject(m_ATCmdRespEvent, 500);
		if (ret == WAIT_OBJECT_0)
		{
			if ((m_strRespBuf.Find(_T("ERROR\r\n"), 0) >= 0) ||
				(m_strRespBuf.Find(_T("error\r\n"), 0) >= 0))
			{													/* 響應中有"ERROR" */
				bOK = FALSE;
				break;
			}
			if ((m_strRespBuf.Find(_T("OK\r\n"), 0) >= 0) ||
				(m_strRespBuf.Find(_T("ok\r\n"), 0) >= 0))
			{													/* 響應中有"OK" */
				bOK = TRUE;
				break;
			}

			ResetEvent(m_ATCmdRespEvent);
		}
		else
		{
			bOK = FALSE;										/* 響應超時 */
			break;
		}
	}

	ResetGlobalVarial();								/* 復位用到的全局變量 */
	if (FALSE == bOK)
		return FALSE;

	return TRUE;
}


/*******************************************************************************************
函數(shù)名稱: GPRS_WriteMsg
描    述: 將短信內容寫入 GPRS 模塊
輸入參數(shù): CString Msg:  短信內容
輸出參數(shù): 無
返    回: 無
********************************************************************************************/
BOOL CGPRS::GPRS_WriteMsg(CString Msg)
{
	int len = Msg.GetLength();
	BYTE *psendbuf = new BYTE[len + 3];

	for(int i = 0; i < len;i++)
		psendbuf[i] = (char)Msg.GetAt(i);			/* 轉換為單字節(jié)字符 */

	psendbuf[len] = '\r';						    /* 加入結束符 */
	psendbuf[len + 1] = '\n';
	psendbuf[len + 2] = 0x1A;
	pCeSerial->Senddata(psendbuf, len + 3);			/* 從串口發(fā)送數(shù)據(jù) */

	delete[] psendbuf;
	return TRUE;
}


/*******************************************************************************************
函數(shù)名稱: GPRS_DialUp
描    述: 撥打電話(由本機打出)
輸入參數(shù): CString strTelNum: 電話號碼
輸出參數(shù): 無
返    回: TRUE: 成功   FALSE: 失敗
********************************************************************************************/
BOOL CGPRS::GPRS_DialUp(CString strTelNum)
{
	CString strDialup = _T("ATD");
	strDialup += strTelNum + ";";					/* 以分號作為結束 */

	GPRS_SendATCmd(strDialup);						/* 發(fā)送撥號命令 */

	return (GPRS_WaitResponseOK());
}


/*******************************************************************************************
函數(shù)名稱: GPRS_DialDown
描    述: 掛機(由本機打出的掛機)
輸入參數(shù): 無
輸出參數(shù): 無
返    回: TRUE: 成功   FALSE: 失敗
********************************************************************************************/
BOOL CGPRS::GPRS_DialDown(void)
{
	GPRS_SendATCmd("ATH");

	return (GPRS_WaitResponseOK());
}


/*******************************************************************************************
函數(shù)名稱: GPRS_TakeTheCall
描    述: 接聽電話(有電話打進來, 接聽該電話)
輸入參數(shù): 無
輸出參數(shù): 無

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美激情小说另类| 成人av在线资源| 欧美一区二区性放荡片| 午夜精品久久久久久久蜜桃app| 色噜噜狠狠色综合欧洲selulu| 成人欧美一区二区三区| 色综合天天综合网天天狠天天 | 日韩欧美视频在线| 韩国精品主播一区二区在线观看 | 成人av电影免费观看| 自拍偷拍国产精品| 欧美性猛交xxxxxx富婆| 午夜精品久久久久| 久久久久国产一区二区三区四区| 成人97人人超碰人人99| 亚洲成人高清在线| 精品99久久久久久| 色香蕉成人二区免费| 青青草国产成人av片免费| 国产调教视频一区| 91福利社在线观看| 经典三级在线一区| 一区二区三区中文字幕在线观看| 日韩欧美美女一区二区三区| 99久久99久久精品免费观看| 亚洲国产视频a| 日韩三级精品电影久久久| 成人黄页毛片网站| 日本aⅴ亚洲精品中文乱码| 中文无字幕一区二区三区| 色菇凉天天综合网| 极品尤物av久久免费看| 亚洲欧美日本韩国| 精品国产电影一区二区| 99久久免费视频.com| 精品一区二区成人精品| 亚洲午夜国产一区99re久久| 国产亚洲精品aa午夜观看| 欧美绝品在线观看成人午夜影视| 成人午夜电影小说| 青青草成人在线观看| 亚洲精品国产a| 国产婷婷色一区二区三区四区| 欧美乱妇15p| 91美女视频网站| 国产不卡在线视频| 麻豆成人91精品二区三区| 一区二区三区在线免费视频| 国产精品丝袜在线| 26uuu精品一区二区在线观看| 欧美日韩亚洲综合| 97久久超碰国产精品| 国产精品18久久久久久久久久久久 | 日韩成人免费电影| 亚洲精品视频在线观看网站| 久久久亚洲精品石原莉奈| 欧美一区二区三区在线看| 91色porny在线视频| 懂色av一区二区三区免费观看| 免费日韩伦理电影| 日韩中文字幕不卡| 亚洲综合另类小说| 亚洲欧美一区二区在线观看| 国产欧美一区二区精品仙草咪| 欧美成人官网二区| 欧美一区欧美二区| 欧美精品少妇一区二区三区| 欧美色老头old∨ideo| 欧美中文字幕一二三区视频| 色综合久久88色综合天天免费| 成人精品在线视频观看| 国产成人精品亚洲午夜麻豆| 国产一区二区精品久久| 国产一区二区0| 精品一区二区综合| 久久99精品久久久久久久久久久久| 午夜精品爽啪视频| 日韩成人免费看| 久久国产尿小便嘘嘘尿| 久久99九九99精品| 国产一区二区女| 顶级嫩模精品视频在线看| www.激情成人| 91片黄在线观看| 在线精品视频免费观看| 欧美日韩免费视频| 9191国产精品| 精品国产免费久久| 2020日本不卡一区二区视频| 欧美高清在线一区二区| 中文字幕亚洲一区二区va在线| 亚洲区小说区图片区qvod| 亚洲欧美经典视频| 五月婷婷欧美视频| 在线视频观看一区| 欧美精品aⅴ在线视频| 欧美一卡2卡三卡4卡5免费| 精品黑人一区二区三区久久| 久久精品一区二区三区av| 国产精品久久久久影视| 亚洲狠狠丁香婷婷综合久久久| 一区二区三区欧美激情| 日韩成人精品视频| 国产精品1区二区.| 在线观看欧美黄色| 精品美女一区二区| 国产精品久99| 欧美日韩一卡二卡三卡| 欧美一卡2卡三卡4卡5免费| 国产欧美一区二区三区鸳鸯浴| 亚洲精品videosex极品| 免费观看成人鲁鲁鲁鲁鲁视频| 国产mv日韩mv欧美| 欧美日韩在线播| 久久久99精品久久| 亚洲电影视频在线| 国产传媒欧美日韩成人| 欧美在线免费视屏| 久久亚洲一区二区三区明星换脸| 亚洲女与黑人做爰| 国产一区二区影院| 欧美综合一区二区| 国产视频一区二区三区在线观看| 亚洲国产日产av| 懂色av一区二区在线播放| 7777精品伊人久久久大香线蕉最新版| 国产网站一区二区| 石原莉奈一区二区三区在线观看| 高清beeg欧美| 日韩视频免费观看高清完整版 | 亚洲综合图片区| 国产在线播放一区三区四| 在线免费观看视频一区| 美女视频网站久久| 91免费看视频| 国产亚洲va综合人人澡精品| 亚洲成av人片| 麻豆91精品视频| 欧美成人r级一区二区三区| 高清av一区二区| 日韩欧美国产系列| 一区二区欧美视频| 成人精品国产免费网站| 欧美成人性福生活免费看| 亚洲一区二区三区精品在线| 成人毛片老司机大片| 亚洲精品在线三区| 免费成人结看片| 欧美三级中文字幕在线观看| 国产精品色一区二区三区| 韩国精品一区二区| 日韩欧美国产麻豆| 麻豆精品视频在线观看免费| 精品视频1区2区| 亚洲一区二区在线播放相泽| 99久久婷婷国产| 综合婷婷亚洲小说| 成人a区在线观看| 国产精品美女久久久久av爽李琼 | 岛国av在线一区| 国产欧美精品区一区二区三区 | 午夜激情久久久| 国产盗摄一区二区| 激情综合色综合久久| 日韩欧美国产系列| 男女男精品视频网| 欧美精品xxxxbbbb| 午夜电影一区二区| 欧美三级欧美一级| 香蕉久久一区二区不卡无毒影院| 欧美亚男人的天堂| 性欧美大战久久久久久久久| 5月丁香婷婷综合| 蜜桃免费网站一区二区三区| 欧美精品一区在线观看| 国产一区二区日韩精品| 国产精品网站一区| 91在线云播放| 亚洲大片在线观看| 91精品视频网| 国产一区二区三区日韩| 亚洲国产高清在线| av电影天堂一区二区在线观看| 亚洲视频网在线直播| 欧美性猛片xxxx免费看久爱| 香蕉成人啪国产精品视频综合网| 日韩午夜在线影院| 国产一区二区导航在线播放| 国产精品理伦片| 欧美日韩免费观看一区二区三区| 美脚の诱脚舐め脚责91 | 91麻豆精品国产无毒不卡在线观看| 日韩精品成人一区二区三区| 日韩欧美高清一区| 成人激情综合网站| 一区二区三区在线视频免费 | 日韩美女主播在线视频一区二区三区| 国内精品免费在线观看| 亚洲欧洲日韩在线| 91精品婷婷国产综合久久性色 |