const u8* a1="1";
const u8* a2="1";
这是我设置的两个字符串
b1=strcmp((char*)a1,(char*)a2);
if(b1==0)
{
LED1=!LED1;
}
能够得b1为0
我通过32串口2接收数据,LCD显示屏显示接收到12个字节, 接收显示的数据为+IPD,0,1:1
我把a2改为
const u8* a2="+IPD,0,1:1";
比较字符串
b1=strcmp((char*)USART2_RX_BUF,(char*)a2);
if(b1==0)
{
LED1=!LED1;
}
却得不到b1=0,这是为什么,小白求大佬指点,谢谢!
下面是esp8266的ap的tcp clinet模式改的代码,想实现32接收手机端传过来的字符串数据,对比是否与设定字符串相同实现灯的状态的转换。
#include "common.h"
#include "string.h"
const u8* a1="1";
const u8* a2="+IPD,0,1:1";
u8 atk_8266_wifiap_test(void)
{
u16 b1;
u8 netpro=0;
u8 key;
u8 timex=0;
u8 ipbuf[16];
u8 *p;
u16 t=999;
u8 res=0;
u16 rlen=0;
u8 constate=0;
p=mymalloc(32);
LCD_Clear(WHITE);
POINT_COLOR=RED;
Show_Str_Mid(0,30,"ATK-ESP WIFI-AP ²âÊÔ",16,240);
Show_Str(30,50,200,16,"ÕýÔÚÅäÖÃATK-ESPÄ£¿é,ÇëÉÔµÈ...",12,0);
atk_8266_send_cmd("AT+CIPMUX=1","OK",20);
sprintf((char*)p,"AT+CIPSERVER=1,%s",(u8*)portnum);
atk_8266_send_cmd(p,"OK",20);
LCD_Clear(WHITE);
POINT_COLOR=RED;
Show_Str_Mid(0,30,"ATK-ESP WIFI-AP ²âÊÔ",16,240);
Show_Str(30,50,200,16,"ÕýÔÚÅäÖÃATK-ESPÄ£¿é,ÇëÉÔµÈ...",12,0);
LCD_Fill(30,50,239,50+12,WHITE);
Show_Str(30,50,200,16,"ÅäÖÃATK-ESPÄ£¿é³É¹¦!",12,0);
delay_ms(200);
Show_Str(30,50,200,16,"WK_UP:Í˳ö²âÊÔ KEY0:·¢ËÍÊý¾Ý",12,0);
LCD_Fill(30,80,239,80+12,WHITE);
atk_8266_get_wanip(ipbuf);//·þÎñÆ÷ģʽ,»ñÈ¡WAN IP
sprintf((char*)p,"IPµØÖ·:%s ¶Ë¿Ú:%s",ipbuf,(u8*)portnum);
Show_Str(30,65,200,12,p,12,0);
Show_Str(30,80,200,12,"״̬:",12,0);
Show_Str(120,80,200,12,"ģʽ:",12,0);
Show_Str(30,100,200,12,"·¢ËÍÊý¾Ý:",12,0);
Show_Str(30,115,200,12,"½ÓÊÕÊý¾Ý:",12,0);
atk_8266_wificonf_show(30,180,"ÇëÓÃÉ豸Á¬½ÓWIFIÈȵã:",(u8*)wifiap_ssid,(u8*)wifiap_encryption,(u8*)wifiap_password);
POINT_COLOR=BLUE;
Show_Str(120+30,80,200,12,(u8*)ATK_ESP8266_WORKMODE_TBL[netpro],12,0);
USART2_RX_STA=0;
while(1)
{
key=KEY_Scan(0);
if(key==WKUP_PRES)
{
res=0;
atk_8266_quit_trans();
atk_8266_send_cmd("AT+CIPMODE=0","OK",20);
break;
}
if(timex)timex--;
if(timex==1)LCD_Fill(30+54,100,239,112,WHITE);
t++;
delay_ms(5);
if(USART2_RX_STA&0X8000)
{
rlen=USART2_RX_STA&0X7FFF;
USART2_RX_BUF[rlen]=0;
printf("%s",USART2_RX_BUF);
sprintf((char*)p,"ÊÕµ½%d×Ö½Ú,ÄÚÈÝÈçÏÂ",rlen);
LCD_Fill(30+54,115,239,130,WHITE);
POINT_COLOR=BRED;
Show_Str(30+54,115,156,12,p,12,0);
POINT_COLOR=BLUE;
b1=strcmp((char*)USART2_RX_BUF,(char*)a2);
if(b1==0)
{
LED1=!LED1;
}
LCD_Fill(30,130,239,319,WHITE);
Show_Str(30,130,180,190,USART2_RX_BUF,12,0);
USART2_RX_STA=0;
if(constate!='+')t=1000;
else t=0;
}
if(t==1000)
{
constate=atk_8266_consta_check();
if(constate=='+')Show_Str(30+30,80,200,12,"Á¬½Ó³É¹¦",12,0);
else Show_Str(30+30,80,200,12,"Á¬½Óʧ°Ü",12,0);
t=0;
}
if((t%500)==0)
{
LED0=!LED0;
}
atk_8266_at_response(1);
}
myfree(p);
return res;
}
file:///C:/Users/dell/AppData/Roaming/Tencent/Users/765671143/QQ/WinTemp/RichOle/]7V5H]%25)%25XQ3_32RXU%603J4V.png
下面图片是串口二接收到数据后的判断
串口2
谢谢!
|