CMPP3.0实现物联网卡通讯

当下物联网发展迅猛,物联网卡可以接受短信指令,实现千里之外尽可掌控。本人做过一个这类项目,把相关经验记录下来,分享给需要的人。

物联网卡通讯其实跟电话卡一样,可以使用CMPP协议。不过由于物联网卡位数为13位,未测试CMPP2.0是否支持,直接保险一点用的CMPP3.0协议。

因为CMPP3.0中号码字段增加到32位,还增加了号码类型字段,可能是为了扩展不同类型的卡。

Dest_terminal_Id

32*DestUsr_tl

Octet String

接收短信的MSISDN号码。

Dest_terminal_type

1

Unsigned Integer

接收短信的用户的号码类型,0:真实号码;1:伪码。

可以是用CMPP3.0协议,也就是说发送短信到物联网卡、从物联网卡回复短信回来,都可以直接用这套CMPP3.0协议。那么跟发手机短信有何不同之处呢,以下就是几点不同:

 

1.关于编码格式

目前物联网卡通讯,如果是英文内容,则只支持Ascii码,也就是Msg_Fmt必须设置成0

Msg_Fmt

1

Unsigned Integer

信息格式:

0:ASCII串;

3:短信写卡操作;

4:二进制信息;

8:UCS2编码;

15:含GB汉字。。。。。。

如果是发送中文内容,则只支持UCS2编码,即Msg_Fmt必须设置成8

另外有个特别费解的问题是,如果是发中文内容,短信网关会自动在短信后面加上一串尾巴,类似【ayf】等。这个问题在开发的时候必须注意,以免发送的指令不能解析,需要做一些逻辑处理把尾巴去掉。

 

2.关于长短信

我们知道一条短信只能发140个字节的内容,如果实际要发的内容超过这个数,就必须拆成多条发送,这样会有一些影响。为了发长短信,我们的CMPP发送程序必须做一些改造,具体请参考我的另一篇博文CMPP3.0 长短信实现方案

而对于物联网卡来说,收发长短信必须使用  7 位的协议头格式:06 08 04 XX XX MM NN

这也是要注意的一点,否则解析发送都会出错。

 

3.关于用户号码类型

物联网的用户号码类型选择Dest_terminal_type=0即可。若选择1会报错。

其他

如遇到短信网关返回码,可查询以下网址看返回码解释 

http://www.cnblogs.com/tuyile006/p/5849722.html

常见返回码:173  是物联网卡没开通短信功能造成的。

这就是开发物联网通讯过程中的经验。经过一番努力,程序已支持:

1、支持Cmpp2.0、3.0协议;

2、支持一般的短信发送、上行短信接收、状态报告;

3、支持长短信,包括下发长短信、上行接收长短信;

4、支持Ms Sql数据库、MySql数据库;

5、支持普通手机号和物联网卡;

6、集成了邮件群发功能;

7、全套源码Win服务、全套数据库源码;

 

 

提纲

1 物联网数据卡系统源码——前篇

1.1 物联网技术架构图

1.2 物联网的主要应用领域

2 物联网数据卡系统源码——通信模块

2.1 通信模块整体概述

2.2 协议封装和实现

2.3 长短信

2.4 粘包的处理

2.5 物联网通讯与普通短信通讯的区别和要注意的地方

3 物联网数据卡系统源码——Windows服务模块

3.1 Windows服务模块概述

3.2 Windows服务模块实现

3.3 高并发回调处理

3.4 部署安装

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前 言 4 1 范围 5 2 缩略语 5 3 网络结构 6 4 CMPP功能概述 7 5 协议栈 8 6 通信方式 9 6.1 长连接 9 6.2 短连接 11 6.3 本协议中涉及的端口号 12 6.4 交互过程中的应答方式 12 7 消息定义 12 7.1 基本数据类型 12 7.2 消息结构 13 7.3 消息头格式(Message Header) 13 7.4 信息资源站实体(SP)与互联网短信网关(ISMG)间的消息定义 13 7.4.1 SP请求连接到ISMG(CMPP_CONNECT)操作 13 7.4.2 SP或ISMG请求拆除连接(CMPP_TERMINATE)操作 14 7.4.3 SP向ISMG提交短信(CMPP_SUBMIT)操作 15 7.4.4 SP向ISMG查询发送短信状态(CMPP_QUERY)操作 17 7.4.5 ISMG向SP送交短信(CMPP_DELIVER)操作 18 7.4.6 SP向ISMG发起删除短信(CMPP_CANCEL)操作 21 7.4.7 链路检测(CMPP_ACTIVE_TEST)操作 21 7.5 互联网短信网关(ISMG)之间的消息定义 22 7.5.1 源ISMG请求连接到目的ISMG(CMPP_CONNECT)操作 22 7.5.2 源ISMG请求拆除到目的ISMG的连接(CMPP_TERMINATE)操作 22 7.5.3 链路检测(CMPP_ACTIVE_TEST)操作 22 7.5.4 源ISMG向目的ISMG转发短信(CMPP_FWD)操作 22 7.6 互联网短信网关(ISMG)与汇接网关(GNS)之间的消息定义 27 7.6.1 ISMG请求连接到GNS或GNS请求连接到ISMG(CMPP_CONNECT)操作 27 7.6.2 ISMG请求拆除到GNS的连接或GNS请求拆除到ISMG的连接(CMPP_TERMINATE)操作 27 7.6.3 ISMG向汇接网关查询MT路由(CMPP_MT_ROUTE)操作 27 7.6.4 ISMG向汇接网关查询MO路由(CMPP_MO_ROUTE)操作 28 7.6.5 ISMG向汇接网关获取MT路由(CMPP_GET_MT_ROUTE)操作 29 7.6.6 ISMG向汇接网关获取MO路由(CMPP_GET_MO_ROUTE)操作 30 7.6.7 ISMG向汇接网关更新MT路由(CMPP_MT_ROUTE_UPDATE)操作 31 7.6.8 ISMG向汇接网关更新MO路由(CMPP_MO_ROUTE_UPDATE)操作 33 7.6.9 汇接网关向ISMG更新MT路由(CMPP_PUSH_MT_ROUTE_UPDATE)操作 34 7.6.10 汇接网关向ISMG更新MO路由(CMPP_PUSH_MO_ROUTE_UPDATE)操作 35 7.7 系统定义 36 7.7.1 Command_Id定义 36 附录1 MO状态报告的产生 38 修订历史 40
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值