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

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

?? shortmessage.cpp

?? VC寫的短信串口發送程序
?? CPP
字號:
// ShortMessage.cpp: implementation of the CShortMessage class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ShortMessage.h"

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

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

CShortMessage::CShortMessage()
{
	m_nPos		=	0;		//初始化為開始位置
	m_bBOF		=	TRUE;	//為開始位置時,此為TRUE
	m_bEOF		=	FALSE;	//為末尾位置時,此為FALSE
}

CShortMessage::~CShortMessage()
{
	for(int i=0; i<GetSize();i++)
	{
		CSMSItem * pItem = GetAt(i);

		if(pItem)
			delete pItem;
	}
	RemoveAll();
}

void CShortMessage::Open(LPCTSTR szSmsInfo)
{
	//
	m_szContent	=	szSmsInfo;

	//解析SMS信息列表
	ResolveSMSInfoList(m_szContent);
}

char CShortMessage::BinStringToChar(LPCTSTR szbuff)
{
	char Table[16][5] = 
	{
		"0000","0001","0010","0011",
		"0100","0101","0110","0111",
		"1000","1001","1010","1011",
		"1100","1101","1110","1111"
	};

	char szBuffer1[5] = {0};
	char szBuffer2[5] = {0};
	char ch;

	strncpy(szBuffer1, szbuff, 4);
	strncpy(szBuffer2, &szbuff[4], 4);

	int bExist = -1;
	for(int i=0;i<16;i++)
	{
		if( strncmp(szBuffer1, Table[i], 4) ==0 )
		{
			bExist = i;
			break;
		}
	}

	if ( bExist == -1 )
		return 0;
	else
		ch = i * 16;

	bExist = -1;
	for(i=0;i<16;i++)
	{
		if( strncmp(szBuffer2, Table[i], 4) ==0 )
		{
			bExist = i;
			break;
		}
	}

	if ( bExist == -1 )
		return 0;
	else
		ch += i;

	return ch;
}

CString CShortMessage::Convert7BitString(LPCTSTR szBuffer)
{
	CString szBuf = szBuffer;
	CString szBinStr = _T("");
	for(int i=0;i<szBuf.GetLength();i+=2)
	{
		CString szChar = szBuf.Mid(i,2);
		szBinStr += HexStringToBinString(szChar);
	}

	CString szStr  = _T("");
	CString szPrev = _T("");
	CString szNext = _T("");
	int nCount = 1;
	for(int j=0;j<szBinStr.GetLength();j+=8,nCount++)
	{
		CString szBuf = szBinStr.Mid(j,8);

		szNext = szBuf.Left(nCount);
		szBuf.Delete(0,nCount);

		if (szBuf.GetLength() < 7 )
			szBuf = szBuf + szPrev;

		if (szBuf.GetLength() == 7 )
		{
			szBuf.Insert(0,'0');
			szStr += BinStringToChar(szBuf);
		}

		szPrev = szNext;

		if (nCount==7) 
		{
			szBuf = szPrev;
			szBuf.Insert(0,'0');
			szStr += BinStringToChar(szBuf);

			nCount = 0;
		}
	}

	return (LPCTSTR)szStr;
}

char * CShortMessage::HexStringToBinString(LPCTSTR szbuff)
{
	char Table[16][5] = 
	{
		"0000","0001","0010","0011",
		"0100","0101","0110","0111",
		"1000","1001","1010","1011",
		"1100","1101","1110","1111"
	};
	char * szbuf = new char[9];
	memset(szbuf, 0, 9);

	for(unsigned int i=0;i<strlen(szbuff);i++)
	{
		if (::isdigit(szbuff[i]))
		{
			strcat(szbuf, Table[szbuff[i]-48]);
		}
		else
		{
			if (::islower(szbuff[i]))
				strcat(szbuf, Table[szbuff[i]-87]);
			else
			{
				if (::isupper(szbuff[i]))
					strcat(szbuf, Table[szbuff[i]-55]);
			}
		}
	}
	
	return szbuf;
}

BOOL CShortMessage::ResolveSMSInfo(CSMSItem & pItem, CString bstrInfo)
{
	CString strSource = bstrInfo;

	//保存原有信息
	pItem.bstrSMSInfomation = bstrInfo;

	CString	strCallCenter;		//短信中心
	CString	strCallNumber;		//發送號碼
	CString	strDateTime;		//日期時間
	CString	strSMSContent;		//短信內容

	//短信中心
	CString strSMSCLength(strSource.Left(2));
	int intSMSCLength = HexString2Int((LPCTSTR)strSMSCLength) * 2 - 2;
	int iPos = 2;
	CString strMobileType(strSource.Mid(iPos, 2));

	iPos += 2;
	CString strMobileLength(strSource.Mid(iPos, 2));
	int intMobileLength = HexString2Int((LPCTSTR)strMobileLength);
	int iTemp = intSMSCLength % 2 == 0 ? intSMSCLength: intSMSCLength + 1;
	strCallCenter = strSource.Mid(iPos, iTemp);
	strCallCenter = ConvertSemiOctet((LPCTSTR)strCallCenter);

	if (strCallCenter.Right(1).Compare("F") == 0)
		strCallCenter = strCallCenter.Left(intSMSCLength-1);

	if (strMobileType.Compare("91") == 0)
		strCallCenter = "+" + strCallCenter;

	//發送號碼
	iPos += ( intSMSCLength + 2 );
	strMobileLength = strSource.Mid(iPos, 2);
	intMobileLength = HexString2Int((LPCTSTR)strMobileLength);

	if(intMobileLength > 20)	//電話號碼將來會達到20位???
		return FALSE;
	
	iPos += 2;
	strMobileType = strSource.Mid(iPos, 2);
	
	iPos += 2;
	iTemp = intMobileLength % 2 == 0 ? intMobileLength: intMobileLength + 1;
	strCallNumber = strSource.Mid(iPos, iTemp);
	strCallNumber = ConvertSemiOctet((LPCTSTR)strCallNumber);

	if (strCallNumber.Right(1).Compare("F") == 0)
		strCallNumber = strCallNumber.Left(intMobileLength);

	if (strMobileType.Compare("91") == 0)
		strCallNumber = "+" + strCallNumber;

	//消息發送段


	//編碼類型(Unicode or ASCii)
	iPos += iTemp + 2;
	CString strTPDCS(strSource.Mid(iPos, 2));
	int intDataType;
	if (strTPDCS.Compare("08") == 0)
		intDataType = 1;		//Unicode
	else
		intDataType = 0;		//ASCii

	//日期時間
	CString strYear, strMonth, strDay;
	CString strHour, strMinute, strSecond;

	char strYearTemp[5];
	iPos += 2;
	CString strTemp(strSource.Mid(iPos, 14));
	strTemp = ConvertSemiOctet((LPCTSTR)strTemp);
	int iYear = OctString2Int((LPCTSTR)strTemp.Left(2));
	if (iYear < 50)
	{
		iYear += 2000;
	}
	else
	{
		iYear += 1990;
	}
	_itoa(iYear, strYearTemp, 10);
	strYear = strYearTemp;

	strMonth = strTemp.Mid(2, 2);
	strDay = strTemp.Mid(4, 2);
	strHour = strTemp.Mid(6, 2);
	strMinute = strTemp.Mid(8, 2);
	strSecond = strTemp.Mid(10, 2);
	strDateTime = strYear + "-" + strMonth + "-" + strDay + " " + strHour + ":" + strMinute + ":" + strSecond;
	
	//短信內容
	iPos += 14;
	CString strDataLength(strSource.Mid(iPos, 2));
	int intDataLength = HexString2Int((LPCTSTR)strDataLength);
	iPos += 2;
	CString strDataSrc(strSource.Mid(iPos));
	if (intDataType == 1)		//processing unicode
	{
		// Unicode 編碼
		intDataLength /= 2;
		strSMSContent = ConvertUnicode2String(strDataSrc);
	}
	else
	{
		// ASCII 編碼
		strSMSContent = Convert7BitString(strDataSrc);
	}

	strcpy(pItem.szCallCenter, strCallCenter);
	strcpy(pItem.szCallNumber, strCallNumber);
	strcpy(pItem.szDateTime,   strDateTime);
	strcpy(pItem.szSMSContent, strSMSContent);
	/*
	pItem.bstrCallcenter	=	strCallCenter;
	pItem.bstrCallNumber	=	strCallNumber;
	pItem.bstrDateTime		=	strDateTime;
	pItem.bstrSMSContent	=	strSMSContent;
	*/

	char szBuffer[5]		=	{0};

	//月
	int nMonth	= atoi(strMonth);
	//日
	int nDay	= atoi(strDay);
	//時
	int nHour	= atoi(strHour);
	//分
	int nMinute	= atoi(strMinute);
	//秒
	int nSecond	= atoi(strSecond);

	pItem.dtSMSDateTime		=	COleDateTime(iYear,nMonth,nDay,nHour,nMinute,nSecond);

	return TRUE;
}

void CShortMessage::ResolveSMSInfoList(CString bstrInfo)
{
	CString szInfo = bstrInfo;

	m_szContent = _T("");

	//去掉AT+CMGL=4等命令信息
	int nPos = szInfo.Find("\r\n");
	if ( nPos != -1 )
		szInfo = szInfo.Right( szInfo.GetLength() - nPos - 2 );

	nPos = szInfo.Find("\r\n");
	while(nPos!=-1)
	{
		CString szLine = szInfo.Left(nPos);
		if ( szLine.Find("OK") != -1 )
			break;	//退出循環

		//除去+CMGL信息
		if ( szLine.Find("+CMGL") != -1 )
		{
			szInfo = szInfo.Right( szInfo.GetLength() - nPos - 2 );
			nPos = szInfo.Find("\r\n");
			szLine = szInfo.Left(nPos);
		}

		//是消息體,進行解碼
		if ( szLine.GetLength() > 10 )
		{
			CSMSItem * pItem = new CSMSItem;
			
			if(ResolveSMSInfo(*pItem,szLine))
				Add(pItem);
		}

		//繼續查找
		szInfo = szInfo.Right( szInfo.GetLength() - nPos - 2 );
		nPos = szInfo.Find("\r\n");
	}

	if (GetSize()==0)
		m_bEOF = TRUE;
}

DATE CShortMessage::GetDateTime()
{
	// TODO: Add your implementation code here
	CSMSItem * pItem = GetAt(m_nPos);
	if ( pItem )
		return (DATE)pItem->dtSMSDateTime;
	else
		return 0;
}

LPCTSTR CShortMessage::GetCallCenter()
{
	CSMSItem * pItem = GetAt(m_nPos);
	if ( pItem )
		return pItem->szCallCenter;
	else
		return _T("");
}

LPCTSTR CShortMessage::GetCallNumber()
{
	CSMSItem * pItem = GetAt(m_nPos);
	if ( pItem )
		return pItem->szCallNumber;
	else
		return _T("");
}

LPCTSTR CShortMessage::GetSMSContent()
{
	CSMSItem * pItem = GetAt(m_nPos);
	if ( pItem )
		return pItem->szSMSContent;
	else
		return _T("");
}

LPCTSTR CShortMessage::GetDateString()
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())

	// TODO: Add your implementation code here
	CSMSItem * pItem = GetAt(m_nPos);
	if ( pItem )
		return pItem->szDateTime;
	else
		return _T("");
}

void CShortMessage::MoveFirst()
{
	//移動游標到最前位置
	m_nPos = 0;
	m_bBOF = TRUE;
	m_bEOF = FALSE;
}

void CShortMessage::MoveLast()
{
	//移動游標到最后位置
	m_nPos = GetSize() - 1;

	m_bEOF = TRUE;
	m_bBOF = FALSE;
}

void CShortMessage::MoveNext()
{
	//移動游標到后一位置
	if ( m_nPos <= GetSize() - 1 )
	{
		m_nPos ++;
		m_bBOF = FALSE;

		if ( m_nPos == GetSize() )
		{
			m_bEOF = TRUE;
			m_nPos --;
		}
	}
}

void CShortMessage::MovePrev()
{
	//移動游標到前一位置
	if ( m_nPos >= 0 )
	{
		m_nPos --;
		m_bEOF = FALSE;

		if ( m_nPos == -1 )
		{
			m_bBOF = TRUE;
			m_nPos ++;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美韩国日本综合| 国产精品久久久久久久久免费相片| 欧美三区在线观看| 欧美日韩国产电影| 国产午夜精品一区二区三区四区| 精品免费国产二区三区| 亚洲最快最全在线视频| 蜜臀91精品一区二区三区| 99久久精品免费看| 久久影院电视剧免费观看| 欧美体内she精高潮| 国产日产欧美一区二区三区| 亚洲无线码一区二区三区| 狠狠色综合播放一区二区| 99久免费精品视频在线观看| 精品国产1区二区| 亚洲午夜激情av| 精品一区二区三区在线观看| 欧美在线观看禁18| 日本一区二区在线不卡| 亚洲一区中文在线| 日本黄色一区二区| 国产精品三级在线观看| 粉嫩av一区二区三区| 91香蕉视频mp4| 欧美探花视频资源| 国产精品午夜在线观看| 粉嫩嫩av羞羞动漫久久久 | 欧美一二三在线| 亚洲一区二区偷拍精品| 色综合久久中文字幕| 亚洲精品中文字幕乱码三区| 亚洲免费在线视频一区 二区| 91色在线porny| 最新热久久免费视频| 粉嫩久久99精品久久久久久夜| 国产午夜精品美女毛片视频| 成人精品国产一区二区4080| 日韩毛片精品高清免费| 成人免费视频免费观看| 中文字幕av资源一区| 久久不见久久见免费视频1| 香港成人在线视频| 亚洲日本电影在线| 久久久久久一级片| 精品精品欲导航| 欧美视频在线一区二区三区 | 国产精品一区久久久久| 日本在线不卡视频| 亚洲国产成人va在线观看天堂| 国产欧美精品一区二区色综合| 精品免费99久久| 精品美女一区二区三区| 日韩情涩欧美日韩视频| 日韩免费电影一区| 精品国产乱子伦一区| 久久九九久精品国产免费直播| 久久亚洲精品国产精品紫薇| 国产目拍亚洲精品99久久精品| 国产日韩欧美电影| 亚洲丝袜制服诱惑| 午夜电影网亚洲视频| 国产91精品在线观看| 91影院在线免费观看| 欧美三级日韩三级| 日韩欧美一区在线观看| 久久影视一区二区| 日韩二区三区四区| 国产曰批免费观看久久久| 国产成人综合自拍| 欧美综合欧美视频| 日韩三级视频中文字幕| 国产精品久久久久久久久久久免费看 | 色哟哟一区二区| 884aa四虎影成人精品一区| 久久精品日产第一区二区三区高清版| 国产精品免费久久久久| 日韩精品欧美成人高清一区二区| 精品系列免费在线观看| 色狠狠色噜噜噜综合网| 日韩欧美一级在线播放| 亚洲综合在线免费观看| 国产成人精品一区二区三区四区 | 国产精品88av| 欧美日韩一卡二卡三卡| 欧美国产精品v| 久久99精品国产.久久久久久| 色婷婷av一区| 国产精品久久久久久久久免费相片| 日韩精品免费视频人成| 91国偷自产一区二区开放时间| 久久久久久久久伊人| 另类成人小视频在线| 日韩区在线观看| 九九视频精品免费| 欧美成人a∨高清免费观看| 天天综合天天综合色| 色综合网色综合| 亚洲人一二三区| 欧美午夜视频网站| 一区二区三区免费观看| jvid福利写真一区二区三区| 国产精品乱子久久久久| www.视频一区| 国产精品久久久久久亚洲伦| 99久久99久久免费精品蜜臀| 欧美国产视频在线| 99精品热视频| 亚洲一区二区五区| 日韩一区二区三区视频在线观看| 免费的国产精品| 国产拍欧美日韩视频二区| 国产丶欧美丶日本不卡视频| 国产欧美一区二区精品性色| 免费观看一级特黄欧美大片| 欧美人狂配大交3d怪物一区| 美国三级日本三级久久99| 久久久亚洲精华液精华液精华液| 成人黄色在线看| 日韩黄色小视频| 国产精品毛片久久久久久| 91麻豆精品国产自产在线 | 欧美国产97人人爽人人喊| 91视频在线观看| 91在线国产福利| 精品一区二区久久久| 亚洲精品日韩一| 日韩一区二区三区视频| 91久久精品网| 高清久久久久久| 日韩激情中文字幕| 一区二区高清免费观看影视大全| 精品久久久久久久久久久久久久久久久 | 99v久久综合狠狠综合久久| 亚洲午夜影视影院在线观看| 久久精品欧美日韩| 正在播放亚洲一区| 欧美日韩在线不卡| 欧美网站一区二区| 色8久久精品久久久久久蜜| 成人app网站| 成人app网站| 在线免费观看日本一区| 91一区在线观看| 在线观看视频欧美| 色婷婷精品久久二区二区蜜臂av| 国产伦精品一区二区三区免费| 亚洲成人av电影| 图片区小说区国产精品视频| 亚洲妇熟xx妇色黄| 亚洲高清视频中文字幕| 免费国产亚洲视频| 国产成人高清在线| 高清不卡一区二区| 国产精品一区不卡| 国产白丝网站精品污在线入口| 久久狠狠亚洲综合| 国产在线精品不卡| 国产一区二区在线影院| 国产毛片精品国产一区二区三区| 麻豆视频观看网址久久| 日本中文在线一区| 国产老肥熟一区二区三区| 国产一区二区在线视频| 99久久99久久精品免费观看| 北岛玲一区二区三区四区| 91麻豆自制传媒国产之光| 欧美亚洲自拍偷拍| 精品欧美一区二区久久| 久久久不卡网国产精品二区| 国产精品大尺度| 日本系列欧美系列| 一本大道久久a久久综合| 日本精品免费观看高清观看| 99久久免费视频.com| 成年人国产精品| 一本到三区不卡视频| 国产精品亲子乱子伦xxxx裸| 国产一区二区三区最好精华液| 亚洲激情五月婷婷| 欧美综合天天夜夜久久| 一区二区欧美精品| 欧美婷婷六月丁香综合色| 亚洲成人三级小说| 国产精品77777| 日本高清视频一区二区| 日韩女同互慰一区二区| 亚洲欧美日韩国产成人精品影院| 美女在线视频一区| 一本大道久久a久久综合婷婷| 欧美日韩一级片在线观看| 国产午夜精品美女毛片视频| 欧美高清在线一区二区| 亚洲在线视频网站| 日本大胆欧美人术艺术动态| 不卡的电影网站| 欧美一二三区在线观看| 一区二区高清免费观看影视大全| 韩国女主播一区| 欧美成人高清电影在线|