J
Jolly79
Unregistered / Unconfirmed
GUEST, unregistred user!
函数定义: function SubmitAExEx(
OrgTON: BYTE;//源地址号码类型
OrgNPI: BYTE;//源地址编码方案
const OrgAddr: PChar;//源地址 char[MAX_ADDR_LEN]
DestTON: BYTE;//目标地址号码类型
DestNPI: BYTE;//目标地址编码方案
const DestAddr: PChar; //最多支持100个目的地址
PRI: BYTE;//SM优先级
RD: BYTE;//当源地址和目的地址相同时,是否替换存在的短消息。
RP: BYTE;//回应路径
SRR: BYTE;//是否需要状态报告
MR: BYTE;//消息索引
DCS: BYTE;//数据编码方案
PID: BYTE;//协议类型
const Schedule: PChar;//定时 char[MAX_TIMESTAMP_LEN]
const Expire: PChar;//超时时间 char[MAX_TIMESTAMP_LEN]
Default_ID: DWORD;//缺省短消息
UDHI: BYTE;//1表示UD为一个结构,0表示缺省
UDLen: DWORD;//表示UD的长度
const UserData: PChar;//用户信息,短消息正文
const sServiceType: PChar; //业务子类型 by ycl 2001.7.9
byMsgID: PBYTE; //MAX_MSG_ID,CMPP的字段,消息ID
byPKTotal: BYTE; //相同Msg_id的消息总条数,从1开始
byPKNumber: BYTE; //相同Msg_id的消息序号,从1开始
byMsglevel: BYTE; //信息级别
byFeeUserType: BYTE; //计费用户类型字段,0:对目的终端MSISDN计费;1:对源终端MSISDN计费;2:对SP计费;3:表示本字段无效
const sSPID: PChar; //MAX_SPID_LEN,信息内容来源
const sFeeType: PChar; //MAX_FEE_TYPE_LEN,资费类别
const sFeeAddr: PChar; //MAX_ADDR_LEN,被计费用户地址
const sFeeCode: PChar; //MAX_FEE_CODE_LEN,资费代码
byUserNum: BYTE; //接收消息的用户数量
const sDestAddrs: PChar; //目的地址,最多100个
SM_ID: PDWORD;//返回:短消息ID
FCS: PBYTE//返回:失败原因
):integer; stdcall; external 'SMEIDll.dll'name'SubmitAExEx';
调用:
procedure TfrmSMessage.Button2Click(Sender: TObject);
var
iRet,ihas,i: Integer;
SM_ID: DWORD;//返回:短消息ID
FCS: BYTE;
Dfault_id,UDLen: DWORD;
vhas:string;
DestTON: BYTE;
DestNPI: BYTE;
SM_Status: BYTE;
Error_Code: BYTE;
DestAddrChar;
PRI,RD,RP,SRR,MR,DCS,PID,UDHI:Byte;
byMsgID: array [0..MAX_MSG_ID] of BYTE; //CMPP的字段,消息ID
const
UserData: PChar = 'This is a test send!';
m_sOrgAddr: PChar = 'XXXXXX';//手机号或SP号(这里我也不能确定用什么号)
m_sDestAddr: PChar = 'YYYYYY';//手机号
begin
PRI:=0;
RD:=0;
RP:=0;
SRR:=0;
MR:=0;
DCS:=8;
PID:=0;
UDHI:=0;
Dfault_id:=0;
//网关连接,用户登录已成功。
UDLen := strlen(UserData);
ZeroMemory(@byMsgID, MAX_MSG_ID);
iRet := SubmitAExEx(
2, //
1,
m_sOrgAddr,
2,
1,
m_sDestAddr,
PRI, //PRI
RD, //RD
RP, //RP
SRR, //SRR
MR, //MR
DCS, //DCS
PID, //PID
nil, //DATATIME
nil,
Dfault_id, //Default ID
UDHI, //UDHI
UDLen,
UserData,
'', //ServiceType
@byMsgID,
1, //byPKTotal
1, //byPKNumber
0, //byMsglevel
1, //byFeeUserType
'spid',
'1', //Feetype
'',
'11', //FeeCode
1, //byUserNum
m_sDestAddr,
@SM_ID,
@FCS);
if iret=0 then
begin
showmessage('发送成功!'+inttostr(i));
end
else
showmessage('发送失败! 错误代码:'+inttostr(iret));
end;
函数调用后返回正确值是0,请高手们帮忙看看这里为什么会发不到手机用户呀!在线等待
完后散分!
OrgTON: BYTE;//源地址号码类型
OrgNPI: BYTE;//源地址编码方案
const OrgAddr: PChar;//源地址 char[MAX_ADDR_LEN]
DestTON: BYTE;//目标地址号码类型
DestNPI: BYTE;//目标地址编码方案
const DestAddr: PChar; //最多支持100个目的地址
PRI: BYTE;//SM优先级
RD: BYTE;//当源地址和目的地址相同时,是否替换存在的短消息。
RP: BYTE;//回应路径
SRR: BYTE;//是否需要状态报告
MR: BYTE;//消息索引
DCS: BYTE;//数据编码方案
PID: BYTE;//协议类型
const Schedule: PChar;//定时 char[MAX_TIMESTAMP_LEN]
const Expire: PChar;//超时时间 char[MAX_TIMESTAMP_LEN]
Default_ID: DWORD;//缺省短消息
UDHI: BYTE;//1表示UD为一个结构,0表示缺省
UDLen: DWORD;//表示UD的长度
const UserData: PChar;//用户信息,短消息正文
const sServiceType: PChar; //业务子类型 by ycl 2001.7.9
byMsgID: PBYTE; //MAX_MSG_ID,CMPP的字段,消息ID
byPKTotal: BYTE; //相同Msg_id的消息总条数,从1开始
byPKNumber: BYTE; //相同Msg_id的消息序号,从1开始
byMsglevel: BYTE; //信息级别
byFeeUserType: BYTE; //计费用户类型字段,0:对目的终端MSISDN计费;1:对源终端MSISDN计费;2:对SP计费;3:表示本字段无效
const sSPID: PChar; //MAX_SPID_LEN,信息内容来源
const sFeeType: PChar; //MAX_FEE_TYPE_LEN,资费类别
const sFeeAddr: PChar; //MAX_ADDR_LEN,被计费用户地址
const sFeeCode: PChar; //MAX_FEE_CODE_LEN,资费代码
byUserNum: BYTE; //接收消息的用户数量
const sDestAddrs: PChar; //目的地址,最多100个
SM_ID: PDWORD;//返回:短消息ID
FCS: PBYTE//返回:失败原因
):integer; stdcall; external 'SMEIDll.dll'name'SubmitAExEx';
调用:
procedure TfrmSMessage.Button2Click(Sender: TObject);
var
iRet,ihas,i: Integer;
SM_ID: DWORD;//返回:短消息ID
FCS: BYTE;
Dfault_id,UDLen: DWORD;
vhas:string;
DestTON: BYTE;
DestNPI: BYTE;
SM_Status: BYTE;
Error_Code: BYTE;
DestAddrChar;
PRI,RD,RP,SRR,MR,DCS,PID,UDHI:Byte;
byMsgID: array [0..MAX_MSG_ID] of BYTE; //CMPP的字段,消息ID
const
UserData: PChar = 'This is a test send!';
m_sOrgAddr: PChar = 'XXXXXX';//手机号或SP号(这里我也不能确定用什么号)
m_sDestAddr: PChar = 'YYYYYY';//手机号
begin
PRI:=0;
RD:=0;
RP:=0;
SRR:=0;
MR:=0;
DCS:=8;
PID:=0;
UDHI:=0;
Dfault_id:=0;
//网关连接,用户登录已成功。
UDLen := strlen(UserData);
ZeroMemory(@byMsgID, MAX_MSG_ID);
iRet := SubmitAExEx(
2, //
1,
m_sOrgAddr,
2,
1,
m_sDestAddr,
PRI, //PRI
RD, //RD
RP, //RP
SRR, //SRR
MR, //MR
DCS, //DCS
PID, //PID
nil, //DATATIME
nil,
Dfault_id, //Default ID
UDHI, //UDHI
UDLen,
UserData,
'', //ServiceType
@byMsgID,
1, //byPKTotal
1, //byPKNumber
0, //byMsglevel
1, //byFeeUserType
'spid',
'1', //Feetype
'',
'11', //FeeCode
1, //byUserNum
m_sDestAddr,
@SM_ID,
@FCS);
if iret=0 then
begin
showmessage('发送成功!'+inttostr(i));
end
else
showmessage('发送失败! 错误代码:'+inttostr(iret));
end;
函数调用后返回正确值是0,请高手们帮忙看看这里为什么会发不到手机用户呀!在线等待
完后散分!