Arduino Polska Forum
Przechwycenie znaków wpisywanych do monitora portu szeregowego do tablicy - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Przechwycenie znaków wpisywanych do monitora portu szeregowego do tablicy (/watek-przechwycenie-znak%C3%B3w-wpisywanych-do-monitora-portu-szeregowego-do-tablicy)



Przechwycenie znaków wpisywanych do monitora portu szeregowego do tablicy - MarJanPol - 10-02-2018

Witam, czy ktoś ma pomysł dlaczego poniższy kod nie działa? Idea jest taka, że po wpisaniu łańcucha znaków (o różnej długości!) do monitora portu szeregowego dane te powinny zostać wpisane do tablicy a tablica wyświetlona w okienku monitora:

Kod:
char message[20]; //zadeklarowanie tablicy do przechowywania 20 znaków = 19 liter + 1 znak końca łańcucha '\0'
int i = 0; //zadeklarowanie zmiennej i jako licznika kolejnych elementów tablicy
int ilosc; //zadeklarowanie zmiennej ilosc jako dodatkowego licznika

void setup()
{
 Serial.begin(9600);
 while (!Serial); //wymagane odczekanie jeśli wykorzystujemy Leonardo
}

void loop()
{
if (Serial.available() > 0) //Gdy w buforze pojawi się pierwszy bajt - pierwszy znak otrzymany przez port szeregowy
{
     delay(1000);
if (i=0)
         {
         ilosc = Serial.available();
         Serial.println("ilość znaków w buforze: ");
         Serial.println(ilosc);
         i=i+1;
         }
     else
         {
         i=0;
         for (i=0; i<ilosc; i++)
{
message[i] = Serial.read(); //przypisanie pierwszej komórce tablicy message najstarszego (nie wykasowanego jeszcze) znaku z pamięci bufora
        }  
message[ilosc] ='\0';
         Serial.println(message); //wyświetl całą tablicę w monitorze portu szeregowego
         i = 0;
         ilosc=0;
        delay(3000);
         }
}
}



RE: Przechwycenie znaków wpisywanych do monitora portu szeregowego do tablicy - MarJanPol - 11-02-2018

Ha, znalazłem głupi błąd. Powinno być if (i==0) i wszystko działa.