新手上路
- 积分
- 41
- 金钱
- 41
- 注册时间
- 2016-11-29
- 在线时间
- 5 小时
|
手机卡已经装进模块,不过在运行的时候,总是显示手机卡为安装!!!怎么回事,这是不是跟以下函数有关系?u8 sim900a_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
{
u8 res=0;
USART2_RX_STA=0;
if((u32)cmd<=0XFF)
{
while(DMA1_Channel7->CNDTR!=0); //等待通道7传输完成
USART2->DR=(u32)cmd;
}else u2_printf("%s\r\n",cmd);//发送命令
if(ack&&waittime) //需要等待应答
{
while(--waittime) //等待倒计时
{
delay_ms(10);
if(USART2_RX_STA&0X8000)//接收到期待的应答结果
{
if(sim900a_check_cmd(ack))break;//得到有效数据
USART2_RX_STA=0;
}
}
if(waittime==0)res=1;
}
return res;
}
u8 sim900a_gsminfo(u16 x,u16 y)
{
u8 *p,*p1,*p2;
u8 res=0;
p=mymalloc(50);//申请50个字节的内存
USART2_RX_STA=0;
if(sim900a_send_cmd("AT+CPIN?","OK",200))res|=1<<0; //查询SIM卡是否在位
USART2_RX_STA=0;
if(sim900a_send_cmd("AT+COPS?","OK",200)==0) //查询运营商名字
{
USART2_RX_STA=0;
}else res|=1<<1;
if(sim900a_send_cmd("AT+CSQ","+CSQ:",200)==0) //查询信号质量
{
USART2_RX_STA=0;
}else res|=1<<2;
if(sim900a_send_cmd("AT+CBC","+CBC:",200)==0) //查询电池电量
{
USART2_RX_STA=0;
}else res|=1<<3;
if(sim900a_send_cmd("AT+CCLK?","+CCLK:",200)==0) //设置时钟 +CCLK:
{
p1=(u8*)strstr((const char*)(USART2_RX_BUF),"\"");
p2=(u8*)strstr((const char*)(p1+1),":");
p2[3]=0;//加入结束符
sprintf((char*)p,"日期时间:%s",p1+1);
USART2_RX_STA=0;
}else res|=1<<4;
myfree(p);
return res;
}
|
|