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

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

?? wmsgpacket.cpp

?? 手機發送短信的Activex控件
?? CPP
字號:
// WMsgFrame.cpp: implementation of the CWMsgPacket class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
//tts #include "WSMModule.h"
#include "WMsgPacket.h"
#include "ByteHexStrConvert.h"

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

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

CWMsgPacket::CWMsgPacket()
{
	Reset();
}

CWMsgPacket::~CWMsgPacket()
{

}

BOOL CWMsgPacket::SetPhoneNumberBegin(BYTE toSet)
{
	BOOL bResult = toSet == PHONE_NUMBER_BEGIN;
	m_numberDigitReceived = 0;
	return bResult;
}

BOOL CWMsgPacket::SetPhoneNumberDigit(BYTE toSet)
{
	BOOL bResult = IsValidPhoneNumberDigit(toSet);
	
	if(bResult) 
		m_szPhoneNumber[m_numberDigitReceived++] = toSet;

	return bResult;
}

BOOL CWMsgPacket::SetPhoneNumberEnd(BYTE toSet)
{
	BOOL bResult = toSet == PHONE_NUMBER_END;
	
	if (bResult)
	{
		m_szPhoneNumber[m_numberDigitReceived] = '\0';
		
		// remove +86
		CString strTmp(m_szPhoneNumber);
		strTmp.Replace("+86", "");
		strcpy(m_szPhoneNumber, strTmp);
		m_numberDigitReceived = strTmp.GetLength();
	}

	return bResult;
}

void CWMsgPacket::AppendPacketByte(BYTE byData)
{
	ASSERT(m_dataReceived < MAX_SHORT_MSG_LEN);
	m_msgFrameData[m_dataReceived++] = byData;
}

BOOL CWMsgPacket::SetFrameBegin(BYTE toSet)
{
	BOOL bResult = toSet == FRAME_BEGIN_ID;
	if (bResult) AppendPacketByte(toSet);

	return bResult;
}

BOOL CWMsgPacket::SetFrameNo(BYTE toSet)
{
	BOOL bResult = IsValidFrameNo(toSet);
	if(bResult) AppendPacketByte(toSet);

	return bResult;
}

BOOL CWMsgPacket::SetPacketNo(BYTE toSet)
{
	BOOL bResult = IsValidPacketNo(toSet);
	if(bResult) AppendPacketByte(toSet);
	
	return bResult;
}

BOOL CWMsgPacket::SetLastPacketFlag(BYTE toSet)
{
	BOOL bResult = toSet == LAST_PACKET_ID;
	if(bResult)
	{
		m_bLastPacket = TRUE;
		AppendPacketByte(toSet);
	}

	return bResult;
}

BOOL CWMsgPacket::IsValidMsgType(BYTE byType)
{
	switch(byType)
	{
	case DASHI_MSG:
	case DIAODU_MSG_NEED_ANSWER:
	case DIAODU_MSG_NEEDNOT_ANSWER :
	case ANSWER_FRAME_MSG :
	case SEND_PACKET_AGAIN_MSG :
	case SEND_FRAME_AGAIN_MSG :
		return TRUE;
	default :
		return FALSE;
	}
}

BOOL CWMsgPacket::SetMessageType(BYTE toSet)
{
	BOOL bResult = IsValidMsgType(toSet);
	if(bResult) AppendPacketByte(toSet);
	
	return bResult;
}


BOOL CWMsgPacket::IsValidTextOrCheckSumByte(BYTE byData)
{
	return isxdigit(byData); 
}

BOOL CWMsgPacket::IsValidPhoneNumberDigit(BYTE byDigit)
{
	return isdigit(byDigit) || byDigit == '+';		// +86---
}

BOOL CWMsgPacket::AppendMsgTextOrCheckSum(BYTE toSet)
{
	BOOL bResult = IsValidTextOrCheckSumByte(toSet);
	if(bResult) AppendPacketByte(toSet);

	return bResult;
}

BOOL CWMsgPacket::SetFrameEnd(BYTE toSet)
{
	BOOL bResult = toSet == FRAME_END_ID;
	if(bResult) AppendPacketByte(toSet);

	return bResult;
}

BOOL CWMsgPacket::CheckCheckSum()
{
	int nBytes = m_dataReceived - 3;		// 2 check sum + 1 end char
	BYTE currSum = CalculateSum(nBytes);

	LPBYTE lpCheckSum = m_msgFrameData + nBytes;
	
	BYTE checkSum;
	HexStrLenToByte((const char*)lpCheckSum, 2, &checkSum);

	return (BYTE)(checkSum + currSum) == 0;

}

void CWMsgPacket::Reset()
{
	m_dataReceived = 0;
	m_numberDigitReceived = 0;
	m_bLastPacket = FALSE;
}

void CWMsgPacket::GenerateMsgPacket(LPCSTR lpszPhoneNumber, BYTE msgType, BYTE frameNo, BYTE packetNo, 
									const BYTE* lpBinData, DWORD dwDataSize, BOOL bLastPacket)
{
	
	// set phone number
	strcpy(m_szPhoneNumber, lpszPhoneNumber);
	m_numberDigitReceived = strlen(m_szPhoneNumber);

	VERIFY(SetFrameBegin(FRAME_BEGIN_ID));
	VERIFY(SetFrameNo(frameNo));
	if(bLastPacket) VERIFY(SetLastPacketFlag(LAST_PACKET_ID));
	VERIFY(SetPacketNo(packetNo));
	VERIFY(SetMessageType((BYTE)msgType));

	// convert and get text
	ConvertAndAppend(lpBinData, dwDataSize);
	AppendCheckSum();

	SetFrameEnd(FRAME_END_ID);
	
}

void CWMsgPacket::ConvertAndAppend(const BYTE* lpBinData, int binDataSize)
{
	BYTE* pDest = m_msgFrameData + m_dataReceived;
	m_dataReceived += ByteToHexStr(lpBinData, binDataSize, (char*)pDest);
}

void CWMsgPacket::AppendCheckSum()
{
	BYTE currSum = CalculateSum(m_dataReceived);
	BYTE sumNeed = 0 - currSum;

	ConvertAndAppend(&sumNeed, 1);
}

BYTE CWMsgPacket::PacketIndex2PacketNo(int idx)
{
	ASSERT(idx < MAX_PACKETS_PER_FRAME);
	return idx + MIN_PACKET_NO;
}

int  CWMsgPacket::PacketNo2PacketIndex(BYTE byNo)
{
	ASSERT(byNo <= MAX_PACKET_NO);
	return byNo - MIN_PACKET_NO;
}


BYTE CWMsgPacket::CalculateSum(int nBytes) const
{
	BYTE byteRes = 0;

	const BYTE* pStart = (const BYTE*)m_msgFrameData;
	const BYTE* pEnd = pStart + nBytes - 1;

	for( const BYTE* pData = pStart; pData <= pEnd; pData++)
		byteRes += *pData;

	return byteRes;
}

const BYTE* CWMsgPacket::GetDataAndSize(int& dataSize) const
{
	dataSize = m_dataReceived;
	return m_msgFrameData;
}

LPCSTR CWMsgPacket::GetPhoneNumber() const
{
	return m_szPhoneNumber;
}

BYTE CWMsgPacket::GetMessageType() const
{
	int idxMsgType = 3;
	if(m_bLastPacket) idxMsgType ++;

	return m_msgFrameData[idxMsgType];
}

int  CWMsgPacket::GetMsgBinaryData(LPBYTE lpDest) const
{
	// get position of first byte

	int idxFirstData = 4;
	if(m_bLastPacket) idxFirstData ++;
	const char* pDataBegin = (const char*)m_msgFrameData + idxFirstData;

	// get data size
	int idxLastData = m_dataReceived - 1;		// position of end flag
	idxLastData -= 3;							// 2 check sum + 1 end flag
	int nDataSize = idxLastData - idxFirstData + 1;
	ASSERT(nDataSize >= 0);

	return HexStrLenToByte(pDataBegin, nDataSize, lpDest);
}

BYTE CWMsgPacket::GetFrameNo() const
{
	int idxFrameNo = 1;
	return m_msgFrameData[idxFrameNo];
}

BYTE CWMsgPacket::GetPacketNo() const
{
	int idxPacketNo = 2;
	if(m_bLastPacket) idxPacketNo++;

	return m_msgFrameData[idxPacketNo];
}

BOOL CWMsgPacket::IsLastPacket() const
{
	return m_bLastPacket;
}

BOOL   CWMsgPacket::IsValidPacketNo(BYTE byNo)
{
	return byNo >= MIN_PACKET_NO && byNo <= MAX_PACKET_NO;
}

BOOL   CWMsgPacket::IsValidFrameNo(BYTE byNo)
{
	return byNo >= MIN_FRAME_NO && byNo <= MAX_FRAME_NO;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美另类videos死尸| 欧美日韩在线亚洲一区蜜芽| 肉肉av福利一精品导航| 亚洲精品欧美专区| 一区二区三区91| 亚洲国产成人va在线观看天堂| 亚洲一卡二卡三卡四卡五卡| 亚洲在线观看免费| 蜜臀91精品一区二区三区| 美女视频第一区二区三区免费观看网站| 五月婷婷久久丁香| 美女尤物国产一区| 国产电影精品久久禁18| 丁香网亚洲国际| 91黄色在线观看| 欧美麻豆精品久久久久久| 日韩三级免费观看| 国产亚洲人成网站| 亚洲精品欧美在线| 毛片一区二区三区| 99精品久久99久久久久| 欧美视频在线观看一区| 日韩视频免费直播| 国产精品福利一区二区三区| 亚洲国产日韩综合久久精品| 麻豆国产欧美日韩综合精品二区 | 欧美午夜精品一区| 日韩一区二区三区免费观看| 久久精品亚洲麻豆av一区二区| 国产精品久久久久7777按摩| 亚洲成人av中文| 成人午夜电影久久影院| 欧美三级电影网| 亚洲国产精品激情在线观看| 一区av在线播放| 激情成人综合网| 色妹子一区二区| 久久精品亚洲乱码伦伦中文| 亚洲国产视频一区二区| 国产酒店精品激情| 欧美日韩www| 国产精品免费久久久久| 美女久久久精品| 在线观看国产精品网站| 国产亚洲人成网站| 日韩和欧美一区二区三区| 成人福利视频在线| 久久久五月婷婷| 日韩国产欧美在线播放| 色婷婷综合激情| 欧美国产成人精品| 激情综合亚洲精品| 91精品在线一区二区| 有码一区二区三区| 91网站在线观看视频| 久久久久久久久久美女| 毛片一区二区三区| 欧美二区乱c少妇| 亚洲一区二区成人在线观看| 99精品视频一区二区| 久久精品网站免费观看| 免费不卡在线观看| 制服丝袜成人动漫| 亚洲成人你懂的| 欧美日韩国产精品成人| 一二三区精品视频| 欧洲一区在线电影| 亚洲欧美国产高清| 日本精品免费观看高清观看| 一色桃子久久精品亚洲| 99久久夜色精品国产网站| 国产精品精品国产色婷婷| 国产99久久久国产精品潘金网站| 精品999久久久| 国产剧情一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| 成人av手机在线观看| 中文字幕一区三区| 在线看日本不卡| 午夜精品久久久久久| 欧美精品久久久久久久久老牛影院| 亚洲第一搞黄网站| 日韩欧美国产三级| 国产精品综合一区二区三区| 国产三区在线成人av| 高清在线成人网| 亚洲欧洲国产日本综合| 91电影在线观看| 日本视频免费一区| 国产农村妇女毛片精品久久麻豆| 不卡视频一二三| 亚洲大型综合色站| 精品国产91亚洲一区二区三区婷婷| 国产毛片一区二区| 亚洲另类在线一区| 日韩精品一区二区三区老鸭窝| 国产一区二区三区免费| 亚洲欧美日韩中文播放| 91精品国产色综合久久| 激情丁香综合五月| 亚洲激情av在线| 日韩欧美的一区二区| av一区二区不卡| 日本vs亚洲vs韩国一区三区二区| 久久综合狠狠综合久久综合88 | 4438亚洲最大| 国产美女一区二区| 亚洲国产婷婷综合在线精品| 久久天天做天天爱综合色| 色www精品视频在线观看| 免费成人你懂的| 亚洲人123区| 欧美精品一区二区在线播放| 日本韩国精品在线| 狠狠色综合播放一区二区| 亚洲综合一区二区| 国产日产欧美一区二区视频| 欧美老肥妇做.爰bbww| 粉嫩av一区二区三区在线播放| 亚洲伊人伊色伊影伊综合网| 国产亚洲欧洲一区高清在线观看| 欧美日韩精品系列| 99精品黄色片免费大全| 国产在线精品国自产拍免费| 一区二区在线观看免费| 国产欧美综合在线观看第十页| 欧美肥妇bbw| 91论坛在线播放| 成人性色生活片免费看爆迷你毛片| 同产精品九九九| 亚洲自拍偷拍麻豆| 综合精品久久久| 欧美高清在线精品一区| 欧美草草影院在线视频| 91精品国产91久久久久久一区二区 | 国产一区在线观看视频| 夜夜夜精品看看| 最新国产精品久久精品| 中文字幕精品一区二区三区精品| 日韩欧美亚洲国产精品字幕久久久| 欧美怡红院视频| 欧洲亚洲国产日韩| 日本韩国一区二区| voyeur盗摄精品| 成人小视频免费观看| 成人免费的视频| 不卡av在线免费观看| 成人av资源站| aaa亚洲精品| 成人高清视频在线| 91丨porny丨蝌蚪视频| 99re成人在线| 在线精品视频免费播放| 91国模大尺度私拍在线视频| 色综合久久久网| 色综合久久久久| 欧美中文字幕一区二区三区| 欧美在线观看一二区| 欧美日韩亚洲综合| 欧美一区二区三区视频| 精品久久99ma| 国产日韩欧美亚洲| 国产精品久久免费看| 亚洲免费在线观看视频| 亚洲va欧美va国产va天堂影院| 欧美aaa在线| 丁香婷婷综合激情五月色| 北岛玲一区二区三区四区 | 亚洲日本va午夜在线影院| 亚洲欧洲中文日韩久久av乱码| 一区二区三区欧美| 五月天精品一区二区三区| 久88久久88久久久| 成人sese在线| 在线不卡中文字幕播放| 久久综合成人精品亚洲另类欧美| 欧美国产精品专区| 亚洲国产人成综合网站| 久久精品国产色蜜蜜麻豆| 成人免费视频国产在线观看| 精品视频在线免费| 欧美精品一区二区三区在线播放| 国产精品久久久久久久久免费丝袜| 亚洲一区二区影院| 国产成人一区在线| 欧美美女视频在线观看| 国产精品全国免费观看高清| 午夜不卡av在线| 国产成人一区二区精品非洲| 欧美日韩综合色| 久久久久一区二区三区四区| 欧美午夜一区二区| 91精品久久久久久久99蜜桃| 久久婷婷综合激情| 夜夜嗨av一区二区三区中文字幕 | 国产成人精品一区二区三区网站观看| 色香色香欲天天天影视综合网| 欧美变态口味重另类| 亚洲一级二级在线| 成人av小说网|