#include <ESP8266WiFi.h>
const char *ssid = "PICPROJE";
const char *password = "123123123";
String s;
WiFiServer server(80);
void setup(){
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
s = "HTTP/1.1 200 OK\r\n";
s += "Content-Type: text/html\r\n\r\n";
s += "<!DOCTYPE HTML>\r\n<html>\r\n";
s += "<script>\n";
s += "function led_on(){ var xhttp = new XMLHttpRequest(); xhttp.open(\"GET\", \"/on\", true); xhttp.send();}\n";
s += "function led_off(){ var xhttp = new XMLHttpRequest(); xhttp.open(\"GET\", \"/off\", true); xhttp.send();}\n";
s += "</script>\n";
s += "<button type=\"B1\" onclick=\"led_on()\" >ON</button>\n";
s += "<button type=\"B2\" onclick=\"led_off()\" >OFF</button>\n";
s += "</html>\n";
WiFi.mode(WIFI_AP);
WiFi.softAP(ssid, password);
server.begin();
}
void loop(){
WiFiClient client = server.available(); // Check if a client has connected
if (!client){
return;
}
String req = client.readStringUntil('\r'); // Read the first line of the request
client.flush();
if (req.indexOf("/on") != -1){
digitalWrite(LED_BUILTIN, LOW);
}
else if (req.indexOf("/off") != -1){
digitalWrite(LED_BUILTIN, HIGH);
}
client.flush();
client.print(s);
delay(1);
}
Normal kullanırken sorun yok ama, Anormal kullanımda gecikme oluyor.
ON Butona delicesine basıp; Saniyede 30 kez basıp ,
1 kez OFF Butonuna basınca; OFF komutu 3-4 saniye sonra tepki veriyor. Bunu nasıl çözerim?
yazdığın kodların çalışma süresini "micros()" kullanarak ölç. Saniyede teorik olarak kaç kontrol yapabiliyorsun bunu görmüş olursun. Limitlerin üzerinde bir performans bekliyorsan gerekli önlemleri alman lazım, on/off butonlarını disable etmek gibi...
Şu komutu client.print(s); boolean ve if ile bir kez okuttuğumda hızlı çalışıyor.
ama 1-2 dk sonra modül kendini resetliyor. Bozuluyor.
WiFiClient client = server.available(); bu koddan daha sonra client.setNoDelay(1); kodu yazabilirmisiniz. Bende işe yaramıştı benzer problemle bende karşılaşmıştım. Belki işinize yarayabilir. Bende işe yaramıştı.
Kolay gelsin, İyi çalışmalar
Ddos atak yapıyorsun bir nevi kaynaklar yeterli gelmiyor :) aralık verirseniz hiçbir sıkıntı yasamaz siniz. Sürekli isteklere sık cevap verdirmeyin.
Alıntı yapılan: dogan_ugurlu - 22 Haziran 2017, 00:09:23
WiFiClient client = server.available(); bu koddan daha sonra client.setNoDelay(1); kodu yazabilirmisiniz. Bende işe yaramıştı benzer problemle bende karşılaşmıştım. Belki işinize yarayabilir. Bende işe yaramıştı.
Kolay gelsin, İyi çalışmalar
Sağol. client.setNoDelay(1); kodu, İşe yaradı. :)
Bu kodda server.setNoDelay(true); server.begin(); kodunun altına yazdım. Buda işe yaradı. Hangisi tam doğru acaba. Sizin verdiğiniz kodu loop kısma yazdım. Kendi bulduğumu setup kısma yazdım. En doğrusu hangisi?
Bu kodun yanına türkçe açıklama ne yazılabilir? // ?
Hocam bu kod tam olarak şu işe yarıyor. Küçük küçük parçalar halinde giden iletileri bir araya getirip hepsini bir kerede göndererek ağ üzerinden gönderilen küçük paketlerin TCP / IP trafiğini azaltmaya yarıyor. Açıklama olarak ne yazarsın bilmem :)
Alıntı yapılan: veliusta - 22 Haziran 2017, 03:16:09
Bu kodun yanına türkçe açıklama ne yazılabilir? // ?
"TCP/IP Nagle Algoritmasini kullanma" yazilabilir.