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

2019-07-14 18:21发布

我要实现的功能是我给GPRS模块发送一个AT+CSQ指令然后模块会返回一个值例如 +CSQ: 28,0
我要取出整型的28和0
我有问题的代码如下
void Get_CSQ(char *pCSQ)
{
char tmp[2];
printf("ATE0 ");
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+CSQ ");
    /* 等待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'};

谁能说说怎么回事或者谁有更好的取法 谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
60user121
1楼-- · 2019-07-15 00:16
那个是ASCII码的格式,你需要做一下转换处理。
北京森馥
2楼-- · 2019-07-15 02:07
楼主用的什么gprs模块啊?可能你的等待时间太短了,可适当延长些。
还可以直接把TTY_BUFF的第六位用串口发出来看看。
北京森馥
3楼-- · 2019-07-15 03:28
 精彩回答 2  元偷偷看……
TOPCB
4楼-- · 2019-07-15 07:00
他已经获取到了。但是处理的方式不对,获取到的是ascii码,需要转换为十六进制。

一周热门 更多>