Foxtable(狐表)用户栏目专家坐堂 → [求助] 短信猫动态链接库使用


  共有13825人关注过本帖平板打印复制链接

主题:[求助] 短信猫动态链接库使用

帅哥哟,离线,有人找我吗?
mam0094
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:153 积分:1995 威望:0 精华:2 注册:2011/4/9 11:53:00
[求助] 短信猫动态链接库使用  发帖心情 Post By:2011/11/5 11:11:00 [只看该作者]

项目需要短信收发功能,买了短信猫,有二次开发接口VB,VC,VB.net...  现在问题不知道在狐表中具体使用方法,开发指南一带而过,论坛内也没有多少关于调用DLL的帖子。所以特来此请教3个问题

 

1.Foxtable应该选择哪个Dll,  VB、vb.net 还是随便哪个都可以,还是哪个都不行?

2.如可用,具体使用方法怎么弄?  如DLL复制到Foxtable目录下后,全局代码怎么写?

3.如何调用?

 

附上  《短信动态库说明》 请大家指教。谢谢!

 

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 这个需要一个定时器和线程来管理。如果短信多了而不调用此函数,新的短信会覆盖以前的未读取短


 回到顶部