Data z řetězce
Data z řetězce
Ahoj, nevím, jestli se dají míchat brambory a hrušky, ale potřeboval bych toto :
Ze Serial.input přijde řetězec - např. < Ahoj123 > a já potřebuji toto oddělit tak,
že bude proměnná String = Ahoj a proměnná int = 123. Je to blbost, nebo to jde?
Ze Serial.input přijde řetězec - např. < Ahoj123 > a já potřebuji toto oddělit tak,
že bude proměnná String = Ahoj a proměnná int = 123. Je to blbost, nebo to jde?
Re: Data z řetězce
Jasně že to jde. Čti si znaky do stringu než narazíš na číslo (isDigit() ). Pak si čti čísla do jiného strinu, než tam bude jiný znak. String s čísly si převeď na int nebo jiný typ a pokračuj s dalším čtením. Konkrétní provedení záleží na struktuře dat a co se má s těmi nečíselnými hodnotami dělat.
Nebo další možnost, pokud víš, že je tam vždy text a číslo a tak dokola, načítej text a pomocí Serial.peek() se vždy podívej na znak, než ho přečteš. Pokud je to číslo, můžeš pak udělat Serial.parseInt() nebo Serial.parseFloat() podle očekávaného typu.
Nebo další možnost, pokud víš, že je tam vždy text a číslo a tak dokola, načítej text a pomocí Serial.peek() se vždy podívej na znak, než ho přečteš. Pokud je to číslo, můžeš pak udělat Serial.parseInt() nebo Serial.parseFloat() podle očekávaného typu.
Re: Data z řetězce
Ondro, tak jsem se nějak zamotal a už nevím, jak napsat testovací kod... Je to pro mne velké sousto
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: Data z řetězce
Pokud to už z nějakého Arduina odesíláš, a už tam je zvlášť to "Ahoj" a "123",
můžeš to odesílat pomocí STRUCT,
pak stejný STRUCT přijmeš už roztříděný.
můžeš to odesílat pomocí STRUCT,
pak stejný STRUCT přijmeš už roztříděný.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: Data z řetězce
No, možná zkus popsat, jestli máš možnost nějak vstupní data ovlivnit, nebo jakou očekáváš strukturu dat, nebo jestli je to vstup z klávesnice (to se ošetřuje nejhůře). Podle tvojeho dotazu se to nedá nějak rozumně spíchnout.
Re: Data z řetězce
Ono mi to přijde po seriové lince, nebo po RS485 anebo po Rx, což je stejné, ale od PICAXE
Mohu to odeslat na tři způsoby - buď jak jsem psal, anebo text - nejaký oddělovač - a čísla, nebo opačně...
Mohu to odeslat na tři způsoby - buď jak jsem psal, anebo text - nejaký oddělovač - a čísla, nebo opačně...
Re: Data z řetězce
S oddělovačem je to nejjistější a snadno to "rozparsuješ" pomocí strtok().
Re: Data z řetězce
Kamile, to by asi bylo nejlepší řešení... ALe i tak jsem mimo Hledám, zkouším a samá blbina...
Testuju to na řetězci, (třeba String s) "Ahoj*123" a text potřebuju mít v jiném řetězci (třeba String x) a čísla do proměnné int Data
Hvězdička je oddělovač.
Pak dám kontrolu :
Serial.print (s);
Serial.print (" ");
Serial.print (x);
Serial.print (" ");
Serial.println (Data);
Testuju to na řetězci, (třeba String s) "Ahoj*123" a text potřebuju mít v jiném řetězci (třeba String x) a čísla do proměnné int Data
Hvězdička je oddělovač.
Pak dám kontrolu :
Serial.print (s);
Serial.print (" ");
Serial.print (x);
Serial.print (" ");
Serial.println (Data);
Re: Data z řetězce
Uvař pořádný kafe a počti si tohle : https://www.arduinotech.cz/inpage/ardui ... periferie/ hlavně tu část o sériové lince.
Re: Data z řetězce
Kód: Vybrat vše
char s[10] = "Ahoj*123";
char x[10];
int Data;
x = strtok(s, "*");
Data = atoi(strtok(NULL, "*"));
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů