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