Como puedo hacer esto :

Post Reply
JoseGS
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Como puedo hacer esto :

Post by JoseGS »

Hola amigos

Necesito hacer un dialogo que cuando se abra empiece a emitir sonidos que se van incrementando hasta que se presione un boton del dialogo y el usuario pueda ver hasta donde escucho...

Lo que no se es como capturar la instruccion de parada mientras el ciclo de sonidos se esta ejecutando...

Alguna idea, debe ser algo muy facil, pero hoy amaneci con la mente dormida... :lol:

Gracias por su ayuda...

Adjunto el codigo que llevo hasta ahora.

Code: Select all

FUNC AUDIOMETRO()
LOCAL oDlg,oSAY,oFontBIG,oBtn,lStop:=.F.
LOCAL T:=0
LOCAL cSAY
DEFINE FONT oFontBIG  NAME "Arial" SIZE 0,-50
DEFINE DIALOG oDlg RESOURCE "AUDIOMETRO"
REDEFINE SBUTTON oBtn  ID 110 OF oDlg  RESOURCE "X_ALTO"    ACTION lStop:=.T. XP PROMPT "Alto"  TEXT 4
REDEFINE SAY oSAY VAR cSAY ID 104 OF oDlg UPDATE COLOR CLR_HRED,CLR_BLACK FONT oFontBIG
DO WHILE T<1500 .AND. !lStop
   T+=20
   BEEP(T,1)
   cSAY:=ALLTRIM(STR(T))+' Hz';oSAY:REFRESH();SYSREFRESH()
ENDDO
ACTIVATE DIALOG oDlg CENTER 
RETU[]
User avatar
Lautaro
Posts: 322
Joined: Fri Oct 07, 2005 2:44 pm
Location: Osorno, Chile
Contact:

Re: Como puedo hacer esto :

Post by Lautaro »

Jose,


Modifica asi tu codigo


FUNC AUDIOMETRO()
LOCAL oDlg,oSAY,oFontBIG,oBtn,lStop:=.F.
LOCAL T:=0
LOCAL cSAY
DEFINE FONT oFontBIG NAME "Arial" SIZE 0,-50
DEFINE DIALOG oDlg RESOURCE "AUDIOMETRO"
REDEFINE SBUTTON oBtn ID 110 OF oDlg RESOURCE "X_ALTO" ACTION lStop:=.T. XP PROMPT "Alto" TEXT 4
REDEFINE SAY oSAY VAR cSAY ID 104 OF oDlg UPDATE COLOR CLR_HRED,CLR_BLACK FONT oFontBIG
ACTIVATE DIALOG oDlg CENTER NOWAIT

DO WHILE T<1500 .AND. !lStop
T+=20
BEEP(T,1)
cSAY:=ALLTRIM(STR(T))+' Hz';oSAY:REFRESH();SYSREFRESH()
ENDDO

do while .not. lstop
...
...
sysrefresh()
enddo

odlg:end()

RETU[]


Atte.,

Lautaro Moreira
JoseGS
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Como puedo hacer esto :

Post by JoseGS »

Gracias Lautaro por contestar.

Efectivamente, ya lo habia hecho asi, pero el boton no agarra el clic... y por ende, el ciclo...

Alguna otra idea.

En clipper, lo hacia mediante INKEY(0) dentro del DO WHILE , que devolvia la ultima tecla pulsada, de esa forma detectaba la pulsacion de ESC y terminaba el ciclo...
User avatar
Lautaro
Posts: 322
Joined: Fri Oct 07, 2005 2:44 pm
Location: Osorno, Chile
Contact:

Re: Como puedo hacer esto :

Post by Lautaro »

Jose,

Agregale una pausa y un sysrefresh() antes del enddo del ciclo que controla el beep.


Atte..,

Lautaro Moreira
JoseGS
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Como puedo hacer esto :

Post by JoseGS »

Como se agrega una pausa en un programa FWH
User avatar
Lautaro
Posts: 322
Joined: Fri Oct 07, 2005 2:44 pm
Location: Osorno, Chile
Contact:

Re: Como puedo hacer esto :

Post by Lautaro »

for nnn = 1 to yy
next nnn

donde yy es el tiempo de pausa.

la que no deberia ser muy grande.

Tambien puedes probar usando esta funcion

Code: Select all

function WaitSeconds( nSecs )

   local nStart := GetTickCount()

   DEFAULT nSecs := 1

   while GetTickCount() - nStart < ( 1000 * nSecs )
   end

return nil

 
Atte.,

Lautaro
JoseGS
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Como puedo hacer esto :

Post by JoseGS »

Gracias Lautaro

La pausa funciono perfecto... aprendi algo nuevo, pero lamentablemente el boton sigue sin funcionar.

No puedo hacer que se detenga y es algo que necesito.

Se trata de una funcion que va emitiendo un sonido en asenso. Cuando el usuario ya no puede escuchar el sonido (mas o menos a los 14000 Hz), debe detener el proceso.

Es una forma curiosa de medir la capacidad auditiva...


Alguna idea ?
Ruben Fernandez
Posts: 366
Joined: Wed Aug 30, 2006 5:25 pm
Location: Uruguay

Re: Como puedo hacer esto :

Post by Ruben Fernandez »

Jose: Intenta esto:

Declara Static lStop, coloca otro boton prompt "comenzar", que lanzara la funcion del sonido.
La funcion que emite el sonido tendra que estar aparte y sera ejecutada con el boton comenzar.
Luego me cuentas.


Saludos

Ruben Fernandez
Post Reply