|
ATD*99***1#
CONNECT 拨号后输入数据PPP请求数据包:7EFF7D23C0217D217D217D207D347D227D267D207D207D207D207D257D267D202147247D277D227D287D22F8BE7E 串口为何收不到数据: |
|
感觉这边是不是应该为“:” |
|
对于这几个问题,请亲自用串口调试助手,测试对应的指令。
既得答案。 |
|
回复【6楼】正点原子:
--------------------------------- 请问原子哥以下几个问题 1、p2=(u8*)strstr((const char*)USART2_RX_BUF,"+IPD"); 这句话的意思查找RX_BUF里面出现的+IPD这个字符的位置是不是这个字符之后的数据就是服务器发送给GPRS接收到的数据了? 2、p3=(u8*)strstr((const char*)p2,","); 这句话的意思是查找p2这个字符串里的“逗号”是不是接收到的数据例如12345应该是1,2,3,4,5这样放在RX_BUF里面的?这儿可以通过“逗号”的个数判断接收到几个字节的数据? 3、p2=(u8*)strstr((const char*)p2,":"); 这句话查找p2中的“:”字符,这个“;”是不是接着+IPD:这样的 那么服务器发送过来的12345这几个数据在USART2_RX_BUF里面存储形式是不是这样的+IPD:1,2,3,4,5, 这样我要判断收没收到服务器发送来的数据首先的查找到USART2_RX_BUF里面有木有出现+IPD:这个字符,如果出现了则表示服务器有发送数据给GPRS,接着+IPD:后面的数据就表示是服务器发送过来的? p2[0]=0;//加入结束符 sprintf((char*)p1,"收到%s字节,内容如下",p3+1);//接收到的字节数 LCD_Fill(30+54,115,239,130,WHITE); POINT_COLOR=BRED; Show_Str(30+54,115,156,12,p1,12,0); //显示接收到的数据长度 POINT_COLOR=BLUE; LCD_Fill(30,130,210,319,WHITE); Show_Str(30,130,180,190,p2+1,12,0); //显示接收到的数据 |
|
回复【5楼】宇你在一起:
--------------------------------- 没遇到过. 你用多一个串口,监控下串口线上的数据吧. |
|
回复【4楼】正点原子:
--------------------------------- 嗯嗯 我现在知道为什么会自动进入中断了 是因为发送AT指令的时候会返回相关的字符,所以会进入中断。但是我还是不知道为何服务器发给GPRS发送数据的时候 GPRS有时候接收不到呢 ?原子哥 您以前测试这个GPRS程序的时候有出现过这个情况吗? |
|
肯定是收到数据才进入这里的.
不会无缘无故进入的. |
|
回复【2楼】beyond696:
--------------------------------- 使用的 DMA方式 ,我用的原子的源代码 发现就是接收服务器发送过来的数据不行,今天查看了很多资料看是不是应该每次发送AT指令后都清除一下USART2_RX_STA=0 我想看看其他人有木有用原子代码的也遇见这情况, |
| 楼主用DMA方式接收或者发送数据吧,否则很容易出错 |
/1
|手机版|OpenEdv-开源电子网
( 粤ICP备12000418号-1 )
GMT+8, 2026-6-23 07:37
Powered by OpenEdv-开源电子网
© 2001-2030 OpenEdv-开源电子网