سلام
من یک فایل main و دو تا header دارم .در فایل main تابع زیر رو فراخوانی میکنم که در یکی از header ها تعریف شده است :
inline WIFI_RESPONSE WIFI_INIT (void){char buffer[60],flag=0,i;
int p;
LED_SET_MODE(LED_MODE_NO_CONF);
while(ESP_OK!=IS_ESP_READY());
while(ESP_OK!=ESP_AP_CONF("SHAYAN","123456789",ESP _ECN_WPA_PSK,1,DEF));
while(ESP_OK!=ESP_CREATE_SERVER("192.168.6.1",3535 ,DEF));
do{
ESP_READ_DATA(buffer,true,ESP_CONNECTION_ALL);
flag=STRING_SEARCH(buffer,"info:",1,1,NULL,&p);
}while(!flag);
for(i=0,p++;buffer[p]!='\n';i++,p++)
save_net_info.ssid[i]=buffer[p];
save_net_info.ssid[++i]='\0';
for(i=0,p++;buffer[p]!='\n';i++,p++)
save_net_info.pwd[i]=buffer[p];
save_net_info.pwd[++i]='\0';
for(i=0,p++;buffer[p]!='\n';i++,p++)
save_net_info.ip[i]=buffer[p];
save_net_info.ip[++i]='\0';
for(i=0,p++;buffer[p]!='\n';i++,p++)
save_net_info.port[i]=buffer[p];
save_net_info.port[++i]='\0';
return WIFI_GET_INFO; }


در خط ششم تابع "ESP_AP_CONF("SHAYAN","123456789",ESP_ECN_WPA_PSK, 1,DEF)" که در فایل hedear دومی تعریف شده فراخانی شده.تعریف این تابع در زیر اورده شده :

ESP_RESPONSE ESP_AP_CONF (char *SSID,char *PWD,ESP_ECN ECN,char MAX_CONN,ESP_CONFIG_MODE MODE_CONF){
char buffer[50];
if(ESP_OK==ESP_SET_MODE(ESP_MODE_AP,MODE_CONF)){
sprintf(buffer,"AT+CWSAP_%s=\"%s\",\"%s\",%d,%d,%d ,%d",MODE_CONF,SSID,PWD,5,ECN,MAX_CONN,0);
if(ESP_OK==ESP_SEND_CMD(buffer,NULL,1,1))
return ESP_OK;
}
return ESP_ERROR; }



تابع ESP_SEND_CMD بافر دریافتی رو یک بایت یک بایت با سریال ارسال میکنه.
مشکل اینه که در خروجی مقدار رشته های "SHAYAN" و "123456789" خالی نشان داده میشه مثل زیر :
AT+CWSAP_DEF="","",5,2,0

حتی در تابع اول دو تا ارایه تعریف کردم و دو رشته را درون آن ها گذاشتم و آرایه ها را به تابع دوم ارسال کردم ولی فایده نداشت . دوباره دو تا ماکرو تعریف کردم و برابر دو رشته قرار دادم و نام ماکرو ها را به تابع ارسال کردم ولی فایده نداشت.جالب اینجاست که DEF هم یک ماکرو است که در اول فایل header تعریف شده و برابر "DEF" است که در خروجی به درستی نشان داده میشه ,لطفا کمکم کنید.