📄 smsmanager.h
字号:
// SmsManager.h: interface for the CSmsManager class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SMSMANAGER_H__9617681B_D0D3_4F7E_A7C6_DCF15EBB4ECF__INCLUDED_)
#define AFX_SMSMANAGER_H__9617681B_D0D3_4F7E_A7C6_DCF15EBB4ECF__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "SerIO.h"
#pragma pack(1)
#define AT_SND_HEAD "AT+CMGS="
#define CHANG_ROW_FLAG 0xd
#define END_MSG_FLAG 0x1a
#define START_CONTENT "0011000D9168"
#define CONTENT_FORMAT "%sF%1c0008A7%.2x%s"
typedef struct tagSmsSndMsgPackStru
{
char szAtHead[sizeof(AT_SND_HEAD) -1] ;
char szTotalLen[3] ;
char cChangeFlag ;
char szStartContent[sizeof(START_CONTENT) -1] ;
char szContent[200] ;
}SmsSndMsgPackStru , *LPSmsSndMsgPackStru ;
class CGsmSms
{
public:
SmsSndMsgPackStru m_MsgPack ;
int m_nCurTotalLen ;
void Init()
{
memset(&m_MsgPack , 0 , sizeof(m_MsgPack)) ;
memcpy(m_MsgPack.szAtHead , AT_SND_HEAD , sizeof(AT_SND_HEAD)) ;
memcpy(m_MsgPack.szStartContent , START_CONTENT , sizeof(START_CONTENT)) ;
m_MsgPack.cChangeFlag = CHANG_ROW_FLAG ;
}
int SetSndBuffData(char szDesMobile[20] , char szContent[200] )
{
wchar_t lpWideCharStr[500] ;
int i ;
BYTE cValue ;
int nMobileLen = strlen(szDesMobile) ;
int nContentLen = strlen(szContent) ;
if ( nContentLen > 160 ) return -1 ;
if ( nMobileLen != 11 ) return -1 ;
i = 0 ;
while ( i < 10 )
{
cValue = szDesMobile[i] ;
szDesMobile[i] = szDesMobile[i+1] ;
szDesMobile[i+1] = cValue ;
i += 2 ;
}
cValue = szDesMobile[10] ;
szDesMobile[10] = 0 ;
nContentLen = MultiByteToWideChar(
CP_ACP , // code page
MB_PRECOMPOSED, // character-type options
szContent, // address of string to map
-1, // number of bytes in string
lpWideCharStr, // address of wide-character buffer
sizeof(lpWideCharStr) -1 // size of buffer
) ;
if ( nContentLen <= 0 ) return -1 ;
memset(szContent , 0 , sizeof(szContent)) ;
for( i = 0 ; i < nContentLen * 2 -2 ; i+=2)
{
sprintf(szContent + i * 2 , "%02x%02x" , *((BYTE*)lpWideCharStr + i + 1) ,*((BYTE*)lpWideCharStr + i )) ;
}
sprintf(m_MsgPack.szTotalLen , "%.3d" , nContentLen * 2 -2 + 15 ) ;
sprintf(m_MsgPack.szContent , CONTENT_FORMAT , szDesMobile , cValue , nContentLen * 2 -2 , szContent) ;
m_MsgPack.szContent[strlen(m_MsgPack.szContent)] = END_MSG_FLAG ;
m_MsgPack.cChangeFlag = CHANG_ROW_FLAG ;
m_nCurTotalLen = sizeof(SmsSndMsgPackStru) - sizeof(m_MsgPack.szContent) + strlen(m_MsgPack.szContent) + 1 ;
return 0 ;
}
};
class CSmsManager : public CSerIO
{
private:
CGsmSms m_smsInfo ;
char m_szErrorMark[100] ;
bool m_bInit ;
public:
private:
public:
CSmsManager();
virtual ~CSmsManager();
// Open( LPCTSTR pszPort, LPCTSTR pszCommParam ); Communication parameters eg. "19200,N,8,1"
int Init() ;
int SendSms(char szDesMoblie[] , char szSmsInfo[] ) ;
// Close() ;
char * GetLastErrorMark()
{
return m_szErrorMark ;
}
};
#endif // !defined(AFX_SMSMANAGER_H__9617681B_D0D3_4F7E_A7C6_DCF15EBB4ECF__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -