Skocz do zawartości

W jaki sposób porównać ze sobą zmienne string?


northrop

Pomocna odpowiedź

Cześć. Mam problem z poniższym kodem. To urządzenie ma odbierać dane wysyłane przez lorę. Na serial port przychodzą następujące dane: Screenshot_5.thumb.png.b8fe6c88fcbc2c52180de412365bc9f7.png

Wiadomość LED1ON ma uruchomić wbudowaną diodę 13 na arduino.

Wiadomość ta przychodzi w zmiennej (rc.data).

Próbuję porównać tą zmienną z tekstem w taki sposób:

 if (rc.data.equals ("#LED1ON"))
    {
      digitalWrite(LED_BUILTIN, HIGH);
    }
    else
    {
     digitalWrite(LED_BUILTIN, LOW);
    }

Ale to niestety nie działa. W jaki sposób można to zrobić?

Poniżej cały kod:

#define ENABLE_RSSI true 

#include "Arduino.h" 
#include "LoRa_E220.h" 



#include <SoftwareSerial.h> 
SoftwareSerial mySerial(3, 2); // Arduino RX <-- e220 TX, Arduino TX --> e220 RX 
LoRa_E220 e220ttl(&mySerial, 6, 4, 5); // AUX M0 M1 



void setup() { 
  pinMode(LED_BUILTIN, OUTPUT);
  
  Serial.begin(9600); 
  delay(500); 
  

  // Startup all pins and UART 
  e220ttl.begin(); 

  Serial.println("\n""Oczekuje na pierwszą wiadomość!"); 
  } 

void loop() { 

   
  if (e220ttl.available()>1) { 
  //  Serial.println("Wiadomośc odebrana!"); 

    // read the String message 
#ifdef ENABLE_RSSI //s
  ResponseContainer rc = e220ttl.receiveMessageRSSI(); 
#else 
  ResponseContainer rc = e220ttl.receiveMessage(); 
#endif 
  // Is something goes wrong print error 
  if (rc.status.code!=1){ 
    Serial.println(rc.status.getResponseDescription()); 
  }else{ 
    // Print the data received 
  //  Serial.println(rc.status.getResponseDescription()); 
    Serial.println(rc.data);  //tutaj pokazana jest treść wiadomości przychodzącej 
    
    if (rc.data.equals ("#LED1ON"))
    {
      digitalWrite(LED_BUILTIN, HIGH);
    }
    else
    {
     digitalWrite(LED_BUILTIN, LOW);
    }
   
#ifdef ENABLE_RSSI 
    Serial.print("RSSI: "); Serial.println(rc.rssi, DEC);
    Serial.print("\n");

    
    
#endif 
{
}
}
}
}

 

Link do komentarza
Share on other sites

(edytowany)

Nie mam dostępu do arduino, żeby przetestować, ale masz racje, program napisany w c# wysyła na port szeregowy: port.Write("#LED1ON\n") i to jest zapewne cała przyczyna wszystkich niepowodzeń. Dam znać jak przetestuję, dzięki kolego 🙂

 

Edytowano przez northrop
Lepsza analiza kodu źródłowego
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.