📄 smsmanager.cpp
字号:
// SmsManager.cpp: implementation of the CSmsManager class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "SmsTest.h"
#include "SmsManager.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#define RETOK "OK"
#define RETERR "ERROR"
CSmsManager::CSmsManager()
{
memset(m_szErrorMark , 0 , sizeof(m_szErrorMark)) ;
m_bInit = false ;
}
CSmsManager::~CSmsManager()
{
}
int CSmsManager::Init()
{
//char szInit[] = "AT\x0d" ;
//char szGsmSet[] = "AT+CMGF=0\xd\xa" ;
char szInit[] = "ATE0;+IPR=9600;+CMEE=0\r" ;
char szGsmSet[] = "AT+CMGF=0\r" ;
char szRecBuff[1024] = "" ;
char szTmp[128] = "AT\r" ;
DWORD dwLen ;
m_bInit = false ;
if ( m_hCom == INVALID_HANDLE_VALUE )
{
memset(m_szErrorMark , 0 , sizeof(m_szErrorMark)) ;
sprintf(m_szErrorMark , "串行口 %s 没有正确打开, " , m_strPort ) ;
return -1 ;
}
if ( !Read(szRecBuff , sizeof(szRecBuff) , dwLen) )
{
memset(m_szErrorMark , 0 , sizeof(m_szErrorMark)) ;
sprintf(m_szErrorMark , "串行口 %s 读错误 " , m_strPort ) ;
return -1 ;
}
if ( !Write(szTmp , sizeof(szTmp) , dwLen ) )
{
memset(m_szErrorMark , 0 , sizeof(m_szErrorMark)) ;
sprintf(m_szErrorMark , "串行口 %s 写不成功, " , m_strPort ) ;
return -1 ;
}
Sleep(100) ;
memset(szRecBuff, 0 , sizeof(szRecBuff)) ;
if ( !Read(szRecBuff , sizeof(szRecBuff) , dwLen) )
{
memset(m_szErrorMark , 0 , sizeof(m_szErrorMark)) ;
sprintf(m_szErrorMark , "串行口 %s 读错误 " , m_strPort ) ;
return -1 ;
}
/*
if ( dwLen <= 0 || strstr(szRecBuff,RETOK) == NULL )
{
sprintf(m_szErrorMark , "没有收到GSM MODEM回应,[%s][%d] " , szRecBuff,dwLen ) ;
return -1 ;
}
*/
if ( !Write(szInit , sizeof(szInit) , dwLen ) )
{
memset(m_szErrorMark , 0 , sizeof(m_szErrorMark)) ;
sprintf(m_szErrorMark , "串行口 %s 写不成功, " , m_strPort ) ;
return -1 ;
}
Sleep(500) ;
memset(szRecBuff, 0 , sizeof(szRecBuff)) ;
if ( !Read(szRecBuff , sizeof(szRecBuff) , dwLen) )
{
memset(m_szErrorMark , 0 , sizeof(m_szErrorMark)) ;
sprintf(m_szErrorMark , "串行口 %s 读错误 " , m_strPort ) ;
return -1 ;
}
if ( dwLen <= 0 || strstr(szRecBuff,RETOK) == NULL )
{
sprintf(m_szErrorMark , "没有收到GSM MODEM回应,[%s][%d] " , szRecBuff,dwLen ) ;
return -1 ;
}
if ( !Write(szGsmSet , sizeof(szGsmSet) , dwLen ) )
{
memset(m_szErrorMark , 0 , sizeof(m_szErrorMark)) ;
sprintf(m_szErrorMark , "串行口 %s 写不成功" , m_strPort ) ;
return -1 ;
}
Sleep(100) ;
memset(szRecBuff, 0 , sizeof(szRecBuff)) ;
if ( !Read(szRecBuff , sizeof(szRecBuff) , dwLen) )
{
memset(m_szErrorMark , 0 , sizeof(m_szErrorMark)) ;
sprintf(m_szErrorMark , "串行口 %s 读错误 " , m_strPort ) ;
return -1 ;
}
if ( dwLen <= 0 || strstr(szRecBuff,RETOK) == NULL )
{
sprintf(m_szErrorMark , "设置GSM MODEM回应失败,[%s][%d] " , szRecBuff,dwLen ) ;
return -1 ;
}
m_bInit = true ;
return 0 ;
}
int CSmsManager::SendSms(char szDesMoblie[] , char szSmsInfo[] )
{
DWORD dwWriteLen ;
char pSndBuff[500] = "" ;
int nMsgLen ;
nMsgLen = strlen(szSmsInfo) ;
if ( nMsgLen > 140 )
{
memset(m_szErrorMark , 0 , sizeof(m_szErrorMark)) ;
sprintf(m_szErrorMark , "发送长度 %d 超过了最大长度 140 " , nMsgLen ) ;
return -1 ;
}
if ( !m_bInit )
{
memset(m_szErrorMark , 0 , sizeof(m_szErrorMark)) ;
sprintf(m_szErrorMark , "串行口 %s GSM MODEM没有正确初始化 " , m_strPort ) ;
return -1 ;
}
m_smsInfo.Init() ;
if ( m_smsInfo.SetSndBuffData(szDesMoblie ,szSmsInfo ) != 0 )
{
memset(m_szErrorMark , 0 , sizeof(m_szErrorMark)) ;
sprintf(m_szErrorMark , "数据转换不成功 " ) ;
return -1 ;
};
memcpy(pSndBuff , &m_smsInfo.m_MsgPack , m_smsInfo.m_nCurTotalLen ) ;
nMsgLen = m_smsInfo.m_nCurTotalLen ;
if ( !Write(pSndBuff ,nMsgLen , dwWriteLen ) )
{
memset(m_szErrorMark , 0 , sizeof(m_szErrorMark)) ;
sprintf(m_szErrorMark , "串行口 %s 写不成功[%d]" , m_strPort,nMsgLen ) ;
return -1 ;
};
char szBuf[128] ;
DWORD dwGet ;
if(!Read(szBuf,128,dwGet) )
{
sprintf(m_szErrorMark , "发送成功,读返回信息失败。" ) ;
return -1 ;
}
if(dwGet <=0 || strstr(szBuf,RETERR)!=NULL)
{
sprintf(m_szErrorMark , "发送成功,读返回信息不正确[%s][%d]。",szBuf,dwGet ) ;
return -1 ;
}
return 0 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -