AT指令的分类和格式
AT指令分测试指令、读取参数指令、设置参数指令、执行命令指令四类。参见下表。

命令 命令名称 命令功能
AT+ < CMD > =? 测试命令 询问模块支持哪些设置参数或者是那些项目
AT+ < CMD >? 读取命令 读取模块的当前被设置的参数
AT+ < CMD >=p1[,p2[,p3[…]]] 设置命令 设置模块参数
AT+ < CMD> 执行命令 让模块执行某个功能
注意: 在发送的命令后,必须加一个回车,这样命令才能被执行

命令解释
一、3GPP命令
3GPP是一个制定通讯方面的标准和规范的组织,由不同的国家成员组成。

1、ATI
显示产品的一些表识信息。例如:我的模块是BC35-G,发送ATI命令

ATI
BC35-G
Revision:BC35GJBR01A04W
.
OK

2、ATE
设置命令回显模式。意思是说,模块的返回信息中,是否要把你当前发送的命令也一同返回给你。例如:

ATE0
.
OK

ATE1
ATEI
.
OK

3、AT+CGMI
返回制造商名称。例如:

AT+CGMI
Quectel
.
OK

4、AT+CGMM
请求模块一个生产编号/模型

AT+CGMM
BC35GJB-02-STDW
.
OK

AT+CGMM
+CME ERROR: 50

5、AT+CGMR
请求模块版本信息

AT+CGMR
SSB,V150R100C10B200SP1
SECURITY_A,V150R100C20B300SP7
PROTOCOL_A,V150R100C20B300SP7
APPLICATION_A,V150R100C20B300SP7
SECURITY_B,V150R100C20B300SP7
RADIO,Hi2115_RF7
.
OK

AT+CGMR?
+CME ERROR: 50

6、AT+CGSN
请求产品序列号 IMEI (International Mobile station Equipment Identity)和相关信息
IMEI是国际移动设备识别码,意思是每台移动设备在世界上有一个唯一的识别码。这个命令比较重要。

命令 Integer type. The serial number type that has been requested.
AT+ CGSN[= < snt >] 0 Returns < sn >
1 Returns the IMEI number
2 Returns the IMEISV (International Mobile station Equipment Identity and SoftwareVersion) number
3 Returns the SVN (Software Version Number)
例如:

AT+CGSN=1 查询IMEI
+CGSN:863716049970731
.
OK

AT+CGSN=? 查看支持哪些参数
+CGSN:(0,1,2,3)
.
OK

7、AT+CEREG
网络注册状态(协议层次上),休眠时间等等。

例如:

AT+CEREG=1
.
OK

AT+CEREG
+CEREG:1,1 表示注册成功
.
OK

8、AT+CSCON
该命令给出模块感知到的无线电连接状态(即到基站)的详细信息。(物理信号层次)

Command Response
AT+CSCON=< n > OK
AT+CSCON? +CSCON:< n >,< mode >
AT+CSCON=? +CSCON:(list of supported < n >s)
< n > Integer type. Enable/disable unsolicited result code.
0 — Disable unsolicited result code
1 — Enable unsolicited result code: “+CSCON:< mode >”
< mode > Integer type. The signalling connection status.
0 — Idle
1 — Connected
2-255 < reserved for future use >

AT+CSCON?
+CSCON:0,0
.
OK

9、AT+CLAC
列出模块支持的所有命令

10、AT+CSQ
获取信号强度。
返回值 Unit: dBm.

0 -113dBm or less
1 -111dBm
2…30 -109dBm… -53dBm
31 -51dBm or greater
99 Not known or not detectable
例如:

AT+CSQ
+CSQ:20,99 返回20,信号良好
.
OK

如何设计程序?

while(strx == NULL)
{
  UAartSend(“AT+CSQ\r\n”);
  Delay(300);
  strx=strstr((const char*)RxBuffer,(const char*)"+CSQ");
  if(strx)
  {
    BC95_Status.CSQ=(strx[5]-0x30)*10+(strx[6]-0x30);
    if(BC95_Status.CSQ==99);
    {
      while(1)
      {
        Delay(300);
      }
    }
   }

11、AT+CGPADDR
请求设备IP地址(临时外网IP,基站IP资源有限,仅限本次通讯,临时分配给模块)

例如:

AT+CGPADDR
+CGPADDR:0,100.115.136.135
.
OK

12、AT+COPS
设置运营商,是连接电信还是移动还是联通。

13、AT+CGATT
模块连接到基站

命令 Integer type. Indicates the state of PDP context activation.
AT+CGATT=< state > < state > Integer type. Indicates the state of PDP context activation.0 Detached.1 Attached
AT+CGATT=0 断开连接
AT+CGATT=1 附着(连接)
例如:

连接(附着)网络
AT+CGATT=1
.
OK

AT+CGATT?
+CGATT:1 // 表示连接上了
.
OK

14、AT+CGACT
激活或停用PDP上下文

15、AT+CIMI
获取国际用户识别码 IMSI(International Mobile Subscriber Identity)。
IMSI 是GSM 系统分配给移动用户(MS)的唯一的识别号,此码在所有位置,包括在漫游区都是有效。

IMSI格式:

MCC:Mobile Country Code,移动国家码,三位数,如中国为 460。
MNC:Mobile Network Code,移动网号,两位数,如中国邮电的MNC 为00。
MSIN:Mobile Subscriber Identification Number,在某一PLMN 内MS 唯一的识别码。编码格式为:H1 H2 H3 S XXXXXX
NMSI:National Mobile Subscriber Identification,在某一国家内MS 唯一的识别码。
IMSI 举例:460-00-4777770001

16、 AT+CGDCONT
定义PDP上下文

AT+CGDCONT= < cid > [,< PDP_type >[,< APN >[,< NSLPI >]]]

参数 意义
cid 指定特定的PDP上下文定义 0~10
PDP_type 支持的协议数据包 IP 因特网协议 、 IPv6 因特网协议 、IPv4v6 处理双IP堆栈 、NONIP 无IP
APN 用于选择GGSN或外部数据包网络的逻辑名称 用于选择GGSN或外部数据包网络的逻辑名称
NSLPI 指示为此PDP上下文请求的NAS信令优先级 “0” — UE中配置的低优先级指示符的值激活此PDP上下文 ; “1”— 指示此PDP上下文将被激活,低优先级指示灯的值设置为 “MS未配置为NAS信令低优先级
例如:

AT+CGDCONT=?
+CGDCONT:(0-10),(“IP”,“NONIP”,“IPV6”,“IPV4V6”),(0),(0),(0,1)
.
OK

AT+CGDCONT?
+CGDCONT:0,“IPV4V6”,0,0,0
+CGDCONT:1,“IP”,“HUAWEI.COM”,0,0,0
.
OK

17、AT+CFUN
设置模块在上电时射频工作模式,和自动/手动联网相关,默认是1,即自动的。

例如:

AT+CFUN?
+CFUN:1
.
OK

18、AT+CMEE
打印设备指令使用出错信息

AT+CMEE=1 打印错误报告信息
AT+CMEE=1 关闭打印错误报告信息

19、AT+CCLK
请求当前时间

20、AT+CPSMS
设置PSM模式(和省电模式相关)

21 AT+CEDRXS
eDRX 模式省电相关

22、AT+CEER
输出更多的错误信息

23、AT+CEDRXRDP
eDRX读取动态参数,和低功耗相关。

24、AT+CTZR
时区报告

25、AT+CIPCA
PDP上下文相关

26、AT+CGAPNRC
APN 速率控制

27、AT+CSMS
选择消息服务,和短信相关

28、AT+CNMA
接收消息通知,即设备和服务端相互通讯相关

29、AT+CSCA
服务器中心地址。
例如:

AT+CSCA?
+CSCA:“8613800200569”,145
.
OK

30、AT+CMGS
设备向服务器发送SMS信息

例如:
稍后完善…

31、AT+CMGC
设备向服务器发送SMS命令
稍后完善…

二、通用命令
1、AT+NRB
重启模块

2、AT+NUESTATS
请求模块状态信息

例如:

AT+CSCA?
Signal power:-869
Total power:-760
TX power:120
TX time:4021
RX time:24809
Cell ID:213669822
ECL:1
SNR:-22
EARFCN:3684
PCI:444
RSRQ:-152
OPERATOR MODE:4
CURRENT BAND:8
.
OK

3、AT+NEARFCN
指定搜索频率(使用确定的运营商的服务,它已经确定了频率,不用去设置)

4、AT+NSOCR
模块中创建一个socket接口
命令格式:

AT+NSOCR=< type >,< protocol >,< listenport >[,< receive control>[,< af_type>]]

参数 意义
< type > DGRAM — UDP; STREAM — TCP
< protocol > 6 — TCP; 7 — UDP
< listen port > 监听端口号
< socket > 支持0~7
< receive control> 如果应接收传入消息,则设置为1,如果应忽略传入消息,则返回0。默认值为1
< af_type > “AF_INET” — IPv4; “AF_INET6” — IPv6;默认是 “AF_INET”
例如:

AT+NSOCR=DGRAM,17,4587,1,1,AF_INET
0
.
OK

5、AT+NSOST
在UDP模式下发送数据

命令格式:

AT+NSOST=< socket >,< remote_addr >,< remote_port >,< length >,< data >[,< sequence>]

参数 意义
socket 通过命令AT+NSOCR返回的socket号码
remote_addr 服务器IP地址
remote_port 服务器端口号
length 待发送数据长度
data 待发送的数据,数据的最大长度为1358字节。
sequence 数据序列。范围:1-255。如果省略,则数据发送状态将不为报道。如果没有省略,当数据报通过射频发送或被丢弃时,结果将被报告:
命令返回:

< socket>,< length>

例如:

AT+NSOST=0,120.24.184.124,8010,2,AB30,1
0,2

程序设计:

printf(“AT+NSOST=%c,120.24.184.124,8010,%c,%s,1\r\n”,0,‘2’,“AB30”);
Delay(300);
strx=strstr((const char*)RxBuffer,(const char*)“OK”);
while(strx==NULL)
{
 strx=strstr((const char*)RxBuffer,(const char*)“OK”);
}

6、AT+NSOSTF
在UDP下发送消息(带有标志位)

7、AT+NQSOS
通过UE查询挂起的上游消息列表

8、AT+NSORF
UDP下的消息接收

9、AT+NSOCO
TCP连接

10、AT+NSOSD
TCP发送信息

11、AT+NSOCL
关闭socket接口

printf(“AT+NSOCL=%c\r\n”,0x30);
Delay(300);

例如:

AT+NSOCOL=0
OK

12、+NSONMI
到达套接字消息指示符(仅响应)

13、AT+NPING
测试到远程主机的IP网络连接,和电脑使用的ping命令相似

14、AT+NBAND
设置模块的band,不同的运营商支持约定的band,联通的返回5,电信和移动的返回8等等。

例如:

AT+NBAND?
+NBAND:5,8,3
.
OK

AT+CSCA?
AT+NBAND=?
+NBAND:(1,3,5,8,20,28)
.
OK

15、AT+NLOGLEVEL
设置调试日志记录级别

16、AT+NCONFIG
配置模块信息(一般不用去配置)

AT+NCONFIG?
+NCONFIG:AUTOCONNECT,TRUE // 自动联网
+NCONFIG:CR_0354_0338_SCRAMBLING,TRUE
+NCONFIG:CR_0859_SI_AVOID,TRUE
+NCONFIG:COMBINE_ATTACH,FALSE
+NCONFIG:CELL_RESELECTION,TRUE
+NCONFIG:ENABLE_BIP,FALSE
+NCONFIG:MULTITONE,TRUE
+NCONFIG:NAS_SIM_POWER_SAVING_ENABLE,TRUE
+NCONFIG:BARRING_RELEASE_DELAY,64
+NCONFIG:RELEASE_VERSION,13
+NCONFIG:RPM,FALSE
+NCONFIG:SYNC_TIME_PERIOD,0
+NCONFIG:IPV6_GET_PREFIX_TIME,15
+NCONFIG:NB_CATEGORY,1
+NCONFIG:RAI,FALSE
+NCONFIG:HEAD_COMPRESS,FALSE
+NCONFIG:RLF_UPDATE,FALSE
+NCONFIG:CONNECTION_REESTABLISHMENT,FALSE
+NCONFIG:PCO_IE_TYPE,EPCO
.
OK

17、AT+NATSPEED
配置串口波特率

AT+NATSPEED?
+NATSPEED:9600,2,1,0,0
.
OK

18、AT+NCCID
获取模块卡的 ICCID编码

19、AT+NFWUPD
通过串口升级模块固件

20、AT+NPOWERCLASS
21、AT+NPSMR
模块省电模式报告(PSM相关)

22、AT+NPTWEDRXS
eDRX相关

三、华为IoT平台相关的命令
1、AT+NCDP
设置电信/华为云的CDP(IP地址)。

AT+NCDP=192.168.5.1,5683
OK
AT+NCDP?
+NCDP:192.168.5.1,5683
.
OK

2、AT+QLWSREGIND
该命令用于控制模块启动物联网平台的注册、注销或更新

3、AT+QLWULDATA
该命令用于向华为的LWM2M协议物联网平台发送数据。

AT+QLWULDATA=3,AA34BB
.
OK

4、AT+QLWULDATAEX
此命令用于发送带有RAI(释放辅助指示)标识符的可确认(CON)或不可确认(NON)消息到华为LWM2M协议的物联网平台。

5、AT+QLWULDATASTATUS
此命令查询发送CON数据到NB-IoT平台的状态。仅查询已发送的CON数据的状态。

6、AT+QLWFOTAIND
7、AT+QREGSWT
8、AT+NMGS
用于向华为的物联网平台发送数据。

AT+NMGS=3,AA11BB
.
OK

9、AT+NMGR
用于接收来自华为LWM2M协议的物联网平台的消息。

10、AT+NNMI
该命令设置或获取要发送的新消息指示。当模块接收到来自华为物联网平台的下游消息时,可以发送新的消息指示。

11、AT+NSMI
该命令设置或获取上游消息发送到华为物联网平台时发送的指示。

12、AT+NQMGR
该命令查询从华为的物联网平台接收到的下游消息的状态

13、AT+NQMGS
该命令查询发送到华为物联网平台的上游消息的状态。

14、AT+NMSTATUS
当连接到CDP服务器时,该命令报告当前的注册状态。

15、+QLWEVTIND
模块向设备报告LWM2M事件。