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; } }
Будет ли работать данные алгоритмы?
Запустите и попробуйте, потом нам расскажете.
Нет, не будут.