Stránka 2 z 2

Re: Data z řetězce

Napsal: 27 črc 2020, 18:08
od Ludek
Kamile, píše to : incompatible types in assignment of 'char*' to 'char [10]'
na co jsem zapomněl?

Re: Data z řetězce

Napsal: 27 črc 2020, 19:19
od ondraN
Zkus tohle, upozorňuji že to neni otestovane :mrgreen:

Kód: Vybrat vše

//predpoklada retezec tvaru "text125478" nebo "text 58425" nebo "  text 9724    \n" nebo "<text1475>" atd........
String text="";
int textval=0;
char ch='\0';
const byte MINRXLEN=5; //min. delka textu

void setup() {
  Serial.begin(9600);

}

void loop() {
  if(Serial.available()>=MINRXLEN){
    while(Serial.available()>0){
      ch=Serial.peek();
      if(!(isDigit(ch)||isAlpha(ch))){
        Serial.read();  //znak co neni pismeno nebo cislo zahodime
      }else{
        if(isAlpha(ch)){
          text=text+String(ch); 
          Serial.read(); //zpracovany znak vyhodime
        }else{  //je to cislice
          textval=Serial.parseInt();
        }
      }
      if(Serial.available()==0){ //chvilku pockame, jestli jeste neco neprijde
        delay(10);
      }
    }
  }
  //tady mame v promenne text zadany text
  //v promenne textval je cislo, pokud je nula, bylo cislo nulove nebo nebylo zadane
  //pokracujeme zpracovanim dat
  //po zpracovani musime inicializovat textovy retezec, jinak se bude stale mnozit 
  text="";
  
}

Re: Data z řetězce

Napsal: 27 črc 2020, 19:45
od KamilV
Aha, jasně, strtok vrací jen pointer, deklaruj si x jako

Kód: Vybrat vše

char* x;
A ještě nevím z hlavy, zda atoi() v parametru vezme referenci. Mohl by.

Re: Data z řetězce

Napsal: 27 črc 2020, 20:52
od Ludek
Kamile, pořád to samé :-( ta hvězdička nepomohla...............
Ondro, šlape to !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
díky Vám všem

Re: Data z řetězce

Napsal: 27 črc 2020, 21:21
od KamilV
Nevěřím :) musel bys ukázat celý kód. Každopádně pokud jsou to jen dvě hodnoty, dá se to načíst různě.
síla strtoku by opravdu byla ve chvíli, kdy by hodnot bylo více, např. "ahoj*123*svete*789*dlouhy*456*text*0"