Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-06-2013
Novatin Novatin is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 61
Poder: 12
Novatin Va por buen camino
Thumbs up Ayuda con funcion Delay

Que tal amigos estoy intentando hacer una rutina del tipo:

void Delay(int time)
{
for (int i=1; i<=time;i++);
}

Estuve haciendo pruebas con QueryPerformanceCounter(), pero vi que se consume muchos ciclos de cpu... asi que estoy viendo la posibilidad de usar WaitForSingleObject... sin embargo aun no consigo un ejemplo completo que funcione en Builder c++ 6...

Si alguien me echara unos "bytes" con esto estaría muy agradecido...

Un saludo
Responder Con Cita
  #2  
Antiguo 24-06-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Novatin Ver Mensaje
Que tal amigos estoy intentando hacer una rutina del tipo:

void Delay(int time)
{
for (int i=1; i<=time;i++);
}
Hola Novatin.

Para reemplazar equivalentemente a ese codigo tenes la funcion Sleep:
Código:
{
  ::Sleep(n); // n: DWORD (ms) 	
 }
Pero te soy sincero, no sé si será o no una buena opción, ya que tu mensaje no me deja en claro la situación en que se va a aplicar el retardo...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 25-06-2013
Novatin Novatin is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 61
Poder: 12
Novatin Va por buen camino
Hola ecfisa,

Lamento haberme ido "al punto" sin explicar mucho el problema... el retardo lo quiero para generar una secuencia de pulsos por puerto paralelo para un motor del tipo "stepper"; estuve probando con la funcion Delay que puse en el anterior mensaje, pero me di cuenta que no es muy precisa; Luego pase por usar QueryPerformanceCounter() de la siguiente manera:

Código:
LARGE_INTEGER pcFreq; //ENTERO_LARGO de muchos bits.. :D
QueryPerformanceFrequency(&pcFreq); //captura la frecuencia de la CPU
int MicroSec=(pcFreq.QuadPart/1000)*1.3;// 1.3 Microsegundos

void TForm1::miDelay(int MicroSec)
{
  LARGE_INTEGER freqIni; //Variable frecuencia inicial
  LARGE_INTEGER freqFin; //Variable frecuencia final
  QueryPerformanceCounter(&freqFin); //Captura Frecuencia Actual 

  freqIni=freqFin; //Igualando Frecuencia Inicial y final
  while(freqIni.QuadPart/1000<freqFin.QuadPart/1000+MicroSec) //While consume mucho CPU
      QueryPerformanceCounter(&freqIni);
}
y aunque esta funcion es bastante precisa me deja el problema de consumirme muchos ciclos de cpu ...


Lo de la función Sleep, ya la habia probado pero tiene tambien el problema de no ser tan precisa para mover motores stepper...

Fue por eso que me habia planteado como una opción la posibilidad de usar WaitForSingleObject(), que hasta donde entiendo puede generar un retardo sin consumir tantos ciclos de cpu... pero aun no encuentro un ejemplo claro de como usarlo..

PD: El motor stepper requiere aún pulsos por debajo del 1 milisegundo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
delay con WinSock chelox Internet 0 24-07-2010 06:46:36
Sleep/delay? nena_yei OOP 6 22-07-2010 16:41:47
2 WebBrowser y 1 delay ayuda please miguel_fr Internet 4 03-07-2010 05:00:36
Delay al conectarse con el sevidor MySQL golf2008 MySQL 2 05-02-2009 01:22:22
Delay de Pascal Esau OOP 4 28-08-2003 21:32:11


La franja horaria es GMT +2. Ahora son las 05:00:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi