mirror of
https://github.com/Show-maket/EthernetMaket.git
synced 2025-05-04 15:20:18 +00:00
111 lines
4.4 KiB
Markdown
111 lines
4.4 KiB
Markdown
# Документация 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`. Настройте код в соответствии с вашими конкретными потребностями. |