手机_SMS_PDU_格式参考手册
- 格式:pdf
- 大小:616.78 KB
- 文档页数:29


Linux下用C语言实现手机短信发送
编
智慧密集 Linux下用C语考察豫机矩秸笈馑
李清陈超华
摘要本文简要介绍了发送SMS的PDU命令,并在文章中重点介绍了在Linux环
境下,用C语
言实现十六进制编码PDU的过程.
关键词PDU模式,半8_bit表示法(semioctetrepresentation),GSMT_bit缺省字母表(GSM7_bit
defaultalphabet)
一 ,引言
短信息服务SMS已经在不少国家发展成为一种流行的通
信方式,可提供多种类型的服务.通常,对SMS的控制有三
种实现途径:
①Block摸式;
②基于AT命令的Text模式;
③基于AT命令的PDU摸式.
第一种模式是早期为控制SMS而开发的协议,已经逐渐
不用了现在主要运用后两种模式来控制SMS.本文主要讨
论在Linux下用C语言来实现PDU模式的SMS发送.
二,PDU模式下SMS发送的原理
所谓PDU摸式就是将消息正文经过十六进制编码后进行
传送的一种手机短信的收发方式.基本的PDU命令是AT
CMGR.AT+CMGL和AT+CMGS
PDU模式发送SMS的命令格式为:
AT+CMGF:0
AT+CMGS=<length><CR><pdu><Ctfl/Z>
其中<pan>包括SMSC(短信服务中心)地址信息与TPDU
(传输协议数据单元)信息,这两部分信息均按照十六进制
进行编码; <length>是TPDU信息中8_bits字节的长度.
三,PDU模式下发送sMs的具体实现 1.主程序流程
2程序实现的技术关键
整个程序的实现重点就是对信息进行十六进制的编码
该编码过程可分为三个步骤来实现: 28毫腑辅羟境舀每替妒;:啦
(1)特地址信息按GSMRecommendationPhase2的规定进
行转换协议中规定,SMSC地址值(SMSCAd&e~Value)及 TPDU目标地址值(TP_DAValue)以半8—bit表示法(Sell~#clet
学习报告
1、 GSM的短消息PDU构成
主要是看“SMS分类及编码方案.doc”和“AT命令--华为技术文档.doc”这两份技术文档。个人的感觉是:GSM短消息的PDU和计算机网络各层协议的PDU的性质差不多,虽然协议字段的内容不一样,但是大致的原理是一样的。其中SMS SUBMIT有一个VP字段可以分为三种形式:相对形式、绝对形式、增强形式。相对形式的VP值及与之对应的有效周期的计算值之间的关系如下:
VP域的取值 有效周期计算值
0~143 (VP+1)*5 min
144~167 12h + (VP-143)*0.5h
168~196 (VP-166)*1day
197~255 (VP-192)*1day
涉及的计算比较简单,于是编写了一个小小的C程序实现了一下。
Q 我写了个短信发送程序,使用PDU格式发送,程序在广州使用一点问题也没有,在河南却怎么也发不出去。不知道为什么,短信"你好吗"格式如下:
河南: 0891683108200005F011000D91683170031618F20008A9064F60597D5417
广州: 0891683108301705F011000D91683170031618F20008A9064F60597D5417
A 发送短信时要用SIM卡属地的SMSC号码。如果是在广州办的卡,即使在外地还是要用广州的SMSC号码。你的两个短信内SMSC号码不同,但用的是同一张SIM卡,不知是否是此原因。
Q 短信中心的号码可否直接使用SIM卡中的号码,而不要用户输入?我用过的短信软件好像都是不用输SMSC号码的。
A 有一条"AT+CSCA"指令,可用于设置或查询服务中心号码。若手机中已存在此号码,有两种解决办法:
· 用"AT+CSCA?"指令查询出来,然后自动将此号码写到PDU的SCA中。
· PDU的SCA字段只写一个"00": "08 91 68 31 ..." -> "00"
可用"AT+CSCA=xxxxxxxx"指令设置服务中心号码。
Q 我在超级终端上,用at+cmgs发送短消息,格式好像没有错误,但总返回"ERROR"。我输入的就象这样:
at+cmgs=30>
0891683108100005F011000D91683118405057F000000006C8329BFD0E01 请问是什么原因?
A "at+cmgs"指令很特殊,回车后还需要输入数据。此处是"CR",不是"CRLF",注意在超级终端里直接回车是不是生成了两个字符(查看设置)。象"at+cmgl"指令,即使最后输入"CRLF"也是不要紧的。
你的问题出在长度上。长度不是随便写的,你的例子中,长度应为21。除去SMSC段(0891683108100005F0),从"11"开始算(即"11000D91683118405057F000000006C8329BFD0E01"),除以2即得。
GSMSMS协议概述
Developer’s Guide: SMS with the SMS PDU-mode
The command descriptions or example sequences in this document imply no liability or
warranty in any way. The author therefore will take no responsibility and will accept no liability which results of using thecontent of this document in any way.
All rights reserved. No part of this work covered by the copyrights hereof may be reproduced or copied in any form or by anymeans (graphic, electronic, or mechanical, including
photocopying, taping, or information storage and retrieval systems) without written permission of the publisher.
DEVELOPER’S GUIDE:1 SMS WITH THE SMS PDU-MODE1
1. INTRODUCTION3
2. OVERVIEW:4
2.1 SMS-DELIVER (Mobile Terminated)4
2.2 SMS-SUBMIT (Mobile Originated)4
3. PARAMETER DESCRIPTION6
3.1 Service Center adress information element (SCA info element)6