Skocz do zawartości

Konwersja z char do uint32_t


Pomocna odpowiedź

Napisano

Mam problem mianowicie, mam postawiony na arduino serwer z kórego getem pobieram kod koloru RGB do wyświetlenia i dalej przekazuję to do funkcji, która działa dla zdefiniowanych kolorów w ten sposób:

#define RED             0xFF0000
#define GREEN           0x00FF00

Natomiast mój skrypt wysyła dane w formacie:

0x45ff9f natomiast w zmiennej char* color:

//ZMIANA KOLORU RGB
else if (StrContains(HTTP_req, "GET /?0x")!=0 ) {
  char* color;
  color = HTTP_req +6;
  Serial.println(color);
  setRGBcolor(color);
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println("Connnection: close");
  client.println();
}


//Funkcja RGB
void setRGBcolor(uint32_t rgb){
   Serial.println(rgb);
   recent = rgb;
   setRGB( rgb >> 16, rgb >> 8, rgb);

}

Jest to oczywiście tylko wycinek kodu gdzie następuje zmiana wartości zmiennych.

Serial.println(color); =wyświetla= 0x45ff9f

natomiast po przekazaniu zmiennej do funkcji już następuje zmiana wartości na :

Serial.println(rgb); =wyświetla= 1775

Rozumiem, że to przez konflikt typów zmiennych, jednak jak próbowałem otrzymywany get zapisać do zmiennej zgodnej z funkcją zapisywało już jak przy funkcji zmiany koloru (same liczby o innej wartości). Jak to skonwertować?

Poszukaj sobie co robi funkcja strtol. Skrypt przekazuje wartość w pistaci tekstowej, a musisz go skonwertować na uint32_t (czyli zrobić z tekstu liczbę).

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...