大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
1.AT的历史与应用
1.1 AT的历史
AT命令集是由拨号调制解调器(MODEM)的发明者贺氏公司(Hayes)为了控制Modem发明的控制
协议.AT是Attention的缩写, 协议本身采用文本.每个命令均以AT打头,因此得名.这段历史参见 http://en.wikipedia.org/wiki/Hayes_command_set
随着网络升级为宽带,速度很低拨号MODEM基本已经退出一般使用市场.我最近一次看见使用拨号MODEM的地方是深圳市的网络报税系统.必要拨号到税务局的
服务器才能使用。也就在这个很小的市场才留到一点空间。其余一般都用上ADSL的modem了。
贺氏公司象很多发明伟大的产品的公司一样,在发明了划时代的MODEM产品后,没有进一步升级技术。现在已经于1999年破产消失了,类似的例子有发明浏览器的Netscape,第一个成为网络操作系统的Novell公司,现在都已经边缘化了。
关于Hayes的破产,还能找到一个旧闻
http://news.sina.com.cn/richtalk/news/tech/9901/010704.html
但是有意思,http://www.hayes.com仍在销售产品,难到又活过来了?
但是AT命令保留下来了。主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP共同为GSM 研制了一整套AT指令,用于控制手机GSM模块。其中就包括对SMS的控制。AT指令在此基础上演化并被加入GSM 07.05标准以及现在的GSM07.07标准。
在随后的GPRS控制,3G模块,以及工业上常用的PDU,均采用AT命令集来控制,这样AT命令实际在这一些产品上成为事实的标准。
1.2 AT的优点。
命令简单易懂,并且采用标准串口来收发AT命令,这样对设备控制大大简化了,转换成简单串口编程了。
AT命令提供了一组标准的硬件接口–串口。这个简化的硬件设计.较新的电信网络模块,几乎都采用串口硬件接口。
AT命令功能较全,可以通过一组命令完成设备的控制,完成呼叫、短信、电话本、数据业务、传真.
1.
3 AT命令与ppp协议的关系
在数据通讯的应用中,比如说无线拨号上网。除了AT命令,还会常听到另外一个网络协议ppp(Point to Point Protocol)。
在应用串口通讯的场合,我们可以从硬件上明确看到分为两大块。
DTE(Data Terminal Equipment)数据终端设备。通常是一个智能设备,如PC机,
嵌入式主机等,用于发送AT命令和PPP命令,
还有用于链路通讯的DCE(Data Circuit Terminal )数据电路终端。用于与外界建立通讯的链路。
DTE与DCE之间用串口相连。比如PC机用串口接入拨号MODEM时,PC机是DTE,拨号MODEM是DCE.
AT和PPP的相同点都是由DTE发送给DCE的协议。不同点是AT只用于DTE来控制DCE。比如初始化设备,用于发送呼叫,发送短消息等,虽然AT有规范,但是大部分DTE产商都扩展了一些AT命令。
而PPP是用于数据通讯,是DTE与远程的接入服务器(Access Server)进行通讯的协议。是属于网络通讯的数据链路层协议,DCE本身收到PPP包时,除了将其调制到物理层上发送到远端服务器外,本身并不处理PPP的内容。
2.AT的命令格式
AT指令格式:AT指令都以”AT”开头,以<CR>(即\r,回车符)结束,模块运行后,串口默认的设置为:8位数据位、1位停止位、无奇偶校验位、硬件流控制(CTS/RTS).
注意为了发送AT命令,最后还要加上<LF> (即\n,换行符)这是串口终端要求.
有一些命令后面可以加额外信息来.如电话号码
每个AT命令执行后,通常DCE都给状态值,用于判断命令执行的结果.
AT返回状态包括三种情况 OK,ERROR,和命令相关的错误原因字符串.返回状态前后都有一个<CR>字符.
如
<CR>OK<CR> 表示AT命令执行成功. <CR>ERROR<CR> 表示AT命令执行失败 <CR>NO DIAL TONE<CR> 只出现在ATD命令返回状态中,表示没有拨号音,这类返回状态要查命令手册
还有一些命令本身是要向DCE查询数据,数据返回时,一般是+打头命令.返回格式
<CR>+命令:命令结果<CR>
如:
AT+CMGR=8 (获取第8条信息)
返回
+CMGR: “REC UNREAD”,”+8613508485560″,,”01/07/16,15:37:28+32″,Once more
3.DCE的状态切换与AT的命令拨号流程
这两个协议都是DTE通过串口发往DCE。那DCE是如何区别是AT命令,如何区别PPP协议包?大部分DCE是采用分时段传送的,两个协议并不同时发送。但是可以通过AT命令两个专用命令来用切换是AT命令时段,还是PPP协议时段。
在发送AT命令时称为命令状态,在发送PPP包时或者语音通讯时称为数据状态。
在modem设备启动进,默认进入AT命令接收状态,用
ATDn ;命令拨出电话号码n(语音拨号); ATDn 拨出电话号码n(数据拨号),两者区别在于前者有一个分号。用数据拨号拨通后,将进入PPP交互状态。当需要切回接收AT命令状态,DTE需要发送+++命令给DCE.让其保持在线的状态时,但接收是AT命令.如果此时需要切断链接,此时发送 ATH挂断命令.
注意发送+++需要前后各一秒的时间。否则会当成数据发送出去。
ATO则是把在线命令状切换到数据接收状态。
一个DCE的拨号流程是
3.1.初始化DCE的Modem设备
主要DTE要配置好串口参数,并且向设备发送一些AT命令来进行初始化设置
3.2 拨号连接
AT拨号连接分语音拨号连接和数据拨好连接。语音拨号命令为”ATDn;\r”(注意带分号);数据拨号命令为”ATDn\r”(注意不带分号)。连接成功返回”\r\nCONNECTXXXX/RLP\r\n”,其中XXXX 表示连接速率。在这里我们只讨论数据拨号连接。要注意的是拨号连接需要一定的时间,编程时要根据实际情况进行适当的延时等待。
3.3 数据传输及处理
在建立起连接后用户就可通过DCE进行数据发送、接收及数据处理操作。这时发送数据就是简单的写串口,收数据是读串口,即使数据中含有AT 命令字符串DCE也不会对其进行处理。此时进行PPP拨号处理流程了。
3.4 从数据状态切换至在线命令状态 数据收发结束后,就要使DCE从数据状态切换至在线命令状态。向DCE发送换码序列命令”+++”,并且前后各有至少一秒的延迟(不向TC35 发数据),可使DCE从数据状态切换至在线命令状态,否则DEC会将”+++”当作数据发送出去。在离线命令状态时发送”ATO\r”可回到数据状态。 3.5 挂断连接 挂断连接(即挂机)是向DCE发送”ATH\r”
4.常用AT命令
不同产商的AT命令大同小异,但是还是有所区别,一般要看产品手册,如下列产商的
西门子 TC35i 的
http://www.sendsms.cn/download/TC35i_AT_C.pdf
这里罗列一些常见的AT命令
4.1 基本操作
4.2、通话操作
2.1ATD 命令解释:拨打电话 命令格式:ATD**********;<CR>(****为电话号码) 命令返回:OK NO DIAL TONE(没有拨号音) NO CARRIER(无载波) 测试结果:a. ATD13510090403;<CR> OK 呼叫成功;
b. ATD13510090403;<CR>
NO DIAL TONE 天线未接好,接触不良; c. ATD13510090403<CR> NO CARRIER 命令错误,缺{;};
4.3、短信息操作
|
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/210441.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...