600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > (三)Linux 4G模块实现短信发送的两种格式(Text和PDU)

(三)Linux 4G模块实现短信发送的两种格式(Text和PDU)

时间:2024-05-27 00:14:33

相关推荐

(三)Linux 4G模块实现短信发送的两种格式(Text和PDU)

文章目录

一、前言二、需要掌握的知识2.1 检查穿串口和SIM卡2.2 Text格式2.3 PDU格式(1)PDU编码规则(2)短信中心号码

一、前言

在上一篇:(二)树莓派Linux环境串口通信编程–AT指令集的发送和接收,已经实现了串口通信编程,可发AT指令集,例如查SIM卡信号等指令,但是还是存在一个问题就是不能发送短信,这是因为涉及到编码的问题了,因为SIM卡发送短信,并不是简单的发送字符串,而是发送一个完整的Text格式或者PDU编码(包括已处理的中心号码、本SIM卡号码、数据Unicode码、号码长度、数据长度等信息)。现在我们需要了解Text格式和PDU格式的组成结构和用到的AT指令,以及后面如何用代码实现封装它。

二、需要掌握的知识

2.1 检查穿串口和SIM卡

在发送短信之前,我们需要保证几点是正常的,不然就可能造成发送短信失败:

(1)确保串口可用

AT

若返回OK则说明串口可用。

(2)确保能检测出SIM卡,串口可通信不代表能检测出SIM卡

AT+CPIN?

若返回READY,则说明能检测出SIM卡

(3)检测SIM卡是否已经注册

AT+CREG?

若返回0,1 或者返回0,3 则说明SIM卡已注册

(4)检测SIM卡信号

AT+CSQ

命令解释:检查网络信号强度

命令格式:AT+CSQ

命令返回:+CSQ: ** ,##

其中**应在 10 到 31 之间,数值越大表明信号质量越好,##为误码率,值在 0 到 99 之间。

2.2 Text格式

设置短信格式为Text格式

AT+CMGF=1

需要发送的号码,注意是英文双引号

AT+CMGS="135xxxx4414"

在出现>号后输入英文即可发送

下面是我用Linux下的AT指令软件microcom进行指令的收发,因为我前面写的程序还没有实现发短信功能。

下面是目标号码收到的短信

可以看出,发送英文的短信所需要的处理的流程是非常简单的,这是因为没有涉及到转码。

2.3 PDU格式

(1)PDU编码规则

PDU编码协议简单说明

例1发送:SMSC号码是+8613800250500,对方号码是1369309203,消息内容是“Hello!”。从手机发出的PDU串可以是

08 91 68310805F0 11 00 0D 91 683196032930F0 00 00 00 06 C8329BFDOE 01

对照规范,具体分析:分段含义说明

08 短信中心号码地址信息的长度共8个八位字节(包括91)91 短信中心号码地址格式(TON/NPI)用国际格式号码(在前面加’+’)68 31 08 20 05 05 F0 SMSC地址8613800250500,补F’凑成偶数个11基本参数(TP-MTI/VFP)发送,TP-VP用相对格式00消息基准值(TP-MR)OD目标地址数字个数共13个十进制数(不包括91和’F’)91目标地址格式(TON/NPI)用国际格式号码(在前面加’+’)68 31 96 03 29 30 F0目标地址(TP-DA)8613693092030,补F’凑成偶数个00协议标识(TP-PID)是普通GSM类型,点到点方式00用户信息编码方式(TP-DCS)7-bit编码00有效期(TP-VP)5分钟06用户信息长度(TP-UDL)实际长度6个字节C8 32 9B FD OE01用户信息(TP-UD)“Hello!”

(2)短信中心号码

在上面PDU编码中使用到了短信中心号码,没听说过的人可能会一头雾水。下面解释一下:

信息中心号码是一种短信息服务器,如果填错了,短消息是无法发送成功的,各个地区都有自己的信息中心号码,具体号码可以询问当地的网络运营商。

也可以用下面AT指令获取中心号码:

AT+CSCA?

(1)介绍

信息中心号码,即短信服务中心,SMSC(Short Message Service Center),负责在基站和移动台(ME)间中继、储存或转发短消息;ME到SMSC的协议能传输来自移动台或朝向移动台的短消息,协议名遵从GMS 03.40协议。

GSM手机需要设置短信服务中心号码。

CDMA手机不需要设置短信服务中心号码。

(2)格式

中国移动,短消息中心号码以+861380开头,紧接的4位数号码所在的地区码(电话区号),比方0571(杭州),最后一般是500。对于区号小于四位的地区,地区码则在第四位补0,例如北京0100。

中国联通,短消息中心号码为+8613010开头,紧接的3位数号码是各省分公司分配的短消息中心序列号),最后一般是500。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。