AT指令集相关内容
做的一个串口工具,是用AT指令跟数据卡通信。刚一开始接触到AT指令的时候看了一些文档,但还是一知半解,搞不清这些指令要怎么用。因为一般的文档并没有具体的返回的相应的例子。最好是能用手机、数据卡、Modem之类的做些简单的查询测试体验一下。当然是要用超级终端了,用来写入和查询,很方便,很常用,很简单。总的来说AT指令还是比较简单的,至少很容易入手。
AT 指令
AT 即Attention,AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM 网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。
90年代初,AT指令仅被用于Modem操作。没有控制移动电话文本消息的先例,只开发了一种叫SMS BlockMode的协议,通过终端设备(TE)或电脑来完全控制SMS。几年后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP共同为GSM 研制了一整套AT指令,其中就包括对SMS的控制。AT指令在此基础上演化并被加入GSM 07.05标准以及现在的GSM07.07标准,完全标准化和比较健全的标准。如:对SMS的控制共有3种实现途径:最初的Block Mode;基于AT指令的Text Mode;基于AT指令的PDU Mode。到现在PDU Mode已经取代BlockMode,后者逐渐淡出。
GSM 模块与计算机之间的通信协议是一些AT指令集,AT指令是以AT作首, 字符结束的字符串,AT指令的响应数据包在 中。每个指令执行成功与否都有相应的返回。其他的一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,接收端可做相应的处理。
示例:CDMA modem DTE
输入:AT< CR>
返回:< LF> OK < LF>
输入:ATTEST< CR>
返回:< CR> ERROR < LF>
如果AT指令执行成功,“OK”字符串返回;如果AT 指令语法错误或AT 指令执行失败,“ERROR”字符串返回。<CR><LF>是控制字符,分别是回车和换行。
每个公司提供的设备的AT指令集并不相同,AT指令允许用户定制自己的AT指令,一般使^字符表示是自己定制的。
我也只是用过一些比较基础的指令,没什么好些的。以后慢慢增加内容吧。真正理解需要看3GPP的英文文档吧。还没看过。
用自己编的串口程序发送AT指令时有个问题要注意,发送AT命令的字符串到串口,可能会发现根本根本没有响应传回来。这当然可能是串口没有打开或是没有设置好波特率等。这些都可以检查。但有个比较容易被忽略的问题就是AT命令的格式问题。发送的AT命令字符串必须是在命令尾部加上回车和换行两个字符,并且要注意顺序,即‘\r’‘\n’。这是个很搞的问题,你可能查了很久也没发现别的错误,而想到是否是AT命令格式的问题的时候,查相关的文档却也看不到这样的说明。可以参见附录。
这里顺便也讲一下超级终端的一个问题。设备安装好后从设备管理器中查看有哪些串口。不能确定用哪个com口通信,就挨个试。检验是否能通信就在连接之后输入AT后回车。但是有的时候看不见自己输入的内容,这是因为关闭了设备的命令回显功能(ATE0命令)。这时在连接的属性中选择显示输入的字符,就可以了。有的时候输入一个A显示AA,这是因为命令回显功能打开,而且连接属性中显示输入字符也勾选了。
附:各种系统中的换行符的表示(这个与编程有关,即上文中的<CR><LF>如何实现)
转自 http://www.cslog.cn/articles/trackback/255 在文本处理中, CR, LF, CR/LF是不同操作系统上使用的换行符. Dos和windows采用回车+换行CR/LF表示下一行, 而UNIX/Linux采用换行符LF表示下一行, 苹果机(MAC OS系统)则采用回车符CR表示下一行. CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D; LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A. 所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示. 一般操作系统上的运行库会自动决定文本文件的换行格式. 如一个程序在windows上运行就生成CR/LF换行格式的文本文件,而在Linux上运行就生成LF格式换行的文本文件. 在一个平台上使用另一种换行符的文件文件可能会带来意想不到的问题, 特别是在编辑程序代码时. 有时候代码在编辑器中显示正常, 但在编辑时却会因为换行符问题而出错. 很多文本/代码编辑器带有换行符转换功能, 使用这个功能可以将文本文件中的换行符在不同格式单互换. 在不同平台间使用FTP软件传送文件时, 在ascii文本模式传输模式下, 一些FTP客户端程序会自动对换行格式进行转换. 经过这种传输的文件字节数可能会发生变化. 如果你不想ftp修改原文件, 可以使用bin模式(二进制模式)传输文本. |