У меня есть ESP8266, на него залит сервер.
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
char incomingPacket[256];
WiFiServer wifiServer(80);
String i;
uint8_t pin = D0;
void setup()
{
Serial.begin(115200);
WiFi.begin("Busik", "gytAw789h");
while(WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.print(".");
}
pinMode(pin,OUTPUT);
Serial.printf("Подключились к WiFi точке, слушаем точку: %s, порт %d", WiFi.localIP().toString().c_str(), 80);
Serial.println();
wifiServer.begin();
}
void loop()
{
WiFiClient client = wifiServer.available();
while(client)
{
i = "";
while(client.available() > 0)
{
i += client.read();
}
Serial.println(i);
if(i == "208146")
{
digitalWrite(pin, HIGH);
}
else if(i == "208158")
{
digitalWrite(pin, LOW);
}
delay(100);
}
}
Есть приложение на C#, и там переключатель врубает и отрубает светодиод.
Я когда отправляю строку на ESP8266, то мне её приходится там сравнивать с её кодировкой, что бы можно было войти в условие и отрубить или врубить светодиод.
Как можно раскодировать
пришедшие значения?
Можно ли как-то из C# приложения отправлять bool и другие типы, чтобы делать всю эту логику не на основе закодированных строк?
Вот часть C# приложения
private void OnToggled(object sender, ToggledEventArgs e)
{
TcpClient client = new TcpClient();
client.Connect(IP, PORT);
NetworkStream stream = client.GetStream();
if (SvetodiodSwtch.IsToggled)
{
string i = "В";
byte[] data = Encoding.UTF8.GetBytes(i);
stream.Write(data, 0, data.Length);
}
else
{
string i = "О";
byte[] data = Encoding.UTF8.GetBytes(i);
stream.Write(data, 0, data.Length);
}
client.Close();
stream.Close();
}