惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
T
Tenable Blog
Project Zero
Project Zero
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
S
Schneier on Security
Scott Helme
Scott Helme
S
Securelist
Know Your Adversary
Know Your Adversary
Vercel News
Vercel News
IT之家
IT之家
V
V2EX
F
Fortinet All Blogs
Simon Willison's Weblog
Simon Willison's Weblog
K
Kaspersky official blog
博客园_首页
T
Tailwind CSS Blog
The GitHub Blog
The GitHub Blog
Spread Privacy
Spread Privacy
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
The Register - Security
The Register - Security
有赞技术团队
有赞技术团队
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cyberwarzone
Cyberwarzone
Google DeepMind News
Google DeepMind News
The Hacker News
The Hacker News
L
LINUX DO - 热门话题
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
CXSECURITY Database RSS Feed - CXSecurity.com
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy & Cybersecurity Law Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CERT Recently Published Vulnerability Notes
S
SegmentFault 最新的问题
AWS News Blog
AWS News Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Vulnerabilities – Threatpost

博客园 - qevan

QCanvasTextWriter 把字体保存到注册表或流中 structures显示的模块的bpl - qevan - 博客园 delphi跟踪调试vcl代码的方法 QTrayIcon v1.0B 根据delphi版本进行编译 在气泡式提示窗口中显示关闭按钮 zz 中国共享软件注册提供商的比较 Delphi中资源文件使用详解 zz ShowBalloonTips @ TrayIcon 如何在DELPHI程序中顯示Balloon工具提示﹖ zz 分割人名的代码 电话薄的AT指令 zz 读取中文电话簿 AT+CPMS指令的意义以及AT+CNMI自动接收短信时的方法 短信相关文章的连接 16进制字符转换为10进制 delphi c#的PDU-SMS编程代码 zz Delphi 2005纯WIN32开发环境
一篇短信at指令介绍的文章, 摘过来
qevan · 2005-03-17 · via 博客园 - qevan

(十二) 短信部分——通过RS232发送和接收短信

通常,发送和接收短信的终端都是通过串行接口连接电脑,这类设备用得比较多的是GSM Modem和手机。这类设备通常都支持PDU模式,但仍有少数设备只支持Text模式。

设备硬件连接好以后可以通过发送AT指令测试设备是否连接正确能否正常通讯。在这里我使用Windows自带的“超级终端”工具进行通讯。此工具可以在程序——附件——通讯里面找到,如果没有请确认是否安装了此组件。或者在运行里面输入“hypertrm”也可以快速启动“超级终端”。

以下所有范例均以Siemens M55手机作为终端,有可能跟你设备返回的不同。具体参数清参阅设备相关AT指令集。本手机AT指令集在我主页上有下载。

准备工作:

1、 测试连接:“AT8 ”测试终端是否连接正确。成功后返回“OK”。

2、 设置回显:(此步骤为了测试方便)ATE18

3、 查阅及设置字符集:
AT+CSCS=?
8
+CSCS: ("GSM","UCS2")
说明该终端支持GSMUCS2两种字符集。一般对于中文环境设置为UCS2
AT+CSCS="UCS2"
8

4、 取得短信中心号码:
AT+CSCA? 8
+CSCA: "+8613800280500",145

5、 查询并设置SMS格式:
查询AT+CMGF= 8
返回+CMGF: (0)
0
代表PDU模式。你的设备可能有其他的选项,请参考设备的AT指令集。
设置:AT+CMGF=08

6、 查询并设置短信储存位置:
查询AT+CPMS=?8
返回+CPMS: ("MT","SM","ME"),("MT","SM","ME"),("MT","SM","ME")
其中MT表示设备所有可用储存位置。SM代表SIMME代表机身
一般设置为:AT+CPMS= "MT","MT","MT"8

查询短信:

1、 查询具有相同状态的所有短信
指令AT+CMGL=n
其中n代表0-4的数字。
0
——未读得短信。执行命令以后自行变为已读取。
1
——已读短信。
2
——草稿。
3
——已发送短信。
4
——全部
返回(例):
+CMGL: 76,3,,20

0891683108200805F011620D91683194041338F50000FF0530972D8603
76
——序号

3——状态:发送

20——PDU串长度

2、 查询特定序号的短信
指令AT+CMGR=n8
其中n代表序号
返回(例):
+CMGR: 3,,20
0891683108200805F011620D91683195041338F50000FF0530972D8603
3
——状态:发送
20
——PDU串长度

注意:PDU串长度表示PDU中除去短信中心部分剩下的代码的长度的1/2。例如上述PDUPDU长度部分为11620D91683195041338F50000FF0530972D860340个字符,表示20个字节。

储存PDU
指令
AT+CMGW=[PDU
长度] 8
>[PDU
]
例如
AT+CMGW=20
8

> 0891683108200805F011620D91683195041338F50000FF0530972D8603
注意,输入PDU后按“CTRL+Z”终止。程序中使用0x1A0x1D作为终止。

返回+CMGW: 85
85
——序号

发送PDU

1、 发送输入的PDU
指令:
AT+CMGS=[PDU
长度] 8
>[PDU
代码]

2、 发送指定序号的PDU
指令:
AT+CMSS=[序号] 8

接收短信

接收刚收到的短信有两种方法:轮询终端;使用事件

轮询终端可以定期的使用AT+CMGL=0指令读取未读取得指令。方法简单,但许多时候都在做无用功,效率低下,一般不建议采用。下面主要讲解事件法:

指令:
AT+CNMI=,,,,

参数:
mode

0——缓存在终端

1——直接发送到TE

mt

0——接收到新的SMS不返回事件

1——如果接收到的SMS存储在ME,则返回
+CMTI:,

2——除了Class2 SMS,新的SMS直接发送到终端,返回:
+CMT:

3——Class3 SMS使用mt=2的方法返回,其他类型的使用mt=1的方法返回。

bm

0——小区广播不通知

2——新的小区广播通知,返回
+CBM:

3——Class3格式的小区广播通知,使用bm=2格式

ds

0——状态报告不通知

1——新的状态报告通知,返回:
+CDS:

2——如果新的状态报告存储到ME,则返回:

+CDSI:,

brf

1——始终为1

例:

一般我们使用AT+CNMI=1,1,0,2,1

当收到新的短信时终端返回:

+CMTI:ME,5

新的状态报告:

+CDSI:ME,6

程序可以通过判断返回值并使用AT+CMGR指令返回新到短信。