06-08-2019, 20:24
Witam.
Mój problem:Chciałbym wysłać zmienną bool stan do klienta i odwrotnie.Aby zmienna bool stan pomiędzy klientem a serwerem się synchronizowała. W monitorze portu szeregowego dostaje cos takiego:
Client:[attachment=869]
Server:[attachment=870]
Poniżej zamieszczam kod do serwera i klienta.
Proszę o pomoc.
Mój problem:Chciałbym wysłać zmienną bool stan do klienta i odwrotnie.Aby zmienna bool stan pomiędzy klientem a serwerem się synchronizowała. W monitorze portu szeregowego dostaje cos takiego:
Client:[attachment=869]
Server:[attachment=870]
Poniżej zamieszczam kod do serwera i klienta.
Kod:
//server/
#include <ESP8266WiFi.h>
bool stan = 0;
int switchonoff = 3;
WiFiServer server(80);
IPAddress IP(192,168,4,15);
IPAddress mask = (255, 255, 255, 0);
byte ledPin = 2;
void setup() {
Serial.begin(9600);
WiFi.mode(WIFI_AP);
WiFi.softAP("Wemos_AP", "Wemos_comm");
WiFi.softAPConfig(IP, IP, mask);
server.begin();
pinMode(ledPin, OUTPUT);
pinMode(switchonoff, OUTPUT);
Serial.println();
Serial.println("accesspoint_bare_01.ino");
Serial.println("Server started.");
Serial.print("IP: "); Serial.println(WiFi.softAPIP());
Serial.print("MAC:"); Serial.println(WiFi.softAPmacAddress());
}
void loop() {
WiFiClient client = server.available();
if (!client) {return;}
if (digitalRead(switchonoff)== HIGH){
stan=!stan;
while(digitalRead(switchonoff) == HIGH);
}
digitalWrite(ledPin, LOW);
Serial.println("********************************");
Serial.print("Zmienna wysyłana do klienta: ");
Serial.println(client.println(stan));
stan = client.read();
Serial.println("Aktualna zmienna stan serwera: " + stan);
client.flush();
digitalWrite(ledPin, HIGH);
}
Kod:
//client
#include <ESP8266WiFi.h>
bool stan = 0;
int relay = 4;
int switchonoff = 3;
byte ledPin = 2;
char ssid[] = "Wemos_AP"; // SSID of your AP
char pass[] = "Wemos_comm"; // password of your AP
IPAddress server(192,168,4,15); // IP address of the AP
WiFiClient client;
void setup() {
Serial.begin(9600);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, pass); // connects to the WiFi AP
Serial.println();
Serial.println("Connection to the AP");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.println("Connected");
Serial.println("station_bare_01.ino");
Serial.print("LocalIP:"); Serial.println(WiFi.localIP());
Serial.println("MAC:" + WiFi.macAddress());
Serial.print("Gateway:"); Serial.println(WiFi.gatewayIP());
Serial.print("AP MAC:"); Serial.println(WiFi.BSSIDstr());
pinMode(ledPin, OUTPUT);
}
void loop() {
if (stan==1){
digitalWrite(HIGH,switchonoff);
}else{
digitalWrite(LOW,switchonoff);
}
if (digitalRead(switchonoff)== HIGH){
stan=!stan;
while(digitalRead(switchonoff) == HIGH);
}
client.connect(server, 80);
digitalWrite(ledPin, LOW);
Serial.println("********************************");
Serial.print("Zmienna wysyłana do serwera AP: ");
Serial.println(client.print(stan));
stan = client.read();
Serial.println("Aktualna zmienna stan klienta: " + stan);
client.flush();
digitalWrite(ledPin, HIGH);
client.stop();
delay(2000);
}