C#开发终端式短信的原理和方法之AT指令
AT指令
说到AT指令可多了,有厚厚的一本书,不属于我们今天讨论的范围,在这里我仅讨论在发送短信中必须要用的几个AT指令。
与SMS有关的GSM AT指令(from GSM07.05)如表1所示:
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(选择短消息服务) |
我现在以实例来说明这些指令的使用方法:
先用手机数据线将手机连接到电脑串口,并将串口的波特率设置为19200,可以开始了。
1、首先测试你的连接及手机是否支持AT指令,请在你的串口调试程序中输入:
AT<回车>
屏幕上返回"OK"表明计算机与手机连接正常,那样我们就可以进行其它的AT指令测试了
2、设置短信发送格式
AT+CMGF=1<回车>
屏幕上返回"OK"表明现在短信的发送方式为PDU方式,如果是设置为TEXT方式,则,AT+CMGF=0<回车>
3、 发送短信
发送内容及手要号仍旧同上面在编码中的一样,编码后,得到要发送的数据如下
0891683108705505F011000D91683117352446F2000800124F60597D002C00480065006C006C006F0021
我们用如下指令来发送
AT+CMGS=33<回车>
如果返回">",就把上面编码数据输入,并以CTRL+Z结尾,稍等一下,你就可以看到返回OK啦。
说明一下,为什么AT+CMGS=33呢,是这样得来的:
11000D91683117352446F2000800124F60597D002C00480065006C006C006F0021
这一段字符串的长度除以2得到的结果,上面的字符串,短信中心号加上短信内容得到的,怎么得到的,请回顾一下解码部份
在我们前面的讨论中,一条完整的短信发送,只要执行三条AT指令,AT、AT+CMGS=?、AT+CMGS=?就可以了。由于篇幅,我只能在这里提到这么多,大家要是想了解更多,可以向各手机厂商索取AT指令白皮书,里面很详细的。
上面讲到的,只能为我们实际中作准备,我们还必须要一个发送途径,根据我们的需要,我们选择投资最少,实现比较方便的串口通信。注意,串口通过数据线跟手机相连,用AT指令来实现发送短信,在我们选择数据线时,建议购买原厂所配,非原厂所配,在使用过程中,经常出现一些莫明其妙的问题,比如,手机屏幕黑了,手机老是提示电池电量不足之类的。
原文:http://jly.blog.hexun.com/trackback.aspx?articleid=3207199
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利
This posting is provided "AS IS" with no warranties, and confers no rights.