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