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

📄 unit1.~pas

📁 delphi调用短信网关开发库实例。
💻 ~PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
      PLongword = ^Longword;
      PInteger = ^Integer;
      PByte = ^Byte;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//初始化接口,和infoX信息平台、短讯中心建立连接,应用程序必须首先调用本函数。
function IFInitInterface(dwCodeProtocol: Longword;dwDriverProtocol: Longword;pDriverParam: string):boolean;stdcall;external 'SMEIDll.dll' name 'IFInitInterface';
//退出接口,应用程序在退出程序时必须调用此函数。
function IFExitInterface:boolean;stdcall;external 'SMEIDll.dll' name 'IFExitInterface';
//用户向 infoX信息平台、短讯中心等服务端注册登录
function Login_R(SystemID: string;Password: string):boolean;stdcall;external 'SMEIDll.dll' name 'Login_R';
//用户向 infoX信息平台、短讯中心注销接口。
function Logout:boolean;stdcall;external 'SMEIDll.dll' name 'Logout';
//向指定的地址发送短讯。
function SubmitAExEx(OrgTON:BYTE;OrgNPI:BYTE;OrgAddr:Pchar;
		DestTON:BYTE;DestNPI:BYTE;DestAddr:Pchar;
		PRI:BYTE;RD:BYTE;RP:BYTE;
		SRR:BYTE;MR:BYTE;DCS:BYTE;
		PID:BYTE;Schedule:Pchar;Expire:Pchar;
		Default_ID:longword;UDHI:BYTE;UDLen:longword;
		UserData:Pchar;ServiceSubType:pchar;
		byMsgID:Pchar;byPKTotal:BYTE;
		byPKNumber:BYTE;byMsglevel:BYTE;
                byFeeUserType:BYTE;sSPID:Pchar;sFeeType:Pchar;
                sFeeAddr:Pchar;sFeeCode:Pchar;byUserNum:BYTE;
                sDestAddrs:Pchar;SM_ID:PLongword;FCS:PBYTE
                ):integer;stdcall;external 'SMEIDll.dll' name 'SubmitAExEx';
//检查接口有无下发消息
function HasDeliverMessage(dwTimeOut:word):integer;stdcall;external 'SMEIDll.dll' name 'HasDeliverMessage';

function GetDeliverSMExExEx(sm_ID:PLongword;DestTON:PByte;
                DestNPI:PByte;DestAddr:PChar;OrgTON:PByte;
                OrgNPI:PByte;OrgAddr:pchar;PRI:PByte;
                RP:PByte;UDHI:PByte;PID:PByte;DCS:PByte;
                TimeStamp:pchar;UDLen:PLongword;UserData:pchar;
                StatusReport:PByte;sMsgID:pchar;sSubmitdate:pchar;
                sDonedate:pchar;sStatus:pchar
                ):integer;stdcall;external 'SMEIDll.dll' name 'GetDeliverSMExExEx';

procedure TForm1.Button1Click(Sender: TObject);
begin
    if IFInitInterface(5,1,'127.0.0.1 7890 5000') then
    begin
        showmessage('IFInitInterface');
    end;
    if Login_R('910084','123456') then
    begin
        showmessage('Login_R');
    end;
    {if Logout then
    begin
        showmessage('Logout');
    end;  }

    {if IFExitInterface then
    begin
        showmessage('IFExitInterface');
    end; }
end;

procedure TForm1.Button2Click(Sender: TObject);
var iRet :integer;a:string;
                OrgTON:BYTE;OrgNPI:BYTE;OrgAddr:array[0..20]of char;
		DestTON:BYTE;DestNPI:BYTE;DestAddr:array[0..20]of char;
		PRI:BYTE;RD:BYTE;RP:BYTE;
		SRR:BYTE;MR:BYTE;DCS:BYTE;
		PID:BYTE;Schedule:array[0..19]of char;Expire:array[0..19]of char;
		Default_ID:longword;UDHI:BYTE;UDLen:longword;
		UserData:array[0..199]of char;ServiceSubType:array[0..9]of char;
		byMsgID:array[0..22]of char;byPKTotal:BYTE;
		byPKNumber:BYTE;byMsglevel:BYTE;
                byFeeUserType:BYTE;sSPID:array[0..5]of char;sFeeType:array[0..1]of char;
                sFeeAddr:array[0..20]of char;sFeeCode:array[0..5]of char;byUserNum:BYTE;
                sDestAddrs:array[0..20]of char;SM_ID:Plongword;FCS:PBYTE;
begin
    new(SM_ID);
    new(FCS);

    OrgTON:=1;                               //源地址号码类型
    OrgNPI:=1;                               //源地址编码方案
    OrgAddr:='06655800233';         //源地址
    DestTON:=2;                              //目标地址号码类型
    DestNPI:=1;                              //目标地址编码方案
    DestAddr:='';                   //目标地址
    PRI:=0;                                  //SM优先级
    SRR:=1;                                  //状态报告
    DCS:=15;                                  //数据编码方案 0:ASCII串 3:短信写卡操作 4:二进制信息 8:UCS2编码 15:含GB汉字
    PID:=0;
    Schedule:='2004/10/28 10:10:10';          //定时时间
    Expire:='2004/10/28 10:10:10';           //超时时间
    default_id:=0;                           //缺省短消息的信息码,缺省为0。
    UDHI:=1;                                 //用于长短消息,表示UserData是否是结构
    UDLen:=200;                               //表示UserData的长度,单位是字节
    //UserData:='计算机答案第三次作业计算机答案第三次作业计算机答案第三次作业计算机答案第三次作业计算机答案第三次作业计算机答案第三次作业计算机答案第三次作一二算机答案第三次作业计算机答案第三次作业计算机答案第三次作业';                 //用户信息,短消息正文
    UserData:='1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij';
    ServiceSubType:='abcdefghij';    //业务类型,通过此值来判断计费
    byMsgID:='';                    //返回ACK应答消息的MsgID
    byPKTotal:=1;                                 //相同Msg_id的消息总条数,从1开始
    byPKNumber:=1;                                //相同Msg_id的消息序号,从1开始
    byMsgLevel:=9;                                //信息级别,缺省为0。
    byFeeUserType:=0;                             //计费用户类型字段:
    sSPID:='910084';                      //信息内容来源(Src_ID) ,对应CMPP的 Msg_src
    sFeeType:='01';                      //资费类别
    sFeeCode:='000010';                  //资费代码,以分为单位
    byUserNum:=1;                                 //接收消息的用户数量
    sFeeAddr:='8613851771993';           //被计费用户的号码
    sDestAddrs:='8613851771993';         //接收业务的MSISDN号码



    iRet:= SubmitAExEx(OrgTON,OrgNPI,@OrgAddr,DestTON,DestNPI,@DestAddr,PRI,0,0,
                       SRR,0,DCS,PID,@schedule,@expire,default_id,UDHI,UDLen,@UserData,
                       @ServiceSubType,@byMsgID,byPKTotal,
                       byPKNumber,byMsgLevel,byFeeUserType,
                       @sSPID, @sFeeType, @sFeeAddr, @sFeeCode,
		       byUserNum, @sDestAddrs,SM_ID,FCS);
    memo1.Lines.Add(inttostr(iRet));
    memo1.Lines.Add('byMsgID:' + byMsgID + chr(13)+chr(10));
    memo1.Lines.Add('FCS:' + vartostr(FCS^) + chr(13)+chr(10));
end;

procedure TForm1.Button3Click(Sender: TObject);
var sm_ID:PLongword;DestTON:PBYTE;DestNPI:PBYTE;DestAddr:array[0..20]of char;
    OrgTON:PBYTE;OrgNPI:PBYTE;OrgAddr:array[0..20]of char;PRI:PBYTE;RP:PBYTE;
    UDHI:PBYTE;PID:PBYTE;DCS:PBYTE;TimeStamp:array[0..20]of char;UDLen:PLongword;UserData:array[0..141]of char;
    StatusReport:PBYTE;sMsgID:array[0..22]of char;sSubmitdate:array[0..10]of char;sDonedate:array[0..10]of char;sStatus:array[0..7]of char;
    iRet:integer;
    tmp:array[0..200] of char;
    tmpstr:string;
    char1:pchar;
begin
    new(sm_ID);sm_ID^:=0;
    new(DestTON);DestTON^:=0;
    new(DestNPI);DestNPI^:=0;
    new(OrgTON);OrgTON^:=0;
    new(OrgNPI);OrgNPI^:=0;
    new(PRI);PRI^:=0;
    new(RP);RP^:=0;
    new(UDHI);UDHI^:=0;
    new(PID);PID^:=0;
    new(DCS);DCS^:=0;
    new(StatusReport);StatusReport^:=0;
    new(UDLen);UDLen^:=0;

    FillChar(DestAddr, SizeOf(DestAddr), 0);
    FillChar(OrgAddr, SizeOf(OrgAddr), 0);
    FillChar(TimeStamp, SizeOf(TimeStamp), 0);
    FillChar(UserData, SizeOf(UserData), 0);
    FillChar(sMsgID, SizeOf(sMsgID), 0);
    FillChar(sSubmitdate, SizeOf(sSubmitdate), 0);
    FillChar(sDonedate, SizeOf(sDonedate), 0);
    FillChar(sStatus, SizeOf(sStatus), 0);

    iRet := GetDeliverSMExExEx(sm_ID,DestTON,DestNPI,@DestAddr,
                OrgTON,OrgNPI,@OrgAddr,
                PRI,RP, UDHI, PID, DCS,
                @TimeStamp, UDlen, @UserData,
                StatusReport, @sMsgID, @sSubmitdate,
                @sDonedate, @sStatus);

     tmpstr:= 'sm_ID:' + vartostr(sm_ID^)+ chr(13)+chr(10);
     tmpstr:= tmpstr + 'DestTON:' + vartostr(DestTON^)+ chr(13)+chr(10);
     tmpstr:= tmpstr + 'DestNPI:' + vartostr(DestNPI^)+ chr(13)+chr(10);
     tmpstr:= tmpstr + 'DestAddr:' + DestAddr + chr(13)+chr(10);
     tmpstr:= tmpstr + 'OrgTON:' + vartostr(OrgTON^)+ chr(13)+chr(10);
     tmpstr:= tmpstr + 'OrgNPI:' + vartostr(OrgNPI^)+ chr(13)+chr(10);
     tmpstr:= tmpstr + 'OrgAddr:' + OrgAddr + chr(13)+chr(10);
     tmpstr:= tmpstr + 'PRI:' + vartostr(PRI^)+ chr(13)+chr(10);
     tmpstr:= tmpstr + 'RP:' + vartostr(RP^)+ chr(13)+chr(10);
     tmpstr:= tmpstr + 'UDHI:' + vartostr(UDHI^)+ chr(13)+chr(10);
     tmpstr:= tmpstr + 'PID:' + vartostr(PID^)+ chr(13)+chr(10);
     tmpstr:= tmpstr + 'DCS:' + vartostr(DCS^)+ chr(13)+chr(10);
     tmpstr:= tmpstr + 'TimeStamp:' + TimeStamp + chr(13)+chr(10);
     tmpstr:= tmpstr + 'UDLen:' + vartostr(UDLen^)+ chr(13)+chr(10);
     tmpstr:= tmpstr + 'UserData:' + UserData + chr(13)+chr(10);
     tmpstr:= tmpstr + 'StatusReport:' + vartostr(StatusReport^)+ chr(13)+chr(10);
     tmpstr:= tmpstr + 'sMsgID:' + sMsgID + chr(13)+chr(10);
     tmpstr:= tmpstr + 'sSubmitdate:' + sSubmitdate + chr(13)+chr(10);
     tmpstr:= tmpstr + 'sDonedate:' + sDonedate+ chr(13)+chr(10);
     tmpstr:= tmpstr + 'sStatus:' + sStatus + chr(13)+chr(10);
     memo1.Lines.Add(tmpstr);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
     if HasDeliverMessage(500)<>0 then
     showmessage('500');
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -