|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Jaka57 Moderator
Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5766 Aktiv.: 25.96 Kraj: Grosuplje
|
Objavljeno: Ned Dec 09, 2018 8:40 pm Naslov sporočila: |
|
|
Ja, vrne napako.
Toda tole pa prenese brez težav:
Koda: |
const char Maximalni_tok='A';
const char Prvi_izpis='B';
const char Drugi_izpis='H';
switch (nekaj){
case Maximalni_tok:
kar nekaj;
case Prvi_izpis:
karnekaj;
cse Drugi_izpis:
karnekaj;
default:
karnekaj;
break;
}
|
_________________ Lp, Jaka |
|
Nazaj na vrh |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.24 Kraj: Črnomelj
|
Objavljeno: Pon Dec 10, 2018 8:30 am Naslov sporočila: |
|
|
Mnogo bolje.
Jaka57 je napisal/a: |
tilz0R je napisal/a: |
...Spremenljivka ne more biti del case stavka v C++, ker ni konstantna vrednost. Razen, če bo const ali constexpr. |
Drži! |
_________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
|
gustinmi Član
Pridružen-a: Tor 26 Feb 2019 13:41 Prispevkov: 14 Aktiv.: 0.23
|
Objavljeno: Tor Feb 26, 2019 3:41 pm Naslov sporočila: |
|
|
Zares elegantno lahko to rešiš z t.i. frame-ingom in objektno orientirano rešitvijo. Frames ali okvirji so lahko bazirani na dolžini, in se sestojijo iz: UKAZA in podatka.
Seveda morajo biti vsi ukazi enako dolgi, ali pa zapolniti manjkajoče dele z 0 paddingom.
Koda tako čaka na prve štiri znake (imax, umax, tx00), nato pa se v if zanki zgolj odloči, ali bo naredila objekt tipa imaxHandler ali umaxHandler. Koda objekta potem poskrbi za prebranje podatka in izpis na Serial.
Arduino IDE ima zelo dobro podporo za tovrstno programiranje, saj se v času prevajanja prevedejo kot celota vse podprte skripte ki so v direktoriju projekta. Podrobnosti so v : https://github.com/arduino/Arduino/wiki/Build-Process
Drugače bo pa vse lepše že z ena namensko funkcijo :
Koda: |
void printCommandData(String commandName, String sprejem){
String sprejemToPrint = sprejem.substring(sprejem.indexOf(commandName)+4, sprejem.indexOf(commandName)+7);
Serial.println (commandName + sprejemToPrint);
}
// in njen klic
if (sprejem.indexOf("imax")>-1){
printCommandData("imax", sprejem);
}
// .. in tako naprej |
|
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 49 dni
Powered by phpBB © 2001, 2005 phpBB Group
|