中级会员
- 积分
- 407
- 金钱
- 407
- 注册时间
- 2015-8-21
- 在线时间
- 92 小时
|
1金钱
本帖最后由 一个菜鸟 于 2017-1-3 19:36 编辑
昨天的帖子中,关于GPRS是否注册到网络,我查找了AT指令集,
我就用这个指令写了一个测试函数,/*
*/
u8 check_gprs_sta(void)
{
u8 sta = 0, res = 3;
u8 *p;
u8 time = 0;
sim800c_send_cmd("ATE0", "OK", 100);
while(sta!=1)
{
UART7_RX_STA = 0;
if(sim800c_send_cmd("AT+CGREG?", "+CGREG:", 100)==0)
{
p = (u8*)strstr((const char*)(UART7_RX_BUF), ",");
*(p+2) = 0; //加入结束符
printf("GPRS网络注册状态%s\r\n", p+1);
sta = *(p+1) - '0';
if(sta==0)
{
res = 0;
printf("移动设备还没有开始搜索网络\r\n");
}
else if(sta==2)
{
res = 2;
printf("移动设备正在搜索网络\r\n");
}
}
delay_ms(500);
time++;
if(time==40)
break;
}
if(time<40)
{
res = 1;
printf("已经注册到网络\r\n");
}
return res;
}
但是存在的问题是,执行这段代码的时候,有的时候,发送"AT+CGREG?"会使模块关机,但是有的时候能够正确的执行并检测。
|
最佳答案
查看完整内容[请看2#楼]
两个方面查,一是检查POWERKEY到底有没有出现不受控制的控制脉冲,二是检查电源是否有被拉低的情况出现,因为开机一瞬间电流比较大,如果电源容量不足就会关机。
|