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

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

?? msgctrl.cpp

?? GPRS撥號包括CMNET,CMWAP ,用程序實現WAP訪問.
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// MsgCtrl.cpp: implementation of the CMsgCtrl class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MsgCtrl.h"

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

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

CMsgCtrl::CMsgCtrl()
{

	m_hComm = NULL;
}

CMsgCtrl::~CMsgCtrl()
{	
	CloseCom();
}

BOOL CMsgCtrl::OpenCom(LPCTSTR lpszComName)
{

	m_hComm = CreateFile( lpszComName,  GENERIC_READ | GENERIC_WRITE, 
	  0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

	if (INVALID_HANDLE_VALUE == m_hComm)
	{
	  m_hComm = NULL;
	  return FALSE;
	}


	DCB dcb;
	memset(&dcb, 0, sizeof(dcb));
	if (!GetCommState(m_hComm, &dcb)) 
	{
		CloseCom();
		return FALSE;
	}
/*
//file://硬件流控制	
	dcb.fDtrControl = DTR_CONTROL_DISABLE;
	dcb.fOutxCtsFlow = FALSE;
	dcb.fRtsControl = RTS_CONTROL_DISABLE;
//file://軟件流控制
	dcb.fInX = dcb.fOutX = FALSE;
	dcb.XonChar = (char)0xFF;
	dcb.XoffChar = (char)0XFF;
	dcb.XonLim = 100;
	dcb.XoffLim = 100;
	dcb.EvtChar= 0x0d;
	dcb.fBinary = TRUE;
	dcb.fParity = TRUE;
*/
	dcb.BaudRate = CBR_115200;
	dcb.ByteSize = 8;
	dcb.Parity = NOPARITY;
	dcb.StopBits = ONESTOPBIT;


	if (!SetCommState(m_hComm, &dcb))
	{
		CloseCom();
		return FALSE;
	}
//	PurgeComm(m_hComm, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
//	PurgeComm(m_hComm, PURGE_TXCLEAR|PURGE_RXCLEAR);
	DWORD dwInQueue = 4096;
	DWORD dwOutQueue = 4096;
	SetupComm(m_hComm, dwInQueue, dwOutQueue);

	COMMTIMEOUTS timeouts = 
	{    // 串口超時控制參數
        100,        // 讀字符間隔超時時間: 100 ms
        1,          // 讀操作時每字符的時間: 1 ms (n個字符總共為n ms)
        500,        // 基本的(額外的)讀超時時間: 500 ms
        1,          // 寫操作時每字符的時間: 1 ms (n個字符總共為n ms)
        100
	};       // 基本的(額外的)寫超時時間: 100 ms

	SetCommTimeouts(m_hComm, &timeouts);    // 設置超時

	CString strMsg;
	CString strMsgReturn;
	strMsg.Format("ATE0\r");//設置不回顯

	SendAndGetReturn(strMsg, strMsgReturn);


	strMsg.Format("AT+CMGF=0\r");
	if (!SendAndGetReturn(strMsg, strMsgReturn))
	{
		CloseCom();
		return FALSE;
	}

	return TRUE;

}



void CMsgCtrl::CloseCom()
{

	if (m_hComm)
	{
		CloseHandle(m_hComm);
		m_hComm = NULL;
	}

}

BOOL CMsgCtrl::SendMsg(const CString &strMsgSend, const CString &strDestTermID, LPCTSTR lpszSmsCenter)
{
m_csLock.Lock();

	CString strMsg;
	CString strMsgReturn;
	CString strNumber = strDestTermID;
	CString strSmsc = lpszSmsCenter;
	CString strContent = strMsgSend;
	char szData[4096] = "";
	int nDataLen= 0;
	char szReadMsg[4096] = "";
	DWORD nMsgLen = 0;
	SM_PARAM SmParam;
	memset(&SmParam, 0, sizeof(SM_PARAM));

	// 去掉號碼前的"+"
	if(lpszSmsCenter && strSmsc[0] == '+') 
	{
		strSmsc = strSmsc.Mid(1);
	}
	if(strNumber[0] == '+') 
	{
		strNumber = strNumber.Mid(1);
	}

	// 在號碼前加"86"
	if(lpszSmsCenter && strSmsc.Left(2) != "86")  
	{
		strSmsc = "86" + strSmsc;
	}
//	if (strNumber.Left(2) == "13" && strNumber.GetLength() == 11)
	{
//		if(strNumber.Left(2) != "86") 
		{
//			strNumber = "86" + strNumber;
		}
	}

	// 填充短消息結構
	if (lpszSmsCenter)
	{
		strcpy(SmParam.SCA, strSmsc);
	}
	else
	{
		memset(SmParam.SCA, 0x0, sizeof(SmParam.SCA));
	}
	strcpy(SmParam.TPA, strNumber);
	strcpy(SmParam.TP_UD, strContent);
	SmParam.TP_PID = 0;
	SmParam.TP_DCS = GSM_UCS2;
	nDataLen = gsmEncodePdu(&SmParam, szData);
	szData[nDataLen] = '\0';

	strMsg.Format("AT+CMGF=0\r");
	SendAndGetReturn(strMsg, strMsgReturn);

	unsigned char nSmscLength;	// SMSC串長度
	gsmString2Bytes(szData, &nSmscLength, 2);	// 取PDU串中的SMSC信息長度
	nSmscLength++;		// 加上長度字節本身

	strMsg.Format("AT+CMGS=%d\r", nDataLen/2-nSmscLength);
	nMsgLen = strMsg.GetLength();

	if (!Writen(strMsg, nMsgLen, &nMsgLen))
	{
		goto ON_SENDMSG_ERROR;
	}
	if (!Readn(szReadMsg, 4, &nMsgLen))
	{
		goto ON_SENDMSG_ERROR;
	}
	if (strncmp(szReadMsg, "\r\n> ", 4) != 0)
	{
		goto ON_SENDMSG_ERROR;
	}
	strMsg.Format("%s%c", szData, 26);
	if (!SendAndGetReturn(strMsg, strMsgReturn))
	{
		goto ON_SENDMSG_ERROR;
	}

	if (strMsgReturn.Right(4).Compare("OK\r\n") != 0)
	{
		goto ON_SENDMSG_ERROR;
	}

	m_csLock.Unlock();
	return TRUE;

ON_SENDMSG_ERROR:
	m_csLock.Unlock();
	return FALSE;
}

BOOL CMsgCtrl::ParseCMGLHead(const CString& strLine, COneMsg& msg)
{
//+CMGL: 1,"REC READ","8178",,"05/12/17,14:55:04+00"
//前面的+CMGL:已去掉了
	int nPos = 0;
	CString strTmp;
	CString strMsg = strLine;

	nPos = strMsg.Find(",");
	if (nPos < 0)
	{
		return FALSE;
	}
	strTmp = strMsg.Left(nPos);
	strMsg = strMsg.Mid(nPos+1);
	msg.nIndex = atoi(LPCTSTR(strTmp));
/*
	nPos = strMsg.Find(",");
	if (nPos < 0)
	{
		return FALSE;
	}
	strTmp = strMsg.Left(nPos);
	strMsg = strMsg.Mid(nPos+1);
	strTmp.TrimLeft(" \"");
	strTmp.TrimRight(" \"");
	msg.strType = strTmp;

	nPos = strMsg.Find(",");
	if (nPos < 0)
	{
		return FALSE;
	}
	strTmp = strMsg.Left(nPos);
	strMsg = strMsg.Mid(nPos+1);
	strTmp.TrimLeft(" \"");
	strTmp.TrimRight(" \"");
	msg.strFromNumber = strTmp;

	nPos = strMsg.Find(",");
	if (nPos < 0)
	{
		return FALSE;
	}
	strMsg = strMsg.Mid(nPos+1);

//	nPos = strMsg.Find(",");
//	if (nPos < 0)
//	{
//		return FALSE;
//	}
//	strMsg = strMsg.Mid(nPos+1);
	strTmp = strMsg;
	strTmp.TrimLeft(" \"");
	strTmp.TrimRight(" \"\r\n");
	msg.strServiceTime = strTmp;
*/
	return TRUE;

}

BOOL CMsgCtrl::RecvAllMsg(vector<COneMsg>& vtMsgs, BOOL bAutoDel)
{
	m_csLock.Lock();

	CString strMsg;
	CString strMsgReturn;
	CString strLine;
	int nPos1 = 0;
	int nPos2 = 0;
	int offset = 0;

//	strMsg.Format("AT+CMGF=1\r"); //只有TEXT時才可以刪除,不是所有MODEM
//	SendAndGetReturn(strMsg, strMsgReturn);

	strMsg.Format("AT+CMGL=4\r");
	if (!SendAndGetReturn(strMsg, strMsgReturn))
	{
		goto ON_RECVALLMSG_ERROR;
	}

	while ( (nPos1 = strMsgReturn.Find("+CMGL:", offset)) >= 0)
	{
		nPos1 += 6;
		offset = nPos1;
		nPos2 = strMsgReturn.Find("\n", offset);
		if (nPos2 < 0)
		{
			break;
		}
		offset = nPos2 + 1;
		
		COneMsg msg;
		strLine = strMsgReturn.Mid(nPos1, nPos2-nPos1);
		if (!ParseCMGLHead(strLine, msg))
		{
			continue;
		}

		nPos2 = strMsgReturn.Find("\n", offset);
		if (nPos2 < 0)
		{
			break;
		}
		strLine = strMsgReturn.Mid(offset, nPos2-offset);
		strLine.TrimLeft("\r\n ");
		strLine.TrimRight("\r\n ");
		offset = nPos2 + 1;

		SM_PARAM sm;
		memset(&sm, 0, sizeof(SM_PARAM));
		msg.nContentLen = gsmDecodePdu(LPCTSTR(strLine), &sm);
		msg.nMsgFmt = sm.TP_DCS;
		msg.nTP_PID = sm.TP_PID;
		msg.strServiceTime = sm.TP_SCTS;
		if (msg.nMsgFmt == GSM_UCS2)
		{
			msg.strContent = sm.TP_UD;
		}
		else
		{
			memcpy(msg.strContent.GetBuffer(msg.nContentLen+1), sm.TP_UD, msg.nContentLen);

		}
		msg.strFromNumber = sm.TPA;
		vtMsgs.push_back(msg);

	}

	if (bAutoDel)
	{
		//自動刪除
		vector<COneMsg>::iterator iter;
		for (iter=vtMsgs.begin(); iter!=vtMsgs.end(); iter++)
		{
			strMsg.Format("AT+CMGD=%d\r", iter->nIndex);
			if (SendAndGetReturn(strMsg, strMsgReturn))
			{
				//標記已刪除
				iter->bDeleted = TRUE;
			}
		}
	}


	m_csLock.Unlock();
	return TRUE;
ON_RECVALLMSG_ERROR:
	m_csLock.Unlock();
	return FALSE;
}


BOOL CMsgCtrl::SendAndGetReturn(const CString &strMsgSend, CString &strMsgReturn, BOOL bReturnFristLine)
{
#define MAX_READBUF  4096
	DWORD dwWrite = 0;
	COMSTAT ComStat;
	char szReadBuf[MAX_READBUF];
	int nReadLen = 0;
	DWORD dwBytesRead = 0;
	DWORD dwBytesToRead = (DWORD)strMsgSend.GetLength();
	DWORD dwErrorFlags = 0;
	CString strLine;
	CString strFristLine;

	strMsgReturn = "";

	if (!Writen(LPCTSTR(strMsgSend), (DWORD)(strMsgSend.GetLength()), &dwWrite) )
	{
		goto ON_CLEAR_BUF;
	}

	if (!ClearCommError(m_hComm, &dwErrorFlags, &ComStat))
	{
		return FALSE;
	}
	//應該讀取的數據長度 
//	dwBytesRead = (DWORD)strMsgSend.GetLength(); 
//	if (!Readn(szReadBuf, dwBytesRead, &dwBytesRead))
//	{
//		return FALSE;
//	}
/*
	if (!ClearCommError(m_hComm, &dwErrorFlags, &ComStat))
	{
		return FALSE;
	}
	//應該讀取的數據長度
	dwBytesToRead = sizeof(szReadBuf);
	dwBytesRead = dwBytesToRead < ComStat.cbInQue ? dwBytesToRead : ComStat.cbInQue; 
	if(dwBytesRead <= 0)
	{
//		return FALSE;
	}
	if (!ReadFile( m_hComm, szReadBuf, dwBytesRead, &dwBytesRead,NULL))
	{
		return FALSE;
	}
	szReadBuf[dwBytesRead] = '\0';
	strMsgReturn = szReadBuf;
*/
	

	for (;;)
	{
		if (ReadLine(szReadBuf, MAX_READBUF) < 0)
		{
			break;
		}
		strLine = szReadBuf;
		strLine.TrimRight("\r\n");
		strMsgReturn += strLine;
		strMsgReturn += "\r\n";
		
		if (bReturnFristLine && strFristLine.IsEmpty())
		{
			strFristLine = 	strLine;		
		}

		if (strLine.Compare("ERROR") == 0)
		{
			return FALSE;
		}

		if (strLine.Compare("OK") == 0)
		{
			if (bReturnFristLine)
			{
				strMsgReturn = strFristLine;
			}
			return TRUE;
		}
	}


//	return FALSE;
ON_CLEAR_BUF:

	return FALSE;
}


int CMsgCtrl::ReadLine(char *szBuf, const int maxLen)
{
	DWORD n, rc;
	char *ptr = szBuf;
	char c;
	BOOL bResult;
	int nLoop = 0;

	for (n=1; n<(DWORD)maxLen; n++)
	{
		rc = 0;
		bResult = ReadFile(m_hComm, &c, 1, &rc, 0);
		if (!bResult)
		{
			return -1;
		}

		if ( rc  == 1)
		{
			*ptr++ = c;
			if (c == '\n')
				break;
			nLoop = 0;
		}
		else
		{
			n --;
			Sleep(100);
			nLoop ++;
			if (nLoop > 10)
			{
				if (n == 2 && strncmp(szBuf, "> ", 2) == 0)
				{
					//沒輸入沒結束
					c = 26;
					Writen(&c, 1, &rc);
					continue;
				}
				break;
			}
		}
	}

	*ptr = '\0';
	return n;
}

BOOL CMsgCtrl::Readn(char* pszData, DWORD dwToRead, DWORD *pdwRead)
{
	DWORD dwRead;
	DWORD dwError;
	
	*pdwRead = 0;
	while ( dwToRead > 0 )
	{
		if (!ReadFile(m_hComm, (LPVOID)pszData, dwToRead, &dwRead, NULL))
		{
			dwError = GetLastError();

			break;
		}

		dwToRead -= dwRead;
		*pdwRead += dwRead;
		pszData += *pdwRead;
	}
	
	if (dwToRead != 0)
	{
		return FALSE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲影视在线观看| 高清免费成人av| 日韩午夜电影在线观看| 青娱乐精品视频| 2023国产精品| av亚洲产国偷v产偷v自拍| 亚洲美女视频在线观看| 欧美日韩国产在线观看| 免费三级欧美电影| 美女视频第一区二区三区免费观看网站 | 久久精品国产99| 久久久久99精品一区| www.欧美.com| 亚洲福利视频一区二区| 日韩欧美中文字幕一区| 国产99一区视频免费| 亚洲天天做日日做天天谢日日欢| youjizz国产精品| 亚洲一区二区三区三| 欧美成人bangbros| www.欧美色图| 日韩和欧美的一区| 久久精品视频一区二区三区| 91在线观看视频| 日日夜夜一区二区| 国产午夜精品理论片a级大结局| 99久久99久久精品免费看蜜桃| 亚洲一区成人在线| 亚洲精品一区二区三区精华液 | 国产在线不卡一卡二卡三卡四卡| 中文欧美字幕免费| 欧美日韩一区二区三区四区| 极品少妇xxxx精品少妇偷拍| 国产精品黄色在线观看| 午夜精品久久久久久久蜜桃app| 欧美一区二区三区播放老司机| 国产高清在线精品| 亚洲综合一二区| 久久精品男人的天堂| 欧美无砖砖区免费| 国产很黄免费观看久久| 亚洲午夜久久久久久久久电影院 | 日韩三区在线观看| 91视频在线观看| 久久av老司机精品网站导航| 综合久久久久综合| 精品久久一二三区| 在线观看av一区二区| 韩国女主播成人在线| 亚洲综合精品自拍| 国产日韩欧美高清在线| 欧美精品xxxxbbbb| 成人黄色软件下载| 裸体歌舞表演一区二区| 一区二区三区91| 国产午夜亚洲精品不卡| 欧美肥妇bbw| 95精品视频在线| 国产一区视频在线看| 午夜不卡在线视频| 亚洲日本va在线观看| 久久亚洲春色中文字幕久久久| 欧美日韩在线三级| 99视频精品免费视频| 九色综合狠狠综合久久| 亚洲图片一区二区| 国产精品动漫网站| 久久综合九色综合久久久精品综合| 欧美熟乱第一页| 91在线观看成人| 国产成人综合在线观看| 免费欧美日韩国产三级电影| 一区二区三区在线播| 国产精品麻豆99久久久久久| 欧美不卡一区二区三区四区| 欧美日韩免费电影| 日韩美女视频19| 久久婷婷成人综合色| 欧美一二三四区在线| 欧美日韩一区国产| 色婷婷亚洲一区二区三区| 成人性生交大片免费看在线播放| 麻豆精品一区二区av白丝在线| 亚洲大片在线观看| 一区二区三区影院| 亚洲少妇30p| 国产精品青草综合久久久久99| 精品日韩在线观看| 日韩网站在线看片你懂的| 欧美色爱综合网| 在线看日本不卡| 94-欧美-setu| av电影在线观看一区| 粉嫩欧美一区二区三区高清影视| 激情都市一区二区| 久久精品国产成人一区二区三区| 日韩国产在线一| 五月婷婷激情综合网| 亚洲午夜精品17c| 亚洲国产视频一区| 亚洲一区二区在线免费观看视频| 亚洲精品久久久蜜桃| 亚洲免费在线视频| 一区二区在线观看视频| 亚洲欧美日韩国产中文在线| 亚洲三级电影网站| 亚洲伦理在线免费看| 一区二区三区高清在线| 一区二区免费在线| 有码一区二区三区| 一区二区三区在线视频观看| 一区二区三区免费在线观看| 一区二区三区免费观看| 亚洲无人区一区| 香蕉影视欧美成人| 青青青伊人色综合久久| 精品一区二区三区香蕉蜜桃| 国模无码大尺度一区二区三区| 激情伊人五月天久久综合| 国产中文字幕一区| 国产不卡视频一区二区三区| 成人免费va视频| 中文字幕一区av| 一区二区三区在线观看动漫| 亚洲成人免费av| 全国精品久久少妇| 国产永久精品大片wwwapp| 国产91在线看| 91麻豆福利精品推荐| 欧美探花视频资源| 欧美一区二区黄色| 久久这里只有精品6| 国产精品久久久久久久久免费相片 | 成人激情图片网| 一本到不卡免费一区二区| 欧美色欧美亚洲另类二区| 在线不卡一区二区| 亚洲精品一区二区三区影院 | 亚洲一线二线三线视频| 日韩国产一二三区| 国产一区二区电影| bt欧美亚洲午夜电影天堂| 在线观看免费亚洲| 日韩欧美激情四射| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品女主播在线观看| 夜夜亚洲天天久久| 麻豆成人在线观看| 成人激情免费网站| 欧美日本韩国一区二区三区视频| 欧美电视剧免费全集观看| 欧美激情在线一区二区| 亚洲一区二区三区四区五区黄| 免费欧美在线视频| 成人sese在线| 在线成人小视频| 久久九九久久九九| 一区二区在线看| 九九精品一区二区| 91在线精品秘密一区二区| 欧美卡1卡2卡| 日本一区二区三区四区 | 午夜在线电影亚洲一区| 国模大尺度一区二区三区| 91麻豆123| 精品久久久久久久一区二区蜜臀| 国产98色在线|日韩| 欧美日韩精品一区二区在线播放| 久久无码av三级| 亚洲大片一区二区三区| 国产精品一区专区| 欧美日韩综合不卡| 国产午夜精品一区二区| 香港成人在线视频| 成人激情开心网| 日韩亚洲电影在线| 亚洲品质自拍视频网站| 久久99精品久久久久久动态图 | 一区二区三区四区在线播放| 激情五月婷婷综合网| 色国产综合视频| 国产亚洲精品7777| 午夜精品福利一区二区三区av| 丰满白嫩尤物一区二区| 制服丝袜亚洲网站| 1区2区3区欧美| 国产一区二区三区视频在线播放| 欧美性受极品xxxx喷水| 欧美韩国日本不卡| 毛片不卡一区二区| 欧美亚洲一区二区在线| 国产女主播在线一区二区| 蜜臀99久久精品久久久久久软件| 一本色道久久综合亚洲91 | 一区二区三区在线视频播放| 国产91对白在线观看九色| 日韩欧美在线一区二区三区| 玉足女爽爽91| 99精品视频中文字幕| 久久久噜噜噜久噜久久综合|