Nikitos
New member
Добрый день! Возникла проблема при передаче данных от скрипта Python, который запущен на ПК ESP8266 с помощью протокола UDP (также подобная проблема появлялась и при использовании TCP). Суть проблемы: пропадает WiFi сеть и проводной интернет на ПК, который подключен к роутеру ZyXEL. Данные отправляю 10 раз в секунду. Wireshark видит запросы, размер одного запроса 57 байт.
C++:
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
const char* ssid = "ZyXEL";
const char* password = "*******";
WiFiUDP Udp;
unsigned int localUdpPort = 4210; // локальный порт для прослушки
char incomingPacket[1024]; // буфер для входящих пакетов
String getString = "abvgdefg 123 456";
void setup()
{
Serial.begin(9600);
Serial.println();
Serial.printf("Connecting to %s ", ssid);
// "Подключение к %s "
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println(" connected");
// " подключено "
Udp.begin(localUdpPort);
Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort);
// "Теперь прослушиваем IP-адрес %s, UDP-порт %d"
}
void loop()
{
int packetSize = Udp.parsePacket();
if (packetSize)
{
// получаем входящие UDP-пакеты:
int len = Udp.read(incomingPacket, 255);
if (len > 0)
{
incomingPacket[len] = 0;
}
getString = String(incomingPacket);
Serial.printf("UDP packet contents: %s\n", incomingPacket);
// "Содержимое UDP-пакета: %s"
}
}
Python:
from socket import *
import sys
host = '192.168.0.3'
port = 4210
addr = (host,port)
udp_socket = socket(AF_INET, SOCK_DGRAM)
import time
time.sleep(0.2)
for i in range(10000):
data = str(i) + "draww 1 2 3"
# data = input('write to server: ')
if not data :
udp_socket.close()
sys.exit(1)
#encode - перекодирует введенные данные в байты, decode - обратно
data = str.encode(data)
ok = udp_socket.sendto(data , addr)
time.sleep(0.14)
print("ok", ok, i)
udp_socket.close()