完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我要实现的功能是我给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'}; 谁能说说怎么回事或者谁有更好的取法 谢谢! |
|
相关推荐
5个回答
|
|
你先把结果 用串口通信软件 在电脑上面显示看看 正确不正确 再考虑
|
|
|
|
那个是ASCII码的格式,你需要做一下转换处理。
|
|
|
|
|
|
|
|
还可以用先查找冒号:再查找逗号,然后提取它们中间部分的方法。
|
|
|
|
他已经获取到了。但是处理的方式不对,获取到的是ascii码,需要转换为十六进制。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1223 浏览 1 评论
945 浏览 0 评论
MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记
625 浏览 0 评论
自定义系统时钟频率后,用库函数和微带两种方式点亮LED灯,为什么灯的闪烁频率不一致?
1520 浏览 2 评论
1737 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-23 16:55 , Processed in 1.006913 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号