金笛工业手机论坛  

返回   金笛工业手机论坛 > 开发者乐园 > 短信开发资料

短信开发资料 短信开发技巧,代码分析

回复
 
LinkBack 主题工具 显示模式
旧 2012-08-26   #1 (permalink)
论坛管理员
 
admin 的头像
 
注册日期: 2009-06-30
帖子: 861
admin 的声望功能已被禁用
默认 Sim卡有关文档(整理)

短信部分



短信部分
Sim卡知识


Sim卡有关文档(整理)


一,基本资料
尺寸为25mmx15mm,SIM卡可以插入任何一部符合GSM规范的移动电话中。


二,物理结构


1.引脚:SIM卡引脚,分别为
*电源(Vcc)
*时钟(CLK)
*数据I/Q口(Data)
*复位(RST)
*接地端(GND),请大家补充


2.结构:CPU(8位)+程序存储器ROM(6-16kbit)+工作存储器RAM(128-256kbit)+数据存储器EEPROM(2-8kbit)+串行通信单元


厂商SIM卡型号中央处理器 ROM RAM EEPROM
摩托罗拉 SC21 8位 6kbit 128kbit 3kbit
Sc27 8位 12kbit 240kbit 3kbit
Sc28 8位 16kbit 240kbit 8kbit
日立 H8/3101 8/16位 10kbit 256kbit 8kbit
Thomson ST16612 8位 6kbit 128kbit 2kbit
ST16 8位 16kbit 256kbit 8kbit


3.电源: 当开启电源期间,按以下次序激活各触点:RST低电平状态;Vcc加电;I/O口处于接收状态;Vpp加电;提供稳定的


时钟信号。当关闭电源时,按如下次序工作:RST低电平状态;CLK低电平状态;Vpp去电;I/O口低电平状态;Vcc掉电。


4.SIM卡能够储存多少电话号码取决于卡的EEPROM的容量(有2K、3K、8K容量),若有8KB的存储容量,可供储存以下信息:


*100组电话号码及其对应的性名文字;
*15组短信息(Short Message);
*25组以上最近拨出的号码;
*4位SIM卡密码(PIN)。
5.SIM卡背面上20位数字所代表的含义如下:
*前6位(898600):是中国的代号;
*第7位:业务接入号,对应于135、136、137、138、139中的5、6、8、9;
*第8位:SIM卡的功能位:一般为0,现在的预付费SIM卡为I;
*第9、10位:各省的编码;
*11、12位:年号;
*13位:供应商代码;
*14-19位:用户识别码;
*20位:校验位。


三,存储信息
SIM卡内保存的数据可以归纳为以下四种类型:
1. 由SIM卡生产厂商存入的系统原始数据。


2. 由GSM网络运营部门或者其他经营部门在将卡发放给用户时注入的网络参数和用户数据。包括:
*鉴权和加密信息Ki(Kc算法输入参数之一:密匙号);
*国际移动用户号(IMSI);
*A3:IMSI认证算法;
*A5:加密密匙生成算法;
*A8:密匙(Kc)生成前,用户密匙(Kc)生成算法;
3. 由用户自己存入的数据。比如,短消息、固定拨号,缩位拨号,性能参数,话费记数等。



4. 用户在用卡过程中自动存入和更新的网络接续和用户信息类数据。
包括最近一次位置登记时的手机所在位置区识别号(LAI),设置的周期性位置更新间隔时间,临时移动用户号(TMSI)等。


这些数据都存放在各自的目录项内,第一类数据放在根目录,当电源开启后首先进入根目录,再根据指令进入相关的子目录,

每种目录极其内部的数据域均有各自的识别码保护,只有经过核对判别以后才能对数据域中的数据进行查询,读出和更新。上面第一类

数据通常属永久性的数据,由SIM卡生产厂商注入以后无法更改,第二类数据只有网络运行部门的专门机构才允许查阅和更新,再第三

、四类数据中的大部分允许用户利用任何手机对其进行读/写操作。








At指令集合
短消息相关指令(转)

短消息相关指令CSMS
选择信息服务
0兼容GSM07.05 Phase 2 version 4.7.0
1兼容GSM07.05 Phase 2+ version
AT+CSMS=0
+CSMS: 1,1,1

AT+CSMS=1
+CSMS: 1,1,1
SMS-MO
SMS-MT
SMS-CB(小区广播)
全部支持
CNMA
新SMS收到确认
CPMS
首选的SMS存储区
SM为SIM卡区,BM为内存区,缺省为SM
AT+CPMS=?+CPMS: (("SM","BM"),("SM"))

AT+CPMS="SM"


+CPMS: 3,25,3,25

AT+CPMS="BM"


+CPMS: 0,20,3,25
(1)为读和删的信息
(2)为写和发的信息


已用1,总共1,已用2,总共2 
CMGF
设置SMS编码方式(1文本格式,0为PDU格式)
CSAS
存储CSCA与CSMP的相关信息于E2PROM
CRES
从E2PROM中恢复相关信息
CSDH
显示文本格式参数(1为显示,0为不显示)
AT+CDSH=1



+CMT: "+8613501154105",,"01/09/12,18:04:09+32",145,4,0,0,"+8613800100500",145,3
AAA

AT+CSDH=0



+CMT: "+8613501154105",,"01/09/12,18:04:48+32"
AAA
相关的信息有+CMTI,+CMT,+CDS,+CMGR,+CMGL

左边两个例子同样是发送和接收AAA为内容的SMS
CNMI
SMS的输出方式
AT+CNMI=2,2,0,0,0



+CMT: "+8613501154105",,"01/09/13,11:04:09+32"
AAA

AT+CNMI=2,1,0,0,0



+CMTI: "SM",4其中第2位决定SMS直接输出还是保存于"SM"中

左边两个例子同样是发送和接收AAA为内容的SMS,为0则不接收
CMGR
读取存于"SM"中的信息

AT+CMGR=1


+CMGR: "REC READ", "+8613501154102",,"01/08/14,10:46:47+32"
X000E8

AT+CMGR=4


+CMGR: "REC UNREAD", "+8613501154105",,"01/09/13,11:02:06+32"
AAA

AT+CMGR=2


+CMGR: "REC READ", "+8613501154105",,"01/08/23,16:32:34+32"
DCS format error
at+cmgf=0;+cmgr=2


+CMGR: 1,,26
0891683108100005F0040D91683105114501F500081080326123432306004400460044
读取第1条
来源13501154102



读取第4条
来源13501154105



读取第2条时遇到DCS格式错误,转成PDU格式后,读出数据
来源13501154105
CMGL
信息列表,(+CMGL:索引,类型,,长度<内容>)
AT+CMGL=4


+CMGL: 1,1,,26
0891683108100005F0040D91683105114501F20000108041016474230658180C56C401
+CMGL: 2,1,,26
0891683108100005F0040D91683105114501F500081080326123432306004400460044
+CMGL: 3,1,,32
0891683108100005F0040D91683105114501F50008108032617492230C003400310032003100320033
+CMGL: 4,1,,23
0891683108100005F0040D91683105114501F500001090311120602303C16010




类型
"REC UNREAD" 0
"REC READ" 1
"STO UNSENT" 2
"STO SENT" 3
"ALL" 4
CMGS
发送SMS,可按文本方式或PDU方式
AT+CMGF=1


OK
AT+CMGS=13501154105


> AAA<^Z>
+CMGS: 204
OK

AT+CMGF=0


OK
AT+CMGS=18
>0011000D91683105114501F500040103414141<^Z>
+CMGS: 205
OK

按文本方式发送





按PDU方式发送
CMGW
写信息到存储器
AT+CMGW="+8613501154105"


> AAA<^Z>
+CMGW: 5
OK

AT+CMGW=<lengh><CR><pdu><^Z>
按文本方式写入




按PDU方式写入
CMSS
从存储器中发送信息
AT+CMSS=5


+CMSS: 207
OK

+CMT: ,23
0891683108100005F0040D91683105114501F500001090316163932303C16010

AT+CMSS=5,+8613501154102


+CMSS: 210
OK
发送存储器中的第5条信息


收到信息


也可将第5条信息发送到指定用户
CSMP
设置文本格式参数,+CSMP:<fo><vp><pid><dcs>
AT+CSMP?



+CSMP: 1,167,0,0

OK
其中为信息有效期,167默认
0-143:(VP+1)*5分钟
143-167:12小时+(VP-143)*30分钟
168-196:(VP-166)*1天
197-255:(VP-192)*1周
CMGD
删除信息,AT+CMGD=<索引>
CSCA
短信息服务中心号码

at+csca?


+CSCA: "+8613800100500",145
OK
北京短信息服务中心号码
CSCB
选择小区广播信息类型
WCBM
小区广播信息标识符
WMSC
信息状态更正
WMGO
信息重写
















(本人调试)

一 。短信
1. 接收短消息
设置两种接受模式 1 .AT+CNMI=2,1,0,0,0 接受并存到 SIM
串口接受到以下信息: +CMTI:"SM",X
AT+CMGR=X回车 (从X存储区读短消息)
AT+CMGD=X回车 (从X存储区删除短消息)

PDU状态:

at+cmgf=0
OK
+CMTI: "SM",1
at+cmgr=1

+CMGR: 0,,24
0891683108501705
F0240D91683157805300F50000502082000281000462F11804

OK

文本状态:

+CMGR: "REC READ","+86
13750835005",,"05/02/28,0:20:18+00"
bbc

OK


设置两种接受模式 2 .AT+CNMI=2,2,0,0,0 接受并直接到串口
串口接受到以下信息:
+CMT: "+8613501154105",,"01/09/13,11:04:09+32"
AAA
2.检测当前状态
AT+CPAS
返回 +CPAS: 0 ,准备就绪
+CPAS: 1 ,不允许命令
+CPAS: 2 ,未知
+CPAS: 3 ,振铃
+CPAS: 4 ,通话
+CPAS: 5 ,asleep



串口接受到以下信息: RING
或者
RING

+CLIP: "13989474537",129
2. 发送短信
<1>直接发短信
Txext模式:
AT+CMGF=1
然后
AT+CMGS=8613750835000
>SMScon<^Z>

PDU模式:
AT+CMGF=0
然后
AT+CMGS=18
>0011 000D 9168 3157 8053 00F5 0004 0103 4141 41<^Z>
说明:18是PDU长度 17 + 1
0011000D91683157805300F500040103414141
<2>先写到SM,然后再发
Txext模式:
AT+CMGW="+8613750835000"
>SMScon<^Z>
返回:
+CMGW: 5
OK

AT+CMSS=5 或者 AT+CMSS=5, +8613750835000
PDU模式:
AT+CMGW=<lengh><CR><pdu><^Z>
然后 AT+CMSS=5



二.通话 1,拨号 ATD13xxxxxxxxx;
状态:返回:
无这个号码,对方关机,挂断 NO CARRIER
不接一直延续无返回
接听,然后挂断 OK ,然后 NO CARRIER

2,接听 ATA 返回: RING OK NO CARRIER
3,挂断 ATH 返回: RING OK






三 PDU 详解居然发现发送短信和接受短信的PDU编码是不同的,晕
发送短信 PDU
08 91 683108701305F0 11 00 0D 91 3176378290F9 00 00 00 02 C834
或者
0011000D91683157805300F5 00 04 01 03414141

第一个是 中心号码长度
粉色是中心号码,可以为空

第二个是 1100

11&h=00010001&b

BIT No.
7
6
5
4
3
2
1
0
Name
TP-RP
TP-UDHI
TP-SPR
TP-VFP
TP-RD
TP-MTI
Value
0
0
0
1
0
0
0
1


应答路径—TP-RP(TP-Reply-Path):0—不设置; 1—设置

用户数据头标识—TP-UDHL(TP-User-Data-Header-Indicator):0—不含任何头信息; 1—含头信息

状态报告要求—TP-SPR(TP-Status-Report-Request):0—需要报告; 1—不需要报告

有效期格式—TP-VPF(TP-Validity-Period-Format):00—不提供(Not present); 10—整型(标准);
01—预留;11—提供8位字节的一半(Semi-Octet Represented)

拒绝复制—TP-RD(TP-Reject-Duplicates):0—接受复制; 1—拒绝复制

信息类型提示—TP-MTI(TP-Message-Type-Indicator):00—读出(Deliver); 01—提交(Submit)


00— 信息类型(TP-Message-Reference)

第三个
0D 91 3176378290F9 目的号码或来源号码

第四个
00 00 00 例子:00 04 01

<1> 00—协议标识TP-PID(TP-Protocol-Identifier)

BIT No.
7
6
5
4
3
2
1
0

Bit No.7与Bit No.6: 00—如下面定义的分配Bit No.0—Bit No.5;01—参见GSM03.40
协议识完全定义;10—预留;11—为服务中心(SC)特殊用途分配Bit No.0—Bit No.5。


一般将这两位置为00。

Bit No.5:0—不使用远程网络,只是短消息设备之间的协议;1—使用远程网络。
Bit No.0—Bits No.4:00000—隐含;00001—电传;00010—group 3 telefax;00100—语音;00101—欧洲无线信息系统(ERMES);00110—国内系统;10001—任何基于X.400的公用信息处理系统;10010—Email。



<2> 00—数据编码方案TP-DCS(TP-Data-Coding-Scheme)

BIT No.
7
6
5
4
3
2
1
0

Bit No.7与Bit No.6 :一般设置为00;Bit No.5:0—文本未压缩,1—文本用GSM标准压缩算法压缩;Bit No.4:0—表示Bit No.1、Bit No.0为保留位,不含信息类型信息,1—表示Bit No.1、Bit No.0含有信息类型信息;Bit No.3与Bit No.2:00—默认的字母表,01—8bit,10—USC2(16bit),11—预留;Bit No.1与Bit No.0:00—Class 0,01—Class 1,10—Class 2(SIM卡特定信息),11—Class 3。
7 0X 20
8 0X 04
U 0X 08

<3> 00—有效期TP-VP(TP-Valid-Period)
VP value(&h)
相应的有效期
00 to 8F
(VP+1)*5 分钟
90 to A7
12小时+(VP-143)*30分钟
A8 to C4
(VP-166)*1天
C5 to FF
(VP-192)*1 周



第五个
短信长度及内容








实例分析
一

08 91 683108701305F0 11 00 0D 91 3176378290F9 00 00 00 02 C834

或者
0011000D91683157805300F5 00 04 01 03414141

0891683108200805F011190D91683188902848F40008FF108FD9662F4E0067616D4B8BD577ED4FE









接收短信 PDU

0891683108200805F0040D91683188902848F4000850208151754500108FD9662F4E0067616D4B8BD577ED4FE1



短信中心地址字段0891683108200805F0:+861380280500

FirstOctet

11&h=00010001&b

BIT No.
7
6
5
4
3
2
1
0
Name
TP-RP
TP-UDHI
TP-SPR
TP-VFP
TP-RD
TP-MTI
Value
0
0
0
1
0
0
0
1


应答路径—TP-RP(TP-Reply-Path):0—不设置; 1—设置

用户数据头标识—TP-UDHL(TP-User-Data-Header-Indicator):0—不含任何头信息; 1—含头信息

状态报告要求—TP-SPR(TP-Status-Report-Request):0—需要报告; 1—不需要报告

有效期格式—TP-VPF(TP-Validity-Period-Format):00—不提供(Not present); 10—整型(标准);
01—预留;11—提供8位字节的一半(Semi-Octet Represented)

拒绝复制—TP-RD(TP-Reject-Duplicates):0—接受复制; 1—拒绝复制

信息类型提示—TP-MTI(TP-Message-Type-Indicator):00—读出(Deliver); 01—提交(Submit)


发送方号码0D91683188902848F4:+8613880982844


协议标识00 TP-DCS 点对点

编码方式08 TP-DCS Unicode编码
短信中心时间戳
50208151754500 TP-SCTS 字节反转05/02/18 15:57:45 最后的00代表时区,这里为0
用户数据长度
10 TP-DHL
用户数据
8FD9662F4E0067616D4B8BD577ED4FE1 TP-UD
中文"这是一条测试短信"的Unicode编码




补充代码(Delphi)



Wap Push正在整理
__________________

让世界倾听我们的笛声
admin 当前离线   回复时引用此帖
回复

书签


当前查看此主题的会员: 1 (0 位会员和 1 位游客)
 

发帖规则
您不可以发表新主题
您不可以发表回复
您不可以上传附件
您不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用



所有时间均为北京时间。现在的时间是 04:25。


Powered by vBulletin® 版本 3.8.3
版权所有 ©2000 - 2026,Jelsoft Enterprises Ltd.