UDP mit String vergleichen

Hallo ich habe aktuell das Problem das ich es nicht gepacken bekomme einen UDP Eingang mit einem String zu vergleichen

evtl ist es ja nur eine Denkblockade

 int packetSize = Udp.parsePacket();
  if (packetSize) {
    inputstring="";
    Serial.print("Received packet of size ");
    Serial.println(packetSize);
    Serial.print("From ");
    IPAddress remote = Udp.remoteIP();
    for (int i=0; i < 4; i++) {
      Serial.print(remote[i], DEC);
      if (i < 3) {
        Serial.print(".");
      }
    }
    Serial.print(", port ");
    Serial.println(Udp.remotePort());

    // read the packet into packetBufffer
    Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);
    Serial.println("Contents:");
    Serial.println(packetBuffer);
    for(int i =0; i<UDP_TX_PACKET_MAX_SIZE;i++){

      if(isAlphaNumeric(packetBuffer[i])){
      inputstring= inputstring +packetBuffer[i];
      Serial.println(inputstring);}
    }
   checkeproms();
    

  for (int i = 0; i<44; i++) {

    Serial.println((char*)bufferEPROM[i]);
      //Checke ob der Inputstring ==  BufferErpom ist
      if (inputstring !=0 && inputstring == (char*)bufferEPROM[i] ){
        Serial.print("EEProm auf Platz ");
        Serial.println(i);
      
         pixelset(i, red, green, blue);
         inputstring="";
         break;
          }
          
    
        }

Wie ist inputstring deklariert? String oder Char-Array?

Hier vergleichst Du eine Kiste mit Äpfeln (inputstring) mit einem Apfel (char*)bufferEPROM*.*
Das kann nie gleich sein.
Gruß Tommy

Tommy56:
Wie ist inputstring deklariert? String oder Char-Array?

Hier vergleichst Du eine Kiste mit Äpfeln (inputstring) mit einem Apfel (char*)bufferEPROM*.*
Das kann nie gleich sein.
Gruß Tommy
[/quote]
Als String
```
*klappt leider auch nicht so
  for(int i =0; i<UDP_TX_PACKET_MAX_SIZE;i++){

if(isAlphaNumeric(packetBuffer[i])){
      str1=str1+packetBuffer[i];

}

for (int t =0; i<32;i++){
      str2=bufferEPROM[i][t];
    }
     
      Serial.println(strcmp(str1, str2));*

```

noiasca:
Solche Codeschnippsel die du hier präsentierst bringen wenig bis gar nichts.

Wenn du mit Google-Suche nicht weiterkommst, und weitere Hilfe in diesem Forum erhoffst, sollst du einen ganzen kompilierbaren Sketch einstellen.

Du kannst auch deinen Sketch soweit verschlanken, dass du diesen mit der konkreten Fragestellung hier posten kannst. Aber es muss weiterhin ein vollständiger Code mit Deklarationen - setup und loop sein, etwas was die Helfer hier in ihre IDE kopieren können und dir mit deinem Problem zu helfen.

Ja da haste recht

Einstellungen.h ---> beinhaltet Variabeln und deklarationen
EPromaufgaben.h --> Liest den inhalt der Eproms aus
pixelaufgaben.h --> Setz auf einem LED streifen die Pixel
Serielcheck.h --> Soll durch UDP ersetz werden

noiasca:
bin schon gespannt wer sich die arbeit antut 6 Dateien zu analyiseren.

Mensch, ist es echt so schwierig es dem Gegenüber einfach zu machen? Egal ich geh mal zur Arbeit und schau am Abend noch mal rein.

Sind alles recht kleine Funktionen :smiley:

hendrikator:
Als String

klappt leider auch nicht so

for(int i =0; i<UDP_TX_PACKET_MAX_SIZE;i++){

if(isAlphaNumeric(packetBuffer[i])){
      str1=str1+packetBuffer[i];

}

for (int t =0; i<32;i++){
      str2=bufferEPROM[i][t];
    }
     
      Serial.println(strcmp(str1, str2));

Du solltest die Grundlagen zu Datentypen lernen und nicht wild drauf los probieren.

Gruß Tommy

habe den fehler gefunden

       Serial.print(inputstring);
     
  
       Serial.println("---");
      Serial.print((char*)bufferEPROM[0]);
      Serial.println("---");

Inputstring gibt aus = rot---
BufferEPROM gibt aus = rot

Sprich es wird ein /n an den Buffer angehängt

jetz ist die frage wie bekomme ich /n weck?

Es einfach nicht mit anhängen.

if(isAlphaNumeric(packetBuffer[i]) && packetBuffer[i] != '\n'){
      str1=str1+packetBuffer[i];

    }

Gruß Tommy

Tommy56:
Es einfach nicht mit anhängen.

if(isAlphaNumeric(packetBuffer[i]) && packetBuffer[i] != '\n'){

str1=str1+packetBuffer[i];

}




Gruß Tommy

ist leider nicht jetz der UDP String sonder der Eprom

  for ( int i = 0; i < 44; i++) {
    de[i].search();// Suche nach EPROM
    
    if (de[i].validAddress(de[i].getAddress())) {
      //speichere Wert in Buffer
      if ((status = de[i].readPage(bufferEPROM[i], 0)) == 0) {
        
      // Serial.print("EpromInhalt --> ");
      // Serial.println((char*)bufferEPROM[i]);
        }
      }
    }

Soll ich es dann so machen das ich den BufferEprom nochmal neu befülle?

Aus Deinen Fragmenten kann man nicht so leicht ersehen, was was sein soll.
Der Code, den ich ergänzt habe stand aber bei UDP.

Mit der extensiven Verwendung von String wirst Du Dir früher oder später den RAM fragmentieren und dann "schöne" Effekte erleben.
Benutze für inputstring im setup die Methode reserve(), um ihn auf die zu erwartende Größe anzulegen oder nimm gleich Char-Arrays. Zu Zeichenketten kannst Du Dir das hier mal durchlesen. Da ist auch ein Beispiel, wie man eine Zeichenkette in einen Puffer einliest drin.

Gruß Tommy

Danke erstmal für die Hilfe. An deine Lösung habe ich noch gar nicht gedacht mit der Fragmentierung da dies ein 24/7 Projekt wird. werde mir jetz erstmal den text reinziehen