array

2

array

offline
  • Pridružio: 15 Jul 2009
  • Poruke: 150

hehe jeste malo smesno, sta cu kad ne znam, hvala ti, znaci ako sam dobro razumeo, ne mogu ponovo da definisem ono int buffer->volt posto je on vec definisan kao interval? Znaci dovoljno je samo staviti ga u ovakvu formulu i on ce biti ceo broj? Ili cu sad imati opet neku gresku zato sto je buffer->volt interval a kroz folmulu se dobije decimalni broj pa samim tim buffer->volt vise nije interval nego je double? Malo mi je to sve teze za razumeti.

double first = 22.4555;
double second = 344.1;
buffer->volt = buffer->volt * first / second;



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 19 Maj 2011
  • Poruke: 297

Napisano: 17 Jun 2011 19:57

Jel mozes da mi pokazes definiciju strukture "battery_reply", da vidim kojih su tipova clanovi?

Kad napises nesto ovako (recimo):

  1. double nekiBr = 5.48;
  2. short nekiDrugiBr  = nekiBr;

Kompajler ti salje upozorenje da dolazi do krnjenja i implicitno cast-uje vrednost (u odgovarajuci tip sa leve strane) i dodeljuje "primaocu".

Dok ovako:
  1. double nekiBr = 5.48;
  2. short nekiDrugiBr  = (short)nekiBr;

Explicitno cast-ujes u odgovarajuci tip, s'tim da kompajler kod ovakvog cast-a zna da si svestan mogucih gresaka (od krnjenja) pa ne izbacuje upozorenje.
Tip promenjljive sa leve strane ostaje uvek isti, nemoguce ga je promenuti, hteo ili nehteo/slucajno Very Happy Menja se samo vrednost koju "drzi".

Dopuna: 17 Jun 2011 20:51

Neznam ni sam kako ces da izvedes ono sto si hteo bez imalo predznanja iz C-a, al' 'ajde.

E, ovako, clanice strukture "battery_info_reply":
  1. ...
  2. u32 batt_vol;
  3. u32 level;
  4. ...

nagovestavaju sa su unsigned celi (samo pozitivni) brojevi, long (32 bita). Znaci isto kao kad bi napisao:
  1. ...
  2. unsigned long batt_vol;
  3. unsigned long level;
  4. ...

verovatno je negde definicija u ostalim hederima, nesto kao:
  1. typedef unsigned long u32;//postedjuje kucanja


Ona funkcija za odredjivanje procenta baterije otpada jer ovu strukturu treba da koristis samo za "citanje" vrednosti (read-only) pa stim bi trebao da je napravis drugacije. Osim ako ne planiras da izmenis onu biblioteku?

Nesto kao:
  1. typedef unsigned char u8;//tip dovoljan da drzi vrednosti od 0 - 255
  2.  
  3. // ako si siguran 100% da su ovo nominalne vrednosti
  4. const double minv   = 3420.0;
  5. const double maxv   = 4200.0;
  6. const double vrange = maxv - minv;
  7.  
  8. static u8 get_batt_level( struct battery_reply *buffer )
  9. {
  10.     double vtt;
  11.     vtt = (double)buffer->batt_vol;
  12.     if (vtt < minv) return 0;
  13.     else if (vtt > maxv) return 100;
  14.     return (u8)(((vtt - minv) / vrange) * 100);
  15. }
  16.  
  17. ...
  18. // e sad ovde negde primas podatke "battery_info_reply" od neke funkcije koju si pozvao, recimo:
  19. struct battery_info_reply battinfo;
  20. htc_battery_level_compute( &battinfo);//ovo moras ti da vidis koju pozivas
  21. ...
  22. u8 procenat = get_batt_level(&battinfo);
  23. ...//ovde koristis taj rezlutat/procenat, sta si vec mislio



offline
  • Pridružio: 15 Jul 2009
  • Poruke: 150

Ok, kontam nesto, to i jeste moj jedini problem sto ne poznajem c, al trudim se koliko mogu da ga razumem. Ono za level sam resio, kompajlirao, probao i radi pomocu ovoga:

  1. static void htc_battery_level_compute( struct battery_info_reply *buffer )
  2. {
  3.     int vtt;
  4.     vtt = buffer->batt_vol;
  5.     if (vtt < 3420) buffer->level = 0;
  6.     else if (vtt > 4200) buffer->level = 100;
  7.     else buffer->level = level_table[ vtt - 3420 ];
  8. }


E sad radim na tome da promenim formulu za dobijanje voltaze i za dobijanje currenta, jeste malo teze al valjda cu nekako skontati...hvala ti puno!

Ko je trenutno na forumu
 

Ukupno su 950 korisnika na forumu :: 68 registrovanih, 10 sakrivenih i 872 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Alexa77, AndrejPetar, ArmFPGA, ArmyBoss, Asparagus, Banovo Brdo, bbelic, Bojadin Strumski, bojank, borya90, ccoogg123, comi, cyprus, dekan.m, djuradj, Dzigy, Fabius, Flashburn, galico, Georgius, Hardenberg, Haris, InzenjerBL, ivan_8282, JankoS, Jonbonjovi, Jose, Kobrim, Kosare, kybonacci, laurusri, Litostroton, lukisa, Marko1238, mercedesamg, MiroslavD, Mis uz pusku, mocnijogurt, monomah, mrdaak, niksa517, Nomica, NorthWind, pablojepao, Pantelejmon, Papadubi, pein, Prašinar, raso76, royst33, sekretar, smes_no, smuk, Solunac na steroidima, StalniPromatrač, Stod, stokssone, Str2022, Tafocus, troki1971, VekiJ, voja64, Volkhov-M, wolf431, Zgembo78, zixo, zmajognjeniivan, Zorge