OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3812|回复: 3

关于AT指令的返回疑问

[复制链接]

36

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2014-10-27
在线时间
34 小时
发表于 2015-10-10 10:39:08 | 显示全部楼层 |阅读模式

学习原子哥的SIM900A例程,看到这句:

 if(sim900a_send_cmd("AT+CGMI","OK",200)==0)    //查询制造商名称
 {
  p1=(u8*)strstr((const char*)(USART2_RX_BUF+2),"\r\n");
  p1[0]=0;//加入结束符
  sprintf((char*)p,"制造商:%s",USART2_RX_BUF+2);
  Show_Str(x,y+110,200,16,p,16,0);
  USART2_RX_STA=0;  
 }

这个USART2_RX_BUF是用来存储SIM900A返回数据的,为什么这边需要“+2”,是不是会先返回一个“OK”,把这个OK屏蔽掉,但是我看在电脑穿透调试的时候是OK不是先返回的?是我理解错了吗,谢谢!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2015-10-10 12:18:19 | 显示全部楼层
实际是:
AT+CGMI

SIMCOM_Ltd

OK
也就是在收到的字符串的'\r\n'之后判断是否有接收到'\r\n'
用串口调试助手测试下  就知道了
回复 支持 反对

使用道具 举报

36

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2014-10-27
在线时间
34 小时
 楼主| 发表于 2015-10-10 14:27:45 | 显示全部楼层
回复【2楼】login_FAE:
---------------------------------
请问你的意思是不是受到的实际字符串应该是下面:
“\r\nSIMCOM_Ltd\r\nOK”
USART2_RX_BUF+2是为了屏蔽掉第一个\r\n
然后p1=(u8*)strstr((const char*)(USART2_RX_BUF+2),"\r\n");是为了找到第二个\r\n的位置
 p1[0]=0;这边相当于把返回的字符串变成“\r\nSIMCOM_Ltd”
此时USART2_RX_BUF+2就指向“SIMCOM_Ltd”
这样理解对吗?
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-1-31
在线时间
5 小时
发表于 2019-1-31 15:10:14 | 显示全部楼层
善良的二哥 发表于 2015-10-10 14:27
回复【2楼】login_FAE:
---------------------------------
请问你的意思是不是受到的实际字符串应该是下面 ...

\r\n两个字节,
p1[0]=0;只屏蔽一个字节
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 13:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表