HUAWEI SMEIDLL 短讯接口API

SMEIDLL提供的功能:

 

 

 

 

 

 

 

 

 

1. 低层链路出现故障时,重连链路,提示上层。

2. SMSC的定时握手。

3. 提供实现SMPP和内部协议中定义的相关协议的API函数。

'事件:点击主界面的“初始化”按钮

 

 

 

 

 

 

 

 

 

'功能:初始化套接字,准备连接

Private Sub cmdInitSocket_Click()

Dim bRet As Boolean

Dim ulRet As Long

Dim iCount As Integer

 

 

 

 

 

 

 

 

 

StatusBar1.Panels(1).Text = ""

ulRet = IFInitInterface(CodeProtocol + 1, DriverProtocol + 1, _

                        Trim(DriverParam))

fStatusform.ProgressBar1.Value = 100

Unload fStatusform

If ulRet <> 0 Then

    MsgBox "初始化套接字成功!"

    StatusBar1.Panels(1).Text = "初始化连接成功"

Else

    MsgBox "初始化失败!"

    StatusBar1.Panels(1).Text = "初始化连接失败"

End If

End Sub

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'事件:点击主界面的“登录服务器”按钮

 

 

 

 

 

 

 

 

 

'功能:登录服务器

Private Sub cmdLogin_Click()

Dim bRet As Boolean

Dim ulRet As Long

 

 

 

 

 

 

 

 

 

StatusBar1.Panels(1).Text = ""

ulRet = Login_R(Trim(SystemID), Trim(Password))

If ulRet <> 0 Then

    MsgBox "登录成功!"

    StatusBar1.Panels(1).Text = "登录成功"

Else

    MsgBox "登录失败!"

    StatusBar1.Panels(1).Text = "登录失败"

End If

End Sub

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'事件:点击主界面的“发送短讯”按钮

 

 

 

 

 

 

 

 

 

'功能:向服务器提交短讯信息

Private Sub cmdSubmit_Click()

Dim result As Integer

Dim UDLen As Long

 

 

 

 

 

 

 

 

 

StatusBar1.Panels(1).Text = ""

'Dim UserData As String

UserData = "test info"

UDLen = Len(UserData)

result = SubmitA(OrgTON, OrgNPI, Trim(OrgAddr), DestTON, DestNPI, _

                 DestAddr, PRI, RD, RP, SRR, MR, DCS * 4, PID, _

                 Trim(Schedule), Trim(Expire), Default_ID, UDHI, UDLen, UserData, SM_ID, FCS)

If result = 0 Then

   MsgBox "发送成功!"

   StatusBar1.Panels(1).Text = "发送成功"

Else

   MsgBox "发送失败!"

   StatusBar1.Panels(1).Text = "发送失败"

End If

End Sub

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'事件:点击主界面的“获取消息”按钮

 

 

 

 

 

 

 

 

 

'功能:判断是否有新短讯发来,如果有,则获取该短讯的信息

Private Sub cmdGetMsg_Click()

StatusBar1.Panels(1).Text = ""

GetMsg

End Sub

 

 

 

 

 

 

 

 

 

'功能: 公共函数。判断是否有新短讯发来;如果有, 则获取该短讯的信息

Sub GetMsg()

Dim result As Integer

HDM_TimeOut = 2000

result = HasDeliverMessage(HDM_TimeOut)

If result = 0 Then

   MsgBox "你有新短讯!"

   StatusBar1.Panels(1).Text = "有新短讯"

Else

   StatusBar1.Panels(1).Text = "无新短讯"

End If

If result = 0 Then

   result = GetDeliverSMEx(SM_ID_R, DestTON_R, DestNPI_R, DestAddr_R, OrgTON_R, OrgNPI_R, OrgAddr_R, PRI_R, RP_R, UDHI_R, PID_R, DCS_R, TimeStamp_R, UDLen_R, UserData_R)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   If result = 0 Then

      MsgBox "接收短讯成功!"

      StatusBar1.Panels(1).Text = "接受短讯成功"

      Set fNewSMForm = New frmNewSM

      fNewSMForm.List1.AddItem "短消息的ID" + CStr(SM_ID_R)

      fNewSMForm.List1.AddItem "目标地址号码类型:" + CStr(DestTON_R)

      fNewSMForm.List1.AddItem "目标地址编码方案:" + CStr(DestNPI_R)

      fNewSMForm.List1.AddItem "目标地址:" + DestAddr_R

      fNewSMForm.List1.AddItem "源地址号码类型:" + CStr(OrgTON_R)

      fNewSMForm.List1.AddItem "源地址编码方案:" + CStr(OrgNPI_R)

      fNewSMForm.List1.AddItem "源地址:" + OrgAddr_R

      fNewSMForm.List1.AddItem "回应路径:" + CStr(RP_R)

      fNewSMForm.List1.AddItem "头结构指示:" + CStr(UDHI_R)

      fNewSMForm.List1.AddItem "协议标志:" + CStr(PID_R)

      fNewSMForm.List1.AddItem "编码方案:" + CStr(DCS_R)

      fNewSMForm.List1.AddItem "提交时间:" + TimeStamp_R

      fNewSMForm.List1.AddItem "短消息的UDL" + CStr(UDLen_R)

      fNewSMForm.List1.AddItem "正文:" + UserData_R

      fNewSMForm.Show

   Else

      MsgBox "接收短讯失败!"

      StatusBar1.Panels(1).Text = "接收短讯失败"

   End If

End If

End Sub

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'事件:点击主界面的“定时获取消息”按钮

 

 

 

 

 

 

 

 

 

'功能:启动定时获取短讯的服务

Private Sub cmdTimerGetMsg_Click()

StatusBar1.Panels(1).Text = ""

If Timer1.Enabled = False Then

    Timer1.Enabled = True

    StatusBar1.Panels(1).Text = "启动定时获取短讯服务"

Else

    Timer1.Enabled = False

    StatusBar1.Panels(1).Text = "关闭定时获取短讯服务"

End If

End Sub

 

 

 

 

 

 

 

 

 

'事件:点击主界面的“退出系统”按钮

 

 

 

 

 

 

 

 

 

'功能:退出安装短讯中心的服务器

Private Sub cmdLogout_Click()

Call IFExitInterface

Call Logout

Unload fMainForm

End Sub

模块文件代码:

'Option Explicit
'
'/*******************************************************************************
'FileName:         Export.h
'Description:      本头文件定义了SMEIDLL提供的所有输出函数的定义?
'Version         : 2.0
'Date            : 98/11/01
'Others:
'Function List():
'        01. IFInitInterface     :初始化动态库
'        02. IFSendAndAnswer     :基本的发送等待回包函数
'        03. IFSetOnRead         :设置读回调函数,用于处理非回包数据
'        04. IFSetOnError        :设置出错回调函数,用于通知上层
'        05. IFExitInterface     :退出动态库函数
'        06. Login               :登录函数,使用TRANSMITER命令
'        07. Logout              :从短讯中心注销
'        08. SubmitSM            :提交短讯
'        09. VPSubmitSM          :提交短讯,简化函数
'        10. QuerySMStatus       :查询短讯状态
'        11. QuerySMDetail       :查询短讯详细属性,可查询短讯内容
'        12. QuerySMS            :查询满足条件的短讯
'        13. CancelSM            :取消短讯
'        14. ReplaceSM           :替换短讯
'        15. AddSubscriber       :添加用户
'        16. DeleteSubscriber    :删除用户
'        17. ModifySubscriber    :修改用户属性
'        18. EnquireSubscriber   :查询用户属性
'        19. HasDeliverMessage   :查询是否有下发短讯
'        20. GetDeliverSM        :取下发短讯
'        21. Login_R             :登录函数,使用RECEIVER命令
'        22. VPModifySubPassword :修改用户密码
'        23. GetErrorString      :查询错误代码的描述
'        24. SubmitA             :增强的SUBMIT函数
'        25. VPSubmitA           :增强的SUBMIT函数的VP版
'        26. GSMConvertTextToData    :把ASC字符串变换成指定编码
'        27. GSMConvertDataToText    :把编码数据变换成ASC字符串
'        28. QuerySub
'History:
'    1.  author  : 张刚
'        time    : 98/11/01
'        release : 2.0
'desc:             实现基本功能
'
'    2.  author  : 张刚
'        time    : 99/06/01
'        release : 2.1
'        desc    : 优化,修改了一些错误,添加了新函数。
'
'*******************************************************************************/
'
'#if !defined(__SEMIDLL_EXPORT_H__)
'#define __SEMIDLL_EXPORT_H__
'
'#include "Funback.h"
'#include "Drv.h"
'
'#define IF_TIMEOUT                      5000                //发送超时时间
'
'//最大的短消息文本长度为255*140=35700
'#define MAX_SMSIZE                      35700               //最大短讯长度
'
'#define ACK_SUCCESS                     0                   //ACK执行正确
'
'#define SM_PRI_PRIOR                    1                   //优先级别
'#define SM_PRI_DEFAULT                  0                   //缺省
'
'#define SM_DCS_DEFAULT                  0x00                //缺省(7位)
'#define SM_DCS_ASC                      0x04                //英文(不被手机支持)
'#define SM_DCS_CHINA                    0x08                //中文(会被转化成UCS2)
'
'#define SM_UDHI_DEFAULT                 0                   //UD是正常字符串
'#define SM_UDHI_STRUCTURE               1                   //UD是结构
'
'#define CHINA_ERRSTR                    0X40000000          //返回汉字的错误字符串
'
'#define SMSCERR_BEGIN                   10000
'
'
'Enum DLL_RETURN
'{
'    E_SUCCESS = 0,                                      //成功
'
'    //IFSendAndAnswer函数的返回值
'    E_NOT_INITIALIZED,                                  //INTERFACE没有初始化
'    E_ACK_COMMAND_ERROR,                                //回包命令字错误
'    E_NEWMEMORY_ERROR,                                  //分配内存错误
'    E_OTHER_ERROR,                                      //其他错误
'
'    E_SA_BUFF_TOOBIG,                                   //SEND缓冲区太大
'    E_SA_POCKET_UNINTEGRATE,                            //SEND包不完整
'    E_SA_PROTOCOL_ERROR,                                //协议错
'    E_SA_PROTOCOL_NO_SUPPORT,                           //协议不支持该格式
'    E_SA_CODE_OTHER_ERROR,                              //编码其他错误
'    E_SA_TIMEOUT,                                       //传送超时
'    E_SA_NO_ENOUGH_BUFFER,                              //接收缓冲区不够大
'    E_SA_WAITFAILED,                                    //等待失败
'    E_SA_SEND_FAILED,                                   //发送失败
'
'    //SUBMIT函数的返回值
'    E_SUBMIT_ORGADDR_ERROR,                             //源地址错误
'    E_SUBMIT_DESTADDR_ERROR,                            //目的地址错误
'    E_SUBMIT_SCHEDULE_ERROR,                            //参数定时时间错误
'    E_SUBMIT_EXPIRE_ERROR,                              //参数超时时间错误
'    E_SUBMIT_DCS_ERROR,                                 //参数DCS错误
'    E_SUBMIT_DCS_CONVERT_ERROR,                         //数据变换错误
'    E_SUBMIT_UDHI_ERROR,                                //参数UDHI错误
'    E_SUBMIT_UD_ERROR,                                  //用户数据错误
'    E_SUBMIT_OVER_MO,                                   //超过最大提交数
'    E_SUBMIT_OVER_MT,                                   //超过最大下发数
'    E_SUBMIT_INVALID_USER,                              //无效用户,或者用户无权
'    E_SUBMIT_INVALID_DATA_FORMAT,                       //无效数据格式
'    E_SUBMIT_ADDR_ERROR,                                //地址错误
'    E_SUBMIT_CREATE_MESSAGE_ERROR,                      //生成短讯错误
'
'    //QuerySMStatus函数返回值
'    E_QUERYSMSTATUS_SM_NOT_EXIST,                       //短讯不存在
'    E_QUERYSMSTATUS_SM_OTHER_ERR,                       //查询其他错误
'    E_QUERYSMSTATUS_ADDR_ERROR,                         //地址错误
'
'    //QuerySMDetail函数返回值
'    E_QUERYSMDETAIL_SM_DETAILS_ZERO,                    //查询不到此
'    E_QUERYSMDETAIL_SM_DETAILS_FAIL,                    //查询失败
'    E_QUERYSMDETAIL_CONVERT_ERROR,                      //用户数据编码出错
'    E_QUERYSMDETAIL_LEN_ERROR,                          //LEN参数出错
'    E_QUERYSMDETAIL_SM_ADDR_ERROR,                      //地址错误
'
'    //CancelSM函数返回值
'    E_CANCELSM_ACK_STATUS_ERROR,                        //回包的STATUS指示出错
'
'    //ReplaceSM函数返回值
'    E_REPLACESM_ORGADDR_ERROR,                          //源地址错误
'    E_REPLACESM_SCHEDULE_ERROR,                         //定时数据错误
'    E_REPLACESM_EXPIRE_ERROR,                           //超时数据错误
'    E_REPLACESM_DCS_ERROR,                              //DCS错误
'    E_REPLACESM_DCS_CONVERT_ERROR,                      //用户数据编码出错
'    E_REPLACESM_UD_ERROR,                               //用户数据错误
'    E_REPLACESM_SM_WORKING,                             //短讯正在下发
'    E_REPLACESM_SM_ADDR_ERROR,                          //短讯地址错误
'    E_REPLACESM_SM_INVALID_SOURCE_ADDR,                 //无效的源地址
'    E_REPLACESM_SM_NO_SUCH_SM,                          //没有指定的短讯
'    E_REPLACESM_SM_INVALID_DATA_TYPE,                   //无效数据类型
'    E_REPLACESM_SM_FAIL,                                //替换失败
'
'    E_QUERYSMS_DIR_ERROR,                               //参数DIR错
'    E_QUERYSMS_ADDR_ERROR,                              //参数用户地址错误
'    E_QUERYSMS_DATETIME_ERROR,                          //参数开始时间错误
'    E_QUERYSMS_FINATIME_ERROR,                          //参数结束时间错误
'    E_QUERYSMS_NUMBER_ERROR,                            //参数查询条数错误
'    E_QUERYSMS_ACK_STATUS_ERROR,                        //回包的STATUS指示出错
'
'    E_ADDSUB_SUBID_ERROR,                               //参数用户号码错误
'    E_ADDSUB_SUBNAME_ERROR,                             //参数用户姓名错误
'    E_ADDSUB_SUBADDRESS_ERROR,                          //参数用户地址错误
'    E_ADDSUB_PASSWORD_ERROR,                            //参数用户密码错误
'    E_ADDSUB_USER_ALREADY_EXIST,                        //用户已经存在
'    E_ADDSUB_ADD_USER_FAIL,                             //添加用户失败
'
'    E_DELETESUB_SUBID_ERROR,                            //参数用户号码错误
'    E_DELETESUB_USER_NOT_EXIST,                         //用户不存在
'    E_DELETESUB_USER_DEL_FAIL,                          //删除用户失败
'
'    E_MODIFYSUB_SUBID_ERROR,                            //参数用户号码错误
'    E_MODIFUSUB_SUBNAME_ERROR,                          //参数用户姓名错误
'    E_MODIFYSUB_SUBADDRESS_ERROR,                       //参数用户地址错误
'    E_MODIFYSUB_PASSWORD_ERROR,                         //参数用户密码错误
'    E_MODIFYSUB_FAIL,                                   //修改用户失败
'    E_MODIFYSUB_SUB_NOT_EXIST,                          //用户不存在
'
'    E_ENQUIRESUB_SUBID_ERROR,                           //参数用户号码错误
'    E_ENQUIRESUB_USER_NOT_EXIST,                        //用户不存在
'
'    E_ENQUIRELINK_ERROR,                                //握手失败
'
'    E_DLVSM_GETDATA_FAILED,                             //GETDATA失败
'    E_DLVSM_DCS_ERROR,                                  //解码出错
'
'    E_NO_RIGHT,                                         //没有权限
'
'    E_REPLACE_UDHI_ERROR,                               //REPLACE UDHI invalid
'
'    E_QUERYSMDETAIL_INVLDLEN,                           // QUERYSMDETAIL LEN INVALID
'
'    E_PPSCHECKTIMEOUT = 200, //PPS用户鉴权超时
'    E_PPSUSERCHECKERR,  //PPS用户鉴权失败
'    E_PPSUSERCHECKSENDERR, //PPS用户鉴权发送失败
'    E_PPSRESULTNOTIFYTIMEOUT, //通知超时
'    E_PPSRESULTNOTIFYACKERR,   //通知客户端返回错误
'    E_PPSRESULTNOTIFYTMPERR,   //通知临时错误
'    E_PPSRESULTNOTIFYSERIOUSERR, //通知严重错误
'
'
'};
'/*
'Enum ROUTE_RETURN
'{
'    E_SUCCESS = 0,
'
'    //interfacemanager error code
'    E_ACCESSERR,            //接入码错误
'    E_CALLERERR,            //主叫错误          *
'    E_ACCOUNTERR,           //帐号指针不符      *
'    E_SMTYPEERR,            //SmType错误        *
'    E_NEWACCOUNTFAIL,       //生成帐号对象失败      *
'    E_ACCOUNTNAMEERR,       //帐号名错,查无此帐号  *
'    E_CODETYPEERR,          //编码类型错
'    E_CREATEIFFAIL,         //生成IF对象失败
'    E_BEYONDMAXIFNUM,       //超过INTERFACEMANAGER的最大IF数
'    E_INVALIDIFID,          //无效的IF的ID
'    E_ACCOUNTPASSWORDERR,   //帐号的密码错误
'    E_NORIGHT,              //没有权限
'    E_PIDERR,               //PID错误
'    E_INVALIDROUTETABLE,    //无效的ROUTETABLE  *
'
'    E_CANNOTFINDIF,         //通过HDRV不能找到IF *
'    E_PARAMERR,             //参数错
'    E_STATUSERR,            //状态错误
'
'    E_NEWIFERR,             //生成IF错误
'    E_NEWDRVERR,            //生成DRV错误
'
'    //routetable
'    E_INVALIDACCOUNT,       //无效的ACCOUNT     *
'
'    //account error code
'    //E_BEYONDACCOUNTMAXIFNUM,
'    E_INVALIDIF,
'    //E_ROUTEERR,
'
'    E_NOSUBMITRIGHT,
'    E_NODELIVERRIGHT,
'    E_CHECKTYPEERR,         //鉴权类型错误
'    E_NUMREPEAT,            //号段重复
'    E_NOTHISNUM,            //没有指定的号段
'
'    E_PPSCHECKTIMEOUT = 200, //PPS用户鉴权超时
'    E_PPSUSERCHECKERR,  //PPS用户鉴权失败
'    E_PPSUSERCHECKSENDERR, //PPS用户鉴权发送失败
'    E_PPSRESULTNOTIFYTIMEOUT, //通知超时
'    E_PPSRESULTNOTIFYACKERR,   //通知客户端返回错误
'    E_PPSRESULTNOTIFYTMPERR,   //通知临时错误
'    E_PPSRESULTNOTIFYSERIOUSERR, //通知严重错误
'
'};
'*/
'
'BOOL WINAPI IFInitInterface(
'                            DWORD dwCodeProtocol,           //编码协议
'                            DWORD dwDriverProtocol,         //通讯协议
'                            LPCTSTR pDriverParam            //通讯参数
'                            );
'
Public Declare Function IFInitinterface Lib "smeidll.dll" (ByVal dwCodeProtocol As Long, _
                                                           ByVal dwDriverPorotocol As Long, _
                                                           ByVal pDriverParam As String) As Long

'int WINAPI IFSendAndAnswer(
'                           LPVOID pSndBuf,                  //发送缓冲区
'                           int SndSize,                     //发送缓冲区大小
'                           LPVOID pRevBuf,                  //接收缓冲区
'                           int* RevSize,                    //接收缓冲区大小
'                           DWORD timeout                    //超时时间
'                           );
'
Public Declare Function IFSendAndAnswer Lib "smeidll.dll" (pSndBuf As Any, _
                                                           ByVal SndSize As Long, _
                                                           pRevBuf As Any, _
                                                           ByVal RevSize As Long, _
                                                           ByVal timeout As Long) As Long


'BOOL WINAPI IFSetOnRead(
'                        LP_READ_BACK pReadFun,              //回调函数指针
'                        HANDLE hReadUser                    //回调句柄
'                        );
'
Public Declare Function IFSetOnRead Lib "smeidll.dll" (pReadFun As Any, _
                                                       ByVal hReadUser As Long) As Long

'BOOL WINAPI IFSetOnError(
'                         LP_ERROR_BACK pErrorFun,           //回调函数指针
'                         HANDLE hErrorUser                  //回调句柄
'                         );
'
Public Declare Function IFSetOnError Lib "smeidll.dll" (pErrorFun As Any, _
                                                        ByVal hErrorUser As Long) As Long

'BOOL WINAPI IFExitInterface();
Public Declare Function IFExitInterface Lib "smeidll.dll" () As Long
'
'BOOL WINAPI LoginA(
'                   unsigned long ulBindType,                //BIND类型, 0表示BIND_TRANSMITER, 1表示BIND_RECIEVER
'                   LPCTSTR SystemID,            //用户标识 char [MAX_SMEI_SYSTEMID]
'                   LPCTSTR Password,            //密码 char[MAX_SMEI_PASSWORD]
'                   LPCTSTR system_type,         //系统类型 char[13]
'                   unsigned long ulInterface_version,       //接口类型
'                   unsigned char ucAddr_TON,                //号码类型
'                   unsigned char ucAddr_NPI,                //编码方案
'                   LPCTSTR Address_range        //地址类型
'                   );
'
Public Declare Function LoginA Lib "smeidll.dll" (ByVal ulBindType As Long, _
                                                  ByVal SystemID As String, _
                                                  ByVal Password As String, _
                                                  ByVal system_type As String, _
                                                  ByVal ulInterface_version As Long, _
                                                  ByVal ucAddr_TON As Byte, _
                                                  ByVal ucAddr_NPI As Byte, _
                                                  ByVal Address_range As String) As Long
                              
'BOOL WINAPI Login(
'                  LPCTSTR SystemID,             //用户标识 char [MAX_SMEI_SYSTEMID]
'                  LPCTSTR Password              //密码 char[MAX_SMEI_PASSWORD]
'                  );
'

Public Declare Function Login Lib "smeidll.dll" (ByVal SystemID As String, _
                                                 ByVal Password As String) As Long

'BOOL WINAPI Login_R(LPCTSTR SystemID,           //用户标识 char [MAX_SMEI_SYSTEMID]
'                    LPCTSTR Password            //密码 char[MAX_SMEI_PASSWORD]
'                    );
'
Public Declare Function Login_R Lib "smeidll.dll" (ByVal SystemID As String, _
                                                   ByVal Password As String) As Long


'BOOL WINAPI Logout();

Public Declare Function Logout Lib "smeidll.dll" () As Long

'
'int WINAPI SubmitSM(
'              unsigned char OrgTON,                 //源地址号码类型
'              unsigned char OrgNPI,                 //源地址编码方案
'              LPCTSTR OrgAddr,                      //源地址 char[MAX_ADDR_LEN]
'              unsigned char DestTON,                //目标地址号码类型
'              unsigned char DestNPI,                //目标地址编码方案
'              LPCTSTR DestAddr,                     //目标地址 char[MAX_ADDR_LEN]
'              unsigned char PRI,                    //SM优先级
'              unsigned char DCS,                    //数据编码方案
'              LPCTSTR Schedule,                     //定时 char[MAX_TIMESTAMP_LEN]
'              LPCTSTR Expire,                       //超时时间 char[MAX_TIMESTAMP_LEN]
'              unsigned long Default_ID,             //缺省短消息
'              unsigned char UDHI,                   //1表示UD为一个结构,0表示缺省
'              unsigned long UDLen,                  //表示UD的长度
'              LPCTSTR UserData,                     //用户信息,短消息正文
'              unsigned long* SM_ID,                 //返回:短消息ID
'              unsigned char* FCS                    //返回:失败原因
'              );
'
Public Declare Function SubmitSM Lib "smeidll.dll" (ByVal OrgTON As Byte, _
                                                    ByVal OrgNPI As Byte, _
                                                    ByVal OrgAddr As String, _
                                                    ByVal DestTON As Byte, _
                                                    ByVal DestNPI As Byte, _
                                                    ByVal DestAddr As String, _
                                                    ByVal PRI As Byte, _
                                                    ByVal DCS As Byte, _
                                                    ByVal Schedule As String, _
                                                    ByVal Expire As String, _
                                                    ByVal Default_ID As Long, _
                                                    ByVal UDHI As Byte, _
                                                    ByVal UDLen As Long, _
                                                    ByVal UserData As String, _
                                                    ByVal sm_id As Long, _
                                                    ByVal FCS As String) As Long
                                                   
'int WINAPI VPSubmitSM(
'              LPCTSTR OrgAddr,                      //源地址 char[MAX_ADDR_LEN]
'              LPCTSTR DestAddr,                     //目标地址 char[MAX_ADDR_LEN]
'              LPCTSTR Schedule,                     //定时 char[MAX_TIMESTAMP_LEN]
'              LPCTSTR Expire,                       //超时时间 char[MAX_TIMESTAMP_LEN]
'              unsigned long Default_ID,             //缺省短消息
'              LPCTSTR UserData,                     //用户信息,短消息正文
'              unsigned long* SM_ID                  //返回:短消息ID
'              );
'
Public Declare Function VPSubmigSM Lib "smeidll.dll" (ByVal OrgAddr As String, _
                                                      ByVal DestAddr As String, _
                                                      ByVal Schedule As String, _
                                                      ByVal Expire As String, _
                                                      ByVal Default_ID As Long, _
                                                      ByVal UserData As String, _
                                                      ByVal sm_id As Long) As Long
                                                     
'int WINAPI QuerySMStatus(
'                   unsigned long SM_ID,             //短消息ID
'                   unsigned char* OrgTON,           //返回:源地址号码类型
'                   unsigned char* OrgNPI,           //返回:源地址编码方案
'                   LPTSTR OrgAddr,                  //返回:源地址 char[MAX_ADDR_LEN]
'                   unsigned char* DestTON,          //返回:目标地址号码类型
'                   unsigned char* DestNPI,          //返回:目标地址编码方案
'                   LPTSTR DestAddr,                 //返回:目标地址 char[MAX_ADDR_LEN]
'                   LPTSTR Final_Date,               //返回:最后时间 char[MAX_TIMESTAMP_LEN]
'                   unsigned char* SM_Status,        //返回:短消息状态
'                                                    //0 : WAITING_FOR_DELIVER 表示等待发送
'                                                    //1 : DELIVER_SUCCESS 表示成功发送
'                                                    //2 : DELIVER_FAIL 表示发送失败
'                   unsigned char* Error_Code        //返回:错误代码
'                   );

Public Declare Function QuerySMStatus Lib "smeidll.dll" (ByVal sm_id As Long, _
                                                         ByVal OrgTON As String, _
                                                         ByVal OrgNPI As String, _
                                                         ByVal OrgAddr As String, _
                                                         ByVal DestTON As String, _
                                                         ByVal DestNPI As String, _
                                                         ByVal DestAddr As String, _
                                                         ByVal Final_Date As String, _
                                                         ByVal SM_Status As Byte, _
                                                         ByVal Error_Code As String) As Long
                                                       
                                                       
'
'int WINAPI QuerySMDetail(
'                   unsigned long SM_ID,             //短消息ID
'                   unsigned char *OrgTON,           //返回:源地址号码类型
'                   unsigned char *OrgNPI,           //返回:源地址编码方案
'                   LPTSTR OrgAddr,                  //返回:源地址 char[MAX_ADDR_LEN]
'                   unsigned char* DestTON,          //返回:目标地址号码类型
'                   unsigned char* DestNPI,          //返回:目标地址编码方案
'                   LPTSTR DestAddr,                 //返回:目标地址 char[MAX_ADDR_LEN]
'                   unsigned char* PRI,              //返回:SM优先级
'                   unsigned char* DCS,              //返回:数据编码方案
'                   LPTSTR Schedule,                 //返回:定时 char[MAX_TIMESTAMP_LEN]
'                   LPTSTR Expire,                   //返回:超时时间 char[MAX_TIMESTAMP_LEN]
'                   LPTSTR Final,                    //返回:最后时间 char[MAX_TIMESTAMP_LEN]
'                   unsigned char* SM_Status,        //返回:短消息状态, 返回值定义同QuerySMStatus.
'                   unsigned char* Error_Code,       //返回:错误代码
'                   unsigned long Len,               //接收短消息长度,User_Data的大小不能小于此数
'                   LPTSTR User_Data                 //返回:短消息文本
'                   );
Public Declare Function QuerySMDetail Lib "smeidll.dll" (ByVal sm_id As Long, _
                                                         ByVal OrgTON As String, _
                                                         ByVal OrgNPI As String, _
                                                         ByVal OrgAddr As String, _
                                                         ByVal DestTON As String, _
                                                         ByVal DestNPI As String, _
                                                         ByVal DestAddr As String, _
                                                         ByVal PRI As Byte, _
                                                         ByVal DCS As Byte, _
                                                         ByVal Schedule As String, _
                                                         ByVal Expire As String, _
                                                         ByVal Final As String, _
                                                         ByVal SM_Status As String, _
                                                         ByVal Error_Code As String, _
                                                         ByVal Leng As Long, _
                                                         ByVal User_Data As String) As Long

'
'int WINAPI CancelSM(
'                     unsigned long SM_ID            //短消息ID
'                     );

Public Declare Function CancelSM Lib "smeidll.dll" (ByVal sm_id As Long) As Long

'
'int WINAPI ReplaceSM(
'                      unsigned long SM_ID,                  //短消息ID
'                      unsigned char OrgTON,                 //源地址号码类型
'                      unsigned char OrgNPI,                 //源地址编码方案
'                      LPCTSTR OrgAddr,                      //源地址 char[MAX_ADDR_LEN]
'                      LPCTSTR Schedule,                     //定时 char[MAX_TIMESTAMP_LEN]
'                      LPCTSTR Expire,                       //超时时间 char[MAX_TIMESTAMP_LEN]
'                      unsigned char DCS,                    //数据编码方案
'                      unsigned long Default_ID,             //缺省短消息
'                      unsigned long UDL,
'                      LPCTSTR UserData                      //用户信息,短消息正文
'                      );
'
Public Declare Function ReplaceSM Lib "smeidll.dll" (ByVal sm_id As Long, _
                                                         ByVal OrgTON As Byte, _
                                                         ByVal OrgNPI As Byte, _
                                                         ByVal OrgAddr As String, _
                                                         ByVal Schedule As String, _
                                                         ByVal Expire As String, _
                                                         ByVal DCS As Byte, _
                                                         ByVal Default_ID As Long, _
                                                         ByVal UDL As Long, _
                                                         ByVal User_Data As String) As Long
                                                        
'int WINAPI QuerySMS(
'                    unsigned char Dir,                  //0:按源地址 1:按目标地址
'                    unsigned char TON,
'                    unsigned char NPI,
'                    LPCTSTR Addr,
'                    LPCTSTR DateTime,                   //开始时间
'                    LPCTSTR FinaTime,                   //结束时间
'                    unsigned char* Number,              //要查询的条数
'                    unsigned char* status,
'                    unsigned long* sm_id
'                    );
'
Public Declare Function QuerySMS Lib "smeidll.dll" (ByVal Dir As Byte, _
                                                   ByVal TON As Byte, _
                                                   ByVal NPI As Byte, _
                                                   ByVal Addr As String, _
                                                   ByVal DateTime As String, _
                                                   ByVal FinalTime As String, _
                                                   ByVal Number As String, _
                                                   ByVal status As String, _
                                                   ByVal sm_id As Long) As Long


'int WINAPI AddSubscriber(
'                         unsigned char TON,                 //号码类型
'                         unsigned char NPI,                 //编码方案
'                         LPCTSTR SubID,                     //用户标识 char[MAX_ADDR_LEN]
'                         LPCTSTR SubName,                   //用户姓名 char[MAX_ADDR_LEN]
'                         LPCTSTR SubAddress,                //用户(通讯)地址 char[MAX_SUB_ADDRESS]
'                         unsigned char MsType,              //手机类型
'                         unsigned long Service,             //服务级别(未定义)
'                         unsigned char bSM,                 //是否提供短消息服务
'                         unsigned long OCOS,                //最大下发数
'                         unsigned long TCOS,                //最大提交数
'                         unsigned short Reserve,            //保留
'                         LPCTSTR Password                   //密码 char [MAX_PASSWORD]
'                         );
'
'int WINAPI DeleteSubscriber(
'                            LPCTSTR SubID                   //用户标识 char[MAX_ADDR_LEN]
'                            );
'
'int WINAPI ModifySubscriber(
'                         unsigned char TON,                 //号码类型
'                         unsigned char NPI,                 //编码方案
'                         LPCTSTR SubID,                     //用户标识 char[MAX_ADDR_LEN]
'                         LPCTSTR SubName,                   //用户姓名 char[MAX_ADDR_LEN]
'                         LPCTSTR SubAddress,                //用户地址 char[MAX_SUB_ADDRESS]
'                         unsigned char MsType,              //手机类型
'                         unsigned long Service,             //服务级别
'                         unsigned char bSM,                 //是否提供短消息服务
'                         unsigned long OCOS,                //最大下发数
'                         unsigned long TCOS,                //最大提交数
'                         LPCTSTR Password                   //密码 char [MAX_PASSWORD]
'                         );
'
'int WINAPI EnquireSubscriber(
'                             LPCTSTR SubID,                     //用户标识
'                             unsigned char* TON,                //返回:号码类型
'                             unsigned char* NPI,                //返回:编码方案
'                             LPTSTR SubName,                    //返回:用户姓名 char[MAX_ADDR_LEN]
'                             LPTSTR SubAddress,                 //返回:用户地址 char[MAX_SUB_ADDRESS]
'                             unsigned long* Service,            //返回:服务级别
'                             unsigned char* bSM,                //返回:是否提供短消息服务
'                             unsigned long* OCOS,               //返回:最大下发数
'                             unsigned long* TCOS,               //返回:最大提交数
'                             LPTSTR Password                    //返回:密码 char [MAX_PASSWORD]
'                             );
'
'int WINAPI EnquireLink();
'
'int WINAPI HasDeliverMessage(
'                             DWORD dwTimeOut                    //超时时间,单位毫秒
'                             );
'
'int WINAPI GetDeliverSM(
'                        ULONG* sm_ID,                           //返回:短讯ID
'                        unsigned char* DestTON,                 //返回:目标地址号码类型
'                        unsigned char* DestNPI,                 //返回:目标地址编码方案
'                        char* DestAddr,                         //返回:目标地址
'                        unsigned char* OrgTON,                  //返回:源地址号码类型
'                        unsigned char* OrgNPI,                  //返回:源地址编码方案
'                        char* OrgAddr,                          //返回:源地址
'                        unsigned char* PRI,                     //返回:优先权
'                        unsigned char* PID,                     //返回:协议类型
'                        unsigned char* DCS,                     //返回:编码方案
'                        char* TimeStamp,                        //返回:下发时间
'                        char* UserData                          //返回:用户数据
'                        );
'
'int WINAPI VPModifySubPassword(
'                       LPCTSTR SubID,                   //用户标识 char[MAX_ADDR_LEN]
'                       LPCTSTR Password                 //密码 char [MAX_PASSWORD]
'                       );
'
'int WINAPI GetErrorString(
'                          int iErrorNum,                //错误代码
'                          int iBuffSize,                //缓冲区大小
'                          char* lpszBuff                //缓冲区指针
'                          );
'
'int WINAPI GetSMStatusString(
'                             DWORD dwStatus,            // 状态值
'                             int iBuffLen,              // 缓冲区大小
'                             char* lpszBuff             // 缓冲区指针
'                             );
'
'int WINAPI SubmitA(
'              unsigned char OrgTON,                 //源地址号码类型
'              unsigned char OrgNPI,                 //源地址编码方案
'              LPCTSTR OrgAddr,                      //源地址 char[MAX_ADDR_LEN]
'              unsigned char DestTON,                //目标地址号码类型
'              unsigned char DestNPI,                //目标地址编码方案
'              LPCTSTR DestAddr,                     //目标地址 char[MAX_ADDR_LEN]
'              unsigned char PRI,                    //SM优先级
'              unsigned char RD,                     //当源地址和目的地址相同时,是否替换存在的短消息。
'              unsigned char RP,                     //回应路径
'              unsigned char SRR,                    //是否需要状态报告
'              unsigned char MR,                     //消息索引
'              unsigned char DCS,                    //数据编码方案
'              unsigned char PID,                    //协议类型
'              LPCTSTR Schedule,                     //定时 char[MAX_TIMESTAMP_LEN]
'              LPCTSTR Expire,                       //超时时间 char[MAX_TIMESTAMP_LEN]
'              unsigned long Default_ID,             //缺省短消息
'              unsigned char UDHI,                   //1表示UD为一个结构,0表示缺省
'              unsigned long UDLen,                  //表示UD的长度
'              LPCTSTR UserData,                     //用户信息,短消息正文
'              unsigned long* SM_ID,                 //返回:短消息ID
'              unsigned char* FCS                    //返回:失败原因
'              );
'
'int WINAPI VPSubmitA(
'              LPCTSTR OrgAddr,                      //源地址 char[MAX_ADDR_LEN]
'              LPCTSTR DestAddr,                     //目标地址 char[MAX_ADDR_LEN]
'              unsigned char PID,                    //协议类型
'              unsigned char DCS,                    //编码方案
'              LPCTSTR Schedule,                     //定时 char[MAX_TIMESTAMP_LEN]
'              LPCTSTR Expire,                       //超时时间 char[MAX_TIMESTAMP_LEN]
'              unsigned long Default_ID,             //缺省短消息
'              LPCTSTR UserData,                     //用户信息,短消息正文
'              unsigned long* SM_ID                  //返回:短消息ID
'              );
'
'int  WINAPI GSMConvertTextToData(
'                LPCSTR pString,                     //需要变换的源字符串指针
'                unsigned char nDCS,                 //指定变换的编码方案
'                unsigned char* pData,               //接收缓冲区指针
'                unsigned long* nLen                 //用户数据的大小的指针,此是SUBMIT中UDL字段的长度,不是字节长度
'                );
'
'int  WINAPI GSMConvertDataToText(
'                unsigned char* pData,               //编码后的数据
'                unsigned long nLen,                 //编码数据的实际大小,此项为协议的UDL项。
'                unsigned char nDCS,                 //编码数据的编码方案
'                unsigned char nUDHI,                //协议的UDHI项,是否有结构头。
'                char* pString                       //解码的字符串缓冲区指针
'                );
'
'int WINAPI QuerySubscriber(
'                     LPCTSTR SubID,                     //用户标识
'                     unsigned char* TON,                //返回:号码类型
'                     unsigned char* NPI,                //返回:编码方案
'                     LPTSTR SubName,                    //返回:用户姓名 char[MAX_ADDR_LEN]
'                     LPTSTR SubAddress,                 //返回:用户地址 char[MAX_SUB_ADDRESS]
'                     unsigned char* MsType,             //返回:手机类型
'                     unsigned long* Service,            //返回:服务级别
'                     unsigned char* bSM,                //返回:是否提供短消息服务
'                     unsigned long* OCOS,               //返回:最大下发数
'                     unsigned long* TCOS,               //返回:最大提交数
'                     LPTSTR Password,                   //返回:密码 char [MAX_PASSWORD]
'                     LPTSTR RegTime                     //返回:注册时间 char[20]
'                     );
'
'int WINAPI QuerySMStatusA(
'                        unsigned long SM_ID,            //短消息ID
'                        unsigned char OrgTON,           //源地址号码类型
'                        unsigned char OrgNPI,           //源地址编码方案
'                        LPCTSTR OrgAddr,                //源地址 char[MAX_ADDR_LEN]
'                        unsigned char* DestTON,         //返回:目标地址号码类型
'                        unsigned char* DestNPI,         //返回:目标地址编码方案
'                        LPTSTR DestAddr,                //返回:目标地址 char[MAX_ADDR_LEN]
'                        LPTSTR Final_date,              //返回:最后时间 char[MAX_TIMESTAMP_LEN]
'                        unsigned char* SM_Status,       //返回:短消息状态
'                                                        //0 : WAITING_FOR_DELIVER 表示等待发送
'                                                        //1 : DELIVER_SUCCESS 表示成功发送
'                                                        //2 : DELIVER_FAIL 表示发送失败
'                        unsigned char* Error_Code       //返回:错误代码
'                        );
'
'int WINAPI CancelSMA(
'                    char cService_type,                 //参见GSM3.39说明
'                    unsigned long SM_ID,                //短消息ID
'                    unsigned char OrgTON,               //源地址号码类型
'                    unsigned char OrgNPI,               //源地址编码方案
'                    LPCTSTR OrgAddr,                    //源地址 char[MAX_ADDR_LEN]
'                    unsigned char DestTON,              //目标地址号码类型
'                    unsigned char DestNPI,              //目标地址编码方案
'                    LPCTSTR DestAddr                    //目标地址 char[MAX_ADDR_LEN]
'                    );
'
'int WINAPI ReplaceSMEx(
'                       unsigned long SM_ID,
'                       unsigned char OrgTON,
'                       unsigned char OrgNPI,
'                       LPCTSTR OrgAddr,
'                       LPCTSTR Schedule,
'                       LPCTSTR Expire,
'                       unsigned char SRR,
'                       unsigned char DCS,
'                       unsigned char UDHI,
'                       unsigned long Default_ID,
'                       unsigned long UDLen,
'                       LPCTSTR UserData
'                       );
'
'int WINAPI QuerySMDetailEx(
'                           unsigned long SM_ID,
'                           unsigned char* OrgTON,
'                           unsigned char* OrgNPI,
'                           LPTSTR OrgAddr,
'                           unsigned char* DestTON,
'                           unsigned char* DestNPI,
'                           LPTSTR DestAddr,
'                           unsigned char* PRI,
'                           unsigned char* RD,
'                           unsigned char* RP,
'                           unsigned char* UDHI,
'                           unsigned char* SRR,
'                           unsigned char* MR,
'                           unsigned char* PID,
'                           unsigned char* DCS,
'                           LPTSTR Schedule,
'                           LPTSTR Expire,
'                           LPTSTR Final,
'                           unsigned char* SM_Status,
'                           unsigned char* Error_Code,
'                           unsigned long* Len,
'                           LPTSTR User_Data
'                           );
'
'int WINAPI GetDeliverSMEx(
'                        ULONG* sm_ID,                           //返回:短讯ID
'                        unsigned char* DestTON,                 //返回:目标地址号码类型
'                        unsigned char* DestNPI,                 //返回:目标地址编码方案
'                        char* DestAddr,                         //返回:目标地址
'                        unsigned char* OrgTON,                  //返回:源地址号码类型
'                        unsigned char* OrgNPI,                  //返回:源地址编码方案
'                        char* OrgAddr,                          //返回:源地址
'                        unsigned char* PRI,                     //返回:优先权
'                        unsigned char* RP,
'                        unsigned char* UDHI,
'                        unsigned char* PID,                     //返回:协议类型
'                        unsigned char* DCS,                     //返回:编码方案
'                        char* TimeStamp,                        //返回:下发时间
'                        unsigned long * UDLen,
'                        char* UserData                          //返回:用户数据
'                        );
'//2000.12.12 钟CD 增加状态功能
'int WINAPI GetDeliverSMExEx(
'                        ULONG* sm_ID,                           //返回:短讯ID
'                        unsigned char* DestTON,                 //返回:目标地址号码类型
'                        unsigned char* DestNPI,                 //返回:目标地址编码方案
'                        char* DestAddr,                         //返回:目标地址
'                        unsigned char* OrgTON,                  //返回:源地址号码类型
'                        unsigned char* OrgNPI,                  //返回:源地址编码方案
'                        char* OrgAddr,                          //返回:源地址
'                        unsigned char* PRI,                     //返回:优先权
'                        unsigned char* RP,
'                        unsigned char* UDHI,
'                        unsigned char* PID,                     //返回:协议类型
'                        unsigned char* DCS,                     //返回:编码方案
'                        char* TimeStamp,                        //返回:下发时间
'                        unsigned long * UDLen,
'                        char* UserData,                         //返回:用户数据
'                        unsigned char* StatusReport             //返回:状态报告标志,0表示不是状态报告,1:表示为状态报告
'                        );
'
'
'#End If


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(HUAWEI SMEIDLL 短讯接口API)