первый тест. непонятно что, но надо сделать эксельку для анализа всякого
This commit is contained in:
parent
64db7ec184
commit
aee6552c5b
406
ESP_WifiTest.ino
406
ESP_WifiTest.ino
@ -1,11 +1,12 @@
|
|||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#include <Preferences.h>
|
||||||
#include "logs.h"
|
#include "logs.h"
|
||||||
#include <Adafruit_NeoPixel.h>
|
#include <Adafruit_NeoPixel.h>
|
||||||
|
|
||||||
// -------------------- НАСТРОЙКИ --------------------
|
// -------------------- НАСТРОЙКИ --------------------
|
||||||
char ssid[32] = "";
|
char ssid[32] = "";
|
||||||
char password[32] = "";
|
char password[32] = "";
|
||||||
char serverIP[32] = "198.168.0.1";
|
char serverIP[32] = "";
|
||||||
|
|
||||||
#define NEOPIXEL_PIN 48
|
#define NEOPIXEL_PIN 48
|
||||||
#define NUMPIXELS 1
|
#define NUMPIXELS 1
|
||||||
@ -14,13 +15,55 @@ char serverIP[32] = "198.168.0.1";
|
|||||||
#define SERVER // раскомментировать для сервера
|
#define SERVER // раскомментировать для сервера
|
||||||
|
|
||||||
// -------------------- ФУНКЦИИ --------------------
|
// -------------------- ФУНКЦИИ --------------------
|
||||||
|
|
||||||
|
#ifndef SERVER
|
||||||
|
#undef NEOPIXEL_PIN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef NEOPIXEL_PIN
|
||||||
Adafruit_NeoPixel pixels(NUMPIXELS, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800);
|
Adafruit_NeoPixel pixels(NUMPIXELS, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800);
|
||||||
|
#endif
|
||||||
uint8_t brightness = 0; // 0 = выкл, 255 = макс
|
uint8_t brightness = 0; // 0 = выкл, 255 = макс
|
||||||
bool greenOn = false;
|
bool greenOn = false;
|
||||||
|
|
||||||
|
uint32_t sendInterval = 2000; // 500 мс между отправками
|
||||||
|
|
||||||
LogModule logger;
|
LogModule logger;
|
||||||
|
Preferences prefs; // для сохранения настроек
|
||||||
|
|
||||||
|
void saveSettings() {
|
||||||
|
prefs.begin("network", false);
|
||||||
|
prefs.putString("ssid", ssid);
|
||||||
|
prefs.putString("pass", password);
|
||||||
|
prefs.putString("ip", serverIP);
|
||||||
|
prefs.putUInt("delay", sendInterval); // сохраняем период отправки
|
||||||
|
prefs.end();
|
||||||
|
Serial.println("Settings saved");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void loadSettings() {
|
||||||
|
prefs.begin("network", true);
|
||||||
|
String s = prefs.getString("ssid", "Xiaomi 12");
|
||||||
|
String p = prefs.getString("pass", "890089JJ");
|
||||||
|
String ip = prefs.getString("ip", "10.251.43.192");
|
||||||
|
sendInterval = prefs.getUInt("delay", 2000); // восстанавливаем период
|
||||||
|
prefs.end();
|
||||||
|
|
||||||
|
s.toCharArray(ssid, sizeof(ssid));
|
||||||
|
p.toCharArray(password, sizeof(password));
|
||||||
|
ip.toCharArray(serverIP, sizeof(serverIP));
|
||||||
|
|
||||||
|
Serial.println("Settings loaded:");
|
||||||
|
Serial.print("SSID: "); Serial.println(ssid);
|
||||||
|
Serial.print("PASS: "); Serial.println(password);
|
||||||
|
Serial.print("IP: "); Serial.println(serverIP);
|
||||||
|
Serial.print("Send interval: "); Serial.println(sendInterval);
|
||||||
|
}
|
||||||
|
|
||||||
void toggleGreen() {
|
void toggleGreen() {
|
||||||
|
#ifdef NEOPIXEL_PIN
|
||||||
greenOn = !greenOn; // меняем состояние
|
greenOn = !greenOn; // меняем состояние
|
||||||
if (greenOn) {
|
if (greenOn) {
|
||||||
pixels.setPixelColor(0, pixels.Color(0, BRIGHTNESS, 0)); // включаем зелёный
|
pixels.setPixelColor(0, pixels.Color(0, BRIGHTNESS, 0)); // включаем зелёный
|
||||||
@ -28,21 +71,28 @@ void toggleGreen() {
|
|||||||
pixels.setPixelColor(0, pixels.Color(0, 0, 0)); // выключаем
|
pixels.setPixelColor(0, pixels.Color(0, 0, 0)); // выключаем
|
||||||
}
|
}
|
||||||
pixels.show();
|
pixels.show();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void setRed() {
|
void setRed() {
|
||||||
|
#ifdef NEOPIXEL_PIN
|
||||||
pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, 0, 0));
|
pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, 0, 0));
|
||||||
pixels.show();
|
pixels.show();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void setYellow() {
|
void setYellow() {
|
||||||
|
#ifdef NEOPIXEL_PIN
|
||||||
pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, BRIGHTNESS, 0));
|
pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, BRIGHTNESS, 0));
|
||||||
pixels.show();
|
pixels.show();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void clearLED() {
|
void clearLED() {
|
||||||
|
#ifdef NEOPIXEL_PIN
|
||||||
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
|
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
|
||||||
pixels.show();
|
pixels.show();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
// -------------------- РЕЖИМЫ --------------------
|
// -------------------- РЕЖИМЫ --------------------
|
||||||
#ifdef SERVER
|
#ifdef SERVER
|
||||||
@ -50,57 +100,166 @@ WiFiServer server(1234);
|
|||||||
#else
|
#else
|
||||||
WiFiClient client;
|
WiFiClient client;
|
||||||
#endif
|
#endif
|
||||||
|
int run_client = 1;
|
||||||
|
int client_init = 0;
|
||||||
|
|
||||||
// -------------------- Wi-Fi --------------------
|
// -------------------- Wi-Fi --------------------
|
||||||
bool wifiConnecting = false;
|
bool wifiConnecting = false;
|
||||||
|
bool wifiNeedReconnect = false;
|
||||||
|
uint32_t wifiStartMillis = 0;
|
||||||
|
|
||||||
void startWiFi() {
|
void startWiFi() {
|
||||||
WiFi.disconnect(true);
|
Serial.println("Connecting to WiFi...");
|
||||||
|
WiFi.disconnect(true, true);
|
||||||
|
delay(1000);
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
wifiConnecting = true;
|
wifiConnecting = true;
|
||||||
Serial.print("Connecting to WiFi");
|
wifiStartMillis = millis();
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleWiFi() {
|
void handleWiFi() {
|
||||||
static uint32_t lastCheck = 0;
|
static uint32_t lastCheck = 0;
|
||||||
const uint32_t interval = 500; // проверять каждые 500 мс
|
const uint32_t interval = 500;
|
||||||
|
|
||||||
if (millis() - lastCheck < interval) return;
|
if (millis() - lastCheck < interval) return;
|
||||||
lastCheck = millis();
|
lastCheck = millis();
|
||||||
|
|
||||||
if (WiFi.status() == WL_CONNECTED) {
|
if (wifiNeedReconnect) {
|
||||||
|
wifiNeedReconnect = false;
|
||||||
|
startWiFi();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wl_status_t status = WiFi.status();
|
||||||
|
if (status == WL_CONNECTED) {
|
||||||
if (wifiConnecting) {
|
if (wifiConnecting) {
|
||||||
wifiConnecting = false;
|
wifiConnecting = false;
|
||||||
clearLED();
|
clearLED();
|
||||||
Serial.println("\nWiFi connected");
|
Serial.println("WiFi connected");
|
||||||
Serial.print("IP: "); Serial.println(WiFi.localIP());
|
Serial.print("IP: "); Serial.println(WiFi.localIP());
|
||||||
#ifdef SERVER
|
#ifdef SERVER
|
||||||
server.begin();
|
server.begin();
|
||||||
}
|
#else
|
||||||
#else
|
if(!client.connected())
|
||||||
else {
|
{
|
||||||
if (!client.connected()) {
|
|
||||||
if (WiFi.status() != WL_CONNECTED) return;
|
|
||||||
setYellow();
|
|
||||||
if (client.connect(serverIP, 1234)) {
|
if (client.connect(serverIP, 1234)) {
|
||||||
clearLED();
|
clearLED();
|
||||||
Serial.println("Connected to server");
|
client_init = 1;
|
||||||
|
Serial.println("Connected to server");
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
}
|
{
|
||||||
|
setRed();
|
||||||
|
Serial.println("Server connect error. Reconnecting...");
|
||||||
|
wifiConnecting = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
setRed();
|
setRed();
|
||||||
if (!wifiConnecting) {
|
if (wifiConnecting && millis() - wifiStartMillis > 10000) { // 10 секунд таймаут
|
||||||
Serial.println("\nWiFi disconnected. Reconnecting...");
|
Serial.println("WiFi connect timeout. Reconnecting...");
|
||||||
startWiFi();
|
startWiFi();
|
||||||
|
} else if (!wifiConnecting) {
|
||||||
|
Serial.println("WiFi disconnected. Scheduling reconnect...");
|
||||||
|
wifiNeedReconnect = true;
|
||||||
} else {
|
} else {
|
||||||
Serial.print(".");
|
Serial.print(".");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef SERVER
|
||||||
|
// -------------------- CLIENT --------------------
|
||||||
|
bool checkClientAlive() {
|
||||||
|
if (!client.connected()) return false;
|
||||||
|
|
||||||
|
client.write(""); // отправляем пустой пакет
|
||||||
|
if (!client.connected()) {
|
||||||
|
client.stop();
|
||||||
|
|
||||||
|
|
||||||
|
client_init = 0;
|
||||||
|
wifiConnecting = true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef SERVER
|
||||||
|
// -------------------- SERVER --------------------
|
||||||
|
static String lastClientIP = "";
|
||||||
|
|
||||||
|
void handleServer() {
|
||||||
|
static WiFiClient clientConn;
|
||||||
|
|
||||||
|
if (!clientConn || !clientConn.connected()) {
|
||||||
|
clientConn = server.available();
|
||||||
|
if (clientConn) {
|
||||||
|
String clientIP = clientConn.remoteIP().toString();
|
||||||
|
Serial.println("Client connected: " + clientIP);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clientConn.available()) {
|
||||||
|
String msg = clientConn.readStringUntil('\n');
|
||||||
|
msg.trim();
|
||||||
|
if (msg.length() == 0) return;
|
||||||
|
|
||||||
|
LogEntry entry;
|
||||||
|
entry.seq = 0;
|
||||||
|
entry.ts = 0;
|
||||||
|
entry.event_type = 0; // RECEIVE
|
||||||
|
memset(entry.payload, 0, sizeof(entry.payload));
|
||||||
|
|
||||||
|
int seqIndex = msg.indexOf("SEQ:");
|
||||||
|
int tsIndex = msg.indexOf("TS:");
|
||||||
|
int payloadIndex = msg.indexOf("PAYLOAD:");
|
||||||
|
|
||||||
|
if (seqIndex >= 0 && tsIndex > seqIndex && payloadIndex > tsIndex) {
|
||||||
|
String seqStr = msg.substring(seqIndex + 4, tsIndex); seqStr.trim();
|
||||||
|
String tsStr = msg.substring(tsIndex + 3, payloadIndex); tsStr.trim();
|
||||||
|
String payloadStr = msg.substring(payloadIndex + 8); payloadStr.trim();
|
||||||
|
|
||||||
|
entry.seq = seqStr.toInt();
|
||||||
|
entry.ts = strtoull(tsStr.c_str(), nullptr, 10);
|
||||||
|
int len = min((int)payloadStr.length(), 16);
|
||||||
|
payloadStr.toCharArray(entry.payload, len + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Сохраняем лог
|
||||||
|
logger.writeLog(entry);
|
||||||
|
Serial.print("Received: "); Serial.println(msg);
|
||||||
|
|
||||||
|
toggleGreen();
|
||||||
|
|
||||||
|
// Создаем SEND-запись
|
||||||
|
LogEntry sendEntry = entry;
|
||||||
|
sendEntry.ts = millis();
|
||||||
|
sendEntry.event_type = 1; // SEND
|
||||||
|
logger.writeLog(sendEntry);
|
||||||
|
|
||||||
|
// Echo для клиента
|
||||||
|
String echo = "SEQ:" + String(sendEntry.seq) +
|
||||||
|
" TS:" + String(sendEntry.ts) +
|
||||||
|
" EVT:SEND PAYLOAD:" + String(sendEntry.payload) + "\n";
|
||||||
|
|
||||||
|
if (clientConn.print(echo)) {
|
||||||
|
Serial.print("Sent: "); Serial.println(echo);
|
||||||
|
} else {
|
||||||
|
client_init = 0;
|
||||||
|
Serial.println("Error sending to client");
|
||||||
|
setRed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
// -------------------- UART ДЛЯ НАСТРОЕК --------------------
|
// -------------------- UART ДЛЯ НАСТРОЕК --------------------
|
||||||
void handleUARTNetwork() {
|
void handleUARTNetwork() {
|
||||||
@ -117,23 +276,49 @@ void handleUARTNetwork() {
|
|||||||
|
|
||||||
if (cmd == "SSID") {
|
if (cmd == "SSID") {
|
||||||
val.toCharArray((char*)ssid, 32);
|
val.toCharArray((char*)ssid, 32);
|
||||||
Serial.print("\nSSID set to: "); Serial.println(ssid);
|
Serial.print("\nSSID set to: "); Serial.println(ssid);
|
||||||
startWiFi();
|
saveSettings();
|
||||||
|
wifiNeedReconnect = true; // для клиента тоже полезно
|
||||||
}
|
}
|
||||||
else if (cmd == "PASS") {
|
else if (cmd == "PASS") {
|
||||||
val.toCharArray((char*)password, 32);
|
val.toCharArray((char*)password, 32);
|
||||||
Serial.print("\nPassword set to: "); Serial.println(password);
|
Serial.print("\nPassword set to: "); Serial.println(password);
|
||||||
startWiFi();
|
saveSettings();
|
||||||
|
wifiNeedReconnect = true; // для клиента тоже полезно
|
||||||
}
|
}
|
||||||
else if (cmd == "IP") {
|
else if (cmd == "IP") {
|
||||||
val.toCharArray((char*)serverIP, 16);
|
val.toCharArray((char*)serverIP, 16);
|
||||||
Serial.print("\nServer IP set to: "); Serial.println(serverIP);
|
Serial.print("\nServer IP set to: "); Serial.println(serverIP);
|
||||||
|
saveSettings();
|
||||||
|
wifiNeedReconnect = true; // для клиента тоже полезно
|
||||||
|
}
|
||||||
|
else if (cmd == "DELAY") {
|
||||||
|
uint32_t newDelay = val.toInt();
|
||||||
|
if (newDelay > 0) {
|
||||||
|
sendInterval = newDelay;
|
||||||
|
Serial.print("\nSend interval set to: "); Serial.println(sendInterval);
|
||||||
|
saveSettings();
|
||||||
|
} else {
|
||||||
|
Serial.println("Invalid DELAY value");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
logger.handleUART(buffer[0]); // передаем неизвестные команды в логгер
|
logger.handleUART(buffer[0]); // передаем неизвестные команды в логгер
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.handleUART(buffer[0]); // нет пробела — считаем команду неизвестной
|
String cmd = buffer.substring(0, 1);
|
||||||
|
if (cmd == "s")
|
||||||
|
{
|
||||||
|
run_client = 0;
|
||||||
|
}
|
||||||
|
else if (cmd == "r")
|
||||||
|
{
|
||||||
|
run_client = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logger.handleUART(buffer[0]); // нет пробела — считаем команду неизвестной
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
buffer = "";
|
buffer = "";
|
||||||
@ -151,8 +336,12 @@ void setup() {
|
|||||||
delay(1000);
|
delay(1000);
|
||||||
|
|
||||||
logger.begin();
|
logger.begin();
|
||||||
|
#ifdef NEOPIXEL_PIN
|
||||||
pixels.begin();
|
pixels.begin();
|
||||||
pixels.show();
|
pixels.show();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
loadSettings(); // загружаем сохраненные настройки
|
||||||
|
|
||||||
#ifdef SERVER
|
#ifdef SERVER
|
||||||
Serial.println("SERVER MODE: Enter SSID and PASS via UART, e.g.:\nSSID MyWiFi\nPASS 12345678");
|
Serial.println("SERVER MODE: Enter SSID and PASS via UART, e.g.:\nSSID MyWiFi\nPASS 12345678");
|
||||||
@ -167,80 +356,26 @@ void loop() {
|
|||||||
if (WiFi.status() != WL_CONNECTED) return;
|
if (WiFi.status() != WL_CONNECTED) return;
|
||||||
|
|
||||||
#ifdef SERVER
|
#ifdef SERVER
|
||||||
|
handleServer();
|
||||||
|
|
||||||
WiFiClient clientConn = server.available();
|
|
||||||
if (!clientConn) return;
|
|
||||||
|
|
||||||
Serial.println("Client connected");
|
|
||||||
while (clientConn.connected()) {
|
|
||||||
if (clientConn.available()) {
|
|
||||||
String msg = clientConn.readStringUntil('\n');
|
|
||||||
msg.trim();
|
|
||||||
if (msg.length() == 0) continue;
|
|
||||||
|
|
||||||
// Разбор входящего сообщения
|
|
||||||
LogEntry entry;
|
|
||||||
entry.seq = 0;
|
|
||||||
entry.ts = 0;
|
|
||||||
entry.event_type = 0; // RECEIVE
|
|
||||||
memset(entry.payload, 0, sizeof(entry.payload));
|
|
||||||
|
|
||||||
int seqIndex = msg.indexOf("SEQ:");
|
|
||||||
int tsIndex = msg.indexOf("TS:");
|
|
||||||
int payloadIndex = msg.indexOf("PAYLOAD:");
|
|
||||||
|
|
||||||
if (seqIndex >= 0 && tsIndex > seqIndex && payloadIndex > tsIndex) {
|
|
||||||
String seqStr = msg.substring(seqIndex + 4, tsIndex);
|
|
||||||
seqStr.trim();
|
|
||||||
String tsStr = msg.substring(tsIndex + 3, payloadIndex);
|
|
||||||
tsStr.trim();
|
|
||||||
String payloadStr = msg.substring(payloadIndex + 8);
|
|
||||||
payloadStr.trim();
|
|
||||||
|
|
||||||
entry.seq = seqStr.toInt();
|
|
||||||
entry.ts = strtoull(tsStr.c_str(), nullptr, 10);
|
|
||||||
int len = min((int)payloadStr.length(), 16);
|
|
||||||
payloadStr.toCharArray(entry.payload, len + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Сохраняем лог
|
|
||||||
logger.writeLog(entry);
|
|
||||||
Serial.print("Received: "); Serial.println(msg);
|
|
||||||
|
|
||||||
toggleGreen();
|
|
||||||
|
|
||||||
// Создаем SEND-запись
|
|
||||||
LogEntry sendEntry = entry;
|
|
||||||
sendEntry.ts = millis();
|
|
||||||
sendEntry.event_type = 1; // SEND
|
|
||||||
logger.writeLog(sendEntry);
|
|
||||||
|
|
||||||
// Echo для клиента
|
|
||||||
String echo = "SEQ:" + String(sendEntry.seq) +
|
|
||||||
" TS:" + String(sendEntry.ts) +
|
|
||||||
" EVT:SEND PAYLOAD:" + String(sendEntry.payload) + "\n";
|
|
||||||
|
|
||||||
if (clientConn.print(echo)) {
|
|
||||||
Serial.print("Sent: "); Serial.println(echo);
|
|
||||||
} else {
|
|
||||||
Serial.println("Error sending to client");
|
|
||||||
setRed();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
clientConn.stop();
|
|
||||||
Serial.println("Client disconnected");
|
|
||||||
|
|
||||||
#else // CLIENT
|
#else // CLIENT
|
||||||
static uint32_t lastSendMillis = 0; // время последней отправки
|
static uint32_t lastSendMillis = 0; // время последней отправки
|
||||||
const uint32_t sendInterval = 500; // 500 мс между отправками
|
|
||||||
static uint16_t seqNum = 1;
|
static uint16_t seqNum = 1;
|
||||||
|
|
||||||
if (!client.connected()) return;
|
|
||||||
|
if (run_client == 0) return;
|
||||||
|
|
||||||
|
checkClientAlive();
|
||||||
|
if (client_init == 0) {
|
||||||
|
client.stop();
|
||||||
|
client_init = 0;
|
||||||
|
wifiConnecting = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// проверяем, пора ли отправлять сообщение
|
// проверяем, пора ли отправлять сообщение
|
||||||
if (millis() - lastSendMillis >= sendInterval) {
|
if (millis() - lastSendMillis >= sendInterval) {
|
||||||
|
|
||||||
lastSendMillis = millis(); // фиксируем время отправки
|
lastSendMillis = millis(); // фиксируем время отправки
|
||||||
String msg = "SEQ:" + String(seqNum) + " TS:" + String(millis()) + " PAYLOAD:Hard!Text^?123\n";
|
String msg = "SEQ:" + String(seqNum) + " TS:" + String(millis()) + " PAYLOAD:Hard!Text^?123\n";
|
||||||
|
|
||||||
@ -251,39 +386,76 @@ void loop() {
|
|||||||
// Сохраняем SEND-запись
|
// Сохраняем SEND-запись
|
||||||
LogEntry entry;
|
LogEntry entry;
|
||||||
entry.seq = seqNum;
|
entry.seq = seqNum;
|
||||||
entry.ts = millis();
|
entry.ts = lastSendMillis;
|
||||||
entry.event_type = 1; // SEND
|
entry.event_type = 1; // SEND
|
||||||
msg.substring(msg.indexOf("PAYLOAD:") + 8).toCharArray(entry.payload, 16);
|
msg.substring(msg.indexOf("PAYLOAD:") + 8).toCharArray(entry.payload, 16);
|
||||||
logger.writeLog(entry);
|
logger.writeLog(entry);
|
||||||
|
|
||||||
seqNum++;
|
// Ждем ответ от сервера с таймаутом 10 секунд
|
||||||
|
uint32_t startWait = millis();
|
||||||
|
bool ackReceived = false;
|
||||||
|
|
||||||
|
while (millis() - startWait < 5000) { // 10 секунд
|
||||||
|
if (client.available()) {
|
||||||
|
String resp = client.readStringUntil('\n');
|
||||||
|
resp.trim();
|
||||||
|
if (resp.length() == 0) continue;
|
||||||
|
|
||||||
|
Serial.print("Received: "); Serial.println(resp);
|
||||||
|
|
||||||
|
// Сохраняем RECEIVE-запись
|
||||||
|
LogEntry recvEntry;
|
||||||
|
int seqIndex = resp.indexOf("SEQ:");
|
||||||
|
int tsIndex = resp.indexOf("TS:");
|
||||||
|
int payloadIndex = resp.indexOf("PAYLOAD:");
|
||||||
|
|
||||||
|
if (seqIndex >= 0 && tsIndex > seqIndex && payloadIndex > tsIndex) {
|
||||||
|
String seqStr = resp.substring(seqIndex + 4, tsIndex);
|
||||||
|
String tsStr = resp.substring(tsIndex + 3, payloadIndex);
|
||||||
|
String payloadStr = resp.substring(payloadIndex + 8);
|
||||||
|
|
||||||
|
seqStr.trim();
|
||||||
|
tsStr.trim();
|
||||||
|
payloadStr.trim();
|
||||||
|
|
||||||
|
recvEntry.seq = seqStr.toInt();
|
||||||
|
recvEntry.ts = strtoull(tsStr.c_str(), nullptr, 10);
|
||||||
|
recvEntry.event_type = 0; // RECEIVE
|
||||||
|
memset(recvEntry.payload, 0, sizeof(recvEntry.payload));
|
||||||
|
int len = min((int)payloadStr.length(), 16);
|
||||||
|
payloadStr.toCharArray(recvEntry.payload, len + 1);
|
||||||
|
|
||||||
|
logger.writeLog(recvEntry);
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleGreen();
|
||||||
|
|
||||||
|
// Проверяем, что это ответ на текущее сообщение
|
||||||
|
if (resp.startsWith("SEQ:" + String(seqNum))) {
|
||||||
|
ackReceived = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delay(10); // небольшая пауза, чтобы не заблокировать loop
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ackReceived) {
|
||||||
|
Serial.println("No response from server for 10s. Reconnecting...");
|
||||||
|
client.stop();
|
||||||
|
client_init = 0;
|
||||||
|
wifiNeedReconnect = true;
|
||||||
|
setRed();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
seqNum++; // увеличиваем только после получения ответа
|
||||||
} else {
|
} else {
|
||||||
Serial.println("Error sending");
|
Serial.println("Error sending");
|
||||||
|
client.stop();
|
||||||
|
client_init = 0;
|
||||||
|
wifiNeedReconnect = true;
|
||||||
setRed();
|
setRed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Чтение ответа без блокировки
|
|
||||||
while (client.available()) {
|
|
||||||
String resp = client.readStringUntil('\n');
|
|
||||||
resp.trim();
|
|
||||||
if (resp.length() == 0) continue;
|
|
||||||
|
|
||||||
Serial.print("Received: "); Serial.println(resp);
|
|
||||||
|
|
||||||
// Сохраняем RECEIVE-запись
|
|
||||||
LogEntry entry;
|
|
||||||
entry.seq = resp.indexOf("SEQ:");
|
|
||||||
entry.ts = resp.indexOf("TS:");
|
|
||||||
entry.event_type = 0; // RECEIVE
|
|
||||||
int payloadIndex = resp.indexOf("PAYLOAD:");
|
|
||||||
if (payloadIndex >= 0) {
|
|
||||||
String payloadStr = resp.substring(payloadIndex + 8);
|
|
||||||
payloadStr.toCharArray(entry.payload, 16);
|
|
||||||
}
|
|
||||||
logger.writeLog(entry);
|
|
||||||
|
|
||||||
toggleGreen();
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
221
RAW_client.csv
Normal file
221
RAW_client.csv
Normal file
@ -0,0 +1,221 @@
|
|||||||
|
SEQ;TS;EVT;PAYLOAD
|
||||||
|
1;238759;SEND;Hard!Text^?123
|
||||||
|
1;3301;SEND;Hard!Text^?123
|
||||||
|
1;5238;SEND;Hard!Text^?123
|
||||||
|
1;8022;SEND;Hard!Text^?123
|
||||||
|
1;27779;SEND;Hard!Text^?123
|
||||||
|
1;116567;SEND;Hard!Text^?123
|
||||||
|
1;6312;RECV;Hard!Text^?123
|
||||||
|
2;118567;SEND;Hard!Text^?123
|
||||||
|
2;8514;RECV;Hard!Text^?123
|
||||||
|
3;120568;SEND;Hard!Text^?123
|
||||||
|
3;10358;RECV;Hard!Text^?123
|
||||||
|
4;122569;SEND;Hard!Text^?123
|
||||||
|
4;12407;RECV;Hard!Text^?123
|
||||||
|
5;124569;SEND;Hard!Text^?123
|
||||||
|
5;14454;RECV;Hard!Text^?123
|
||||||
|
6;126571;SEND;Hard!Text^?123
|
||||||
|
6;16513;RECV;Hard!Text^?123
|
||||||
|
7;128571;SEND;Hard!Text^?123
|
||||||
|
7;18344;RECV;Hard!Text^?123
|
||||||
|
8;130571;SEND;Hard!Text^?123
|
||||||
|
8;20392;RECV;Hard!Text^?123
|
||||||
|
9;132572;SEND;Hard!Text^?123
|
||||||
|
9;22440;RECV;Hard!Text^?123
|
||||||
|
10;134573;SEND;Hard!Text^?123
|
||||||
|
10;24490;RECV;Hard!Text^?123
|
||||||
|
11;136573;SEND;Hard!Text^?123
|
||||||
|
11;26332;RECV;Hard!Text^?123
|
||||||
|
12;138573;SEND;Hard!Text^?123
|
||||||
|
12;28387;RECV;Hard!Text^?123
|
||||||
|
13;140574;SEND;Hard!Text^?123
|
||||||
|
13;30750;RECV;Hard!Text^?123
|
||||||
|
14;142576;SEND;Hard!Text^?123
|
||||||
|
14;32477;RECV;Hard!Text^?123
|
||||||
|
15;144577;SEND;Hard!Text^?123
|
||||||
|
15;34834;RECV;Hard!Text^?123
|
||||||
|
16;147468;SEND;Hard!Text^?123
|
||||||
|
16;37803;RECV;Hard!Text^?123
|
||||||
|
17;149469;SEND;Hard!Text^?123
|
||||||
|
17;39235;RECV;Hard!Text^?123
|
||||||
|
18;151471;SEND;Hard!Text^?123
|
||||||
|
18;41282;RECV;Hard!Text^?123
|
||||||
|
19;153471;SEND;Hard!Text^?123
|
||||||
|
19;43330;RECV;Hard!Text^?123
|
||||||
|
20;155473;SEND;Hard!Text^?123
|
||||||
|
20;45378;RECV;Hard!Text^?123
|
||||||
|
21;157476;SEND;Hard!Text^?123
|
||||||
|
21;47324;RECV;Hard!Text^?123
|
||||||
|
22;159477;SEND;Hard!Text^?123
|
||||||
|
22;49272;RECV;Hard!Text^?123
|
||||||
|
23;161478;SEND;Hard!Text^?123
|
||||||
|
23;51525;RECV;Hard!Text^?123
|
||||||
|
24;163479;SEND;Hard!Text^?123
|
||||||
|
24;53366;RECV;Hard!Text^?123
|
||||||
|
25;165481;SEND;Hard!Text^?123
|
||||||
|
25;55311;RECV;Hard!Text^?123
|
||||||
|
26;167484;SEND;Hard!Text^?123
|
||||||
|
26;57256;RECV;Hard!Text^?123
|
||||||
|
27;169487;SEND;Hard!Text^?123
|
||||||
|
27;59308;RECV;Hard!Text^?123
|
||||||
|
28;171489;SEND;Hard!Text^?123
|
||||||
|
28;61252;RECV;Hard!Text^?123
|
||||||
|
29;173490;SEND;Hard!Text^?123
|
||||||
|
29;63549;RECV;Hard!Text^?123
|
||||||
|
30;175493;SEND;Hard!Text^?123
|
||||||
|
30;65557;RECV;Hard!Text^?123
|
||||||
|
31;177494;SEND;Hard!Text^?123
|
||||||
|
31;67292;RECV;Hard!Text^?123
|
||||||
|
32;179497;SEND;Hard!Text^?123
|
||||||
|
32;70981;RECV;Hard!Text^?123
|
||||||
|
33;181500;SEND;Hard!Text^?123
|
||||||
|
33;73028;RECV;Hard!Text^?123
|
||||||
|
34;183521;SEND;Hard!Text^?123
|
||||||
|
34;73437;RECV;Hard!Text^?123
|
||||||
|
35;185524;SEND;Hard!Text^?123
|
||||||
|
35;75491;RECV;Hard!Text^?123
|
||||||
|
36;187526;SEND;Hard!Text^?123
|
||||||
|
36;77430;RECV;Hard!Text^?123
|
||||||
|
37;192526;SEND;Hard!Text^?123
|
||||||
|
37;82346;RECV;Hard!Text^?123
|
||||||
|
38;197527;SEND;Hard!Text^?123
|
||||||
|
1;5874;SEND;Hard!Text^?123
|
||||||
|
1;6457;SEND;Hard!Text^?123
|
||||||
|
1;29689;SEND;Hard!Text^?123
|
||||||
|
1;5002;SEND;Hard!Text^?123
|
||||||
|
1;201690;SEND;Hard!Text^?123
|
||||||
|
1;664702;RECV;Hard!Text^?123
|
||||||
|
2;206691;SEND;Hard!Text^?123
|
||||||
|
2;669625;RECV;Hard!Text^?123
|
||||||
|
3;211692;SEND;Hard!Text^?123
|
||||||
|
3;674532;RECV;Hard!Text^?123
|
||||||
|
4;216692;SEND;Hard!Text^?123
|
||||||
|
4;679671;RECV;Hard!Text^?123
|
||||||
|
5;221694;SEND;Hard!Text^?123
|
||||||
|
5;684567;RECV;Hard!Text^?123
|
||||||
|
6;226694;SEND;Hard!Text^?123
|
||||||
|
6;689687;RECV;Hard!Text^?123
|
||||||
|
7;231695;SEND;Hard!Text^?123
|
||||||
|
7;694603;RECV;Hard!Text^?123
|
||||||
|
8;236695;SEND;Hard!Text^?123
|
||||||
|
8;699725;RECV;Hard!Text^?123
|
||||||
|
9;241696;SEND;Hard!Text^?123
|
||||||
|
9;704639;RECV;Hard!Text^?123
|
||||||
|
10;246696;SEND;Hard!Text^?123
|
||||||
|
10;709553;RECV;Hard!Text^?123
|
||||||
|
11;251697;SEND;Hard!Text^?123
|
||||||
|
11;714676;RECV;Hard!Text^?123
|
||||||
|
12;256697;SEND;Hard!Text^?123
|
||||||
|
12;719588;RECV;Hard!Text^?123
|
||||||
|
13;261699;SEND;Hard!Text^?123
|
||||||
|
13;724815;RECV;Hard!Text^?123
|
||||||
|
14;266699;SEND;Hard!Text^?123
|
||||||
|
14;729627;RECV;Hard!Text^?123
|
||||||
|
15;271700;SEND;Hard!Text^?123
|
||||||
|
15;734539;RECV;Hard!Text^?123
|
||||||
|
16;276700;SEND;Hard!Text^?123
|
||||||
|
16;739566;RECV;Hard!Text^?123
|
||||||
|
17;281702;SEND;Hard!Text^?123
|
||||||
|
17;744584;RECV;Hard!Text^?123
|
||||||
|
18;286702;SEND;Hard!Text^?123
|
||||||
|
18;749800;RECV;Hard!Text^?123
|
||||||
|
19;291702;SEND;Hard!Text^?123
|
||||||
|
19;754611;RECV;Hard!Text^?123
|
||||||
|
20;296703;SEND;Hard!Text^?123
|
||||||
|
20;759627;RECV;Hard!Text^?123
|
||||||
|
21;301703;SEND;Hard!Text^?123
|
||||||
|
21;764646;RECV;Hard!Text^?123
|
||||||
|
22;306704;SEND;Hard!Text^?123
|
||||||
|
22;769662;RECV;Hard!Text^?123
|
||||||
|
23;311704;SEND;Hard!Text^?123
|
||||||
|
23;774689;RECV;Hard!Text^?123
|
||||||
|
24;316704;SEND;Hard!Text^?123
|
||||||
|
24;779595;RECV;Hard!Text^?123
|
||||||
|
25;321705;SEND;Hard!Text^?123
|
||||||
|
25;784716;RECV;Hard!Text^?123
|
||||||
|
26;326707;SEND;Hard!Text^?123
|
||||||
|
26;789632;RECV;Hard!Text^?123
|
||||||
|
27;331709;SEND;Hard!Text^?123
|
||||||
|
27;794549;RECV;Hard!Text^?123
|
||||||
|
28;336709;SEND;Hard!Text^?123
|
||||||
|
28;799771;RECV;Hard!Text^?123
|
||||||
|
29;341710;SEND;Hard!Text^?123
|
||||||
|
29;804583;RECV;Hard!Text^?123
|
||||||
|
30;346712;SEND;Hard!Text^?123
|
||||||
|
30;809702;RECV;Hard!Text^?123
|
||||||
|
31;351712;SEND;Hard!Text^?123
|
||||||
|
31;814620;RECV;Hard!Text^?123
|
||||||
|
32;356712;SEND;Hard!Text^?123
|
||||||
|
32;819945;RECV;Hard!Text^?123
|
||||||
|
33;361712;SEND;Hard!Text^?123
|
||||||
|
33;824654;RECV;Hard!Text^?123
|
||||||
|
34;366713;SEND;Hard!Text^?123
|
||||||
|
34;829567;RECV;Hard!Text^?123
|
||||||
|
35;371714;SEND;Hard!Text^?123
|
||||||
|
35;834690;RECV;Hard!Text^?123
|
||||||
|
36;376714;SEND;Hard!Text^?123
|
||||||
|
36;839602;RECV;Hard!Text^?123
|
||||||
|
37;381716;SEND;Hard!Text^?123
|
||||||
|
37;844725;RECV;Hard!Text^?123
|
||||||
|
38;386716;SEND;Hard!Text^?123
|
||||||
|
38;849646;RECV;Hard!Text^?123
|
||||||
|
39;391716;SEND;Hard!Text^?123
|
||||||
|
39;854656;RECV;Hard!Text^?123
|
||||||
|
40;396718;SEND;Hard!Text^?123
|
||||||
|
40;859779;RECV;Hard!Text^?123
|
||||||
|
41;401720;SEND;Hard!Text^?123
|
||||||
|
41;864691;RECV;Hard!Text^?123
|
||||||
|
42;406720;SEND;Hard!Text^?123
|
||||||
|
42;869732;RECV;Hard!Text^?123
|
||||||
|
43;411722;SEND;Hard!Text^?123
|
||||||
|
43;874636;RECV;Hard!Text^?123
|
||||||
|
44;416722;SEND;Hard!Text^?123
|
||||||
|
44;879641;RECV;Hard!Text^?123
|
||||||
|
45;421724;SEND;Hard!Text^?123
|
||||||
|
45;884660;RECV;Hard!Text^?123
|
||||||
|
46;426725;SEND;Hard!Text^?123
|
||||||
|
46;889574;RECV;Hard!Text^?123
|
||||||
|
47;431725;SEND;Hard!Text^?123
|
||||||
|
47;894803;RECV;Hard!Text^?123
|
||||||
|
48;436726;SEND;Hard!Text^?123
|
||||||
|
48;899610;RECV;Hard!Text^?123
|
||||||
|
49;441726;SEND;Hard!Text^?123
|
||||||
|
49;906985;RECV;Hard!Text^?123
|
||||||
|
50;446727;SEND;Hard!Text^?123
|
||||||
|
50;909859;RECV;Hard!Text^?123
|
||||||
|
51;451728;SEND;Hard!Text^?123
|
||||||
|
51;914567;RECV;Hard!Text^?123
|
||||||
|
52;456729;SEND;Hard!Text^?123
|
||||||
|
52;921523;RECV;Hard!Text^?123
|
||||||
|
53;461731;SEND;Hard!Text^?123
|
||||||
|
53;924595;RECV;Hard!Text^?123
|
||||||
|
54;466731;SEND;Hard!Text^?123
|
||||||
|
54;932586;RECV;Hard!Text^?123
|
||||||
|
55;471733;SEND;Hard!Text^?123
|
||||||
|
55;934947;RECV;Hard!Text^?123
|
||||||
|
56;476735;SEND;Hard!Text^?123
|
||||||
|
56;942516;RECV;Hard!Text^?123
|
||||||
|
57;481736;SEND;Hard!Text^?123
|
||||||
|
57;944673;RECV;Hard!Text^?123
|
||||||
|
58;486738;SEND;Hard!Text^?123
|
||||||
|
58;949581;RECV;Hard!Text^?123
|
||||||
|
59;491738;SEND;Hard!Text^?123
|
||||||
|
59;957063;RECV;Hard!Text^?123
|
||||||
|
60;496739;SEND;Hard!Text^?123
|
||||||
|
60;959617;RECV;Hard!Text^?123
|
||||||
|
61;501741;SEND;Hard!Text^?123
|
||||||
|
61;966990;RECV;Hard!Text^?123
|
||||||
|
62;506742;SEND;Hard!Text^?123
|
||||||
|
62;969653;RECV;Hard!Text^?123
|
||||||
|
63;511744;SEND;Hard!Text^?123
|
||||||
|
63;974879;RECV;Hard!Text^?123
|
||||||
|
64;516746;SEND;Hard!Text^?123
|
||||||
|
64;979693;RECV;Hard!Text^?123
|
||||||
|
65;521748;SEND;Hard!Text^?123
|
||||||
|
65;984608;RECV;Hard!Text^?123
|
||||||
|
66;526750;SEND;Hard!Text^?123
|
||||||
|
66;989628;RECV;Hard!Text^?123
|
||||||
|
67;531750;SEND;Hard!Text^?123
|
||||||
|
67;994640;RECV;Hard!Text^?123
|
||||||
|
68;536752;SEND;Hard!Text^?123
|
||||||
|
68;999760;RECV;Hard!Text^?123
|
|
215
RAW_server.csv
Normal file
215
RAW_server.csv
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
SEQ;TS;EVT;PAYLOAD
|
||||||
|
1;238759;RECV;Hard!Text^?123
|
||||||
|
1;38179;SEND;Hard!Text^?123
|
||||||
|
1;116567;RECV;Hard!Text^?123
|
||||||
|
1;6312;SEND;Hard!Text^?123
|
||||||
|
2;118567;RECV;Hard!Text^?123
|
||||||
|
2;8514;SEND;Hard!Text^?123
|
||||||
|
3;120568;RECV;Hard!Text^?123
|
||||||
|
3;10358;SEND;Hard!Text^?123
|
||||||
|
4;122569;RECV;Hard!Text^?123
|
||||||
|
4;12407;SEND;Hard!Text^?123
|
||||||
|
5;124569;RECV;Hard!Text^?123
|
||||||
|
5;14454;SEND;Hard!Text^?123
|
||||||
|
6;126571;RECV;Hard!Text^?123
|
||||||
|
6;16513;SEND;Hard!Text^?123
|
||||||
|
7;128571;RECV;Hard!Text^?123
|
||||||
|
7;18344;SEND;Hard!Text^?123
|
||||||
|
8;130571;RECV;Hard!Text^?123
|
||||||
|
8;20392;SEND;Hard!Text^?123
|
||||||
|
9;132572;RECV;Hard!Text^?123
|
||||||
|
9;22440;SEND;Hard!Text^?123
|
||||||
|
10;134574;RECV;Hard!Text^?123
|
||||||
|
10;24490;SEND;Hard!Text^?123
|
||||||
|
11;136573;RECV;Hard!Text^?123
|
||||||
|
11;26332;SEND;Hard!Text^?123
|
||||||
|
12;138573;RECV;Hard!Text^?123
|
||||||
|
12;28387;SEND;Hard!Text^?123
|
||||||
|
13;140574;RECV;Hard!Text^?123
|
||||||
|
13;30750;SEND;Hard!Text^?123
|
||||||
|
14;142576;RECV;Hard!Text^?123
|
||||||
|
14;32477;SEND;Hard!Text^?123
|
||||||
|
15;144577;RECV;Hard!Text^?123
|
||||||
|
15;34834;SEND;Hard!Text^?123
|
||||||
|
16;147468;RECV;Hard!Text^?123
|
||||||
|
16;37803;SEND;Hard!Text^?123
|
||||||
|
17;149469;RECV;Hard!Text^?123
|
||||||
|
17;39235;SEND;Hard!Text^?123
|
||||||
|
18;151471;RECV;Hard!Text^?123
|
||||||
|
18;41282;SEND;Hard!Text^?123
|
||||||
|
19;153471;RECV;Hard!Text^?123
|
||||||
|
19;43330;SEND;Hard!Text^?123
|
||||||
|
20;155473;RECV;Hard!Text^?123
|
||||||
|
20;45378;SEND;Hard!Text^?123
|
||||||
|
21;157476;RECV;Hard!Text^?123
|
||||||
|
21;47324;SEND;Hard!Text^?123
|
||||||
|
22;159477;RECV;Hard!Text^?123
|
||||||
|
22;49272;SEND;Hard!Text^?123
|
||||||
|
23;161478;RECV;Hard!Text^?123
|
||||||
|
23;51525;SEND;Hard!Text^?123
|
||||||
|
24;163479;RECV;Hard!Text^?123
|
||||||
|
24;53366;SEND;Hard!Text^?123
|
||||||
|
25;165481;RECV;Hard!Text^?123
|
||||||
|
25;55311;SEND;Hard!Text^?123
|
||||||
|
26;167484;RECV;Hard!Text^?123
|
||||||
|
26;57256;SEND;Hard!Text^?123
|
||||||
|
27;169487;RECV;Hard!Text^?123
|
||||||
|
27;59308;SEND;Hard!Text^?123
|
||||||
|
28;171489;RECV;Hard!Text^?123
|
||||||
|
28;61252;SEND;Hard!Text^?123
|
||||||
|
29;173490;RECV;Hard!Text^?123
|
||||||
|
29;63549;SEND;Hard!Text^?123
|
||||||
|
30;175493;RECV;Hard!Text^?123
|
||||||
|
30;65557;SEND;Hard!Text^?123
|
||||||
|
31;177494;RECV;Hard!Text^?123
|
||||||
|
31;67292;SEND;Hard!Text^?123
|
||||||
|
32;179497;RECV;Hard!Text^?123
|
||||||
|
32;70981;SEND;Hard!Text^?123
|
||||||
|
33;181500;RECV;Hard!Text^?123
|
||||||
|
33;73028;SEND;Hard!Text^?123
|
||||||
|
34;183521;RECV;Hard!Text^?123
|
||||||
|
34;73437;SEND;Hard!Text^?123
|
||||||
|
35;185524;RECV;Hard!Text^?123
|
||||||
|
35;75491;SEND;Hard!Text^?123
|
||||||
|
36;187526;RECV;Hard!Text^?123
|
||||||
|
36;77430;SEND;Hard!Text^?123
|
||||||
|
37;192526;RECV;Hard!Text^?123
|
||||||
|
37;82346;SEND;Hard!Text^?123
|
||||||
|
38;197527;RECV;Hard!Text^?123
|
||||||
|
38;91872;SEND;Hard!Text^?123
|
||||||
|
1;201690;RECV;Hard!Text^?123
|
||||||
|
1;664702;SEND;Hard!Text^?123
|
||||||
|
2;206691;RECV;Hard!Text^?123
|
||||||
|
2;669625;SEND;Hard!Text^?123
|
||||||
|
3;211692;RECV;Hard!Text^?123
|
||||||
|
3;674532;SEND;Hard!Text^?123
|
||||||
|
4;216692;RECV;Hard!Text^?123
|
||||||
|
4;679671;SEND;Hard!Text^?123
|
||||||
|
5;221694;RECV;Hard!Text^?123
|
||||||
|
5;684567;SEND;Hard!Text^?123
|
||||||
|
6;226694;RECV;Hard!Text^?123
|
||||||
|
6;689687;SEND;Hard!Text^?123
|
||||||
|
7;231695;RECV;Hard!Text^?123
|
||||||
|
7;694603;SEND;Hard!Text^?123
|
||||||
|
8;236695;RECV;Hard!Text^?123
|
||||||
|
8;699725;SEND;Hard!Text^?123
|
||||||
|
9;241696;RECV;Hard!Text^?123
|
||||||
|
9;704639;SEND;Hard!Text^?123
|
||||||
|
10;246696;RECV;Hard!Text^?123
|
||||||
|
10;709553;SEND;Hard!Text^?123
|
||||||
|
11;251697;RECV;Hard!Text^?123
|
||||||
|
11;714676;SEND;Hard!Text^?123
|
||||||
|
12;256697;RECV;Hard!Text^?123
|
||||||
|
12;719588;SEND;Hard!Text^?123
|
||||||
|
13;261699;RECV;Hard!Text^?123
|
||||||
|
13;724815;SEND;Hard!Text^?123
|
||||||
|
14;266699;RECV;Hard!Text^?123
|
||||||
|
14;729627;SEND;Hard!Text^?123
|
||||||
|
15;271700;RECV;Hard!Text^?123
|
||||||
|
15;734539;SEND;Hard!Text^?123
|
||||||
|
16;276700;RECV;Hard!Text^?123
|
||||||
|
16;739566;SEND;Hard!Text^?123
|
||||||
|
17;281702;RECV;Hard!Text^?123
|
||||||
|
17;744584;SEND;Hard!Text^?123
|
||||||
|
18;286702;RECV;Hard!Text^?123
|
||||||
|
18;749800;SEND;Hard!Text^?123
|
||||||
|
19;291702;RECV;Hard!Text^?123
|
||||||
|
19;754611;SEND;Hard!Text^?123
|
||||||
|
20;296703;RECV;Hard!Text^?123
|
||||||
|
20;759627;SEND;Hard!Text^?123
|
||||||
|
21;301703;RECV;Hard!Text^?123
|
||||||
|
21;764646;SEND;Hard!Text^?123
|
||||||
|
22;306704;RECV;Hard!Text^?123
|
||||||
|
22;769662;SEND;Hard!Text^?123
|
||||||
|
23;311704;RECV;Hard!Text^?123
|
||||||
|
23;774689;SEND;Hard!Text^?123
|
||||||
|
24;316704;RECV;Hard!Text^?123
|
||||||
|
24;779595;SEND;Hard!Text^?123
|
||||||
|
25;321705;RECV;Hard!Text^?123
|
||||||
|
25;784716;SEND;Hard!Text^?123
|
||||||
|
26;326707;RECV;Hard!Text^?123
|
||||||
|
26;789632;SEND;Hard!Text^?123
|
||||||
|
27;331709;RECV;Hard!Text^?123
|
||||||
|
27;794549;SEND;Hard!Text^?123
|
||||||
|
28;336709;RECV;Hard!Text^?123
|
||||||
|
28;799771;SEND;Hard!Text^?123
|
||||||
|
29;341710;RECV;Hard!Text^?123
|
||||||
|
29;804583;SEND;Hard!Text^?123
|
||||||
|
30;346712;RECV;Hard!Text^?123
|
||||||
|
30;809702;SEND;Hard!Text^?123
|
||||||
|
31;351712;RECV;Hard!Text^?123
|
||||||
|
31;814620;SEND;Hard!Text^?123
|
||||||
|
32;356712;RECV;Hard!Text^?123
|
||||||
|
32;819945;SEND;Hard!Text^?123
|
||||||
|
33;361712;RECV;Hard!Text^?123
|
||||||
|
33;824654;SEND;Hard!Text^?123
|
||||||
|
34;366713;RECV;Hard!Text^?123
|
||||||
|
34;829567;SEND;Hard!Text^?123
|
||||||
|
35;371715;RECV;Hard!Text^?123
|
||||||
|
35;834690;SEND;Hard!Text^?123
|
||||||
|
36;376714;RECV;Hard!Text^?123
|
||||||
|
36;839602;SEND;Hard!Text^?123
|
||||||
|
37;381716;RECV;Hard!Text^?123
|
||||||
|
37;844725;SEND;Hard!Text^?123
|
||||||
|
38;386716;RECV;Hard!Text^?123
|
||||||
|
38;849646;SEND;Hard!Text^?123
|
||||||
|
39;391716;RECV;Hard!Text^?123
|
||||||
|
39;854656;SEND;Hard!Text^?123
|
||||||
|
40;396718;RECV;Hard!Text^?123
|
||||||
|
40;859779;SEND;Hard!Text^?123
|
||||||
|
41;401720;RECV;Hard!Text^?123
|
||||||
|
41;864691;SEND;Hard!Text^?123
|
||||||
|
42;406720;RECV;Hard!Text^?123
|
||||||
|
42;869732;SEND;Hard!Text^?123
|
||||||
|
43;411722;RECV;Hard!Text^?123
|
||||||
|
43;874636;SEND;Hard!Text^?123
|
||||||
|
44;416722;RECV;Hard!Text^?123
|
||||||
|
44;879641;SEND;Hard!Text^?123
|
||||||
|
45;421724;RECV;Hard!Text^?123
|
||||||
|
45;884660;SEND;Hard!Text^?123
|
||||||
|
46;426725;RECV;Hard!Text^?123
|
||||||
|
46;889574;SEND;Hard!Text^?123
|
||||||
|
47;431725;RECV;Hard!Text^?123
|
||||||
|
47;894803;SEND;Hard!Text^?123
|
||||||
|
48;436727;RECV;Hard!Text^?123
|
||||||
|
48;899610;SEND;Hard!Text^?123
|
||||||
|
49;441726;RECV;Hard!Text^?123
|
||||||
|
49;906985;SEND;Hard!Text^?123
|
||||||
|
50;446727;RECV;Hard!Text^?123
|
||||||
|
50;909859;SEND;Hard!Text^?123
|
||||||
|
51;451728;RECV;Hard!Text^?123
|
||||||
|
51;914567;SEND;Hard!Text^?123
|
||||||
|
52;456729;RECV;Hard!Text^?123
|
||||||
|
52;921523;SEND;Hard!Text^?123
|
||||||
|
53;461731;RECV;Hard!Text^?123
|
||||||
|
53;924595;SEND;Hard!Text^?123
|
||||||
|
54;466731;RECV;Hard!Text^?123
|
||||||
|
54;932586;SEND;Hard!Text^?123
|
||||||
|
55;471733;RECV;Hard!Text^?123
|
||||||
|
55;934947;SEND;Hard!Text^?123
|
||||||
|
56;476735;RECV;Hard!Text^?123
|
||||||
|
56;942516;SEND;Hard!Text^?123
|
||||||
|
57;481736;RECV;Hard!Text^?123
|
||||||
|
57;944673;SEND;Hard!Text^?123
|
||||||
|
58;486738;RECV;Hard!Text^?123
|
||||||
|
58;949581;SEND;Hard!Text^?123
|
||||||
|
59;491738;RECV;Hard!Text^?123
|
||||||
|
59;957063;SEND;Hard!Text^?123
|
||||||
|
60;496739;RECV;Hard!Text^?123
|
||||||
|
60;959617;SEND;Hard!Text^?123
|
||||||
|
61;501741;RECV;Hard!Text^?123
|
||||||
|
61;966990;SEND;Hard!Text^?123
|
||||||
|
62;506742;RECV;Hard!Text^?123
|
||||||
|
62;969653;SEND;Hard!Text^?123
|
||||||
|
63;511744;RECV;Hard!Text^?123
|
||||||
|
63;974879;SEND;Hard!Text^?123
|
||||||
|
64;516746;RECV;Hard!Text^?123
|
||||||
|
64;979693;SEND;Hard!Text^?123
|
||||||
|
65;521748;RECV;Hard!Text^?123
|
||||||
|
65;984608;SEND;Hard!Text^?123
|
||||||
|
66;526750;RECV;Hard!Text^?123
|
||||||
|
66;989628;SEND;Hard!Text^?123
|
||||||
|
67;531750;RECV;Hard!Text^?123
|
||||||
|
67;994640;SEND;Hard!Text^?123
|
||||||
|
68;536752;RECV;Hard!Text^?123
|
||||||
|
68;999760;SEND;Hard!Text^?123
|
|
BIN
analyze.xlsx
Normal file
BIN
analyze.xlsx
Normal file
Binary file not shown.
153
df
Normal file
153
df
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
SEQ;TS;EVT;PAYLOAD
|
||||||
|
1;39739;RECV;Hard!Text^?123
|
||||||
|
1;2804;SEND;Hard!Text^?123
|
||||||
|
2;40239;RECV;Hard!Text^?123
|
||||||
|
2;3215;SEND;Hard!Text^?123
|
||||||
|
3;40739;RECV;Hard!Text^?123
|
||||||
|
3;3632;SEND;Hard!Text^?123
|
||||||
|
4;41239;RECV;Hard!Text^?123
|
||||||
|
4;4237;SEND;Hard!Text^?123
|
||||||
|
5;41739;RECV;Hard!Text^?123
|
||||||
|
5;4649;SEND;Hard!Text^?123
|
||||||
|
6;42239;RECV;Hard!Text^?123
|
||||||
|
6;5261;SEND;Hard!Text^?123
|
||||||
|
7;42739;RECV;Hard!Text^?123
|
||||||
|
7;5672;SEND;Hard!Text^?123
|
||||||
|
8;43239;RECV;Hard!Text^?123
|
||||||
|
8;6285;SEND;Hard!Text^?123
|
||||||
|
9;43739;RECV;Hard!Text^?123
|
||||||
|
9;6696;SEND;Hard!Text^?123
|
||||||
|
10;44239;RECV;Hard!Text^?123
|
||||||
|
10;7130;SEND;Hard!Text^?123
|
||||||
|
11;44739;RECV;Hard!Text^?123
|
||||||
|
11;7719;SEND;Hard!Text^?123
|
||||||
|
12;45239;RECV;Hard!Text^?123
|
||||||
|
12;8131;SEND;Hard!Text^?123
|
||||||
|
13;45739;RECV;Hard!Text^?123
|
||||||
|
13;8743;SEND;Hard!Text^?123
|
||||||
|
14;46239;RECV;Hard!Text^?123
|
||||||
|
14;9153;SEND;Hard!Text^?123
|
||||||
|
15;46739;RECV;Hard!Text^?123
|
||||||
|
15;9811;SEND;Hard!Text^?123
|
||||||
|
16;47239;RECV;Hard!Text^?123
|
||||||
|
16;10178;SEND;Hard!Text^?123
|
||||||
|
17;47739;RECV;Hard!Text^?123
|
||||||
|
17;10632;SEND;Hard!Text^?123
|
||||||
|
18;48239;RECV;Hard!Text^?123
|
||||||
|
18;11203;SEND;Hard!Text^?123
|
||||||
|
19;48739;RECV;Hard!Text^?123
|
||||||
|
19;11632;SEND;Hard!Text^?123
|
||||||
|
20;49239;RECV;Hard!Text^?123
|
||||||
|
20;12225;SEND;Hard!Text^?123
|
||||||
|
21;49739;RECV;Hard!Text^?123
|
||||||
|
21;12637;SEND;Hard!Text^?123
|
||||||
|
22;50239;RECV;Hard!Text^?123
|
||||||
|
22;13250;SEND;Hard!Text^?123
|
||||||
|
23;50739;RECV;Hard!Text^?123
|
||||||
|
23;13660;SEND;Hard!Text^?123
|
||||||
|
24;51239;RECV;Hard!Text^?123
|
||||||
|
24;14272;SEND;Hard!Text^?123
|
||||||
|
25;51739;RECV;Hard!Text^?123
|
||||||
|
25;14684;SEND;Hard!Text^?123
|
||||||
|
26;52239;RECV;Hard!Text^?123
|
||||||
|
26;15131;SEND;Hard!Text^?123
|
||||||
|
27;52739;RECV;Hard!Text^?123
|
||||||
|
27;15706;SEND;Hard!Text^?123
|
||||||
|
28;53239;RECV;Hard!Text^?123
|
||||||
|
28;16130;SEND;Hard!Text^?123
|
||||||
|
29;53739;RECV;Hard!Text^?123
|
||||||
|
29;16730;SEND;Hard!Text^?123
|
||||||
|
30;54239;RECV;Hard!Text^?123
|
||||||
|
30;17143;SEND;Hard!Text^?123
|
||||||
|
31;54739;RECV;Hard!Text^?123
|
||||||
|
31;17754;SEND;Hard!Text^?123
|
||||||
|
32;55239;RECV;Hard!Text^?123
|
||||||
|
32;18166;SEND;Hard!Text^?123
|
||||||
|
33;55739;RECV;Hard!Text^?123
|
||||||
|
33;18780;SEND;Hard!Text^?123
|
||||||
|
34;56239;RECV;Hard!Text^?123
|
||||||
|
34;19188;SEND;Hard!Text^?123
|
||||||
|
35;56739;RECV;Hard!Text^?123
|
||||||
|
35;19635;SEND;Hard!Text^?123
|
||||||
|
36;57239;RECV;Hard!Text^?123
|
||||||
|
36;20212;SEND;Hard!Text^?123
|
||||||
|
37;57739;RECV;Hard!Text^?123
|
||||||
|
37;20635;SEND;Hard!Text^?123
|
||||||
|
38;58239;RECV;Hard!Text^?123
|
||||||
|
38;21237;SEND;Hard!Text^?123
|
||||||
|
39;58739;RECV;Hard!Text^?123
|
||||||
|
39;21646;SEND;Hard!Text^?123
|
||||||
|
40;59239;RECV;Hard!Text^?123
|
||||||
|
40;22360;SEND;Hard!Text^?123
|
||||||
|
41;59739;RECV;Hard!Text^?123
|
||||||
|
41;22670;SEND;Hard!Text^?123
|
||||||
|
42;60239;RECV;Hard!Text^?123
|
||||||
|
42;23389;SEND;Hard!Text^?123
|
||||||
|
43;60739;RECV;Hard!Text^?123
|
||||||
|
43;23900;SEND;Hard!Text^?123
|
||||||
|
44;61239;RECV;Hard!Text^?123
|
||||||
|
44;24308;SEND;Hard!Text^?123
|
||||||
|
45;61739;RECV;Hard!Text^?123
|
||||||
|
45;24718;SEND;Hard!Text^?123
|
||||||
|
46;62239;RECV;Hard!Text^?123
|
||||||
|
46;25130;SEND;Hard!Text^?123
|
||||||
|
47;62739;RECV;Hard!Text^?123
|
||||||
|
47;25742;SEND;Hard!Text^?123
|
||||||
|
48;63239;RECV;Hard!Text^?123
|
||||||
|
48;26153;SEND;Hard!Text^?123
|
||||||
|
49;63739;RECV;Hard!Text^?123
|
||||||
|
49;26765;SEND;Hard!Text^?123
|
||||||
|
50;64239;RECV;Hard!Text^?123
|
||||||
|
50;27176;SEND;Hard!Text^?123
|
||||||
|
51;64739;RECV;Hard!Text^?123
|
||||||
|
51;27636;SEND;Hard!Text^?123
|
||||||
|
52;65239;RECV;Hard!Text^?123
|
||||||
|
52;28303;SEND;Hard!Text^?123
|
||||||
|
53;65739;RECV;Hard!Text^?123
|
||||||
|
53;28634;SEND;Hard!Text^?123
|
||||||
|
54;66239;RECV;Hard!Text^?123
|
||||||
|
54;29224;SEND;Hard!Text^?123
|
||||||
|
55;66739;RECV;Hard!Text^?123
|
||||||
|
55;29634;SEND;Hard!Text^?123
|
||||||
|
56;67239;RECV;Hard!Text^?123
|
||||||
|
56;30247;SEND;Hard!Text^?123
|
||||||
|
57;67739;RECV;Hard!Text^?123
|
||||||
|
57;30657;SEND;Hard!Text^?123
|
||||||
|
58;68239;RECV;Hard!Text^?123
|
||||||
|
58;31271;SEND;Hard!Text^?123
|
||||||
|
59;68739;RECV;Hard!Text^?123
|
||||||
|
59;31682;SEND;Hard!Text^?123
|
||||||
|
60;69239;RECV;Hard!Text^?123
|
||||||
|
60;32134;SEND;Hard!Text^?123
|
||||||
|
61;69739;RECV;Hard!Text^?123
|
||||||
|
61;32704;SEND;Hard!Text^?123
|
||||||
|
62;70239;RECV;Hard!Text^?123
|
||||||
|
62;33133;SEND;Hard!Text^?123
|
||||||
|
63;70739;RECV;Hard!Text^?123
|
||||||
|
63;33730;SEND;Hard!Text^?123
|
||||||
|
64;71239;RECV;Hard!Text^?123
|
||||||
|
64;34142;SEND;Hard!Text^?123
|
||||||
|
65;71739;RECV;Hard!Text^?123
|
||||||
|
65;34753;SEND;Hard!Text^?123
|
||||||
|
66;72239;RECV;Hard!Text^?123
|
||||||
|
66;35164;SEND;Hard!Text^?123
|
||||||
|
67;72739;RECV;Hard!Text^?123
|
||||||
|
67;35777;SEND;Hard!Text^?123
|
||||||
|
68;73239;RECV;Hard!Text^?123
|
||||||
|
68;36232;SEND;Hard!Text^?123
|
||||||
|
69;73739;RECV;Hard!Text^?123
|
||||||
|
69;36801;SEND;Hard!Text^?123
|
||||||
|
70;74239;RECV;Hard!Text^?123
|
||||||
|
70;37253;SEND;Hard!Text^?123
|
||||||
|
71;74739;RECV;Hard!Text^?123
|
||||||
|
71;37632;SEND;Hard!Text^?123
|
||||||
|
72;75239;RECV;Hard!Text^?123
|
||||||
|
72;38235;SEND;Hard!Text^?123
|
||||||
|
73;75739;RECV;Hard!Text^?123
|
||||||
|
73;38954;SEND;Hard!Text^?123
|
||||||
|
74;76239;RECV;Hard!Text^?123
|
||||||
|
74;39260;SEND;Hard!Text^?123
|
||||||
|
75;76739;RECV;Hard!Text^?123
|
||||||
|
75;39675;SEND;Hard!Text^?123
|
||||||
|
76;77239;RECV;Hard!Text^?123
|
||||||
|
76;40282;SEND;Hard!Text^?123
|
26
getLogs.py
26
getLogs.py
@ -122,15 +122,21 @@ class ESPLoggerTerminal(QWidget):
|
|||||||
try:
|
try:
|
||||||
self.status_label.setText("Connecting to ESP32...")
|
self.status_label.setText("Connecting to ESP32...")
|
||||||
QApplication.processEvents()
|
QApplication.processEvents()
|
||||||
ser = serial.Serial(port, baud, timeout=0.1) # короче таймаут
|
ser = serial.Serial(port, baud, timeout=2) # короче таймаут
|
||||||
ser.reset_input_buffer()
|
ser.reset_input_buffer()
|
||||||
ser.reset_output_buffer()
|
ser.reset_output_buffer()
|
||||||
|
|
||||||
|
ser.write(b's\n')
|
||||||
|
import time
|
||||||
|
# Ждем 100 мс
|
||||||
|
time.sleep(0.1)
|
||||||
|
|
||||||
ser.write(b'd\n')
|
ser.write(b'd\n')
|
||||||
|
|
||||||
# Ждём первую реакцию от ESP32 (например "=== LOG DUMP START ===")
|
# Ждём первую реакцию от ESP32 (например "=== LOG DUMP START ===")
|
||||||
pre_line = ser.readline().decode(errors='ignore').strip()
|
pre_line = ser.readline().decode(errors='ignore').strip()
|
||||||
first_line = ser.readline().decode(errors='ignore').strip()
|
first_line = ser.readline().decode(errors='ignore').strip()
|
||||||
if not first_line or "LOG DUMP" not in first_line:
|
if not first_line or "LOG DUMP" not in (first_line or pre_line):
|
||||||
ser.close()
|
ser.close()
|
||||||
QMessageBox.warning(self, "Error", "Selected port is not responding like ESP32")
|
QMessageBox.warning(self, "Error", "Selected port is not responding like ESP32")
|
||||||
return
|
return
|
||||||
@ -139,7 +145,6 @@ class ESPLoggerTerminal(QWidget):
|
|||||||
self.status_label.setText("Receiving log...")
|
self.status_label.setText("Receiving log...")
|
||||||
QApplication.processEvents()
|
QApplication.processEvents()
|
||||||
|
|
||||||
import time
|
|
||||||
lines = []
|
lines = []
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
timeout_sec = 30
|
timeout_sec = 30
|
||||||
@ -207,14 +212,22 @@ class ESPLoggerTerminal(QWidget):
|
|||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ser = serial.Serial(port, baud, timeout=0.1)
|
ser = serial.Serial(port, baud, timeout=2)
|
||||||
|
ser.reset_input_buffer()
|
||||||
|
ser.reset_output_buffer()
|
||||||
|
ser.write(b's\n')
|
||||||
|
|
||||||
|
import time
|
||||||
|
# Ждем 100 мс
|
||||||
|
time.sleep(0.1)
|
||||||
|
|
||||||
ser.write(b'c\n')
|
ser.write(b'c\n')
|
||||||
|
|
||||||
|
|
||||||
# Ждём первую реакцию от ESP32 (например "=== LOG DUMP START ===")
|
# Ждём первую реакцию от ESP32 (например "=== LOG ERASING ===")
|
||||||
pre_line = ser.readline().decode(errors='ignore').strip()
|
pre_line = ser.readline().decode(errors='ignore').strip()
|
||||||
first_line = ser.readline().decode(errors='ignore').strip()
|
first_line = ser.readline().decode(errors='ignore').strip()
|
||||||
if not first_line or "LOG ERASING" not in first_line:
|
if not first_line or "LOG ERASING" not in (first_line or pre_line):
|
||||||
ser.close()
|
ser.close()
|
||||||
QMessageBox.warning(self, "Error", "Selected port is not responding like ESP32")
|
QMessageBox.warning(self, "Error", "Selected port is not responding like ESP32")
|
||||||
return
|
return
|
||||||
@ -223,7 +236,6 @@ class ESPLoggerTerminal(QWidget):
|
|||||||
QApplication.processEvents()
|
QApplication.processEvents()
|
||||||
|
|
||||||
|
|
||||||
import time
|
|
||||||
lines = []
|
lines = []
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
timeout_sec = 15
|
timeout_sec = 15
|
||||||
|
6
logs.cpp
6
logs.cpp
@ -31,11 +31,11 @@ bool LogModule::verifyEntry(const LogEntry &entry) {
|
|||||||
bool valid = (entry.crc == calculated_crc);
|
bool valid = (entry.crc == calculated_crc);
|
||||||
|
|
||||||
if (!valid) {
|
if (!valid) {
|
||||||
Serial.printf("CRC mismatch: stored=0x%02X, calculated=0x%02X\n",
|
//Serial.printf("CRC mismatch: stored=0x%02X, calculated=0x%02X\n",
|
||||||
entry.crc, calculated_crc);
|
// entry.crc, calculated_crc);
|
||||||
}
|
}
|
||||||
|
|
||||||
return valid;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
LogModule::LogModule() : partition(nullptr), write_pos(0), total_entries(0), partition_size(0) {}
|
LogModule::LogModule() : partition(nullptr), write_pos(0), total_entries(0), partition_size(0) {}
|
||||||
|
File diff suppressed because it is too large
Load Diff
358
sd
Normal file
358
sd
Normal file
@ -0,0 +1,358 @@
|
|||||||
|
SEQ;TS;EVT;PAYLOAD
|
||||||
|
1;5096;SEND;Hard!Text^?123
|
||||||
|
1;299216;RECV;Hard!Text^?123
|
||||||
|
2;5596;SEND;Hard!Text^?123
|
||||||
|
2;299814;RECV;Hard!Text^?123
|
||||||
|
3;6096;SEND;Hard!Text^?123
|
||||||
|
3;300225;RECV;Hard!Text^?123
|
||||||
|
4;6596;SEND;Hard!Text^?123
|
||||||
|
4;300838;RECV;Hard!Text^?123
|
||||||
|
5;7096;SEND;Hard!Text^?123
|
||||||
|
5;301249;RECV;Hard!Text^?123
|
||||||
|
6;7596;SEND;Hard!Text^?123
|
||||||
|
6;301862;RECV;Hard!Text^?123
|
||||||
|
7;8096;SEND;Hard!Text^?123
|
||||||
|
7;302272;RECV;Hard!Text^?123
|
||||||
|
8;8596;SEND;Hard!Text^?123
|
||||||
|
8;302786;RECV;Hard!Text^?123
|
||||||
|
9;9096;SEND;Hard!Text^?123
|
||||||
|
9;303296;RECV;Hard!Text^?123
|
||||||
|
10;9596;SEND;Hard!Text^?123
|
||||||
|
10;303710;RECV;Hard!Text^?123
|
||||||
|
11;10096;SEND;Hard!Text^?123
|
||||||
|
12;10596;SEND;Hard!Text^?123
|
||||||
|
13;11096;SEND;Hard!Text^?123
|
||||||
|
14;11596;SEND;Hard!Text^?123
|
||||||
|
15;12096;SEND;Hard!Text^?123
|
||||||
|
16;12596;SEND;Hard!Text^?123
|
||||||
|
17;13096;SEND;Hard!Text^?123
|
||||||
|
18;13596;SEND;Hard!Text^?123
|
||||||
|
19;14096;SEND;Hard!Text^?123
|
||||||
|
20;14596;SEND;Hard!Text^?123
|
||||||
|
21;15096;SEND;Hard!Text^?123
|
||||||
|
22;15596;SEND;Hard!Text^?123
|
||||||
|
23;16096;SEND;Hard!Text^?123
|
||||||
|
24;16596;SEND;Hard!Text^?123
|
||||||
|
25;17096;SEND;Hard!Text^?123
|
||||||
|
26;17596;SEND;Hard!Text^?123
|
||||||
|
27;18096;SEND;Hard!Text^?123
|
||||||
|
28;18596;SEND;Hard!Text^?123
|
||||||
|
29;19096;SEND;Hard!Text^?123
|
||||||
|
30;19596;SEND;Hard!Text^?123
|
||||||
|
31;20096;SEND;Hard!Text^?123
|
||||||
|
32;20596;SEND;Hard!Text^?123
|
||||||
|
33;21096;SEND;Hard!Text^?123
|
||||||
|
34;21596;SEND;Hard!Text^?123
|
||||||
|
35;24962;SEND;Hard!Text^?123
|
||||||
|
35;9757;RECV;Hard!Text^?123
|
||||||
|
36;25462;SEND;Hard!Text^?123
|
||||||
|
36;10166;RECV;Hard!Text^?123
|
||||||
|
37;25962;SEND;Hard!Text^?123
|
||||||
|
37;10578;RECV;Hard!Text^?123
|
||||||
|
38;26462;SEND;Hard!Text^?123
|
||||||
|
38;11190;RECV;Hard!Text^?123
|
||||||
|
39;26962;SEND;Hard!Text^?123
|
||||||
|
39;11601;RECV;Hard!Text^?123
|
||||||
|
40;27462;SEND;Hard!Text^?123
|
||||||
|
40;12215;RECV;Hard!Text^?123
|
||||||
|
41;27962;SEND;Hard!Text^?123
|
||||||
|
41;12626;RECV;Hard!Text^?123
|
||||||
|
42;28462;SEND;Hard!Text^?123
|
||||||
|
42;13238;RECV;Hard!Text^?123
|
||||||
|
43;28962;SEND;Hard!Text^?123
|
||||||
|
44;29462;SEND;Hard!Text^?123
|
||||||
|
45;29962;SEND;Hard!Text^?123
|
||||||
|
46;30462;SEND;Hard!Text^?123
|
||||||
|
47;30962;SEND;Hard!Text^?123
|
||||||
|
48;31462;SEND;Hard!Text^?123
|
||||||
|
43;13650;RECV;Hard!Text^?123
|
||||||
|
44;16312;RECV;Hard!Text^?123
|
||||||
|
49;31962;SEND;Hard!Text^?123
|
||||||
|
45;16316;RECV;Hard!Text^?123
|
||||||
|
46;16320;RECV;Hard!Text^?123
|
||||||
|
47;16323;RECV;Hard!Text^?123
|
||||||
|
48;16367;RECV;Hard!Text^?123
|
||||||
|
50;32462;SEND;Hard!Text^?123
|
||||||
|
49;16723;RECV;Hard!Text^?123
|
||||||
|
51;32962;SEND;Hard!Text^?123
|
||||||
|
52;33462;SEND;Hard!Text^?123
|
||||||
|
53;33962;SEND;Hard!Text^?123
|
||||||
|
54;34462;SEND;Hard!Text^?123
|
||||||
|
55;34962;SEND;Hard!Text^?123
|
||||||
|
56;35462;SEND;Hard!Text^?123
|
||||||
|
57;35962;SEND;Hard!Text^?123
|
||||||
|
50;20406;RECV;Hard!Text^?123
|
||||||
|
51;20816;RECV;Hard!Text^?123
|
||||||
|
58;36462;SEND;Hard!Text^?123
|
||||||
|
52;20820;RECV;Hard!Text^?123
|
||||||
|
53;20823;RECV;Hard!Text^?123
|
||||||
|
54;20826;RECV;Hard!Text^?123
|
||||||
|
55;20831;RECV;Hard!Text^?123
|
||||||
|
56;20834;RECV;Hard!Text^?123
|
||||||
|
57;20837;RECV;Hard!Text^?123
|
||||||
|
59;36962;SEND;Hard!Text^?123
|
||||||
|
58;21226;RECV;Hard!Text^?123
|
||||||
|
59;21640;RECV;Hard!Text^?123
|
||||||
|
60;37462;SEND;Hard!Text^?123
|
||||||
|
60;22060;RECV;Hard!Text^?123
|
||||||
|
61;37962;SEND;Hard!Text^?123
|
||||||
|
61;22659;RECV;Hard!Text^?123
|
||||||
|
62;38462;SEND;Hard!Text^?123
|
||||||
|
62;23069;RECV;Hard!Text^?123
|
||||||
|
63;38962;SEND;Hard!Text^?123
|
||||||
|
63;23581;RECV;Hard!Text^?123
|
||||||
|
64;39462;SEND;Hard!Text^?123
|
||||||
|
64;24093;RECV;Hard!Text^?123
|
||||||
|
65;39962;SEND;Hard!Text^?123
|
||||||
|
66;40462;SEND;Hard!Text^?123
|
||||||
|
67;40962;SEND;Hard!Text^?123
|
||||||
|
68;41462;SEND;Hard!Text^?123
|
||||||
|
69;41962;SEND;Hard!Text^?123
|
||||||
|
70;42462;SEND;Hard!Text^?123
|
||||||
|
71;42962;SEND;Hard!Text^?123
|
||||||
|
72;43462;SEND;Hard!Text^?123
|
||||||
|
73;43962;SEND;Hard!Text^?123
|
||||||
|
74;44462;SEND;Hard!Text^?123
|
||||||
|
75;44962;SEND;Hard!Text^?123
|
||||||
|
76;45462;SEND;Hard!Text^?123
|
||||||
|
77;45962;SEND;Hard!Text^?123
|
||||||
|
78;46462;SEND;Hard!Text^?123
|
||||||
|
79;46962;SEND;Hard!Text^?123
|
||||||
|
80;47462;SEND;Hard!Text^?123
|
||||||
|
81;49462;SEND;Hard!Text^?123
|
||||||
|
82;51462;SEND;Hard!Text^?123
|
||||||
|
83;53462;SEND;Hard!Text^?123
|
||||||
|
84;55462;SEND;Hard!Text^?123
|
||||||
|
85;57462;SEND;Hard!Text^?123
|
||||||
|
86;59462;SEND;Hard!Text^?123
|
||||||
|
87;61462;SEND;Hard!Text^?123
|
||||||
|
88;63462;SEND;Hard!Text^?123
|
||||||
|
89;65462;SEND;Hard!Text^?123
|
||||||
|
90;67462;SEND;Hard!Text^?123
|
||||||
|
91;69462;SEND;Hard!Text^?123
|
||||||
|
92;71462;SEND;Hard!Text^?123
|
||||||
|
93;73462;SEND;Hard!Text^?123
|
||||||
|
94;75462;SEND;Hard!Text^?123
|
||||||
|
95;77462;SEND;Hard!Text^?123
|
||||||
|
96;79462;SEND;Hard!Text^?123
|
||||||
|
97;81462;SEND;Hard!Text^?123
|
||||||
|
98;83462;SEND;Hard!Text^?123
|
||||||
|
99;85462;SEND;Hard!Text^?123
|
||||||
|
100;87462;SEND;Hard!Text^?123
|
||||||
|
101;89462;SEND;Hard!Text^?123
|
||||||
|
102;91462;SEND;Hard!Text^?123
|
||||||
|
103;93462;SEND;Hard!Text^?123
|
||||||
|
104;95462;SEND;Hard!Text^?123
|
||||||
|
105;97462;SEND;Hard!Text^?123
|
||||||
|
106;99462;SEND;Hard!Text^?123
|
||||||
|
107;101462;SEND;Hard!Text^?123
|
||||||
|
108;103462;SEND;Hard!Text^?123
|
||||||
|
109;105462;SEND;Hard!Text^?123
|
||||||
|
110;107462;SEND;Hard!Text^?123
|
||||||
|
111;109462;SEND;Hard!Text^?123
|
||||||
|
112;111462;SEND;Hard!Text^?123
|
||||||
|
113;113462;SEND;Hard!Text^?123
|
||||||
|
114;115462;SEND;Hard!Text^?123
|
||||||
|
115;117462;SEND;Hard!Text^?123
|
||||||
|
116;119462;SEND;Hard!Text^?123
|
||||||
|
117;121462;SEND;Hard!Text^?123
|
||||||
|
118;123462;SEND;Hard!Text^?123
|
||||||
|
119;125462;SEND;Hard!Text^?123
|
||||||
|
120;127462;SEND;Hard!Text^?123
|
||||||
|
121;129462;SEND;Hard!Text^?123
|
||||||
|
122;131462;SEND;Hard!Text^?123
|
||||||
|
123;133462;SEND;Hard!Text^?123
|
||||||
|
124;135462;SEND;Hard!Text^?123
|
||||||
|
125;137462;SEND;Hard!Text^?123
|
||||||
|
126;139462;SEND;Hard!Text^?123
|
||||||
|
127;141462;SEND;Hard!Text^?123
|
||||||
|
128;143462;SEND;Hard!Text^?123
|
||||||
|
129;145462;SEND;Hard!Text^?123
|
||||||
|
130;147462;SEND;Hard!Text^?123
|
||||||
|
131;149462;SEND;Hard!Text^?123
|
||||||
|
132;151462;SEND;Hard!Text^?123
|
||||||
|
133;153462;SEND;Hard!Text^?123
|
||||||
|
134;155462;SEND;Hard!Text^?123
|
||||||
|
135;157462;SEND;Hard!Text^?123
|
||||||
|
136;159462;SEND;Hard!Text^?123
|
||||||
|
137;161462;SEND;Hard!Text^?123
|
||||||
|
138;178568;SEND;Hard!Text^?123
|
||||||
|
138;74925;RECV;Hard!Text^?123
|
||||||
|
139;180568;SEND;Hard!Text^?123
|
||||||
|
139;76767;RECV;Hard!Text^?123
|
||||||
|
140;182568;SEND;Hard!Text^?123
|
||||||
|
140;78816;RECV;Hard!Text^?123
|
||||||
|
141;184568;SEND;Hard!Text^?123
|
||||||
|
141;80863;RECV;Hard!Text^?123
|
||||||
|
142;186568;SEND;Hard!Text^?123
|
||||||
|
142;82911;RECV;Hard!Text^?123
|
||||||
|
143;188568;SEND;Hard!Text^?123
|
||||||
|
143;84755;RECV;Hard!Text^?123
|
||||||
|
144;190568;SEND;Hard!Text^?123
|
||||||
|
144;86804;RECV;Hard!Text^?123
|
||||||
|
145;192568;SEND;Hard!Text^?123
|
||||||
|
145;88851;RECV;Hard!Text^?123
|
||||||
|
146;194568;SEND;Hard!Text^?123
|
||||||
|
146;90899;RECV;Hard!Text^?123
|
||||||
|
147;196568;SEND;Hard!Text^?123
|
||||||
|
147;92742;RECV;Hard!Text^?123
|
||||||
|
148;198568;SEND;Hard!Text^?123
|
||||||
|
148;94790;RECV;Hard!Text^?123
|
||||||
|
149;200568;SEND;Hard!Text^?123
|
||||||
|
149;96838;RECV;Hard!Text^?123
|
||||||
|
150;202568;SEND;Hard!Text^?123
|
||||||
|
150;98886;RECV;Hard!Text^?123
|
||||||
|
151;204568;SEND;Hard!Text^?123
|
||||||
|
151;100936;RECV;Hard!Text^?123
|
||||||
|
152;206568;SEND;Hard!Text^?123
|
||||||
|
153;208568;SEND;Hard!Text^?123
|
||||||
|
154;210568;SEND;Hard!Text^?123
|
||||||
|
155;212568;SEND;Hard!Text^?123
|
||||||
|
156;214568;SEND;Hard!Text^?123
|
||||||
|
157;216568;SEND;Hard!Text^?123
|
||||||
|
158;218568;SEND;Hard!Text^?123
|
||||||
|
159;220568;SEND;Hard!Text^?123
|
||||||
|
160;222568;SEND;Hard!Text^?123
|
||||||
|
161;224568;SEND;Hard!Text^?123
|
||||||
|
162;227517;SEND;Hard!Text^?123
|
||||||
|
162;14627;RECV;Hard!Text^?123
|
||||||
|
163;229517;SEND;Hard!Text^?123
|
||||||
|
163;16469;RECV;Hard!Text^?123
|
||||||
|
164;231517;SEND;Hard!Text^?123
|
||||||
|
164;18721;RECV;Hard!Text^?123
|
||||||
|
165;233517;SEND;Hard!Text^?123
|
||||||
|
165;20565;RECV;Hard!Text^?123
|
||||||
|
166;235517;SEND;Hard!Text^?123
|
||||||
|
166;22613;RECV;Hard!Text^?123
|
||||||
|
167;237517;SEND;Hard!Text^?123
|
||||||
|
167;24663;RECV;Hard!Text^?123
|
||||||
|
168;239517;SEND;Hard!Text^?123
|
||||||
|
168;26505;RECV;Hard!Text^?123
|
||||||
|
169;241517;SEND;Hard!Text^?123
|
||||||
|
1;4467;SEND;Hard!Text^?123
|
||||||
|
2;6467;SEND;Hard!Text^?123
|
||||||
|
3;8467;SEND;Hard!Text^?123
|
||||||
|
4;10467;SEND;Hard!Text^?123
|
||||||
|
5;12467;SEND;Hard!Text^?123
|
||||||
|
1;5017;SEND;Hard!Text^?123
|
||||||
|
2;7718;SEND;Hard!Text^?123
|
||||||
|
3;9718;SEND;Hard!Text^?123
|
||||||
|
4;11718;SEND;Hard!Text^?123
|
||||||
|
5;13718;SEND;Hard!Text^?123
|
||||||
|
6;15718;SEND;Hard!Text^?123
|
||||||
|
7;23245;SEND;Hard!Text^?123
|
||||||
|
8;25245;SEND;Hard!Text^?123
|
||||||
|
9;27245;SEND;Hard!Text^?123
|
||||||
|
10;29245;SEND;Hard!Text^?123
|
||||||
|
11;31245;SEND;Hard!Text^?123
|
||||||
|
7;13467;RECV;Hard!Text^?123
|
||||||
|
8;13877;RECV;Hard!Text^?123
|
||||||
|
12;33245;SEND;Hard!Text^?123
|
||||||
|
9;13881;RECV;Hard!Text^?123
|
||||||
|
10;13884;RECV;Hard!Text^?123
|
||||||
|
11;13886;RECV;Hard!Text^?123
|
||||||
|
12;14491;RECV;Hard!Text^?123
|
||||||
|
13;35245;SEND;Hard!Text^?123
|
||||||
|
13;16539;RECV;Hard!Text^?123
|
||||||
|
14;37245;SEND;Hard!Text^?123
|
||||||
|
14;18587;RECV;Hard!Text^?123
|
||||||
|
15;39245;SEND;Hard!Text^?123
|
||||||
|
15;22069;RECV;Hard!Text^?123
|
||||||
|
16;41245;SEND;Hard!Text^?123
|
||||||
|
16;22481;RECV;Hard!Text^?123
|
||||||
|
17;43245;SEND;Hard!Text^?123
|
||||||
|
17;24526;RECV;Hard!Text^?123
|
||||||
|
18;45245;SEND;Hard!Text^?123
|
||||||
|
18;26574;RECV;Hard!Text^?123
|
||||||
|
19;47245;SEND;Hard!Text^?123
|
||||||
|
19;28623;RECV;Hard!Text^?123
|
||||||
|
20;49245;SEND;Hard!Text^?123
|
||||||
|
20;30670;RECV;Hard!Text^?123
|
||||||
|
21;51245;SEND;Hard!Text^?123
|
||||||
|
22;53245;SEND;Hard!Text^?123
|
||||||
|
23;55245;SEND;Hard!Text^?123
|
||||||
|
24;57245;SEND;Hard!Text^?123
|
||||||
|
25;59245;SEND;Hard!Text^?123
|
||||||
|
26;61245;SEND;Hard!Text^?123
|
||||||
|
27;63245;SEND;Hard!Text^?123
|
||||||
|
28;65245;SEND;Hard!Text^?123
|
||||||
|
29;67245;SEND;Hard!Text^?123
|
||||||
|
1;3338;SEND;Hard!Text^?123
|
||||||
|
1;8867;RECV;Hard!Text^?123
|
||||||
|
2;5338;SEND;Hard!Text^?123
|
||||||
|
2;11113;RECV;Hard!Text^?123
|
||||||
|
3;7338;SEND;Hard!Text^?123
|
||||||
|
3;13016;RECV;Hard!Text^?123
|
||||||
|
4;9338;SEND;Hard!Text^?123
|
||||||
|
4;14960;RECV;Hard!Text^?123
|
||||||
|
5;11338;SEND;Hard!Text^?123
|
||||||
|
5;17008;RECV;Hard!Text^?123
|
||||||
|
6;13338;SEND;Hard!Text^?123
|
||||||
|
6;19058;RECV;Hard!Text^?123
|
||||||
|
7;15338;SEND;Hard!Text^?123
|
||||||
|
7;20899;RECV;Hard!Text^?123
|
||||||
|
8;17338;SEND;Hard!Text^?123
|
||||||
|
8;22947;RECV;Hard!Text^?123
|
||||||
|
9;19338;SEND;Hard!Text^?123
|
||||||
|
10;21338;SEND;Hard!Text^?123
|
||||||
|
9;24995;RECV;Hard!Text^?123
|
||||||
|
11;23338;SEND;Hard!Text^?123
|
||||||
|
12;25338;SEND;Hard!Text^?123
|
||||||
|
13;27338;SEND;Hard!Text^?123
|
||||||
|
10;27555;RECV;Hard!Text^?123
|
||||||
|
11;29706;RECV;Hard!Text^?123
|
||||||
|
12;31139;RECV;Hard!Text^?123
|
||||||
|
13;32982;RECV;Hard!Text^?123
|
||||||
|
14;29338;SEND;Hard!Text^?123
|
||||||
|
14;35031;RECV;Hard!Text^?123
|
||||||
|
15;31338;SEND;Hard!Text^?123
|
||||||
|
15;37078;RECV;Hard!Text^?123
|
||||||
|
16;33338;SEND;Hard!Text^?123
|
||||||
|
16;39137;RECV;Hard!Text^?123
|
||||||
|
17;35338;SEND;Hard!Text^?123
|
||||||
|
17;40970;RECV;Hard!Text^?123
|
||||||
|
18;37338;SEND;Hard!Text^?123
|
||||||
|
18;43018;RECV;Hard!Text^?123
|
||||||
|
19;39338;SEND;Hard!Text^?123
|
||||||
|
19;45066;RECV;Hard!Text^?123
|
||||||
|
20;41338;SEND;Hard!Text^?123
|
||||||
|
20;46909;RECV;Hard!Text^?123
|
||||||
|
21;43338;SEND;Hard!Text^?123
|
||||||
|
22;45338;SEND;Hard!Text^?123
|
||||||
|
23;47338;SEND;Hard!Text^?123
|
||||||
|
21;48957;RECV;Hard!Text^?123
|
||||||
|
24;49338;SEND;Hard!Text^?123
|
||||||
|
22;51210;RECV;Hard!Text^?123
|
||||||
|
23;53053;RECV;Hard!Text^?123
|
||||||
|
24;54899;RECV;Hard!Text^?123
|
||||||
|
25;51338;SEND;Hard!Text^?123
|
||||||
|
25;56944;RECV;Hard!Text^?123
|
||||||
|
26;53338;SEND;Hard!Text^?123
|
||||||
|
26;58992;RECV;Hard!Text^?123
|
||||||
|
27;55338;SEND;Hard!Text^?123
|
||||||
|
27;61041;RECV;Hard!Text^?123
|
||||||
|
28;57338;SEND;Hard!Text^?123
|
||||||
|
28;62884;RECV;Hard!Text^?123
|
||||||
|
29;59338;SEND;Hard!Text^?123
|
||||||
|
29;64932;RECV;Hard!Text^?123
|
||||||
|
30;61338;SEND;Hard!Text^?123
|
||||||
|
30;66980;RECV;Hard!Text^?123
|
||||||
|
31;63338;SEND;Hard!Text^?123
|
||||||
|
31;69028;RECV;Hard!Text^?123
|
||||||
|
32;65338;SEND;Hard!Text^?123
|
||||||
|
33;67338;SEND;Hard!Text^?123
|
||||||
|
32;71178;RECV;Hard!Text^?123
|
||||||
|
33;73125;RECV;Hard!Text^?123
|
||||||
|
34;69338;SEND;Hard!Text^?123
|
||||||
|
34;74971;RECV;Hard!Text^?123
|
||||||
|
1;4643;SEND;Hard!Text^?123
|
||||||
|
2;6643;SEND;Hard!Text^?123
|
||||||
|
3;8643;SEND;Hard!Text^?123
|
||||||
|
4;10643;SEND;Hard!Text^?123
|
||||||
|
5;12643;SEND;Hard!Text^?123
|
||||||
|
6;14643;SEND;Hard!Text^?123
|
||||||
|
7;16643;SEND;Hard!Text^?123
|
||||||
|
8;18643;SEND;Hard!Text^?123
|
||||||
|
9;20643;SEND;Hard!Text^?123
|
||||||
|
10;22643;SEND;Hard!Text^?123
|
||||||
|
11;24643;SEND;Hard!Text^?123
|
Loading…
Reference in New Issue
Block a user