2016-08-04 1 views
0

J'utilise arduino ide pour programmer esp8266 (module wifi) et j'ai créé un serveur tcp sur le module puis j'ai utilisé le programme tcp testeur client pour envoyer et recevoir des données .Ceci est le code J'utilise J'ai réussi à envoyer des données à partir du module, mais ne peut pas recevoir de données de mon téléphone, Quelqu'un peut-il m'aider? c'est le code que je utiliseesp8266 créer serveur tcp mais ne peut pas recevoir des données

#include <ESP8266WiFi.h> 
int i =0; 
char ssid[] = "moataz";   
char pass[] = "58295829"; 
int status = WL_IDLE_STATUS; 

WiFiServer server(1050); 

void setup() 
{ 
    Serial.begin(115200); 
    WiFi.mode(WIFI_AP_STA); 
    WiFi.begin("moataz", "58295829"); 
    while (WiFi.status() != WL_CONNECTED) 
    { 
    delay(500); 
    Serial.print("."); 
    } 
    Serial.println("connectedd"); 
    server.begin(); 
    IPAddress myAddress = WiFi.localIP(); 
    Serial.println(myAddress); 
    delay(200); 
} 

bool alreadyConnected = 0; 
void loop() { 
    WiFiClient client = server.available(); 
    if (client) { 
    if (!alreadyConnected) { 
     client.flush(); 
     Serial.println("We have a new client"); 
     client.println("Hello, client!"); 
     alreadyConnected = true; 
    } 
    } 
    if (client.available() > 0) { 
    char thisChar = client.read(); 
    Serial.println("We got data"); 
    Serial.println(thisChar); 
    delay(200); 
    } 
} 
+0

Que faites-vous sur votre téléphone pour recevoir des données? – leetibbett

Répondre

1

Lorsque WifiClient est supprimé, la connexion est fermée, votre drapeau alreadyConnected doesnot indiquent l'état de connexion.
Votre code devrait fonctionner la première fois. « Bonjour, client »
Pour accepter une connexion TCP, envoyer, lire 1 caractère, fermez la connexion TCP, vous pouvez procéder comme ceci:

void loop() { 
    WiFiClient client = server.available(); 
    if (client) { 
     Serial.println("We have a new client"); 
     client.println("Hello, client!"); 

     if (client.available() > 0) { 
      char thisChar = client.read(); 
      Serial.println("We got data"); 
      Serial.println(thisChar); 
      delay(200); 
     } 
    } 
} 

Si vous souhaitez garder la connexion ouverte, vous devez le garder en dehors de la boucle. Cet exemple WiFiTelnetToSerial.ino montre comment gérer une liste de WIFIClient.