Hallo.
Ich möchte einen Arduino Mega mit Ethernet Shield als Server nutzen. Das funktioniert auch alles. Ich bekomme es auch hin, dass ich vom Server eine Rückmeldung bekomme wenn ein Befehl gesendet wurde also gesendet an den Server.
Dafür habe ich zum Testen Hercules SETUP genutzt.
Jetzt versuche ich aber noch das der Server einmalig einen aktuellen Status an den Client schickt sobald dieser sich mit dem Server verbunden hat.
Das hier ist mein Code:
#include <SPI.h>
#include <Ethernet.h>
// Arduino Servereinstellungen
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED // Selbst erstellte Arduino MAC Adresse
};
IPAddress ip(169,254,230, 5); // Selbst erstellte Arduino IP Adresse
const int port = 23; // Arduino Server - Port
EthernetServer server(port);
String commandStr; // Zum Speichern des Befehls vom Client
int baudrate1 = 9600; // Variable fuer die Baudrate
// VARIABLE UND PINDEFINITION
int PA = 2; // Ausgang
int Eingabe = 0;
EthernetClient client;
void setup()
{
Serial.begin(baudrate1); //Serielle Kommunikatiob beginnen
pinMode(PA, OUTPUT);
digitalWrite(PA, LOW);
Ethernet.begin(mac, ip); // Initialisierung des Ethernet-Servers
server.begin();
Serial.print("Server IP: "); // Ausgabe von IP-Adresse und Port des Arduino-Servers am seriellen Monitor
Serial.println(Ethernet.localIP());
Serial.print("Port: ");
Serial.println(port);
}
void loop()
{
EthernetClient client = server.available();
if (client.available())
{
char c = client.read(); // Zeichen bis zum Zeilenvorschub lesen
if (c != '\n') {
commandStr += c; // Erhaltenes Zeichen zu String-Variablen hinzufügen
} else {
Serial.println("Befehl: " + commandStr); // Den empfangenen Befehl am seriellen Monitor ausgeben
processCommand_X(commandStr); // Verarbeiten des empfangenen Befehls - NETZWERKBETRIEB
commandStr = ""; // Variable fuer den naechsten Befehl loeschen
}
}
// Wird gepruef
if (Eingabe == 1)
{
digitalWrite(PA, HIGH); // An
server.println("Ausgang aktiviert");
Eingabe = 0;
}
if (Eingabe == 2)
{
digitalWrite(PA, LOW); // Aus
server.println("Ausgang deaktiviert");
Eingabe = 0;
}
}
// NETZWERKBEFEHLE UMWANDELN
void processCommand_X(String cmd) // TCP Befehle umsetzten
{
if (cmd == "A") // Befehl A
{
char c = "";
Eingabe = 1;
server.println("Befehl A");
}
if (cmd == "B") // Befehl B
{
char c = "";
Eingabe = 2;
server.println("Befehl B");
}
}
Kann mir da jemand helfen? Danke vorab.