完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
原子哥好,我现在在学GSM模块通信,我想知道的是模块返回的内容怎么接收。就是串口模块怎么接收字符串。比如GSM返回OK,返回error,我要怎么写接收程序。
|
|
相关推荐
14个回答
|
|
先全部接收,收完后,字符串解析即可.
|
|
|
|
printf("AT+CMGF=1rn");
delay_ms(50); printf("AT+CSMP=17,167,2,25rn"); delay_ms(50); printf("AT+CSCS="UCS2"rn"); delay_ms(50); printf("AT+CMGS="00310038003700350038003300360032003900350035"rn"); delay_ms(50); printf("4E2D658777ED4FE16D4B8BD5rn"); delay_ms(50); USART_SendData(USART1, 0x1A); delay_ms(200); 这是我的短信发送程序,但是短信一直发不出去,我想是不是最后的发送16进制的0x1A有问题???如果有问题要怎么改呢??? |
|
|
|
printf("AT+CMGF=1rn");
delay_ms(50); printf("AT+CSMP=17,167,2,25rn"); delay_ms(50); printf("AT+CSCS="UCS2"rn"); delay_ms(50); printf("AT+CMGS="00310038003700350038003300360032003900350035"rn"); delay_ms(50); printf("4E2D658777ED4FE16D4B8BD5rn"); delay_ms(50); USART_SendData(USART1, 0x1A); delay_ms(200); 这是我的短信发送程序,但是短信一直发不出去,我想是不是最后的发送16进制的0x1A有问题???如果有问题要怎么改呢??? |
|
|
|
1A没问题啊,你电脑测串口调试助手试试可以成功么?
|
|
|
|
直接用串口给模块发指令是可以发送短信的,但是串口助手接收到的
5F 95 4D 29 89 99 29 3A CA D6 00 5F 95 4D C9 29 F9 29 3A 22 4E 3A 26 22 4E 36 4E 36 2A CA D6 00 5F 95 4D C9 C9 C9 29 76 AA F2 B2 36 76 CA D6 00 5F 95 4D 29 89 C9 29 76 3E 3E 32 3A 3E 3E 32 1E 3E 3E 32 22 3E 3E 32 2A 3E 3E 32 1E 3E 3E 32 32 3E 3E 32 26 3E 3E 32 36 3E 3E 32 1A 3E 3E 32 2A 3E 3E 32 2A 76 CA D6 00 99 97 33 97 32 65 4C 26 26 A6 B9 B9 E6 EA 3A 26 EE 2E F6 1E F6 EE 2A CA D6 00 39 是这些 我怎么看不懂它发的是什么呢???? |
|
|
|
错了 收到的不是上面的那个
是 41 54 2B 43 4D 47 46 3D 31 0D 0A 41 54 2B 43 53 4D 50 3D 31 37 2C 31 36 37 2C 32 2C 32 35 0D 0A 41 54 2B 43 53 43 53 3D 22 55 43 53 32 22 0D 0A 41 54 2B 43 4D 47 53 3D 22 30 30 33 31 30 30 33 38 30 30 33 37 30 30 33 35 30 30 33 38 30 30 33 33 30 30 33 36 30 30 33 32 30 30 33 39 30 30 33 35 30 30 33 35 22 0D 0A 34 45 32 44 36 35 38 37 37 37 45 44 34 46 45 31 36 44 34 42 38 42 44 35 0D 0A 1A 最后是1A 可是短信发不出去啊 |
|
|
|
要做解析。
|
|
|
|
解析后的内容:
AT+CMGF=1 AT+CSMP=17,167,2,25 AT+CSCS="UCS2" AT+CMGS="00310038003700350038003300360032003900350035" 4E2D658777ED4FE16D4B8BD5 → 和发送的是一样的,和pdf上面的也校对了一下,没有问题啊 |
|
|
|
解析后的内容:
AT+CMGF=1 AT+CSMP=17,167,2,25 AT+CSCS="UCS2" AT+CMGS="00310038003700350038003300360032003900350035" 4E2D658777ED4FE16D4B8BD5 → 和发送的是一样的,和pdf上面的也校对了一下,没有问题啊 --------------------------------- 又发现了一个神奇的现象,就是单步调试的时候,一步步下来到最后发送0x1A可以发送短信,但是运行从第一步开始到最后一步结束后,下一句开始前设断点停止,就不能发出去了。全速运行的时候也发不出去。这是为什么呢???求解释啊。。。很无语啊。。。 |
|
|
|
那就是你发送速度太快了
|
|
|
|
我都延时500ms了,还不够吗?
|
|
|
|
整个代码是怎么样的?
|
|
|
|
printf("AT+CMGF=1rn");
delay_ms(200); printf("AT+CSMP=17,167,2,25rn"); delay_ms(200); printf("AT+CSCS="UCS2"rn"); delay_ms(200); printf("AT+CMGS="00310038003700350038003300360032003900350035"rn"); delay_ms(200); printf("4E2D658777ED4FE16D4B8BD5rn"); delay_ms(200); USART_SendData(USART1, 0x1A); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)== RESET); 上述代码是写在判断哪个按键按下后面的。 是用红外遥控的控制的,按下某一个按键的时候发送固定内容的短信。 今天又试了一下,延时500ms可以发了,不断改小到延时200ms也可以发了,这是为什么啊? 纠结啊,昨天都试过延时1s了也发不出去,今天随便试了一下就成功了。 郁闷啊。。。表示不了解原因。。。 不过能发短信就可以了,谢谢原子哥不辞辛苦的解答我的问题。。。 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2574 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2367 浏览 5 评论
3219 浏览 3 评论
2841 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2795 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
674浏览 1评论
912浏览 0评论
1033浏览 0评论
676浏览 0评论
508浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 06:14 , Processed in 2.500553 second(s), Total 75, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号