华为的短信接收函数Delphi中如何用?请给个详细的例程。

uptou 2003-10-17 10:38:48
GetDeliverSMExExEx
【函数功能】
读取下发的短讯内容,并且能确认此消息是否为状态报告,用于CMPP协议中,SP需要短消息网关返回状态报告的内容。
【函数原型】
int WINAPI GetDeliverSMExExEx(ULONG* sm_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,unsigned char* sMsgID, char* sSubmitdate, char* sDonedate, char* sStatus);
【参数说明】
Sm_ID
类型:ULONG*
意义:返回短消息的ID
DestTON
类型:unsigned char*
意义:返回目标地址号码类型
DestNPI
类型:unsigned char*
意义;返回目标地址编码方案
DestAddr
类型:char* 返回最大长度为20字符串(不包括"\0"字符)。
意义:目标地址
OrgTON
类型:unsigned char*
说明:返回源地址号码类型
OrgNPI
类型:unsigned char*
说明:返回源地址编码方案
OrgAddr
类型:char* 返回最大长度为20字符串(不包括"\0"字符)。
说明:源地址
PRI
类型:unsigned char*
说明:返回优先级
RP
类型:unsigned char*
说明:返回回应路径
UDHI
类型:unsigned char*
说明:返回头结构指示
PID
类型:unsigned char*
说明:返回协议标志
DCS
类型:unsigned char*
说明:返回编码方案
TimeStamp
类型:char* 返回最大长度为19字符串(不包括"\0"字符)。
说明:提交时间
UDLen
类型:ULONG*
意义:返回短消息的UDL
UserData
类型:char* 返回最大长度为140字节的字符串(不包括"\0"字符)。
说明:正文(为状态报告时无意义)
StatusReport
类型:unsigned char*
返回:状态报告标志,0:表示不是状态报告,1:表示为状态报告
sMsgID
类型:unsigned char*返回22字节的字符串,此消息为状态报告时此字段才有意义。
说明:可通过此字段去匹配相应的Submit消息
sSubmitdate
类型:char* 返回
说明:10字节的提交时间格式 YYMMDDHHMM(YY为年的后两位00-99,MM:01-12,DD:01-31,HH:00-23,MM:00-59)
sDonedate
类型:char* 返回
说明:10字节的消息下发时间格式YYMMDDHHMM(同上面的sSubmitdata)
sStatus
类型:char*返回
说明:7字节的字符串, SP根据该字段确定CMPP_SUBMIT消息的处理状态。具体值的意义见下表。
【调用举例】
ULONG ulsm_ID;
unsigned char byDestTON, byDestNPI, byOrgTON, byOrgNPI, byPRI, byPID, byDCS;
char sDestAddr[MAX_ADDR_LEN];
memset(sDestAddr, 0, MAX_ADDR_LEN);
char sOrgAddr[MAX_ADDR_LEN];
memset(sOrgAddr, 0, MAX_ADDR_LEN);
char sTimeStamp[MAX_TIMESTAMP_LEN];
memset(sTimeStamp, 0, MAX_TIMESTAMP_LEN);
char sUserData[MAX_UD_LEN];
memset(sUserData, 0, MAX_UD_LEN);
unsigned char MsgID[23];
memset(MsgID, 0, 23);
char sSubmitdate[MAX_SUBMIT_TIME_LEN+1];
memset(sSubmitdate, 0, MAX_SUBMIT_TIME_LEN+1);
char sDonedate[MAX_DONE_TIME_LEN+1];
memset(sDonedate, 0, MAX_DONE_TIME_LEN+1);
char sStatus[MAX_STATE_LEN+1];
memset(sStatus, 0, MAX_STATE_LEN+1);
int iRet;
unsigned char byRP;
unsigned char byUDHI;
unsigned long ulUDLen;
unsigned char byStatusReport = 0;
iRet = GetDeliverSMExEx(&ulsm_ID, &byDestTON, &byDestNPI, sDestAddr, &byOrgTON,&byOrgNPI, sOrgAddr, &byPRI, &byRP, &byUDHI, &byPID, &byDCS,sTimeStamp, &ulUDLen, sUserData, &byStatusReport,MsgID, sSubmitdate, sDonedate, sStatus);
if(iRet == 0)
{
CString sGetData;
sGetData.Format("接收成功!\n接受到数据:%s", sUserData);
CString str;
str.Format("接收到Deliver消息\n"
"源地址 = %s\n"
"目标地址 = %s\n"
"TimeStamp = %s\n"
"正文 = %s\n"
"状态报告标志 = %d\n"
"MsgID = %s\n"
"Submit date = %s\n"
"done date = %s\n"
"stat = %s",
sOrgAddr, sDestAddr, sTimeStamp,
sUserData, StatusReport,
MsgID, sSubmitdate,
sDonedate, sStatus);
MessageBox(str,MB_OK,0);
}
else
MessageBox("接收失败!",MB_OK,0);
...全文
38 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧