Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 14 odgovora
  • 4.979 pregleda

Najnovija ↓

razlika realnog vremena??? 29.09.2005. u 18:50 · pre 256 meseci #1
Pisem program koji bi trebao odredjivati razliku izmedju dva realna vremena, gdje
je pocetno vrijeme zadano ram_satima, ram_minutama i ram_sekundama konacno vrijeme bi trebali biti sati, minute i sekunde, a njihovu razliku bi trebalo prikazati u varijablama stop_sati, stop_minute i stop_sekunde. Navedena funkcija mi ne radi, pa ako neko zna, bio bih zahvalan na pomoci?

void proracun_stoperice_nakon_reseta(void)
{ unsigned char sati, minute, sekunde, stop_sati, stop_minute, stop_sekunde, ram_sati, ram_minute, ram_sekunde;
unsigned long int sekunde_poc, sekunde_pow_on, razlika;

sekunde_poc = ram_sati*3600 + ram_minute*60 + ram_sekunde;
sekunde_pow_on = sati*3600 + minute*60 +sekunde;
if(sekunde_pow_on<sekunde_poc)
{sekunde_pow_on=sekunde_pow_on + 86400;}
stop_sati= (sekunde_pow_on - sekunde_poc)/3600;
stop_minute=( sekunde_pow_on - sekunde_poc-sati*3600)/60;
stop_sekunde= sekunde_pow_on - sekunde_poc- sati*60 - minute*60;
}
Re: razlika realnog vremena??? 01.10.2005. u 15:04 · pre 256 meseci
izmenjeno 1 put, poslednji put damir0205 01.10.2005. u 15:08
  1. damir020501.10.2005. u 15:08zapis iz teksta poruke
#4
Hvala na pomoci, riješio problem sa navedenom funkcijom. Da li mi netko može reči zašto stvar ne radi dobro ako su sati, minute, sekunde, ram_sati, ram_minute i ram_sekunde varijable tipa unsigned char i ako njihova vrijednost nikad nije veća od 60 sigurno?

void proracun_stoperice(void)
{unsigned long int dan_utj, sati, minute, sekunde, ram_sati, ram_minute, ram_sekunde, proteklo_vrijeme, sekunde_real_time, sekunde_start_time, sekunde_dana, stop_minute, stop_sekunde, stop_sati;
read_time_and_date(); //funkcija koja čita sate, minute i sekunde iz PCF8583
sekunde_dana = dan_utj*86400;
sekunde_real_time = sati*3600 + minute*60 + sekunde;
sekunde_start_time = ram_sati*3600 + ram_minute*60 + ram_sekunde;

proteklo_vrijeme = sekunde_dana + sekunde_real_time - sekunde_start_time;

stop_sati = (proteklo_vrijeme/3600);
stop_minute = ((proteklo_vrijeme - (stop_sati*3600))/60);
stop_sekunde = (proteklo_vrijeme - (stop_sati*3600) - (stop_minute*60));
}
Re: razlika realnog vremena??? 01.10.2005. u 17:04 · pre 256 meseci
izmenjeno 1 put, poslednji put dejandj 01.10.2005. u 17:18
  1. dejandj01.10.2005. u 17:18zapis iz teksta poruke
#6
Iz "dosta prostog" razloga...
Tvoja specifikacija NIJE u skladu sa standardom jer "stanadard" uzima u obzir ineke "sitnice" koje ti ni u snu NISI imao u vidokrugu...

Ovo NE znaci suprotno, na zalost!

Ima razloga za 61 sekundu npr...
A ima i ludjih sistema merenja vremena!

Sve, se, na kraju, svodi na "nulu" tj tzv. "nulto" vreme...

Tu ima gadnih problema...

Nula u principu oznacava nista i postavlja se sustinsko pitanje, da li je nula "broj"? Iako je jasno da nije, broj nicega je strasno "ozbiljan", komjuterasi su odlucili da ON bude "nesto", obicno, jedan, tj "kec"...

E sad kad(???) vreme pocinje?
To, em niko nezna, em ne ume da objasni...
Kako meriti "razliku" tako neceg?
Potpis
http://www.elitesecurity.org/forum/101
Re: razlika realnog vremena??? 01.10.2005. u 18:17 · pre 256 meseci
izmenjeno 1 put, poslednji put damir0205 01.10.2005. u 18:36
  1. damir020501.10.2005. u 18:36zapis iz teksta poruke
#7
Evo ovako otprilike. Cijeli program služi kao štoperica i napisan je za mikrokontroler. Podatak o trenutnom vremenu dobiva se iz satnog čipa, a mjerenje vremena počinje pritiskom tipke START.........., da dalje ne objašnjavam jer mislim da nije bitno. Ova druga funkcija koju sam napisao radi bez greške takva kakva je i cijeli program mi radi ok, ali nije ispravno izračunavao sljedeči izraz dok su sati, minute i sekunde bile deklarirane kao unsigned char varijable.

@dejandj
Tvoja specifikacija NIJE u skladu sa standardom jer "stanadard" uzima u obzir ineke "sitnice" koje ti ni u snu NISI imao u vidokrugu...

@dejandj Standard?

sekunde_real_time = sati*3600 + minute*60 + sekunde;

Zašto?
Re: razlika realnog vremena??? 02.10.2005. u 13:31 · pre 256 meseci
izmenjeno 1 put, poslednji put dejandj 02.10.2005. u 13:32
  1. dejandj02.10.2005. u 13:32zapis iz teksta poruke
#9
tm struktura i one funkcije za vreme su ANSI standard...

Taj, zadnji, "unsigned char" ne figurira u standardu.
Potpis
http://www.elitesecurity.org/forum/101
Re: razlika realnog vremena??? 03.10.2005. u 17:02 · pre 256 meseci
izmenjeno 1 put, poslednji put idb 03.10.2005. u 17:03
  1. idb03.10.2005. u 17:03zapis iz teksta poruke
#10
Bez ulaska u to sta tvoj kod radi, mislim da nesto nisi inicijalizovao, ili si pregazio spoljasnje promenljive ....
Pogledaj tvoj kod malo prepakovan....
Code:

void proracun_stoperice(void){
   unsigned long int dan_utj,                // !!! Nije inicijalizovane !!! 
         sati, minute, sekunde,              // !!! Nisu inicijalizovane !!! 
         ram_sati, ram_minute, ram_sekunde,  // !!! Nisu inicijalizovane !!! 
         proteklo_vrijeme,                   // !!! Nije inicijalizovane !!! 
         sekunde_real_time,                  // !!! Nisu inicijalizovane !!! 
         sekunde_start_time, sekunde_dana,   // !!! Nisu inicijalizovane !!! 
         stop_minute, stop_sekunde, stop_sati; 
   read_time_and_date(); 
   sekunde_dana = dan_utj*86400;
   
   //Sta ce sada bit: sati=?, minute=?, sekunde=? ...
   sekunde_real_time = sati*3600 + minute*60 + sekunde; 
   //Sta ce sada bit: ram_sati=?, ram_minute=?, ram_sekunde=? ... 
   sekunde_start_time = ram_sati*3600 + ram_minute*60 + ram_sekunde;
   // ....
   proteklo_vrijeme = sekunde_dana + sekunde_real_time - sekunde_start_time;
   stop_sati = (proteklo_vrijeme/3600);
   stop_minute = ((proteklo_vrijeme - (stop_sati*3600))/60);
   stop_sekunde = ((proteklo_vrijeme - (stop_sati*3600) - (stop_minute*60));
}
Re: razlika realnog vremena??? 03.10.2005. u 20:19 · pre 256 meseci
izmenjeno 1 put, poslednji put damir0205 03.10.2005. u 20:22
  1. damir020503.10.2005. u 20:22zapis iz teksta poruke
#11
Nije stvar u inicijalizaciji. Sati, minute i sekunde predstavljaju podatak o trenutnom vremenu i dobivaju se iz satnog čipa svaki put kad se izvrši program, a to se otprilike dogadja svakih 10ms. ram_sati i ram_minute i ram_sekunde je vrijeme u koje je pritisnuta tipka start i oni su konstanta sve dok se traje mjerenje. Mjerenje je u redu za sve vrijednosti sati osim ako sati nisu 11 ili 21 (znači program uredno broji stop_sate, stop_minute i stop_sekunde sve do jedne od tih vrijednosti). Za te vrijednosti sati (ako su sati unsigned char) proteklo_vrijeme mi ispada neki jako veliki broj, koji ni približno ne odgovara stvarnoj situaciji. Mislim da je stvar u kompajleru, posavjetovao sam se s kolegama s posla i oni misle tako. Nek me netko razuvjeri ako nije istina.
Re: razlika realnog vremena??? 04.10.2005. u 10:13 · pre 256 meseci #12
Citat:
Mislim da je stvar u kompajleru
Mozda ti probleme pravi i kompajler, ali pogledaj ponovo funkciju void proracun_stoperice(void).
Sve promenljive koje se u njoj pojavljuju su lokalne. Sva racunanja koja izvrsis ce biti lokalnog karaktera i ostace zarobljena unutar funkcije, bez obzira ako istoimene promenljive imas i na globalnom nivou.
Neke izmene bi eventualno mogla izvrsiti funkcija read_time_and_date() - ne znam sta ona radi ...
Re: razlika realnog vremena??? 05.10.2005. u 17:28 · pre 256 meseci #13
Sve varijable su globalne, jedina greska je sto sam ih u ovoj funkciji, prikazao kao lokalne, samo da se vidi kojeg su tipa. To je jedina razlika izmedju strvarnosti i ove funkcije koju sam stavio na forum. Po takvom tumacenju mogla bi bilo koja od dvadesetak funkcija raditi probleme, ali poprilicno sam siguran da to u ovom slucaju nije istina. Oprostite sto sam krivo prikazao deklaraciju varijabli.....
Re: razlika realnog vremena??? 12.10.2005. u 18:16 · pre 256 meseci
izmenjeno 1 put, poslednji put nikoladsp 12.10.2005. u 18:17
  1. nikoladsp12.10.2005. u 18:17zapis iz teksta poruke
#14
ako si u prilici koristi windows-ov multimedija tajmer.ako ne onda ko sto ti rekose ljudi u prethodnim postovima:procackaj <time.h>
Potpis
ja sam panker sa diplomom kod moje mame...
Re: razlika realnog vremena??? 13.10.2005. u 15:23 · pre 256 meseci #15
Ajd jos jednom...
Imas u "mom topicu" zvanom "problemi sa vremenom", funkcionalan win/ansi_C kod za operacije sa vremenom...

Nije problem da dodas ovu razliku u vremenu osim ako te interesuju delovi sekunde i nano sekunde ali moze cak i to! Trik je u tome sto su sekunde jedinice vremena po standardu...

Nije problem da te sekunde pretvoris u sta ti drago!
Ovaj deo je samo stvar prezentacije.
Potpis
http://www.elitesecurity.org/forum/101
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme