⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsmprotocol.cpp

📁 使用gsm收发短信的方式传递文件
💻 CPP
字号:
// GSMProtocol.cpp: implementation of the CGSMProtocol class.
//
//////////////////////////////////////////////////////////////////////

#include "..\stdafx.h"
#include "GSMProtocol.h"

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

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

CGSMProtocol::CGSMProtocol()
{

}

CGSMProtocol::~CGSMProtocol()
{

}
/////////////////////////////////////////////////////////////////////////////////
//功能:在一个字互换低字节与高直接
//history       name		date             remark
//				wanfangjie	2003.03.20		create
//返回值:数据长度
/////////////////////////////////////////////////////////////////////////////////
int CGSMProtocol::InterchangeByteInWord(char *pSrc, char *pRes, int nDataLen)
{
	int i=0;
	if((nDataLen%2)!=0)
	{
		nDataLen-=1;
	}
	for(i=0;i<nDataLen;i++)
	{
		if((i%2)==0)
		{
			pRes[i+1]=pSrc[i];
		}
		else
		{
			pRes[i-1]=pSrc[i];
		}
	}
	pRes[nDataLen]=0;
	return nDataLen;
}
//////////////////////////////////////////////////////////////////
//功能:把一个字节的高四位和低四位变为两个字符,该字符为0~9或A~9
//history       name		date             remark
//				wanfangjie	2003.03.20		create
//返回值:字符串的长度
/////////////////////////////////////////////////////////////////////
int CGSMProtocol::ByteToTwoCharacter(char *pByte, char *TwoCharacter, int nDataLen)
{
	char cTemp;
	int nCharLen=0;
	int i=0;
	for(i=0;i<nDataLen;i++)
	{
		cTemp=(pByte[i]&0xf0)>>4;
		cTemp=cTemp&0x0f;//屏蔽符号位
		//0~9情况
		if((cTemp>=0)&&(cTemp<=9))
		{
			TwoCharacter[nCharLen++]=cTemp+'0';
		}
		else
		{
			TwoCharacter[nCharLen++]=cTemp+'A'-0xa;
		}
		cTemp=pByte[i]&0x0f;
		//0~9情况
		if((cTemp>=0)&&(cTemp<=9))
		{
			TwoCharacter[nCharLen++]=cTemp+'0';
		}
		else
		{
			TwoCharacter[nCharLen++]=cTemp+'A'-0xa;
		}
	}
	TwoCharacter[nCharLen]=0;
	return nCharLen;
}
//////////////////////////////////////////////////////////////////////////////////
//功能:把两个字符变成一个字节,该字符的要求为,该字符为0~9或A~F
//history       name		date             remark
//				wanfangjie	2003.03.20		create
//返回值:变换后的字节
//////////////////////////////////////////////////////////////////////////////////
char CGSMProtocol::TwoCharacterToByte(char *pCharacter)
{
	char cNum=0;

	if(pCharacter[0]>='0'&&pCharacter[0]<='9')
	{
		cNum=(pCharacter[0]-'0')<<4;
	}
	else if(pCharacter[0]>='a'&&pCharacter[0]<='f')
	{
		cNum=(pCharacter[0]-'a'+10)<<4;
	}
	else
	{
		cNum=(pCharacter[0]-'A'+10)<<4;
	}
	if(pCharacter[1]>='0'&&pCharacter[1]<='9')
	{
		cNum|=(pCharacter[1]-'0');
	}
	else if(pCharacter[1]>='a'&&pCharacter[1]<='f')
	{
		cNum|=(pCharacter[1]-'a'+10);
	}
	else
	{
		cNum|=(pCharacter[1]-'A'+10);
	}
	return cNum;
}
//////////////////////////////////////////////////////////////////////////////////
//功能:把3位的数变为字符串
//history       name		date             remark
//				wanfangjie	2003.03.20		create
//////////////////////////////////////////////////////////////////////////////////
int CGSMProtocol::ThirdDigitNumToCharacter(int nNumber, char *pCharacter)
{
	int nFirst=0;
	int nSecond=0;
	int nThird=0;
	if(nNumber>1000)
	{
		nNumber=nNumber%1000;	
	}
	if(nNumber<0)
	{
		pCharacter[0]=0;
		return 0;
	}
	nFirst=nNumber/100;
	nSecond=(nNumber%100)/10;
	nThird=nNumber%10;
	pCharacter[0]=nFirst+'0';
	pCharacter[1]=nSecond+'0';
	pCharacter[2]=nThird+'0';
	pCharacter[3]=0;
	return 1;
}
//////////////////////////////////////////////////////////////////////////////////
//功能:把电话号码转化为PDU格式
//history       name		date             remark
//				wanfangjie	2003.03.20		create
//////////////////////////////////////////////////////////////////////////////////
int CGSMProtocol::PhoneNumToPduNum(char *pPhoneNum, char *pPduNum,int nPhoneLen)
{
	int i=0;
	if((nPhoneLen%2)!=0)
	{
		strcat(pPhoneNum,"f");
		nPhoneLen++;
	}
	for(i=0;i<nPhoneLen;i++)
	{
		if((i%2)==0)
		{
			pPduNum[i+1]=pPhoneNum[i];
		}
		else
		{
			pPduNum[i-1]=pPhoneNum[i];
		}
	}
	pPduNum[nPhoneLen]=0;
	return 1;
}
////////////////////////////////////////////////////////////////////////////////
//功能:把PDU格式电话号码转化为字符串格式
//history       name		date             remark
//				wanfangjie	2003.03.20		create
////////////////////////////////////////////////////////////////////////////////
int CGSMProtocol::PduNumToPhoneNum(char *pPhoneNum, const char *pPduNum, int nPhoneLen)
{
	int i=0;
	if((nPhoneLen%2)!=0)
	{
		nPhoneLen++;
	}
	for(i=0;i<nPhoneLen;i++)
	{
		if((i%2)==0)
		{
			pPhoneNum[i+1]=pPduNum[i];
		}
		else
		{
			pPhoneNum[i-1]=pPduNum[i];
		}
	}
	pPhoneNum[nPhoneLen-1]=0;//去掉最后的F
	return 1;
}
////////////////////////////////////////////////////////////////////////////////
//功能:把7位编码变为8位编码
//history       name		date             remark
//				wanfangjie	2003.03.24		create
////////////////////////////////////////////////////////////////////////////////
int CGSMProtocol::SevenBitToEightBit(char *pSevenPool, char *pEightPool, int nLen)
{
	int i=0;
	int nPos=0;
	int nResidue=0;//余数
	unsigned short siTemp;
	//对最后一位的处理
	pSevenPool[nLen]=0;
	for(i=0;i<nLen;i++)
	{
		nPos=(int)(i*7/8);
		nResidue=(i*7)%8;
		memcpy(&siTemp,&pSevenPool[nPos],sizeof(unsigned short));
		siTemp=siTemp>>nResidue;
		siTemp=siTemp&0x007F;
		pEightPool[i]=(char)siTemp;

	}
	pEightPool[nLen]=0;
	return 1;
}
////////////////////////////////////////////////////////////////////////////////
//功能:字符串拷贝函数
//history       name		date             remark
//				wanfangjie	2003.09.16		create
////////////////////////////////////////////////////////////////////////////////
TCHAR* CGSMProtocol::StrCopy(TCHAR *strDest, const TCHAR *strSour)
{
	TCHAR *pReturn=NULL;
#if(M_ISUNICODE==1)
		{
			pReturn=wcscpy(strDest,strSour);
		}
#else
		{
			pReturn=_tcscpy(strDest,strSour);
		}
#endif
		return  pReturn;
}
////////////////////////////////////////////////////////////////////////////////
//功能:把整性变为字符串
//history       name		date             remark
//				wanfangjie	2003.09.16		create
////////////////////////////////////////////////////////////////////////////////
TCHAR* CGSMProtocol::IntToString(int nValue, TCHAR *pString, int nRadix)
{
	TCHAR *pReturn=NULL;
#if(M_ISUNICODE==1)
		{
			pReturn=_itow(nValue, pString, nRadix);
		}
#else
		{
			pReturn=_itot(nValue, pString, nRadix);
		}
#endif
		return  pReturn;
}
////////////////////////////////////////////////////////////////////////////////
//功能:字符串连接
//history       name		date             remark
//				wanfangjie	2003.09.16		create
////////////////////////////////////////////////////////////////////////////////
TCHAR* CGSMProtocol::StrCat(TCHAR *strDest, const TCHAR *strSour)
{
		TCHAR *pReturn=NULL;
#if(M_ISUNICODE==1)
		{
			pReturn=wcscat(strDest,strSour);
		}
#else
		{
			pReturn=_tcscat(strDest,strSour);
		}
#endif
		return  pReturn;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -