Web server иweb client на ардуино
- Войдите на сайт для отправки комментариев
Втр, 06/12/2016 - 08:19
Есть два контроллера, один сервер, второй клиент.
Задача - обменяться данными "HELLO FROM CLIENT*" И "HELLO FROM SERVER*"
* - символ окнчания данных
В будущем планируется сделать несколько веб серверов и один клиент, который будет по необходимости опрашивать сервера. Также у клиенат будет веб интерфейс для отображения полученной информации от серверов.
Задача реализована, только для обмена информацией между "северами" - клиент использовал UDP. Но как выяснилось бывает иногда зависание контроллера, кроме ресета ничего не помагает.
Будет ли работать данные алгоритмы?
Скетч сервера
#include <SPI.h>
#include <Ethernet.h>
char c;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte port_server=90;
IPAddress ip_server(192, 168, 1, 178);
EthernetServer server(port_server);
void setup()
{
Serial.begin(9600);
Ethernet.begin(mac, ip_server);
server.begin();
}
void loop()
{
EthernetClient client = server.available();
while (client.connected())
{
if (client)
{
if (client.available())
{
c = client.read();
Serial.print(c);
}
if (c == '*' )
{
client.print("HELLO FROM SERVER*");
client.stop();
Serial.println("Disconnect");
}
}
}
delay(1);
}
Скетч клиента
#include <SPI.h>
#include <Ethernet.h>
char c;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte port_server=90;
IPAddress ip_client(192, 168, 0, 177);
IPAddress ip_server(192, 168, 0, 178);
EthernetClient client;
boolean con=false;
void setup()
{
Serial.begin(9600);
Ethernet.begin(mac, ip_client);
delay(1000);
}
void loop()
{
if (client.connect(ip_server, port_server) && con==false)
{
client.println("HELLO FROM CLIENT*");
con=true;
}
if (client.available())
{
c = client.read();
Serial.print(c);
}
if (!client.connected())
{
Serial.println();
Serial.println("Disconnect");
client.stop();
con=false;
}
}
Будет ли работать данные алгоритмы?
Запустите и попробуйте, потом нам расскажете.
Нет, не будут.