Proměnné a řetězce v příkazu serout
Proměnné a řetězce v příkazu serout
Zdravím,
potřebuji poradit správný zápis - jak složit řetězec který bude obsahovat určitý text a hodnotu z proměnné a celé to odeslat příkazem "serout". Pořád mi editor hází syntaktickou chybu.
Tedy pro představu... posílám z picaxe příkaz "tlacitkoA0" a "tlacitkoA1" program v PC identifikuje že má buď tlačítko "A" sepnout nebo rozepnout podle přijaté hodnoty na konci řetězce. Ale problém nastává tehdy když hodnota není konstanta ale proměnná načtená "readadc" a uložená do b0 tedy 0-255 potřebuju tedy z řetezce "tlacitko" a hodnoty v b0 sestavit řetezec a odeslat ho příkazem "serout". Jedno nebo druhé poslat umím, ale spojit dohromady obě je pro mě oříšek
Máte nějaké tipy? Díky za rady
potřebuji poradit správný zápis - jak složit řetězec který bude obsahovat určitý text a hodnotu z proměnné a celé to odeslat příkazem "serout". Pořád mi editor hází syntaktickou chybu.
Tedy pro představu... posílám z picaxe příkaz "tlacitkoA0" a "tlacitkoA1" program v PC identifikuje že má buď tlačítko "A" sepnout nebo rozepnout podle přijaté hodnoty na konci řetězce. Ale problém nastává tehdy když hodnota není konstanta ale proměnná načtená "readadc" a uložená do b0 tedy 0-255 potřebuju tedy z řetezce "tlacitko" a hodnoty v b0 sestavit řetezec a odeslat ho příkazem "serout". Jedno nebo druhé poslat umím, ale spojit dohromady obě je pro mě oříšek
Máte nějaké tipy? Díky za rady
Re: Proměnné a řetězce v příkazu serout
Ahoj. Příkaz "serout" můžeš zapsat několikrát za sebou, nebo všechno potřebné spojit pomocí řady parametrů, oddělených čárkami.
Dva serouty za sebou:
Parametry oddělené čárkou:
Dva serouty za sebou:
Kód: Vybrat vše
serout 7,N9600_32,("tlacitkoA")
serout 7,N9600_32,(#b0)
Kód: Vybrat vše
serout 7,N9600_32,("tlacitkoA",#b0)
Re: Proměnné a řetězce v příkazu serout
Ach jo, jak jednoduché .... díky za nakopnutí
Re: Proměnné a řetězce v příkazu serout
Zdravíčko,
když chci při různé hodnotě proměnné např. "b27" posílat pokaždé jiný text na displej, musím před každým poslaným textem adresovat umístění?
Nebo mohu toto adresování vynechat? ... zabírá to hodně místa ...
když chci při různé hodnotě proměnné např. "b27" posílat pokaždé jiný text na displej, musím před každým poslaným textem adresovat umístění?
Kód: Vybrat vše
if pos_do_kus = 1 then
serout C.2,N2400,(254,192) ; přesunout na začátek 2 řádku
serout C.2,N2400,(" S1 ")
endif
if pos_do_kus = 2 then
serout C.2,N2400,(254,192) ; přesunout na začátek 2 řádku
serout C.2,N2400,(" S2 ")
endif
if pos_do_kus = 3 then
serout C.2,N2400,(254,192) ; přesunout na začátek 2 řádku
serout C.2,N2400,(" S3 ")
endif
if pos_do_kus = 4 then
serout C.2,N2400,(254,192) ; přesunout na začátek 2 řádku
serout C.2,N2400,(" S4b ")
endif
if pos_do_kus = 5 then
serout C.2,N2400,(254,192) ; přesunout na začátek 2 řádku
serout C.2,N2400,(" Krok zpet ")
if enter = 1 then goto stan_kusa
Re: Proměnné a řetězce v příkazu serout
Podle mě ne. Třeba takhle řeším výpis dne v týdnu:
Obdobně to řeším když vypisuji číslo menší než 10 a větší než 10:
Kód: Vybrat vše
symbol baud=N2400
symbol day = b3
....
serout C.1, baud, (254,139);den v týdnu
if day = 0 then serout C.1, baud, ("Po")endif
if day = 1 then serout C.1, baud, ("Ut")endif
if day = 2 then serout C.1, baud, ("St")endif
if day = 3 then serout C.1, baud, ("Ct")endif
if day = 4 then serout C.1, baud, ("Pa")endif
if day = 5 then serout C.1, baud, ("So")endif
if day = 6 then serout C.1, baud, ("Ne")endif
Kód: Vybrat vše
symbol baud=N2400
symbol date = b4 ;den RTC
symbol month = b5 ;měsíc RTC
...
serout C.1, baud, (254,128);den
if date<10 then serout C.1, baud, ("0",#date,".")else serout C.1, baud, (#date,".")endif
serout C.1, baud, (254,131);měsic
if month<10 then serout C.1, baud, ("0",#month,".")else serout C.1, baud, (#month,".")endif
Re: Proměnné a řetězce v příkazu serout
Ještě jedna rada. Ty mezery ti zbytečně ubírají místo z paměti. Je výhodnější to nejdříve smáznout jako celek jednou mezerami celé a pak už jen vypisovat na patřičné místo S1, S2...
Já byl dokonce nedostatkem paměti přinucen všechen text menu nahrát do procesoru LCD a posílám tam už jen číselný odkaz jaký text má kam vypsat. Takže ten zápis pak vypadá takto:
Já byl dokonce nedostatkem paměti přinucen všechen text menu nahrát do procesoru LCD a posílám tam už jen číselný odkaz jaký text má kam vypsat. Takže ten zápis pak vypadá takto:
Kód: Vybrat vše
if vyber=10 then serout C.1,baud,(253,128,8)else serout C.1,baud,(253,128,7)endif; zobrazí se text konec nebo KONEC
if vyber=9 then serout C.1,baud,(253,192,10)else serout C.1,baud,(253,192,9)endif;nastav cas datum/NASTAV CAS DATUM
if vyber=8 then serout C.1,baud,(253,148,12)else serout C.1,baud,(253,148,11)endif;nastav cas raficek/NASTAV CAS RAFICEK
if vyber=7 then serout C.1,baud,(253,212,14)else serout C.1,baud,(253,212,13)endif;srovnani rafik/SROVNANI RAFIK
Re: Proměnné a řetězce v příkazu serout
Takže nemusím při listování menu pokaždé určovat, že se jedná o druhý řádek? ... a taky asi budu muset zjistit číslo pozice znaku nař. č.4 na dolním řádku a ty mezery na začátku tam nemít ...
Re: Proměnné a řetězce v příkazu serout
Já to nedělám. Prostě napíšu před výběrem kam se budou znaky zapisovat a pak už záleží co se vybere podle podmínky. Ono teoreticky nemusíš ani ty původní znaky mazat. Musíš je ale přepisovat na stejných pozicích. Pokud je nový text kratší nebo delší, musí se ty původní znaky odstranit, (buď smazáním LCD, řádku, vyplněním mezerami...) záleží podle toho co je výhodnější.
Ano ten první znak textu adresuješ přímo na to místo kde chceš aby začal text. Stačí si na to udělat takovouto tabulku podle tvého LCD:
Re: Proměnné a řetězce v příkazu serout
A jak je to s displejem 20/4ř.? Jen tak ze zvědavosti ...
Re: Proměnné a řetězce v příkazu serout
Použiji tabulku pro něj:
http://electromag1.wifeo.com/fabriquer- ... icaxe-.php
Upravil jsem si i program pro ten 20M2 a nahrávám si právě do její paměti všechna menu, abych tím zbytečně neubíral kapacitu v hlavním programu.
Posílám tam pak jen souřadnice prvního znaku a číselný odkaz. Na patřičné místo se mi pak vygeneruje dané menu.
Netuším, ale jak je to u jiných řadičů. Ten můj je z těhle stránek:http://electromag1.wifeo.com/fabriquer- ... icaxe-.php
Upravil jsem si i program pro ten 20M2 a nahrávám si právě do její paměti všechna menu, abych tím zbytečně neubíral kapacitu v hlavním programu.
Posílám tam pak jen souřadnice prvního znaku a číselný odkaz. Na patřičné místo se mi pak vygeneruje dané menu.