📄 smsoperater.cpp
字号:
// SmsOperater.cpp: implementation of the CSmsOperater class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "GateAgent.h"
#include "SmsOperater.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CSmsOperater::CSmsOperater()
{
}
CSmsOperater::~CSmsOperater()
{
}
int CSmsOperater::OnInitSms()
{
HINSTANCE Hinstance; //定义加载动态连接库的句柄
Hinstance = LoadLibrary((LPCTSTR)"D:\\project\\vc_project\\SmsDll\\ModemDll_0331\\Debug\\ModemDll.dll");
// Hinstance = LoadLibrary((LPCTSTR)"ModemDll.dll");
if (NULL == Hinstance)
{
AfxMessageBox("加载动态链接库(ModemDll.dll)失败,请检查文件是否存在?");
return -1;
}
OpenComOrg = (OPENCOM)GetProcAddress(Hinstance, "OpenCom");
if (NULL == OpenComOrg)
{
AfxMessageBox("获取api函数句柄OpenCom失败!");
return -1;
}
CloseComOrg = (CLOSECOM)GetProcAddress(Hinstance, "CloseCom");
if (NULL == CloseComOrg)
{
AfxMessageBox("获取api函数句柄CloseCom失败!");
return -1;
}
SetInitOrg = (SETINIT)GetProcAddress(Hinstance, "SetInit");
if (NULL == SetInitOrg)
{
AfxMessageBox("获取api函数句柄SetInit失败!");
return -1;
}
GetSerialNoOrg = (GETSERIALNO)GetProcAddress(Hinstance, "GetSerialNo");
if (NULL == GetSerialNoOrg)
{
AfxMessageBox("获取api函数句柄GetSerialNo失败!");
return -1;
}
GetCenterNumOrg = (GETSMSCENTERNUM)GetProcAddress(Hinstance, "GetSmsCenterNum");
if (NULL == GetCenterNumOrg)
{
AfxMessageBox("获取api函数句柄GetSmsCenterNum失败!");
return -1;
}
RecvSmsBufOrg = (RECVSMSBUF)GetProcAddress(Hinstance, "RecvSmsBuf");
if (NULL == RecvSmsBufOrg)
{
AfxMessageBox("获取api函数句柄RecvSmsBuf失败!");
return -1;
}
RecvSmsStructOrg = (RECVSMSSTRUCT)GetProcAddress(Hinstance, "RecvSmsStruct");
if (NULL == RecvSmsStructOrg)
{
AfxMessageBox("获取api函数句柄RecvSmsStruct失败!");
return -1;
}
SendSmsOneOrg = (SENDSMSONE)GetProcAddress(Hinstance, "SendSmsOne");
if (NULL == SendSmsOneOrg)
{
AfxMessageBox("获取api函数句柄SendSmsOne失败!");
return -1;
}
DelReadAndSendOrg = (DELREADANDSEND)GetProcAddress(Hinstance, "DeleteReadAndSend");
if (NULL == DelReadAndSendOrg)
{
AfxMessageBox("获取api函数句柄DeleteReadAndSend失败!");
return -1;
}
DeleteAppointedOrg = (DELAPPOINTED)GetProcAddress(Hinstance, "DeleteAppointed");
if (NULL == DeleteAppointedOrg)
{
AfxMessageBox("获取api函数句柄DeleteAppointed失败!");
return -1;
}
return 0;
}
/******************************************************************************************
功能说明--打开串口
函数返回--如果大于0则为获取的com接口的句柄,小于0则为失败,为int型
输入参数--
const char *pPort 串口字符,如连接的是串口1,则为COM1
int nBaudRate 波特率,一般为9600
int nParity 奇偶校验,一般为0
int nByteSize 数据位, 一般为8
int nStopBits 停止位,一般位1
调用例子-- int nHcom=OpenCom("COM1",9600,0,8,1);如果nHcom大于0则为句柄,小于0则为打开串口失败
*******************************************************************************************/
int CSmsOperater::OpenCom(const char *pPort, int nBaudRate, int nParity, int nByteSize, int nStopBits)
{
int iRet=-10;
try
{
iRet=OpenComOrg(pPort,nBaudRate,nParity,nByteSize,nStopBits);
}
catch(...)
{
return -1;
}
return iRet;
}
/******************************************************************************************
功能说明--关闭指定的串口
函数返回--If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero
输入参数--
int nHcom 串口句柄,关闭那个串口,比如串口一(com1)
调用例子--
*******************************************************************************************/
int CSmsOperater:: CloseCom(int nHcom)
{
try
{
return CloseComOrg(nHcom);
}
catch(...)
{
return -1;
}
}
/******************************************************************************************
功能说明--初始化at命令,一般要验证这个的话,则要调用这个
函数返回--如果大于0则为获取的com接口的句柄,小于0则为失败,为int型
输入参数--
int nHcom 串口句柄,从哪个串口读出数据,比如串口一(com1)
调用例子--
*******************************************************************************************/
int CSmsOperater::SetInit(int nHcom)
{
int iRet=-10;
try
{
iRet=SetInitOrg(nHcom);
}
catch(...)
{
return -1;
}
return iRet;
}
/******************************************************************************************
功能说明--获得产品序列号
函数返回--如果失败则为NULL(空),成功则返回产品序列号码
输入参数--
int nHcom 串口句柄,从哪个串口读出数据,比如串口一(com1)
调用例子--
*******************************************************************************************/
const char* CSmsOperater::GetSerialNo(int nHcom)
{
try
{
return GetSerialNoOrg(nHcom);
}
catch(...)
{
return NULL;
}
}
/******************************************************************************************
功能说明--获取短消息中心号码
函数返回--如果失败则为NULL(空),成功则返回短消息中心号码
输入参数--
int nHcom 串口句柄,从哪个串口读出数据,比如串口一(com1)
调用例子--
*******************************************************************************************/
const char* CSmsOperater::GetSmsCenterNum(int nHcom)
{
try
{
return GetCenterNumOrg(nHcom);
}
catch(...)
{
return NULL;
}
}
/******************************************************************************************
功能说明--从sim卡中读出所有新的短信,然后放入pchOutBuffer
函数返回--大于0则为短消息条数,小于0则为读取消息失败
输入参数--
int nHcom 串口句柄,从哪个串口读出数据,比如串口一(com1)
const char *pchOutBuffer 存放消息的字符缓冲区,格式按照SM_PARAM依次存放,所以建议输出缓冲区尽量定义大一些
const unsigned int nLenOutBuffer 存放消息的字符缓冲区长度
bool bDel 读完新消息后,是否删除,如果为true则删除,缺省为删除
调用例子--
*******************************************************************************************/
int CSmsOperater::RecvSmsBuf(int nHcom,const unsigned int nLenOutBuffer,const char *pchOutBuffer,bool bDel)
{
int iRet=-10;
try
{
iRet=RecvSmsBufOrg(nHcom, nLenOutBuffer,pchOutBuffer,bDel);
}
catch(...)
{
return -1;
}
return iRet;
}
/******************************************************************************************
功能说明--从sim卡中读出所有新的短信,然后放入SM_PARAM结构体中
函数返回--大于0则为短消息条数,小于0则为读取消息失败
输入参数--
int nHcom 串口句柄,从哪个串口读出数据,比如串口一(com1)
SM_PARAM* pMsg 存放消息的结构体指针
调用例子--
*******************************************************************************************/
int CSmsOperater::RecvSmsStruct(int nHcom,SM_PARAM* pMsg)
{
int iRet=-10;
try
{
iRet=RecvSmsStructOrg(nHcom,pMsg);
}
catch(...)
{
return -1;
}
return iRet;
}
/******************************************************************************************
功能说明--发送单条短消息
函数返回-- -1失败,0为成功
输入参数--
int nHcom 串口句柄,从哪个串口发送数据,比如串口一(com1)
const char*pchSCA 短信中心号码
const char* pchSms 要发送短消息
const char*pchMobile 对方的手机号码
调用例子--
*******************************************************************************************/
int CSmsOperater::SendSmsOne(int nHcom,const char*pchSCA,const char*pchMobile, const char* pchSms)
{
int iRet=-10;
try
{
iRet=SendSmsOneOrg(nHcom, pchSCA,pchMobile,pchSms);
}
catch(...)
{
return -1;
}
return iRet;
}
/******************************************************************************************
功能说明--删除所有的消息(// All READ, SENT and UNSENT messages are deleted)
函数返回--如果大于等于0则成功,否则失败
输入参数--
int nHcom 串口句柄,表示删除那个串口的数据
调用例子--
*******************************************************************************************/
int CSmsOperater::DeleteReadAndSend(int nHcom)
{
int iRet=-10;
try
{
iRet=DelReadAndSendOrg(nHcom);
}
catch(...)
{
return -1;
}
return iRet;
}
/******************************************************************************************
功能说明--删除指定的消息
函数返回--如果大于等于0则成功,否则失败
输入参数--
int nHcom 串口句柄,表示删除那个串口的数据
int nIndex 消息索引,指哪条消息
调用例子--
*******************************************************************************************/
int CSmsOperater::DeleteAppointed(int nHcom,int nIndex)
{
int iRet=-10;
try
{
iRet=DeleteAppointedOrg(nHcom,nIndex);
}
catch(...)
{
return -1;
}
return iRet;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -