FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Pocket PC Buzzer en CE 5.0
Posts: 84
Joined: Wed Oct 24, 2007 12:48 PM
Buzzer en CE 5.0
Posted: Wed Oct 23, 2013 12:13 PM

hola, necesito que un Honeywell ScanPal 5100 emita un sonido despu茅s de leer un codigo de barras y comprobar que existe dicho codigo.
En el emulador suena usando MsgBeep y MessageBeep, pero en el Pocket no suena nada.
El pocket tiene instalado Windows CE 5.00 y en el panel de control hay un icono llamado Buzzer donde permite activar y desactivar el sonido de "System" y de "Scan", ya he probado con todas las combinaciones.
Creo que el problema puede ser que la funci贸n MsgBeep usa el driver del sonido y como este pocket solo tiene el altavoz no recibe la orden.
Espero sus comentarios.

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Buzzer en CE 5.0
Posted: Wed Oct 23, 2013 04:51 PM

Prueba a usar la funci贸n Tone(), por ejemplo:

Tone( 500, 2 )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 84
Joined: Wed Oct 24, 2007 12:48 PM
Re: Buzzer en CE 5.0
Posted: Wed Oct 23, 2013 06:10 PM

Es la primera funci贸n que us茅 y en el emulador (wincearm) no se o铆a, as铆 que la descart茅.
La he probado ahora directamente en el Scanpal 5100 y tampoco se oye.
Gracias por la ayuda.

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Buzzer en CE 5.0
Posted: Wed Oct 23, 2013 08:48 PM

Igual tendras que usar un aviso visual tipo MsgInfo() en vez de un sonido

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 84
Joined: Wed Oct 24, 2007 12:48 PM
Re: Buzzer en CE 5.0
Posted: Thu Oct 24, 2013 07:19 PM

Ya le aparece al usuario una MsgInfo cuando se lee un codigo de barras que no est谩 en la base de datos de art铆culos, pero en el Pocket no suena nada y el usuario sigue pasando el escaner por los siguientes art铆culos sin percatarse que en la pantalla hay un mensaje de error.
El problema ocurre porque en los art铆culos hay dos c贸digos de barras, el preimpreso del fabricante y una pegatina que tiene el c贸digo de barras correcto, y pasa a veces que el escaner lee el del fabricante.
La idea es descativar el pitido del escaner cuando lee el codigo de barras y que sea el programa el que de un pitido de aprobaci贸n si el c贸digo es correcto o un pitido de error cuando sea incorrecto.
He intentado usar la funci贸n Beep (), pero no la reconoce FiveWin PocketPC.

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Buzzer en CE 5.0
Posted: Fri Oct 25, 2013 07:29 AM
Prueba a usar la funci贸n PlaySound() que parece que puede servirte:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd743680(v=vs.85).aspx
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 84
Joined: Wed Oct 24, 2007 12:48 PM
Re: Buzzer en CE 5.0
Posted: Fri Jul 24, 2015 05:22 PM

Hola, he tenido que retomar este tema de hacer sonar un Scanpal 5100.
Antonio, la funci贸n PlaySound no s茅 como incorporarla en mi prg, al ser una funci贸n en C necesitar铆a que me explicaras un poco como puedo usarla en mi programa.
Gracias.

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Buzzer en CE 5.0
Posted: Sat Jul 25, 2015 12:14 PM
Gabriel,

A帽ade este c贸digo a tu PRG principal:

Code (fw): Select all Collapse
#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>

HB_FUNC( SNDPLAYSOUND ) // ( <cSndName>, <nMode> ) 聽--> <lSuccess>
{
聽 聽hb_retl( sndPlaySound( IF( HB_ISNUM( 1 ), ( LPSTR ) hb_parnl( 1 ), hb_parc( 1 ) ),
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 IF( hb_pcount() > 1, hb_parnl( 2 ), SND_ASYNC ) ) );
}

#pragma ENDDUMP
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 84
Joined: Wed Oct 24, 2007 12:48 PM
Re: Buzzer en CE 5.0
Posted: Tue Jul 28, 2015 08:53 AM
Hola, al ejecutar buildce.bat en el siguiente comando :

%vcdir%\bin\clarm -W3 -c /DARM /DUNICODE /I%hdir%\include /I%fwppc%\include icm.c

me da estos warning

icm.c
icm.prg(74) : warning C4013: 'IF' undefined; assuming extern returning int
icm.prg(74) : warning C4047: 'function' : 'const unsigned short *' differs in levels of indirection from 'int '
icm.prg(74) : warning C4024: 'sndPlaySoundW' : different types for formal and actual parameter 1

y al final al linkar

icm.obj : error LNK2019: unresolved external symbol IF referenced in function HB_FUN_SNDPLAYSOUND
icm.exe : fatal error LNK1120: 1 unresolved externals


No reconoce la funci贸n IF (), he copiado la funci贸n SNDPLAYSOUND tal cual me la puso Antonio y no encuentro error en la sintaxis.
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Buzzer en CE 5.0
Posted: Tue Jul 28, 2015 09:17 AM
Prueba asi

Code (fw): Select all Collapse
#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>

HB_FUNC( SNDPLAYSOUND ) // ( <cSndName>, <nMode> ) 聽--> <lSuccess>
{
聽 聽hb_retl( sndPlaySound( ( ( HB_ISNUM( 1 ) ) ? ( LPSTR ) hb_parnl( 1 ) | hb_parc( 1 ) ),
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ( ( hb_pcount() > 1 ) ? hb_parnl( 2 ) | SND_ASYNC ) ) );
}

#pragma ENDDUMP


O tambien

Code (fw): Select all Collapse
#define IF(x,y,z) ((x)?(y):(z))
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 84
Joined: Wed Oct 24, 2007 12:48 PM
Re: Buzzer en CE 5.0
Posted: Tue Jul 28, 2015 09:33 AM

Muchas gracias, he usado la clausula #define y ha generado el EXE.
Voy a probarlo en el ordenador de mano.

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Buzzer en CE 5.0
Posted: Tue Jul 28, 2015 10:53 AM

Gabriel,

Se me pas贸 el quitar el IF() como muy bien ha hecho Cristobal

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 84
Joined: Wed Oct 24, 2007 12:48 PM
Re: Buzzer en CE 5.0
Posted: Tue Aug 11, 2015 01:00 PM
Hola de nuevo, no he conseguido nada con la funcion SndPlaySound.
He buscado en Internet y parece ser que el Pocket no tiene tarjeta de sonido y solo es posible hacer sonar el Buzzer.
Para ello es necesario tener tu propia funci贸n y en este Post he encontrado una que parece ser que lo hace.
Necesito que me la pudierais traducir para usar en FiveWin.
Muchas gracias.

You can just write a stream interface driver to access some I/O ports.
There's a sample using 8253 buzzer, but the I/O ports should depend on your
BIOS setting.


Code (fw): Select all Collapse
聽BOOL MyBeep(DWORD dwFreq, DWORD dwDuration)
{
_outp(0x43, 0xb6); // Set Buzzer
_outp(0x42, LOBYTE(0x1234dc / dwFreq)); // Frequency LSB
_outp(0x42, HIBYTE(0x1234dc / dwFreq)); // Frequency MSB
_outp(0x61, _inp(0x61) | 0x3); // Start beep
Sleep(dwDuration);
_outp(0x61, _inp(0x61) & 0xfc); // End beep
return TRUE;
}
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Buzzer en CE 5.0
Posted: Tue Aug 11, 2015 01:56 PM
Gabriel,

Salvo que est茅 equivocado, _outp() e _inp() no est谩n disponibles en aplicaciones de 32 bits.

De todas formas aqui tienes la funci贸n para Harbour:

Code (fw): Select all Collapse
HB_FUNC( MYBEEP ) // nFreq, nDuration
{
   _outp(0x43, 0xb6); // Set Buzzer
   _outp(0x42, LOBYTE(0x1234dc / hb_parnl( 1 ) ) ); // Frequency LSB
   _outp(0x42, HIBYTE(0x1234dc / hb_parnl( 1 ) ) ); // Frequency MSB
   _outp(0x61, _inp(0x61) | 0x3); // Start beep
   Sleep( hb_parnl( 2 ) );
   _outp(0x61, _inp(0x61) & 0xfc); // End beep
   hb_retl( TRUE );
}
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 84
Joined: Wed Oct 24, 2007 12:48 PM
Re: Buzzer en CE 5.0
Posted: Tue Aug 11, 2015 04:12 PM

Muchas gracias Antonio,
es verdad las funciones _outp() e _inp() no est谩n para 32 bits, he buscado alguna equivalente, pero parece que no se puede acceder directamente a los puertos seg煤n he leido.
Bueno, creo que no es posible hacer sonar el ScanPal 5100.

Un saludo.

Continue the discussion