#include #include byte mac[] = { 0x04, 0xE9, 0xE5, 0x10, 0x00, 0x02 }; IPAddress ip(192, 168, 1, 101); const int localPort = 8888; EthernetServer server(localPort); EthernetClient client; #define package_size 1024 char packetBuffer[package_size]; unsigned long prev_time = micros(); unsigned long prev1_time = micros(); bool pack_avail = false; // Make sure this is defined void setup() { Serial.begin(921600); //while (!Serial); Serial.println("Initializing Ethernet..."); Ethernet.begin(mac, ip); if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet hardware not found!"); while (true); } if (Ethernet.linkStatus() == LinkOFF) { Serial.println("Ethernet cable not connected!"); } server.begin(); Serial.println("TCP Server Ready. Waiting for connections..."); } void loop() { if (!client || !client.connected()) { client = server.available(); if (client) { Serial.println("Client connected!"); } return; } int bytesReceived = 0; if (client.available()) { int byteRead = client.read(packetBuffer + bytesReceived, package_size - bytesReceived); if (byteRead > 0) { bytesReceived += byteRead; } // Check for "PACKAGE AVAILABLE" only in the first 25 bytes if (bytesReceived < 25) { if (strstr(packetBuffer, "P_A")) { pack_avail = true; } } // If package is available, read the full package_size if (pack_avail & bytesReceived == package_size) { uint16_t MHz = (package_size * 8) / (micros() - prev_time); Serial.printf("%d MHz\n", MHz); prev_time = micros(); // Update prev_time here printf("%d,%d,%d,%d,%d\n", packetBuffer[255], packetBuffer[511], packetBuffer[767], packetBuffer[1023], packetBuffer[0]); bytesReceived = 0; // Reset for the next packet pack_avail = false; // Reset pack_avail after reading full package } } }