完善资料让更多小伙伴认识你,还能领取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码,需要转换为十六进制。
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
818 浏览 1 评论
994 浏览 0 评论
877 浏览 0 评论
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
4892 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
3696 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 17:48 , Processed in 0.801643 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
32005