From 32f20eaa7324b75242f25dd141f85941b6c59730 Mon Sep 17 00:00:00 2001 From: Adema Date: Wed, 12 Mar 2025 10:01:04 +0100 Subject: [PATCH] Upload files to "eth_tcp_receiver" --- eth_tcp_receiver/eth_tcp_receiver.ino | 73 +++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 eth_tcp_receiver/eth_tcp_receiver.ino diff --git a/eth_tcp_receiver/eth_tcp_receiver.ino b/eth_tcp_receiver/eth_tcp_receiver.ino new file mode 100644 index 0000000..a26c07c --- /dev/null +++ b/eth_tcp_receiver/eth_tcp_receiver.ino @@ -0,0 +1,73 @@ +#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 + } + } +}