打印本文 打印本文 关闭窗口 关闭窗口
GSM短信模块库函数,可以用VB,VC,调用简单实用
作者:佚名  文章来源:本站原创  点击数1600  更新时间:2012/12/12 20:39:19  文章录入:mintao  责任编辑:mintao

GSM短信模块库函数,可以用VB,VC,调用简单实用

短信动态库说明
1对外接口函数说明
一,启动服务int _stdcall SMSStartService(int nPort,DWORD BaudRate = 57600, int Parity=2, int DataBits = 8,int StopBits=0,int FlowControl=0,char* csca="card")

参数:nPort 串口号 如1 则表示COM1
BaudRate 拨特率 115200  
Parity 校验位 2
DataBits 数据位 8
StopBits停止位 0
FlowControl 流控制 0
Csca 短信中心号码,可以使用默认值,若设置则格式如:” +8613800591500”

   返回值:1成功,0失败

二, 发送短消息DWORD _stdcall SMSSendMessage(char* Msg,char* PhoneNo)

参数:Msg消息内容,如果为中文则一条最多70个字,多于70个字分多条短信发送
           如果全为英文则一条最多为140个字符,多余于140则分多条发送
      PhoneNo 目标号码 格式如“13800591500”


返回值无意义,查询短信成功与否请调用函数四

三, 接收短消息int _stdcall SMSGetNextMessage(SMSMessageStruct* Msg)

结构体类如下
typedef struct _sms_msg_t_
{
        char        Msg[256];          //短信内容
        char    PhoneNo[32];       //对方手机号码
        char    ReceTime[32];      //接收时间
} SMSMessageStruct;

参数 Msg读取的短消息
返回 1有短信 0无
四, 查询发送状态报告 int _stdcall SMSReport(SMSReportStruct* rept)

五, 停止服务int _stdcall SMSStopSerice()

六, 最近一次错误 int _stdcall SMSGetLastError(char* err)

参数 err为错误内容
返回错误长度

2调用方法以及用例
2.1.1 声明
//消息结构体 类型声明
typedef struct _sms_msg_t_
{
        char        Msg[256];     //短信内容
        char    PhoneNo[32];   //对方手机号码
        char    ReceTime[32];      //接收时间
} SMSMessageStruct;

//消息状态报告结构体 类型声明
typedef struct _sms_report_t_
{
        DWORD index;          //短消息编号:index,从0开始递增
        char        Msg[256];     //短信内容
        int        Success;      //是否发送成功 0为失败,非0为成功
        char    PhoneNo[32];   //目标手机号码
} SMSReportStruct;

//启动服务函数类型说明
typedef int (_stdcall *pSMSStartServiceFun)(int nPort,DWORD BaudRate = 57600, int Parity=2, int DataBits = 8,int StopBits=0,int FlowControl=0,char* csca="card");
//读取短信函数类型说明
typedef int (_stdcall *pSMSGetNextMessageFun)(SMSMessageStruct* Msg);
//发送消息类型说明
typedef DWORD (_stdcall *pSMSSendMessageFun)(char* Msg,char* PhoneNo);
//读取状态报告类型说明
typedef int (_stdcall *pSMSReportFun)(SMSReportStruct* rept);
//停止服务函数类型说明
typedef int (_stdcall *pSMSStopSericeFun)();
2.1.2调用过程
HINSTANCE hDll = LoadLibrary("MC8331AT.dll"); //调用程序目录下须要有此动态库文件
pSMSSendMessageFun SMSSendMessageFun; //函数定义
SMSSendMessageFun = (pSMSSendMessageFun)GetProcAddress(hDll, "SMSSendMessage");
//获取函数指针
If(SMSSendMessageFun != NULL)
SMSSendMessageFun(“短信内容”, “手机号码”);
//发送短信
FreeLibrary(hDll); //释放动态库
3备注
1,        SMSStartService 和SMSStopSerice 应该配对出现,在程序退出之前一定要释放资源
2, SMSGetNextMessage 这个需要一个定时器和线程来管理。如果短信多了而不调用此函数,新的短信会覆盖以前的未读取短信

打印本文 打印本文 关闭窗口 关闭窗口