Dalsi zahada v C
Michal Gregor
a2x1nptda8 na email.cz
Sobota Červen 18 15:58:55 CEST 2011
Nedari se mi rozchodit sprintf(). Nevim kde je chyba:
u32 CidloTlaku;
u16 Procenta_Baterie;
s32 Vyska_cm;
s08 Teplota;
s16 Vario_cm;
Hodnoty:
CidloTlaku = 343707
Procenta_Baterie = 1100
Vyska_cm = 30844
Vario_cm = 0
Teplota = 27
Procenta_Baterie = 1100
Pokus prvni:
sprintf( Zprava , "$LK8EX1,%lx,%lx,%x,%x,%x",
CidloTlaku,
Vyska_cm,
Vario_cm,
Teplota,
Procenta_Baterie);
Vysledek je $LK8EX1,lx,lx,3E9B,5,787C
coz vubec neodpovida hodnotam - %lx je ignorovano a promenne jsou vynechany.
Po uprave na:
sprintf( Zprava , "$LK8EX1,%x,%x,%x,%x,%x",
CidloTlaku,
Vyska_cm,
Vario_cm,
Teplota,
Procenta_Baterie);
je v bufru: $LK8EX1,3E75,5,787C,0,0
Coz opet neodpovida hodnotam.
Posledni moznost s dekadickymi cisly:
sprintf( Zprava , "$LK8EX1,%u,%d,%d,%d,%u",
CidloTlaku,
Vyska_cm,
Vario_cm,
Teplota,
Procenta_Baterie);
Vysledek: $LK8EX1,16093,5,30709,0,0*46
Coz je opet blbost.
Kompilator je PIC18STD Mplab 8.56. Vypada to na problem s nastavenim printf.
V sekci Global jsem zkousel ruzne nastaveni knihovny printf ale bez zmeny
vysledku.
Doma jsem to ladil na verzi Trial (PIC18PRO) a celkem to fungovalo, akorat
to bylo hrozne pomale.
Michal Gregor
Další informace o konferenci Hw-list