Skocz do zawartości

Działanie na tablicach


Michna

Pomocna odpowiedź

Cześć,

Robię projekt opierający się na pomiarze temperatury, wilgotności i ciśnienia poprze Arduino Nano, a następnie przesłaniu tych danych za pomocą modułu bluethooth do Arduino Uno. Cała komunikacja działa w sposób poprawny, lecz mój problem polega na "obróbce tych danych". Dane odbierane są poprzez następujący kod:

static boolean recvInProgress = false;
  static byte ndx = 0;
  char startMarker1 = '<';
  char endMarker1 = '>';
  char rc;
  if(BTSerial.available() > 0)
    {
      rc=BTSerial.read();
      if(recvInProgress == true)
        {
          if(rc!=endMarker1)
            {
              receivedChars[ndx] = rc;
              ndx++;
              if(ndx > maxDataLength)
                {
                  ndx = maxDataLength;
                }
            }
          else
            {
              receivedChars[ndx] = '\0';
              recvInProgress = false;
              ndx = 0;
              newData = true;
            }
        }
      else if (rc == startMarker1)
        {
          recvInProgress = true;
        }
    }

Zmienna receivedChars jest zadeklarowana wcześniej w sposób następujący:

char receivedChars[41];

Następnie tą tablicę danych którą otrzymuje chciałbym podzielić na mniejsze tablicę odpowiadające za temperaturę, wilgotność i ciśnienie. Próbuje wykonać to w sposób następujący:
 

 for(int i=0; i<5; i++)
  {
    temperature_out=receivedChars;
  }
  Serial.print("Temperatura: ");
  Serial.print(temperature_out);
  Serial.println(" *C");

Wcześniej deklaruje tablicę związaną z temperatura w sposób następujący:

char temperature_out [5];

Zamiast wyłuskania samej temperatury otrzymuje w oknie monitora szeregowego coś takiego:

 Temperatura: 24.7024.70,46.40,979.84,293.06 *C

A tablica receivedChars wygląda następująco:

24.70,46.50,979.83,293.08

Widzę tutaj że po prostu jakby sama pęta for nie przerywała funkcji  temperature_out=receivedChars;, a zaczyna nadpis tablicy jakby od nowa.

Nie jestem pewien czy do końca wyjaśniłem jasno w czym leży problem. Będę wdzięczny za wytłumaczenie w czym leży błąd oraz za udzielenie rady w jaki sposób ten problem naprawić

Edytowano przez Gieneq
Zachęcam do używania bloku kodu
Link do komentarza
Share on other sites

Dzięki za spostrzeżenie @Vitor_Borba. Błąd leżał tak na prawdę w dwóch miejscach, spróbowałem przepisać jeszcze raz kod i podczas przepisywania znalazłem błąd podczas deklaracji tablicy. Podczas jej deklarowania między nazwa tablicy a nawiasami kwadratowymi wkradła mi się spacja, która najzwyczajniej wszystko psuła i sam kompilator nie wiedział o tym ze to zmienna tablicowa. Dziękuje za pomoc!

@piotr96 Szukając rozwiązania w internecie trafiłem tez jeszcze na podobna propozycje jak twoja, jak przepisywałem kod to zaimplementowałem również znak zerowy w tablicy. Dzięki za radę!

Wszystko teraz działa jak powinno, jeszcze raz dziękuje za pomoc!

 

  • Lubię! 1
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.