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

📄 smsmanager.h

📁 pc实现短信收发的源程序
💻 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 + -