2024-10-29 16:55:26 +03:00

111 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Документация EthernetMaketServer
`EthernetMaketServer` — это класс, предназначенный для упрощения серверных операций с использованием библиотеки Ethernet. Он позволяет обрабатывать входящие подключения клиентов и эффективно обрабатывать данные.
## Инициализация
Для инициализации `EthernetMaketServer` необходимо указать порт, на котором сервер будет слушать входящие подключения. Вот как это можно настроить:
```cpp
#include <EthernetMaket.h>
// Определяем пин CS для W5500 и порт сервера
#define W5500_CS_PIN PA2
#define SERVER_PORT 1337
// Определяем MAC и IP адреса
byte mac[] = {0xDA, 0x7A, 0xFF, 0x00, 0x00, 0x00};
byte ip[] = {192, 168, 254, 254};
// Определяем шлюз и маску подсети
uint8_t gateway[] = {192, 168, 0, 1};
uint8_t subnet[] = {255, 255, 0, 0};
// Создаем экземпляр EthernetMaketServer
EthernetMaketServer server(SERVER_PORT);
void setup() {
Serial.begin(115200);
// Инициализация SPI и Ethernet
SPI.begin();
pinMode(W5500_CS_PIN, OUTPUT);
digitalWrite(W5500_CS_PIN, HIGH);
Ethernet.setCsPin(W5500_CS_PIN);
Ethernet.init();
Ethernet.begin(mac, ip, subnet, gateway, gateway);
// Запуск сервера
server.begin();
Serial.print("Сервер запущен на ");
Serial.println(Ethernet.localIP());
}
void loop() {
server.tick();
}
```
## Использование Колбэка
Вы можете задать функцию-колбэк для обработки входящих подключений клиентов. Эта функция будет вызываться всякий раз, когда клиент подключается и отправляет данные.
```cpp
void serverHandler(EthernetClient client) {
byte buf[BUFFERSIZE];
int len = client.read(buf, sizeof(buf));
// Обработка полученных данных
// ...
// Отправка ответа клиенту
client.write("response data");
if(/* соединение больше не нужно */){
client.stop();
}
}
void setup() {
// ... (код инициализации)
// Установка обработчика сервера
server.setServerHandler(serverHandler);
}
```
## Использование Без Колбэка
Если вы предпочитаете обрабатывать подключения клиентов без колбэка, вы можете напрямую проверять доступных клиентов в функции `loop()`.
```cpp
void loop() {
for (int sock = 0; sock < MAX_SOCK_NUM; sock++) {
EthernetMaketClient client = server.available(sock);
if (client.connected() && client.available() > 0) {
// Обработка подключения клиента
byte buf[BUFFERSIZE];
int len = client.read(buf, sizeof(buf));
// Обработка полученных данных
// ...
// Отправка ответа клиенту
client.write("response data");
if(/* соединение больше не нужно */){
client.stop();
}
}
}
}
```
## Дополнительные Заметки
- Убедитесь, что пин CS и сетевые настройки (MAC, IP, шлюз, маска подсети) правильно настроены для вашей сети.
- Метод `tick()` должен вызываться регулярно в `loop()`, чтобы обрабатывать входящие подключения и данные.
- Функция `serverHandler` должна быть разработана для обработки конкретного протокола или формата данных, который вы используете.
Эта документация предоставляет базовый обзор того, как использовать класс `EthernetMaketServer`. Настройте код в соответствии с вашими конкретными потребностями.