您的位置:首页 > 其它

PC机控制短信收发设备原理及实现(1)

2010-12-13 09:06 387 查看
最近公司某部门要在管理系统中集成短信收发功能,任务落到我头上,虽然短信平台并不是什么新鲜事,买设备也能提供二次开发库,但之前没接触过,于是也很投入地作了学习和研究。起初很神秘很刺激,在网上一通搜,发现纯收发短信功能其实并不复杂,也就是通过串口把AT

指令发送到短信收发设备,然后从串口读取传回的数据,解析其内容可以判断是指令响应还是返回的数据。

这里附带说一下测试的工具,如果只是用来测试一般的AT指令,手头又没有可用的串口测试工具,windows自带的超级终端工具是个不错的选择,但是超级终端没法对已经编码的短信息进行解码,因此读取短信只能看到一堆乱码。

说到短信息的编码,现在各类终端支持能支持Text和PDU两种模式,据说Text模式对中文支持不好,因此被我直接忽略,PDU模式要掌握也并不复杂,一是要了解PDU编码后的报文格式,二是要掌握编码解码的特定规则,一般的
PDU

编码分为十三段,由
A


M

十三个英文字母表示,各段的简单说明我列了个表


序号


PDU


分段号


说明


1

A

短信息中心地址长度,
2

位十六进制数
(1

字节
)

2

B

短信息中心号码类型,
2

位十六进制数。

3

C

短信息中心号码,
B+C

的长度将由
A

中的数据决定。

4

D

文件头字节,
2

位十六进制数。

5

E

信息类型,
2

位十六进制数。

6

F

被叫号码长度,
2

位十六进制数。

7

G

被叫号码类型,
2

位十六进制数,取值同
B



8

H

被叫号码,长度由
F

中的数据决定。

9

I

协议标识,
2

位十六进制数。

10

J

数据编码方案,
2

位十六进制数。

11

K

有效期,
2

位十六进制数。

12

L

用户数据长度,
2

位十六进制数。

13

M

用户数据,其长度由
L

中的数据决定。
J

中设定采用
UCS2

编码,这里是中英文的
Unicode

字符。

关于PDU更详细的内容,可以到非犬犬的Blog(http://xinos.cn/downloads/sms/manual/index.shtml
)下载《SMS PDU 手册》


和短信相关的AT指令也能在非犬犬这找到,在此表示感谢。

最后把串口操作、AT指令封装、PDU编解码一通搅和做了一个实现,

在普通手机、短信Modem、移动上网卡都测试成功



本想附上实现的源码,但没找到上传的地方,如果遇到有兴趣的,可以发邮件到dubing.lee@gmail.com问我索取...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: