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

📄 cmpp20.pas

📁 操作数据库的例子
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    Reserved: array[0..7] of char; //保留项
  end;

  //上行包应答包包体定义
  //PCMPP_DELIVER_RESP_tag = ^TCMPP_DELIVER_RESP_tag;
  TCMPP_DELIVER_RESP = packed record
    Msg_Id: Int64; //信息标识
    result: byte; //结果
  end;


  //短信群发 注:在群发中,由于 手机号是可变长的,所以在程序中定义,长度为21*手机个数
  PCMPP_SUBMIT_QF_tag1 = ^TCMPP_SUBMIT_QF_tag1;
  TCMPP_SUBMIT_QF_tag1 = packed record
    Msg_Id: Int64; //信息标识,由SP侧短信网关本身产生,本处填空。
    Pk_total: byte; //相同Msg_Id的信息总条数,从1开始
    Pk_number: byte; //相同Msg_Id的信息序号,从1开始
    Registered_Delivery: byte; //是否要求返回状态确认报告:0:不需要1:需要2:产生SMC话单 (该类型短信仅供网关计费使用,不发送给目的终端)
    Msg_level: byte; //信息级别
    service_id: array[0..9] of char; //业务类型,是数字、字母和符号的组合。
    Fee_UserType: byte; //计费用户类型字段0:对目的终端MSISDN计费;1:对源终端MSISDN计费;2:对SP计费;3:表示本字段无效,对谁计费参见Fee_terminal_Id字段。
    Fee_terminal_Id: array[0..20] of char; //被计费用户的号码(如本字节填空,则表示本字段无效,对谁计费参见Fee_Userstruct字段,本字段与Fee_Userstruct字段互斥)
    TP_pId: byte; //GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.9
    TP_udhi: byte; //GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
    Msg_Fmt: byte; //信息格式  0:ASCII串  3:短信写卡操作  4:二进制信息  8:UCS2编码15:含GB汉字
    msg_src: array[0..5] of char; //信息内容来源(SP_Id)
    FeeType: array[0..1] of char; //资费类别01:对"计费用户号码"免费
    FeeCode: array[0..5] of char; //资费代码(以分为单位)
    Valid_Time: array[0..16] of char; //存活有效期,格式遵循SMPP3.3协议
    At_Time: array[0..16] of char; //定时发送时间,格式遵循SMPP3.3协议
    Src_ID: array[0..20] of char; //源号码SP的服务代码或前缀为服务代码的长号码, 网关将该号码完整的填到SMPP协议Submit_SM消息相应的source_addr字段,该号码最终在用户手机上显示为短消息的主叫号码
    DestUsr_tl: byte; //接收信息的用户数量(小于100个用户)
  end;

  PCMPP_SUBMIT_QF_tag2 = ^TCMPP_SUBMIT_QF_tag2;
  TCMPP_SUBMIT_QF_tag2 = packed record
    MSG_LENGTH: byte; //信息长度(Msg_Fmt值为0时:<160个字节;其它<=140个字节)
    Msg_Content: array[0..MSG_LENGTH - 1] of char; //信息内容
    Reserve: array[0..7] of char; //保留
  end;

  // SP 向 ISMG 查询发送短信状态
  PCMPP_QUERY_tag = ^TCMPP_QUERY_tag;
  TCMPP_QUERY_tag = packed record
    Time: array[0..7] of char; //时间YYYYMMDD(精确至日)
    Query_Type: byte; //查询类别0:总数查询1:按业务类型查询
    Query_Code: array[0..9] of char; //查询码当Query_struct为0时,此项无效;当Query_struct为1时,此项填写业务类型Service_Id.
    Reserve: array[0..7] of char; //保留
  end;

  PCMPP_QUERY_RESP_tag = ^TCMPP_QUERY_RESP_tag;
  TCMPP_QUERY_RESP_tag = packed record
    Time: array[0..7] of char; //时间(精确至日)
    Query_Type: byte; //查询类别0:总数查询1:按业务类型查询
    Query_Code: array[0..9] of char; //查询码
    MT_TLMsg: LongWord; //从SP接收信息总数
    MT_Tlusr: LongWord; //从SP接收用户总数
    MT_Scs: LongWord; //成功转发数量
    MT_WT: LongWord; //待转发数量
    MT_FL: LongWord; //转发失败数量
    MO_Scs: LongWord; //向SP成功送达数量
    MO_WT: LongWord; //向SP待送达数量
    MO_FL: LongWord; //向SP送达失败数量
  end;
  ////////////////////////////////////////////////////////////////////////////
  // SP 向 ISMG 发起删除短信操作
  PCMPP_CANCEL_tag = ^TCMPP_CANCEL_tag;
  TCMPP_CANCEL_tag = packed record
    Msg_Id: Int64; //信息标识
  end;
  PCMPP_CANCEL_RESP_tag = ^TCMPP_CANCEL_RESP_tag;
  TCMPP_CANCEL_RESP_tag = packed record
    Success_Id: byte; //结果
  end;

  ////////////////////////////////////////////////////////////////////////////
  //链路检测操作
  TCMPP_ACTIVE_TEST = TEmpty;

  TCMPP_ACTIVE_TEST_RESP = packed record
    Success_Id: byte; //结果
  end;

  //包体
  TCMPP20_BODY = packed record
    case integer of
      1: (CMPP_CONNECT: TCMPP_CONNECT);
      2: (CMPP_CONNECT_RESP: TCMPP_CONNECT_RESP);
      3: (CMPP_SUBMIT: TCMPP_SUBMIT);
      4: (CMPP_SUBMIT_RESP: TCMPP_SUBMIT_RESP);
      5: (CMPP_DELIVER: TCMPP_DELIVER);
      6: (CMPP_DELIVER_RESP: TCMPP_DELIVER_RESP);
      7: (CMPP_ACTIVE_TEST: TCMPP_ACTIVE_TEST);
      8: (CMPP_ACTIVE_TEST_RESP: TCMPP_ACTIVE_TEST_RESP);
  end;

  //包
  TCMPP20_PACKET = packed record
    MsgHead: TCMPP_HEAD;
    MsgBody: TCMPP20_BODY;
  end;
  ////////////////////////////////////////////////////////////////////////////
  // 发送短信队列
  tSendQueue = TCMPP_SUBMIT;
  // 接收短信队列
  tDeliverQueue = packed record
    Head: TCMPP_DELIVER_HEAD;
    Body: TCMPP_DELIVER
  end;
  // 接收状态回报队列
  tReportQueue = packed record
    Head: TCMPP_DELIVER_HEAD;
    Body: TCMPP_Report_tag;
  end;

  {**************************************************************************}
  {由于发送时包头和包体需要一块发送,下列为组合成一体的协议结构}
  ////////////////////////////////////////////////////////////////////////////
  // CMPP_CONNECT 组合包 SP to ISMG
  tCmpp_Connect_StoI = packed record
    Head: TCMPP_HEAD;
    Body: TCMPP_CONNECT;
  end;
  // CMPP_SUBMIT 组合包 SP to ISMG
  tCmpp_Submit_StoI = packed record
    Head: TCMPP_HEAD;
    Body: TCMPP_SUBMIT;
  end;
  // CMPP_ACTIVE_TEST 组合包 SP to ISMG
  tCmpp_ActiveTest_StoI = packed record
    Head: TCMPP_HEAD;
    Body: TCMPP_ACTIVE_TEST;
  end;

  // CMPP_DELIVER_RESP 组合包 ISMG to SP
  tCmpp_Deliver_Resp_ItoS = packed record
    Head: TCMPP_HEAD;
    Body: TCMPP_DELIVER_RESP;
  end;
  // CMPP_ACTIVE_TEST_RESP 组合包 ISMG to SP
  tCmpp_ActiveTest_Resp_ItoS = packed record
    Head: TCMPP_HEAD;
    Body: TCMPP_ACTIVE_TEST_RESP;
  end;
  // CMPP_CONNECT_RESP 组合包 ISMG to SP
  tCmpp_Connect_Resp_ItoS = packed record
    Head: TCMPP_HEAD;
    Body: TCMPP_CONNECT_RESP;
  end;
implementation

function ResultCommandString(var i: LongWord): string;
begin
  case i of
    $1: result := 'CMPP_CONNECT';
    $80000001: result := 'CMPP_CONNECT_RESP';
    $2: result := 'CMPP_TERMINATE';
    $80000002: result := 'CMPP_TERMINATE_RESP';
    $4: result := 'CMPP_SUBMIT';
    $80000004: result := 'CMPP_SUBMIT_RESP';
    $5: result := 'CMPP_DELIVER';
    $80000005: result := 'CMPP_DELIVER_RESP';
    $6: result := 'CMPP_QUERY';
    $80000006: result := 'CMPP_QUERY_RESP';
    $7: result := 'CMPP_CANCEL';
    $80000007: result := 'CMPP_CANCEL_RESP';
    $8: result := 'CMPP_ACTIVE_TEST';
    $80000008: result := 'CMPP_ACTIVE_TEST_RESP';
    $9: result := 'CMPP_FWD';
    $80000009: result := 'CMPP_FWD_RESP ';
    $10: result := 'CMPP_MT_ROUTE';
    $80000010: result := 'CMPP_MT_ROUTE_RESP';
    $11: result := 'CMPP_MO_ROUTE';
    $80000011: result := 'CMPP_MO_ROUTE_RESP';
    $12: result := 'CMPP_GET_ROUTE';
    $80000012: result := 'CMPP_GET_ROUTE_RESP';
    $13: result := 'CMPP_MT_ROUTE_UPDATE';
    $80000013: result := 'CMPP_MT_ROUTE_UPDATE_RESP';
    $14: result := 'CMPP_MO_ROUTE_UPDATE';
    $80000014: result := 'CMPP_MO_ROUTE_UPDATE_RESP';
    $15: result := 'CMPP_PUSH_MT_ROUTE_UPDATE';
    $80000015: result := 'CMPP_PUSH_MT_ROUTE_UPDATE_RESP';
    $16: result := 'CMPP_PUSH_MO_ROUTE_UPDATE';
    $80000016: result := 'CMPP_PUSH_MO_ROUTE_UPDATE_RESP';
  end;
end;

end.

⌨️ 快捷键说明

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