mirror of
https://github.com/Show-maket/EthernetMaket.git
synced 2025-05-04 15:20:18 +00:00
docs
This commit is contained in:
parent
a102cd3b5f
commit
10a6adea0d
111
examples/Server/readme.md
Normal file
111
examples/Server/readme.md
Normal file
@ -0,0 +1,111 @@
|
||||
# Документация 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`. Настройте код в соответствии с вашими конкретными потребностями.
|
Loading…
x
Reference in New Issue
Block a user