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

📄 smsoperater.cpp

📁 PDA通讯网关服务器源码程序
💻 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 + -