AT命令是普遍用来和Modem设备进行通讯。
各种设备有自己支持的AT命令集,可以参考各自的技术文档查看所有详细的AT命令用法。
我们先来看一些技术术语
术语 | 描述 |
---|---|
AT Command | 就是发送给Modem的字符串形式的命令 |
Result Code |
会立即回复给发送方。 大多数会包含“OK”或者“ERROR”这两种中的其中一种。 但在极少数的情况下也会不包含任何Result Code,我们在编程的时候需要考虑这点 |
Extended Reason Code | 只有当Result Code是“ERROR”的情况下,Extended Reason Code才有意义 |
Response |
只有当Result Code是“OK”的情况下,Response才有意义 我们要解析的有用数据就是在Response中 |
Unsolicited Response (URC) |
Modem有时候会自动发送一些信息给Host 虽然大多数情况下,我们并不关心URC,但我们在设计软件的时候也考虑到这点。 |
AT命令可以分成以下3类
类型 | 描述 |
---|---|
Action Command | 动作命令,顾名思义,就是用来执行一个动作。例如修改配置参数等。 |
Read Command |
通常会已“?”结尾。 读取命令就是来读取Modem的信息。 |
Test Command |
测试命令就是来看Modem支持的所有参数。 和命令行程序中的“Help”功能类似,就是Modem告诉我们那些参数适用。 |
我们现在来看一些AT命令示例。(请注意<CR>和<LR>)。
注:正常情况下发送的AT命令是不需要注意字符的大小写的。
- 示例:AT
at<CR>
<CR><LF>
OK<CR><LF>
AT是最简单的命令了。一般用来看看AT通讯是不是还是OK的。
- 示例:AT+CPIN?
at+cpin?<CR>
<CR><LF>
+CME ERROR: SIM not inserted<CR><LF>
AT+CPIN是看Modem有没有检测到SIM卡的。这个AT Response中就没有Result Code,但有Extended Reason Code。
- 示例:AT+CGSN
at+cgsn<CR>
<CR><LF>
353990074735643<CR><LF>
<CR><LF>
OK<CR><LF>
AT+CGSN是用来读取IMEI的。我们可以看到Response中只包含一行有用的信息。
- 示例:ATI
ATI的Response就有点复杂,每行信息开头有个Header,这样才能有助于我们用软件去解析想要的信息。
我想大家现在对AT命令有个大概的了解了吧。在下一篇文章中,我们谈谈设计AT Lib时的一些考虑。