8000 GitHub - Totuin/Flprog_Ethernet
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Totuin/Flprog_Ethernet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° FLPROG Ethernet

ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ сСти Ethernet

ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π½Π°Ρ информация

Зависимости

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹

  • Atmega328
  • Mega2560
  • STM32
  • Raspberry Pi Pico (RP 2040)
  • ESP8266
  • ESP32

РСализация интСрфСйсов

Класс FLProgWiznetInterface

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ интСрфСйса для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‡ΠΈΠΏΠΎΠΌ W5100 (W5200, W5500)

  • Π¨ΠΈΠ½Π° SPI ΠΈ ΠΏΠΈΠ½ CS бСрутся ΠΈΠ· RT_HW_Base.device.spi.busETH ΠΈ RT_HW_Base.device.spi.csETH*.*
FLProgWiznetInterface WiznetInterface;
  • Π‘ нСпосрСдствСнной привязкой ΠΏΠΈΠ½Ρƒ. Пин CS - 10. Π¨ΠΈΠ½Π° SPI бСрётся ΠΈΠ· RT_HW_Base.device.spi.busETH*.*
FLProgWiznetInterface WiznetInterface(10);
  • Π‘ нСпосрСдствСнной привязкой ΠΏΠΈΠ½Ρƒ ΠΈ шинС. Пин CS - 10. Π¨ΠΈΠ½Π° SPI - 0.
FLProgWiznetInterface WiznetInterface(10, 0);

Настройка интСрфСйса

  • Установка MAC-адрСса ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ вызываСтся Π² сСкции setup().
// Установка
8000
 нСпосрСдствСнно числами
WiznetInterface.mac(0x78, 0xAC, 0xC0, 0x2C, 0x3E, 0x40);

// Установка ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ массива
uint8_t macAddr[6] = {0x78, 0xAC, 0xC0, 0x2C, 0x3E, 0x40};
WiznetInterface.mac(macAddr);
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ MAC-адрСса ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° массив ΠΈΠ· 6 элСмСнтов Ρ‚ΠΈΠΏΠ° uint8_t*.*
uint8_t *macAddres = WiznetInterface.mac();
  • Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠΈΠ½Π° Cs ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния этого ΠΏΠΈΠ½Π°. ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
// Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠΈΠ½Π°
WiznetInterface.setPinCs(10);
  
// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΈΠ½Π°  
int16_t pin = WiznetInterface.pinCs() ;
  • Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° ΡˆΠΈΠ½Ρ‹ SPI, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° ΡˆΠΈΠ½Ρ‹. ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
// Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° ΡˆΠΈΠ½Ρ‹
WiznetInterface.setSpiBus(0);

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° ΡˆΠΈΠ½Ρ‹
uint8_t bus = WiznetInterface.spiBus()
  • Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ соСдинСния ΠΈ состояния Ρ‡ΠΈΠΏΠ° Π² миллисСкундах. ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - 1000.
// Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π°
WiznetInterface.setCheckStatusPeriod(2000);

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π°
uint32_t period = WiznetInterface.checkStatusPeriod();
  • Настройка ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² DHCP
// Π—Π°Π΄Π°Π½ΠΈΠ΅ значСния ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΏΠ΅Ρ€Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈ отсутствии соСдинСния с DHCP сСрвСром Π² миллисСкундах.
// ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
// Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - 5000
WiznetInterface.setReconnectionPeriod(6000);

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΏΠ΅Ρ€Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈ отсутствии соСдинСния с DHCP сСрвСром Π² миллисСкундах.
uint32_t period = WiznetInterface.reconnectionPeriod();

// Π—Π°Π΄Π°Π½ΠΈΠ΅ значСния Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° Π½Π° ΠΎΡ‚Π²Π΅Ρ‚ DHCP сСрвСра послС окончания ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ запрос, Π² миллисСкундах.
// ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
// Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - 6000.
WiznetInterface.setResponseDhcpTimeout(2000);

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° Π½Π° ΠΎΡ‚Π²Π΅Ρ‚ DHCP сСрвСра послС окончания ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ запрос, Π² миллисСкундах.
uint32_t timeout = WiznetInterface.responseDhcpTimeout();

// Π—Π°Π΄Π°Π½ΠΈΠ΅ значСния Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° Π½Π° вСсь процСсс запроса ΠΊ сСрвСру DHCP Π² миллисСкундах.
// ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
// Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - 20000.
WiznetInterface.setDhcpTimeout(30000);

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° Π½Π° вСсь процСсс запроса ΠΊ сСрвСру DHCP Π² миллисСкундах.
uint32_t timeout = WiznetInterface.dhcpTimeout();

// Π—Π°Π΄Π°Π½ΠΈΠ΅ значСния ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° обновлСния Π΄Π°Π½Π½Ρ‹Ρ… с сСрвСра DHCP Π² миллисСкундах.
// ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
// Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - 1800000.
WiznetInterface.setMaintainPeriod(200000);

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° обновлСния Π΄Π°Π½Π½Ρ‹Ρ… с сСрвСра DHCP Π² миллисСкундах.
uint32_t period = WiznetInterface.maintainPeriod();

// Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° получСния IP адрСса Ρ‡Π΅Ρ€Π΅Π· DHCP 
WiznetInterface.setDhcp();

// ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° получСния IP адрСса Ρ‡Π΅Ρ€Π΅Π· DHCP 
WiznetInterface.resetDhcp();

// Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ получСния IP адрСса Ρ‡Π΅Ρ€Π΅Π· DHCP (true - Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½, false - Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½)
WiznetInterface.dhcpMode(true);

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния Ρ€Π΅ΠΆΠΈΠΌΠ° получСния IP адрСса Ρ‡Π΅Ρ€Π΅Π· DHCP 
bool mode =  WiznetInterface.isDhcp();
  • Доступ ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ соСдинСния.
// Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ссли Π½Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ DHCP Ρ‚ΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ IP адрСса ΠΏΡ€ΠΈ соСдинСнии Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ сСрвСра DHCP!

// Π—Π°Π΄Π°Π½ΠΈΠ΅ Ip адрСса устройства.
// Π’ качСствС значСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ IPAddress Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹
WiznetInterface.localIP(IPAddress(192, 168, 1, 100));
WiznetInterface.localIP(192, 168, 1, 100);

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ IP адрСса устройства.
// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса IPAddress
IPAddress ip = WiznetInterface.localIP();

// Π—Π°Π΄Π°Π½ΠΈΠ΅ Ip адрСса DNS сСрвСра.
// Π’ качСствС значСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ IPAddress Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹
WiznetInterface.dns(IPAddress(192, 168, 1, 1));
WiznetInterface.dns(192, 168, 1, 1);

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ IP адрСса DNS сСрвСра
// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса IPAddress
IPAddress ip = WiznetInterface.dns();

// Π—Π°Π΄Π°Π½ΠΈΠ΅ Ip адрСса шлюза.
// Π’ качСствС значСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ IPAddress Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹
WiznetInterface.gateway(IPAddress(192, 168, 1, 1));
WiznetInterface.gateway(192, 168, 1, 1);

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ IP адрСса шлюза
// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса IPAddress
IPAddress ip = WiznetInterface.gateway();

// Π—Π°Π΄Π°Π½ΠΈΠ΅ маски подсСти. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ установлСна 255.255.255.0
// Π’ качСствС значСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ IPAddress Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹
WiznetInterface.subnet(IPAddress(255, 255, 255, 0));
WiznetInterface.subnet(255, 255, 255, );

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ маски подсСти
// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса IPAddress
IPAddress ip = WiznetInterface.subnet();

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ интСрфСйсом

// Π¦ΠΈΠΊΠ» Ρ€Π°Π±ΠΎΡ‚Ρ‹ интСрфСйса. 
// ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² сСкции loop().
// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Ρ†ΠΈΠΊΠ»Π° (описания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½ΠΈΠΆΠ΅).
uint8_t result = WiznetInterface.pool();

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° интСрфСйса (описания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² интСрфСйса Π½ΠΈΠΆΠ΅).
uint8_t type = WiznetInterface.type();

// Π€Π»Π°Π³, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ интСрфСйс Π½Π΅ поддСрТиваСтся Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ (true - интСрфСйс Π½Π΅ поддСрТиваСтся) 
bool isImitation = WiznetInterface.isImitation();

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ статуса интСрфСйса (описания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ статусов Π½ΠΈΠΆΠ΅).
uint8_t status = WiznetInterface.getStatus();

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ошибка интСрфСйса (описания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄ΠΎΠ² ошибок Π½ΠΈΠΆΠ΅).
uint8_t error = WiznetInterface.getError();

Класс FLProgOnBoardWifiInterface

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ интСрфСйса для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со встроСнным WiFi ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Π½Π° ΠΏΠ»Π°Ρ‚Π°Ρ… ESP8266 ΠΈ ESP32

FLProgOnBoardWifiInterface WifiInterface;

Настройка интСрфСйса

  • Установка MAC-адрСса Ρ‚ΠΎΡ‡ΠΊΠΈ доступа ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
// Установка нСпосрСдствСнно числами
WifiInterface.apMac (0x78, 0xAC, 0xC0, 0x2C, 0x3E, 0x40); // Π’ΠΎΡ‡ΠΊΠ°
WifiInterface.mac(0x78, 0xAC, 0xC0, 0x2C, 0x3E, 0x40); // ΠšΠ»ΠΈΠ΅Π½Ρ‚

// Установка ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ массива
uint8_t macAddr[6] = {0x78, 0xAC, 0xC0, 0x2C, 0x3E, 0x40};
WifiInterface. apMac(macAddr); // Π’ΠΎΡ‡ΠΊΠ°
WifiInterface.mac(macAddr); // ΠšΠ»ΠΈΠ΅Π½Ρ‚
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ MAC-адрСса Ρ‚ΠΎΡ‡ΠΊΠΈ доступа ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° массив ΠΈΠ· 6 элСмСнтов Ρ‚ΠΈΠΏΠ° uint8_t*.*
uint8_t *macAddres = WifiInterface.apMac(); // Π’ΠΎΡ‡ΠΊΠ°
uint8_t *macAddres = WifiInterface.mac(); // ΠšΠ»ΠΈΠ΅Π½Ρ‚
  • Настройка ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² DHCP ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
// Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° получСния IP адрСса Ρ‡Π΅Ρ€Π΅Π· DHCP 
WifiInterface.setDhcp();

// ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° получСния IP адрСса Ρ‡Π΅Ρ€Π΅Π· DHCP 
WifiInterface.resetDhcp();

// Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ получСния IP адрСса Ρ‡Π΅Ρ€Π΅Π· DHCP (true - Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½, false - Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½)
WifiInterface.dhcpMode(true);

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния Ρ€Π΅ΠΆΠΈΠΌΠ° получСния IP адрСса Ρ‡Π΅Ρ€Π΅Π· DHCP 
bool mode =  WifiInterface.isDhcp();
  • Доступ ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ соСдСнСния.
// Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ссли Π½Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ DHCP Ρ‚ΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ IP адрСса ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈ соСдинСнии Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ сСрвСра DHCP!

// Π—Π°Π΄Π°Π½ΠΈΠ΅ Ip адрСса  Ρ‚ΠΎΡ‡ΠΊΠΈ доступа ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
// Π’ качСствС значСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ IPAddress Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹
WifiInterface.apLocalIP(IPAddress(192, 168, 1, 100)); // Π’ΠΎΡ‡ΠΊΠ°
WifiInterface.apLocalIP(192, 168, 1, 100);            // Π’ΠΎΡ‡ΠΊΠ°

WifiInterface.localIP(IPAddress(192, 168, 1, 100)); // ΠšΠ»ΠΈΠ΅Π½Ρ‚
WifiInterface.localIP(192, 168, 1, 100);            // ΠšΠ»ΠΈΠ΅Π½Ρ‚


// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ IP адрСса Ρ‚ΠΎΡ‡ΠΊΠΈ доступа ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса IPAddress
IPAddress ip = WifiInterface.apLocalIP(); // Π’ΠΎΡ‡ΠΊΠ°
IPAddress ip = WifiInterface.localIP();   // ΠšΠ»ΠΈΠ΅Π½Ρ‚


// Π—Π°Π΄Π°Π½ΠΈΠ΅ Ip адрСса DNS сСрвСра.
// Π’ качСствС значСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ IPAddress Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹
WifiInterface.apDns(IPAddress(192, 168, 1, 1)); // Π’ΠΎΡ‡ΠΊΠ°
WifiInterface.apDns(192, 168, 1, 1);            // Π’ΠΎΡ‡ΠΊΠ°

WifiInterface.dns(IPAddress(192, 168, 1, 1)); // ΠšΠ»ΠΈΠ΅Π½Ρ‚
WifiInterface.dns(192, 168, 1, 1);            // ΠšΠ»ΠΈΠ΅Π½Ρ‚

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ IP адрСса DNS сСрвСра
// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса IPAddress
IPAddress ip = WifiInterface.apDns(); // Π’ΠΎΡ‡ΠΊΠ°
IPAddress ip = WifiInterface.dns();   // ΠšΠ»ΠΈΠ΅Π½Ρ‚


// Π—Π°Π΄Π°Π½ΠΈΠ΅ Ip адрСса шлюза.
// Π’ качСствС значСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ IPAddress Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹
WifiInterface.apGateway(IPAddress(192, 168, 1, 1)); // Π’ΠΎΡ‡ΠΊΠ°
WifiInterface.apGateway(192, 168, 1, 1);            // Π’ΠΎΡ‡ΠΊΠ°

WifiInterface.gateway(IPAddress(192, 168, 1, 1)); // ΠšΠ»ΠΈΠ΅Π½Ρ‚
WifiInterface.gateway(192, 168, 1, 1);            // ΠšΠ»ΠΈΠ΅Π½Ρ‚

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ IP адрСса шлюза
// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса IPAddress
IPAddress ip = WifiInterface.apGateway(); // Π’ΠΎΡ‡ΠΊΠ°
IPAddress ip = WifiInterface.gateway();   // ΠšΠ»ΠΈΠ΅Π½Ρ‚

// Π—Π°Π΄Π°Π½ΠΈΠ΅ маски подсСти. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ установлСна 255.255.255.0
// Π’ качСствС значСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ IPAddress Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹
WifiInterface.apSubnet(IPAddress(255, 255, 255, 0)); // Π’ΠΎΡ‡ΠΊΠ°
WifiInterface.apSubnet(255, 255, 255, );             // Π’ΠΎΡ‡ΠΊΠ°

WifiInterface.subnet(IPAddress(255, 255, 255, 0)); // ΠšΠ»ΠΈΠ΅Π½Ρ‚
WifiInterface.subnet(255, 255, 255, );             // ΠšΠ»ΠΈΠ΅Π½Ρ‚

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ маски подсСти
// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса IPAddress
IPAddress ip = WifiInterface.apSubnet(); // Π’ΠΎΡ‡ΠΊΠ°
IPAddress ip = WifiInterface.subnet();   // ΠšΠ»ΠΈΠ΅Π½Ρ‚

// Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ сСти (SSID) для Ρ‚ΠΎΡ‡ΠΊΠΈ доступа (пСрСдаСтся строка)
// ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎΡ‡ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ пСрСсозданна
WifiInterface.setApSsid("Test_Esp_Net");
 
// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния ΠΈΠΌΠ΅Π½ΠΈ сСти (SSID) для Ρ‚ΠΎΡ‡ΠΊΠΈ доступа
String name = WifiInterface.apSsid();

// Π—Π°Π΄Π°Π½ΠΈΠ΅  пароля для Ρ‚ΠΎΡ‡ΠΊΠΈ доступа (пСрСдаСтся строка)
// ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎΡ‡ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ пСрСсозданна
WifiInterface.setApPassword("password");

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния пароля для Ρ‚ΠΎΡ‡ΠΊΠΈ доступа
String name = WifiInterface.apPassworid();
    
// Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ сСти (SSID) для ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (пСрСдаСтся строка)
// ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ
WifiInterface.setClientSsid("Test_Net");
 
// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния ΠΈΠΌΠ΅Π½ΠΈ сСти (SSID) для ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
String name = WifiInterface.clientSsid();

// Π—Π°Π΄Π°Π½ΠΈΠ΅  пароля для ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (пСрСдаСтся строка)
// ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ
WifiInterface.setClientPassword("password");

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния пароля для ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
String name = WifiInterface.clientPassword();

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ интСрфСйсом

// Π¦ΠΈΠΊΠ» Ρ€Π°Π±ΠΎΡ‚Ρ‹ интСрфСйса. 
// ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² сСкции loop().
// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Ρ†ΠΈΠΊΠ»Π° (описания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½ΠΈΠΆΠ΅).
uint8_t result = WifiInterface.pool();

// Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ доступа
WifiInterface.apOn(); // Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ
WifiInterface.apOff(); //Π’Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ
WifiInterface.apMode(true); //Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ (true - Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, false - Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ)
bool  mode = WifiInterface.apMode() // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ (true - Π²ΠΊΠ», false - Π²Ρ‹ΠΊΠ»)
bool  status = WifiInterface.apIsReady() // Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС готовности

// Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ
WifiInterface.clientOn(); // Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Ρ‚Π½Π°
WifiInterface.clientOff(); //Π’Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Ρ‚Π½Π°
WifiInterface.clientMode(true); //Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ (true - Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, false - Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ)
bool  mode = WifiInterface.clientMode() // Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ (true - Π²ΠΊΠ», false - Π²Ρ‹ΠΊΠ»)
bool  status = WifiInterface.clientIsReady() // Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС готовности

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° интСрфСйса (описания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² интСрфСйса Π½ΠΈΠΆΠ΅).
uint8_t type = WifiInterface.type();

// Π€Π»Π°Π³, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ интСрфСйс Π½Π΅ поддСрТиваСтся Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ (true - интСрфСйс Π½Π΅ поддСрТиваСтся) 
bool isImitation = WifiInterface.isImitation();

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ статуса интСрфСйса (описания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ статусов Π½ΠΈΠΆΠ΅).
uint8_t status = WifiInterface.getStatus();

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ошибка интСрфСйса (описания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄ΠΎΠ² ошибок Π½ΠΈΠΆΠ΅).
uint8_t error = WifiInterface.getError();

PΠ°Π±ΠΎΡ‚Π° с TCP

Класс FLProgEthernetServer

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

  • Π˜Π½ΡΡ‚Π°Π½Ρ сСрвСра создаСтся Π½Π° основС ссылки Π½Π° экзСмпляр интСрфСйса, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚
// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сСрвСра с нСпосрСдствСнным ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡ€Ρ‚Π°
FLProgEthernetServer Server(&WiznetInterface, 80); 

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сСрвСра с Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (ΠΏΠΎΡ€Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 80)
FLProgEthernetServer Server(&WiznetInterface); 

Настройка сСрвСра

  • Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡ€Ρ‚Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ сСрвСр
    ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
Server.setPort(port);
  • Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π΅ запроса Π½Π° сСрвСр
    ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
    Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ void funk(void)
    Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π² сСкции loop() Π±ΡƒΠ΄Π΅Ρ‚ вызыватся ΠΌΠ΅Ρ‚ΠΎΠ΄ pool() сСрвСра
// Бинтаксис
Server.setCallback(funk);

// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ конструкции
#include "flprogEthernet.h"
FLProgWiznetInterface WiznetInterface;
FLProgEthernetServer server(&WiznetInterface);

void setup()
{
  WiznetInterface.mac(0x78, 0xAC, 0xC0, 0x2C, 0x3E, 0x40);
  server.setCallback(callBack);
}

void loop()
{
  WiznetInterface.pool();
  server.pool();
}

void callBack()
{
  // Π§ΠΈΡ‚Π°Π΅ΠΌ содСрТимоС запроса
  while (server.available())
  {
    uint8_t  byte = server.read();
    // ..........
  }
  // ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚
  server.write(100);
  // ..........

  // Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ соСдСнСниС
  server.stopConnection();
}

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСрвСром

  • Π¦ΠΈΠΊΠ» Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвСра.
    ВызываСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² сСкции loop().
    НСобходимо Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ссли Π·Π°Π΄Π°Π½Π½Π° функция Callbac.
Server.pool();
  • ΠŸΡ€Π²Π΅Ρ€ΠΊΠ° наличия ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΊ сСрвСру ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
bool hasClient = Server.connected();
  • ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΊ сСрвСру ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
 Server.stopConnection();
  • Полная ΠΎΡ‚Π°Π½ΠΎΠ²ΠΊΠ° сСрвСра.
 Server.stop();
  • ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π±Π°ΠΉΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
 int count = Server.available();
  • Π§Ρ‚Π΅Π½ΠΈΠ΅ Π±Π°ΠΉΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
// Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°
 uint8_t data = Server.read();

// Π§Ρ‚Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°ΠΉΡ‚ Π² Π±ΡƒΡ„Π΅Ρ€
uint8_t buffer[10];
Server.read(buffer, 10);

// Π§Ρ‚Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°ΠΉΡ‚ΠΎΠ² Π² Π½ΠΈΠΊΡƒΠ΄Π°
Server.readToNull(10);
  • ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π±Π°ΠΉΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ
// ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°
 Server.write(100);

// ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°ΠΉΡ‚ Ρ‡Π΅Ρ€Π΅Π· Π±ΡƒΡ„Π΅Ρ€
uint8_t buffer[5] = {1, 3, 5, 2, 3};
Server.write(buffer, 5);
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ сСрвСрС
// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΡ€Ρ‚Π° сСрвСра
  uint16_t port = Server.localPort();

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ IP адрСса ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
 IPAddress ip = Server.remoteIP();

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ€Ρ‚Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
uint16_t port = Server.remotePort(); 

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ статуса сСрвСра (описания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ статусов Π½ΠΈΠΆΠ΅).
uint8_t status = Server.getStatus();

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ошибка сСрвСра (описания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄ΠΎΠ² ошибок Π½ΠΈΠΆΠ΅).
uint8_t error = Server.getError();

Класс FLProgEthernetClient

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

  • Π˜Π½ΡΡ‚Π°Π½Ρ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° создаСтся Π½Π° основС ссылки Π½Π° экзСмпляр интСрфСйса, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΅Π΄Π΅Π½ΡΡ‚ΡŒΡΡ с сСрвСром
FLProgEthernetClient client(&WiznetInterface);

Настройка ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

  • Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° Π½Π° врСмя ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ соСдСнСния с сСрвСром Π² миллисСкундах
    Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 1000 ms
// Π—Π°Π΄Π°Π½ΠΈΠ΅ значСния
client.setConnectionTimeout(2000);

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния
uint16_t imeout = client.getConnectionTimeout();
  • Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ хранСния кэша DNS Π² миллисСкундах
    Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 60000 ms
// Π—Π°Π΄Π°Π½ΠΈΠ΅ значСния
client.setDnsCacheStorageTime(200000);

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния
uint32_t time = client.getDnsCacheStorageTime();

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ

  • Команда Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ IP ΠΈΠ»ΠΈ хосту ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΡ€Ρ‚Ρƒ
    ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π°Ρ, послС выполнСния Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ статус ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚Π°
// Команда Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ Ip адрСсу
client.connect(IPAddress(192, 168, 1, 1), 502);

// Команда Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΠΈΠΌΠ΅Π½ΠΈ хоста
char host[10] = "yandex.ru";
client.connect(host, 80);

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° состояния ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
bool isConnect = client.connected();
  • Запрос количСсва ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ сСрвСра Π±Π°ΠΉΡ‚
uint16_t = client.available();
  • ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΎΡ‚ сСрвСра.
 client.stop();
  • Π§Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ сСрвСра
// Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°
uint8_t = client.read();

// Π§Ρ‚Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°ΠΉΡ‚ Π² Π±ΡƒΡ„Π΅Ρ€
uint8_t buffer[10];
client.read(buffer, 10);

// Π§Ρ‚Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°ΠΉΡ‚ΠΎΠ² Π² Π½ΠΈΠΊΡƒΠ΄Π°
client.readToNull(10);
  • ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° сСрвСр
// ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°
 client.write(100);

// ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°ΠΉΡ‚ Ρ‡Π΅Ρ€Π΅Π· Π±ΡƒΡ„Π΅Ρ€
uint8_t buffer[5] = {1, 3, 5, 2, 3};
client.write(buffer, 5);
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅
// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΡ€Ρ‚Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
  uint16_t port = Server.localPort();

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ IP адрСса ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ сСрвСра
 IPAddress ip = client.remoteIP();

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ€Ρ‚Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ сСрвСра
uint16_t port = client.remotePort(); 

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ статуса ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (описания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ статусов Π½ΠΈΠΆΠ΅).
uint8_t status = client.getStatus();

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ошибка ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (описания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄ΠΎΠ² ошибок Π½ΠΈΠΆΠ΅).
uint8_t error = client.getError();

PΠ°Π±ΠΎΡ‚Π° с UDP

Класс FLProgUdpClient

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

  • Π˜Π½ΡΡ‚Π°Π½Ρ UDP ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° создаСтся Π½Π° основС ссылки Π½Π° экзСмпляр интСрфСйса, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
FLProgUdpClient Udp(&WiznetInterface);

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0