M26模块使用方法及编程策略
初始化模块:
MCU:ATE0\\r\\n (关闭命令回显) M26: OK\\r\\n
MCU: AT+CPIN? \\r\\n (查询SIM卡状态:SIM卡损坏或者无SIM卡) M26:+CPIN: READY\\r\\n (非Ready可认为SIM卡异常)
MCU:AT+CREG?\\r\\n (确定找网成功)
M26: +CREG: 0,1\\r\\n (表明成功,逗号之后的数字:1表示已注册本地网,5表示漫游,否则异常)
MCU: AT+CGATT?\\r\\n (查询GPRS附着是否成功) M26: +CGATT: 1\\r\\n (1:成功;0:失败)
MCU: AT+QIFGCNT=0\\r\\n (将Context0设为前台) M26: OK\\r\\n
MCU: AT+QINDI=1\\r\\n (接收数据缓存模式) M26: OK\\r\\n
MCU: AT+QISDE=0\\r\\n (发送时,关闭数据回显) M26: OK\\r\\n
MCU: AT+QIDNSIP=0\\r\\n (0:使用IP地址连接;1:使用域名连接) M26: OK\\r\\n
建立TCP连接:
MCU:AT+QISTATE\\r\\n (查询连接状态) M26:(回应有以下可能)
1. CONNECT OK\\r\\n (连接已建立,应先关闭连接) MCU:AT+QICLOSE\\r\\n (关闭连接) M26:CLOSE OK\\r\\n (关闭成功)
2. PDP DEACT\\r\\n (GPRS场景异常,应重启模块)
3. IP INITIAL\\r\\n (或者)IP CLOSE\\r\\n (连接已准备好了, 可建立连接)
MCU: AT+QIOPEN=\建立连接到120.24.76.130:6800的TCP连接) M26: OK\\r\\n (语法无误则返回OK,否则返回 ERROR) MCU: (等待连接结果返回,结果有以下可能) 1. CONNECT OK\\r\\n (连接成功) 2. CONNECT FAIL\\r\\n (连接失败)
发送数据到M26:
MCU:AT+QISEND=10\\r\\n (10:要发送给M26的字节数。 M26内存为1460字节)
M26:> (或者)ERROR (M26会根据当前内部缓存大小判断,足够5个则回应:>;不够则返回“ERROR”)。 MCU:1234567890 (数据内容)
M26:SEND OK\\r\\n(或者)SEND FAIL\\r\\n (FAIL出现说明网络错误???) (总结:数据可以分批发送,不足数量,则M26一直等待(无返回);超出则丢弃多余,并返回SEND OK\\r\\n)
M26: +QIRDI: 0,1,0\\r\\n (数据到达通知; 多条数据也只通知一次,除非到达前已经被读空)
从M26中读数据:
MCU: AT+QIRD=0,1,0,6\\r\\n (6:要求读取6个字节) M26: +QIRD: 120.24.76.130:6800,TCP,6\\r\\n123456 \\r\\nOK\\r\\n (123456:数据) MCU: AT+QIRD=0,1,0,6\\r\\n (6:要求读取6个字节) M26: +QIRD: 120.24.76.130:6800,TCP,4\\r\\n7890 \\r\\nOK\\r\\n (7890:被读取数据) MCU: AT+QIRD=0,1,0,6\\r\\n (6:读取6个字节) M26: \\r\\n OK\\r\\n (没有数据被读出) (总结:
1)总会返回OK:有数据被读出则携带读出数量; 空则直接OK;
2)<要求读取数量>可以固定大小,如果返回<被读取数量>小于<要求读出数量>,表明已经读空; 如果相等,则只能再读,直到出现小于情况或直接返回OK情况;
3)在命令回显关闭条件下:模块回应为连续字节输出;否则,在命令回显后有一个500us左右不等时长之间隔;)
FTP下载:
MCU: AT+QIFGCNT=0\\r\\n (设置Contex 0为前台) M26: OK\\r\\n
MCU: AT+QFTPUSER=\vigi\(设置FTP用户,这里是\) M26: OK\\r\\n
MCU: AT+QFTPPASS=\vigi\(设置FTP密码) M26: OK\\r\\n
MCU: AT+QFTPOPEN=\120.24.76.130\21\\r\\n (建立FTP连接) M26: OK\\r\\n
M26: +QFTPOPEN:0\\r\\n (0为成功,非0为异常)
MCU: AT+QFTPCFG=4,\(设置本地存放路径) M26: OK\\r\\n
M26: +QFTPCFG:0\\r\\n (0为成功,非0为异常)
MCU: AT+QFTPPATH=\/home/vigi/share/TcpSvr/\(设置服务端目录) M26: OK\\r\\n
M26: +QFTPPATH:0\\r\\n (0为成功,非0为异常)
MCU: AT+QFTPGET=\db.c\(下载文件db.c保存到指定的路径) M26: OK\\r\\n
M26: +QFTPGET:1146\\r\\n (小于0为异常,否则为下载文件大小)
MCU: AT+QFOPEN=\(只读模式打开文件) M26: +QFOPEN: 134072\\r\\n (返回文件句柄134072) OK\\r\\n
MCU: AT+QFREAD=134072,1024\\r\\n (读句柄为134072的文件1024字节) M26: CONNECT 1024\\r\\n (返回实际读取字节数)
..... (返回数据,此处为了编写文档的便利,省略数据内容) OK\\r\\n
MCU: AT+QFREAD=134072,1024\\r\\n (继续读句柄为134072的文件1024字节) M26: CONNECT 122\\r\\n (如果实际读取的字节数小于要读的字节数,则表明是最后一个数据包) ..... (返回数据,此处为了编写文档的便利,省略数据内容) OK\\r\\n
MCU: AT+QFCLOSE=134072\\r\\n (M26: OK\\r\\n
关闭句柄为134072的文件)