初级会员

- 积分
- 56
- 金钱
- 56
- 注册时间
- 2016-1-24
- 在线时间
- 20 小时
|
10金钱
毕业设计是用原子的wifi做智能插座
在学习怎么驱动。
对于驱动代码有点疑问,想不明白,来这里请教一下,希望大家能帮我一下。
这个函数有两个地方不太明白
u8 atk_rm04_consta_check(void)
{
u8 *p;
u8 res;
if(atk_rm04_quit_trans())return 0;
atk_rm04_send_cmd("at+S2N_Stat=?","?",50);
p=atk_rm04_check_cmd("\r\n");
res=*(p+2);
atk_rm04_send_cmd("at+out_trans=0","ok",50);
return res;
}
附上调用的check_cmd和send_cmd
u8* atk_rm04_check_cmd(u8 *str)
{
char *strx=0;
if(USART2_RX_STA&0X8000)
{
USART2_RX_BUF[USART2_RX_STA&0X7FFF]=0;
strx=strstr((const char*)USART2_RX_BUF,(const char*)str);
}
return (u8*)strx;
}
u8 atk_rm04_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
{
u8 res=0;
USART2_RX_STA=0;
u2_printf("%s\r",cmd);
if(ack&&waittime)
{
while(--waittime)
{
delay_ms(10);
if(USART2_RX_STA&0X8000)
{
if(atk_rm04_check_cmd(ack))break;
USART2_RX_STA=0;
}
}
if(waittime==0)res=1;
}
return res;
}
第一个地方atk_rm04_send_cmd("at+S2N_Stat=?","?",50);为什么发送at+S2N_Stat=?的指令时期待的回复是“?”呢。我自己用串口试的时候这个指令回复的结果不是0就是1啊,为什么期待“?”
第二个地方是p=atk_rm04_check_cmd("\r\n");按at指令的返回值来说是以\r\n结尾的,调用这个函数p的值不就是\r\n0吗?res的值就恒为0咯? |
|