C - delay – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C - delay – C / C++ – Fórum – Programujte.comC - delay – C / C++ – Fórum – Programujte.com

 

olgo0
Věrný člen
17. 5. 2007   #1
-
0
-

zdar pisem malu funkciu ktora nema robyt nic len cakat zadany pocet sekund.



int delay(int wait){
int start,a=0;
start=clock();
do{
a++;
}while(start+(CLK_TCK*wait)>clock());
return a;
}

problem ale je ze necaka. pritom stihne spravit docela dost iteracii ale skonci prakticky okamzite. vazne neviem co tomu chyba

btw.:cim vyplnit funkciu? lebo asi bude docela narocna na procesorovy cas, urcite je nejaky figel

diki vam

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
zacatecnik0
Super člen
17. 5. 2007   #2
-
0
-

proc nepouzijete v kazdem opakovani cyklu sleep 1s ?

Nahlásit jako SPAM
IP: ...–
Můj blog http://www.zacatecnik.wu.cz[br]Překládám anglickou knihu o wxWidgets http://wxwidgets.hustej.net
olgo0
Věrný člen
18. 5. 2007   #3
-
0
-

pretoze som o nej doteraz nepocul aj ked je mi jasne co asi robi. v tom pripade ale je uplne zbytocna cela moja funkcia

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
olgo0
Věrný člen
19. 5. 2007   #4
-
0
-

skusil som pouzit sleep a chova sa prinajmensom zvlastne. ked pred funkciu sleep umestnim printf tak sa retazec vypise az po uplynuti intervalu. to si nebude normalne chovanie neviete co sa s tym da spravit? thx

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
zacatecnik0
Super člen
19. 5. 2007   #5
-
0
-

ee ma to fachat, asi bude chyba u Vas, mozna vim i kde ale nebudeme prece zhavit vesteckou kouli ze? dejte sem kod

Nahlásit jako SPAM
IP: ...–
Můj blog http://www.zacatecnik.wu.cz[br]Překládám anglickou knihu o wxWidgets http://wxwidgets.hustej.net
olgo0
Věrný člen
19. 5. 2007   #6
-
0
-



. . .
printf("%s",str1);
sleep(time);
strcpy(str2,function_giving_string());
printf("%s",str2);
. . .


predstavujem si to tak ze sa vypise str1 a po case time str2.
namiesto toho sa time sekund nic nedeje a vypise sa str1 a hned na to str2

btw.:linux, emulator shelu xterm

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
zacatecnik0
Super člen
19. 5. 2007   #7
-
0
-

taky nevim proc mi to ted dela, heh presto sem si jist kdyz sem to kompiloval kdysi v devcpp tak to slo, zvlastni. no kazdopadne muzete zkusit na lunux usleep a na windows Sleep. to uz pofrci ;-)

Nahlásit jako SPAM
IP: ...–
Můj blog http://www.zacatecnik.wu.cz[br]Překládám anglickou knihu o wxWidgets http://wxwidgets.hustej.net
olgo0
Věrný člen
19. 5. 2007   #8
-
0
-

ked nahradim

sleep(time);
za
usleep(time*1000);
tak sa to chova rovnako.

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
zacatecnik0
Super člen
19. 5. 2007   #9
-
0
-
Nahlásit jako SPAM
IP: ...–
Můj blog http://www.zacatecnik.wu.cz[br]Překládám anglickou knihu o wxWidgets http://wxwidgets.hustej.net
olgo0
Věrný člen
19. 5. 2007   #10
-
0
-



#include <time.h>

void sleep(unsigned int mseconds)
{
clock_t goal = mseconds + clock();
while (goal > clock());
}

int main(){
printf("hello ");
sleep(5000);
printf("world\n");
}


malo by to fungovat takto?

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
zacatecnik0
Super člen
19. 5. 2007   #11
-
0
-

s drobnou upravou ano funguje:

#include <stdio.h>

#include <time.h>

void sleep(unsigned int mseconds)
{
clock_t goal = mseconds + clock();
while (goal > clock());
}

int main(){
printf("hello ");
sleep(5000);
printf("world\n");
getchar();
return 0;
}

Nahlásit jako SPAM
IP: ...–
Můj blog http://www.zacatecnik.wu.cz[br]Překládám anglickou knihu o wxWidgets http://wxwidgets.hustej.net
olgo0
Věrný člen
19. 5. 2007   #12
-
0
-

kazdopadne ocenujem vasu snahu ale bohuzial ani po tejto uprave mi to nefunguje.

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
zacatecnik0
Super člen
19. 5. 2007   #13
-
0
-

no ono nefunguje je siroky pojem, takze stavite to pro linux? a v cem to kompilujete?
nefunguje znamena ze se nejdrive ceka a pak zobrazuje vse naraz?

Nahlásit jako SPAM
IP: ...–
Můj blog http://www.zacatecnik.wu.cz[br]Překládám anglickou knihu o wxWidgets http://wxwidgets.hustej.net
olgo0
Věrný člen
19. 5. 2007   #14
-
0
-

ano linux 2.4 slackware 11.0. kompilovane pomocv gcc. ziadna chyba ani varovanie, hladka kompilacia. vypise sa to naraz dokonca to tentokrat vobec nikde necaka.

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
zacatecnik0
Super člen
19. 5. 2007   #15
-
0
-

chvili pockejte jestli Vam zde nekdo neda odpoved a pak se zkuste obratit na povolanejsi:
http://www.abclinuxu.cz/forum/show/50089

prosim pokud najdete reseni abste ho pak sem zkopiroval, dekuju pekne
nashle

Nahlásit jako SPAM
IP: ...–
Můj blog http://www.zacatecnik.wu.cz[br]Překládám anglickou knihu o wxWidgets http://wxwidgets.hustej.net
olgo0
Věrný člen
19. 5. 2007   #16
-
0
-

dakujem za ochotu a vas cas.

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
olgo0
Věrný člen
24. 5. 2007   #17
-
0
-

takze, ono chovanie funkcie (u)sleep je sposobene buffrovanim vystupu. na jeho zapisanie je potreba zavolat fukciu fflush() ktorej atributom je handle suboru (v tomto pripade sa jedna o brazovku cize stdout) alebo retazec ktori ma byt berzprostredne vypisany ukoncit znakom \n.
podakovanie patri chlapcom z abclinuxu a zacatecnikovi amozrejme :)

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
ChaoticRoman
~ Anonymní uživatel
15 příspěvků
2. 6. 2007   #18
-
0
-

Takže můj problém je stejný, ale ještě znásobený tím, že ho chci použít pro pozastavení openGL/C++ aplikace. Ať už jsem zkoušel všechny možné způsoby pozastavení chodu odtud i jinde z netu a nakonec si vymyslel vlastní fci MySleep(), všechno mi to nejdřív počká, a pak teprv začne vykreslovat.
takže tento kód z WinMain:



nacti();
glClearColor (1.0f, 1.0f, 1.0f, 0.5f);
glClear (GL_COLOR_BUFFER_BIT);
glPushMatrix ();
glColor3f(0.0, 0.0, 0.0);
osy();
krizek(r[0]/zoom,r[1]/zoom);
mySleep(1000);
krizek(r[1]/zoom,r[0]/zoom);
glPopMatrix ();
SwapBuffers (hDC);
Sleep (500);


čeká úplně na začátku a až pak načítá, maluje osy a křížky...

jen pro úplnost:


void mySleep(DWORD ms)
{
DWORD time0;
time0=GetTickCount();
while ( GetTickCount() < (time0+ms) );
}


Nahlásit jako SPAM
IP: ...–
Jonyzz0
Návštěvník
2. 6. 2007   #19
-
0
-

Prolem bude asi v tom, že voláš funkci SwapBuffers() až na konci kdy už fce mySleep() probehla, zkus tohle:



nacti();
glClearColor (1.0f, 1.0f, 1.0f, 0.5f);
glClear (GL_COLOR_BUFFER_BIT);
glPushMatrix ();
glColor3f(0.0, 0.0, 0.0);
osy();
krizek(r[0]/zoom,r[1]/zoom);
SwapBuffers (hDC);
mySleep(1000);
krizek(r[1]/zoom,r[0]/zoom);
glPopMatrix ();
SwapBuffers (hDC);
Sleep (500);

Nahlásit jako SPAM
IP: ...–
ChaoticRoman
~ Anonymní uživatel
15 příspěvků
3. 6. 2007   #20
-
0
-

Yeah! Díky, Johnny! A vám všem aspoň funkční :) fce MySleep():



void mySleep(DWORD ms, HDC hDC)
{
DWORD time0;
SwapBuffers (hDC);
time0=GetTickCount();
while ( GetTickCount() < (time0+ms) );
}

Nahlásit jako SPAM
IP: ...–
ok
~ Anonymní uživatel
6 příspěvků
4. 6. 2007   #21
-
0
-

sleep() normalne funguje, retezec se nevytiskne, protoze printf() bufferuje a obvykle tiskne az po konci radku.

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

Podobná vlákna

AVR delay — založil tek

Oneskorenie - delay — založil Grungy

čeština v .dbf — založil kECUB

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý