利用手机模块实现短消息(一)
 

关键词:短信编程,SMS编程,短信开发技术,短信应用开发,短信软件开发技术;
全球定位系统(gps)系统由于性能优异,在民用上应用范围很广。其可以用于空中交通管理、大地精密测量、摄影测量、监测地壳运动、火山活动、野外调查和勘探的定位、地面沉降、土地塌方,甚至于用于民用如建筑、汽车、旅行探险、狩猎等方面。但是如何将gps定位数据传递到监控中心一直是相应系统关注的焦点。目前,移动子系统和监控中心子系统之间往往通过短消息方式传送数据。这种方式采用通常的无线gsm发送接收设备就能实现短消息的传送,实现简单,具有通信成本低、频谱利用率高、系统容量大、业务种类多、保密性能好、抗干扰能力强、通话质量高、国际自动漫游等优点,它利用信令信道传输,不用拨号建立连接,直接把要发的信息加上目的地址发送到短消息服务中心,由短消息服务中心在发给最终的信宿,是目前应用最广泛的通信方案。
目前,在相关的系统中往往使用手机模块(摩托罗拉、西门子等均有相应的产品)来实现与短消息中心的联系。主要原因在于:使用手机模块利于系统集成,成本较低,而使用手机虽然也可以实现相应功能,但是需要外加数据线,成本相当高。本文主要介绍与短消息开发相关的gsm at指令。

1.相关的gsm at指令
与sms有关的gsm at指令(from gsm07.05)如表1所示:
表1 相关的gsm at指令

at 指令
功 能

at+cmgc
send an sms command(发出一条短消息命令)

at+cmgd
delete sms message(删除sim卡内存的短消息)

at+cmgf
select sms message formate(选择短消息信息格式:0-pdu;1-文本)

 

at+cmgl
list sms message from preferred store(列出sim卡中的短消息pdu/text: 0/“rec unread”-未读,1/“rec read”-已读,2/“sto unsent”-待发,3/“sto sent”-已发,4/“all”-全部的)

at+cmgr
read sms message(读短消息)

at+cmgs
send sms message(发送短消息)

at+cmgw
write sms message to memory(向sim内存中写入待发的短消息)

at+cmss
send sms message from storage(从sin|m内存中发送短消息)

at+cnmi
new sms message indications(显示新收到的短消息)

at+cpms
preferred sms message storage(选择短消息内存)

at+csca
sms service center address(短消息中心地址)

at+cscb
select cell broadcast messages(选择蜂窝广播消息)

at+csmp
set sms text mode parameters(设置短消息文本模式参数)

at+csms
select message service(选择短消息服务)

对短消息的控制共有三种模式:
block mode

基于at命令的pdu mode

基于at命令的text mode

使用block模式需要手机生产厂家提供驱动支持,目前,pdu mode 已取代 block mode, text mode比较简单,本文重点介绍模式pdu mode,以西门子公司的产品tc35t为例。
2.计算机与tc35t的通信
(1)rs232串口连接
由于tc35t自带rs232串口线,故只需将其连接到计算机串口即可。打开超级终端,选择相应的串口,将端口参数设置为:速率—4800、奇偶校验位—无、数据位—8、停止位—1、流量控制—硬件。
(2)连接测试
输入“at”然后回车,屏幕上返回“ok”表明计算机与tc35t已连接成功,tc35t能够正常工作。这时就可以测试各类at命令。
当测试命令“at+cmgs=?<cr>”时,如果返回“ok”标明tc35t支持该指令。该指令的完整语法如下:
如果此时tc35t处于pdu mode(即“at+cmgf?<cr>”返回“0”)

at+cmgs=<length><cr>pdu is given<^z/esc>
如果短消息发送成功,则返回“ok”,并显示信息号:
+cmgs: <mr>[,<ackpdu>]
如果短消息发送失败,则返回如下信息号:
+cms error: <err>
如果此时tc35t处于text mode(即“at+cmgf?<cr>”返回“1”)

at+cmgs=<da>[,toda]<cr>text is entered<^z/esc>
如果短消息发送成功,则返回“ok”,并显示信息号:
+cmgs: <mr>[,<scts>]
如果短消息发送失败,则返回如下信息号:
+cms error: <err>
另外,由于使用的是tc35t,当有新的短消息到来时,需要tc35t产生提示,使用指令“at+cnmi”。该指令的完整语法如下:
at+cnmi=[<mode>][,<mt>][,<bm>][,<ds>][,<bfr>]
如果有新的短消息来到,则tc35t将自动返回下列提示:
+cmti: “sm”, <index>
此时读出<index>,然后用“at+cmgr”指令即可读出短消息内容。