大家好!
我们要开发一个sim卡的读卡器
gsm协议中提到了dialling number的概念,但是并没有明确提出通讯录是如何存储的,
请教大家dialling number和通讯录之间是什么关系?是不是通过读取dialling number就
可以读取通讯录了?
谢谢!
------解决方案--------------------------------------------------------
没有那么简单了
既然开发了,你应该有相关的文档才对.
建议好好看看文档.
------解决方案--------------------------------------------------------
这个具体的去看AT指令集就可以了,给你一个中文版的下载地址:
http://www.xmlenz.com/tech.asp
这里面有一个模块介绍,你可以去下载。
AT+CPBS 选择电话本存储区
AT+CPBR 读取电话本
AT+CPBW 写电话本
------解决方案--------------------------------------------------------
SIM卡原理的书很多的,SIM卡里就一个单片机,有RAM ROM 和文件系统。你所说的通讯录就放在文件系统里。建议你先去看看GSM 11.14(3GPP TS 11.14 V8.17.0 (2004-09))
------解决方案--------------------------------------------------------
我们正常使用的是SIM卡中的ADN,就是SIM中的一个文件,只要知道这个文件的ID就可以了,然后可以去读其中的某一笔记录。
------解决方案--------------------------------------------------------
ADN就是缩位拨号的缩写,其结构以下组成
1)后14字节个是必须的,其中后14个的前12个是用来存放号码的,后两个用来存放ext1和ccp1
2)前面可多可少,一般为14个字节,这样存储一个电话号码就是28个字节
3)ADN存放在3f00/7f10下6f3a文件中
//Reset
3B 3C 11 00 12 35 16 66 25 01 A3 A3 02 04 5B EF
//SELECT
A0A4000002 3F00
9F17
//SELECT
A0A4000002 7F10
9F17
//SELECT
A0A4000002 6F3A
9F0F
//GET RESPONSE
A0C000000F
00000AF06F3A040011FF440102011C
9000
//READ RECORD
A0B201041C
80aabbccddFFFFFFFFFFFFFFFFFF07812143658709F1FFFFFFFFFFFF
9000
以上一条记录来说
//READ RECORD
A0 B2 01 04 1C
80 5F 20 4E 09 FF FF FF FF FF FF FF FF FF 07 81 21 43 65 87 09 F1 FF FF FF FF FF FF
90 00
//A0 B2 01 04 1C 是命令头,CLA = A0表示GSM应用,INS = B2 表示READ RECORD,P1 P2 = 01 04 是参数,P3 = 1C 是数据的长度(或返回数据的长度)表示( 28 )
//读记录,P2 = 04 表示绝对记录号,P1 = 01 为记录号,表示第1 条记录P3 = 1C 表示后面的数据长度为28
//这是一条ADN,姓名 "张三",电话号码 12345678901
//90 00 是返回状态,表示---成功
第一个字节80(81,82)表示存放的是ucs2字符,5f20 4e09是“张三”,
07是长度,81是ton/npi表示是国内号码,21 43 65 87 09 F1 是号码,表示12345678901
------解决方案--------------------------------------------------------
jennyvenus 差不多说明白了,但是还有一个细节
电话本记录有三个格式(打头字节):分别是 80 ,81,82.你说的是80格式,81和82处理起来特烦。
---------------------