打印
[应用相关]

给GPRS模块发送一个AT+CSQ指令求各位大神来看我的代码有什么问题

[复制链接]
164|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
两只袜子|  楼主 | 2024-7-26 18:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我要实现的功能是我给GPRS模块发送一个AT+CSQ指令然后模块会返回一个值例如 +CSQ: 28,0
我要取出整型的28和0
我有问题的代码如下
void Get_CSQ(char *pCSQ)
{
char tmp[2];
printf("ATE0rn");
while(0==URT_STA);
USART_RX_STA=0;
Delay_Ms(2000);
Delay_Ms(2000);
Delay_Ms(2000);
Delay_Ms(2000);
Delay_Ms(2000);
Delay_Ms(2000);
printf("AT+CSQrn");
    /* 等待GPRS模块反馈数据 */  
  while(0==URT_STA)
{
  TTY_BUFF[USART_RX_STA&0X3F]=USART_RX_BUF[USART_RX_STA&0X3F];
}
    /* 初始化串口接收中断标志 */
USART_RX_STA=0;
Delay_Ms(2000);
substr(tmp,(char *)TTY_BUFF,6,2);
pCSQ[0]=atoi(tmp);
pCSQ[1]=0;
}
pCSQ[0] 手动等于28能正常输出,但是pCSQ[0]=atoi(tmp);输出为0,
TTY_BUFF里面的内容为:TTY_BUFF[64]={'+','C','S','Q',':','x20','2','8',',','0'};

谁能说说怎么回事或者谁有更好的取法 谢谢!

使用特权

评论回复
沙发
kzlzqi| | 2024-7-29 15:21 | 只看该作者
在中断处理函数中,我们应该使用更精确的方法来检测边沿(上升沿或下降沿),而不是仅依赖于当前引脚的状态。

使用特权

评论回复
板凳
申小林一号| | 2024-7-29 22:48 | 只看该作者
感谢分享

使用特权

评论回复
地板
冰春彩落下| | 2024-8-22 22:42 | 只看该作者
看起来是你格式截取的不对导致的

使用特权

评论回复
5
三生万物| | 2024-8-23 01:00 | 只看该作者
跟你的数组没啥关系,是你截取有问题

使用特权

评论回复
6
淡漠安然| | 2024-8-23 02:00 | 只看该作者
其实一般来说你应该只要28,但是你没取到呗

使用特权

评论回复
7
暖了夏天蓝了海| | 2024-8-23 04:00 | 只看该作者
我觉得你延时应该不需要这么久吧

使用特权

评论回复
8
江河千里| | 2024-8-23 05:00 | 只看该作者
可以仿真看看,你取哪里的数据比较合适?

使用特权

评论回复
9
别乱了阵脚| | 2024-8-23 06:00 | 只看该作者
是不是取之前这个buff就被清掉了呢?

使用特权

评论回复
10
远山寻你| | 2024-8-23 07:00 | 只看该作者
你可以做个缓冲区,就是把数据放到缓冲区里,然后从缓冲区里截取

使用特权

评论回复
11
夜阑风雨| | 2024-8-23 08:00 | 只看该作者
只要是你需要的数据放在缓冲区里,然后截取应该就可以吧

使用特权

评论回复
12
一秒落纱| | 2024-8-23 09:00 | 只看该作者
这个应该不用这么麻烦吧,你用对比函数试试呢?

使用特权

评论回复
13
光辉梦境| | 2024-8-23 10:00 | 只看该作者
一般就是找到CSQ之后,取这个数+2之后的数据应该就可以吧,就应该是28

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1989

主题

6978

帖子

10

粉丝