FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour contactar a xmanuel para consulta
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM

contactar a xmanuel para consulta

Posted: Wed Mar 24, 2021 01:21 AM
Hola, buenas,
Deseo poder contactar a xmanuel, ya que deseo hacerle unas preguntas, con relación a objetos en el api de C.
creo que talvez tenga la experiencia o por donde van los tiros.

a grandes rasgos la consulta es esta:

en una clase que he realizado llamada TVLC la cual estoy haciendo para manejar un player con el VLC, me es necesarao manejar Eventos,
vlc tiene una función en c para crear un manejador de eventos, lo caules se disparan por ejemplo cuando se hace Play, Stop, End, Mute, etc.
Code (fw): Select all Collapse
METHOD New( hWnd ) CLASS TVLC
    ::hWnd := hWnd
    ::hVLC := myvlc_new()
    IF !Empty( ::hVLC )
        ::hMediaPlayer := myvlc_media_player_new( ::hVLC )
        IF !Empty( ::hWnd ) .and. !Empty( ::hMediaPlayer )
            ::hEventManager := myvlc_media_player_event_manager( ::hMediaPlayer )
            IF !empty( ::hEventManager )
                myvlc_media_player_event_attach( ::hEventManager, QSelf() ) //aca envio el objeto a c
            ENDIF


en c
Code (fw): Select all Collapse
HB_FUNC( MYVLC_MEDIA_PLAYER_EVENT_MANAGER )
{
    libvlc_media_player_t *hMediaPlayer = (libvlc_media_player_t *) hb_parptr( 1 );
    if( hMediaPlayer )
    {
        libvlc_event_manager_t * hEventManager;
        hEventManager = libvlc_media_player_event_manager( hMediaPlayer );
        hb_retptr( (void *) hEventManager );
    }
}

/*---------------------------------------------------------------------------------------------*/

HB_FUNC( MYVLC_MEDIA_PLAYER_EVENT_ATTACH )
{
    libvlc_event_manager_t *hEventManager = (libvlc_event_manager_t *) hb_parptr( 1 );
    //PHB_ITEM pSelf = ACA NECESITO RECIVIR EL OBJETO SELF DE TVLC
        
    if( hEventManager )
    {
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerPlaying        , vlc_mycallback, pSelf ); //ACA ENVIARLO A LA FUNCION CALLBACK
        /*
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerMediaChanged   , vlc_mycallback, NULL );
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerOpening        , vlc_mycallback, NULL );
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerPlaying        , vlc_mycallback, NULL );
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerPaused         , vlc_mycallback, NULL );
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerStopped        , vlc_mycallback, NULL );
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerEndReached     , vlc_mycallback, NULL );
        libvlc_event_attach( hEventManager, libvlc_MediaPlayerPositionChanged, vlc_mycallback, NULL );
        */
    }
}

Code (fw): Select all Collapse
void vlc_mycallback( const libvlc_event_t *event, void *param )
{
    switch ( event->type )
    {
        case libvlc_MediaPlayerMediaChanged:
            OutStr("--------------->MEDIA CHANGED");
            break;
        case libvlc_MediaPlayerNothingSpecial:
            OutStr("--------------->NOTHING");
            break;
        case libvlc_MediaPlayerOpening:
            OutStr("--------------->OPENING");
            break;
        case libvlc_MediaPlayerPlaying:
//ACA EJECUTAR UN METODO DEL OBJETO VLC
            OutStr("--------------->PLAYING");
            break;
        case libvlc_MediaPlayerPaused:
            OutStr("--------------->PAUSED");
            break;
        case libvlc_MediaPlayerStopped:
            OutStr("--------------->STOPPED");
            break;
        case libvlc_MediaPlayerEndReached:
            OutStr("--------------->END REACH");
            break;
        case libvlc_MediaPlayerTimeChanged:
            OutStr("--------------->TIME CHANGED");
            break;
        case libvlc_MediaPlayerPositionChanged:
            OutStr("--------------->POSITION CHANGED");
            break;
        case libvlc_MediaPlayerMuted:
            OutStr("--------------->MUTED");
            break;
        case libvlc_MediaPlayerUnmuted:
            OutStr("--------------->UNMUTED");
            break;
        case libvlc_MediaPlayerAudioVolume:
            OutStr("--------------->VOLUME");
            break;
    }
}
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM

Re: contactar a xmanuel para consulta

Posted: Wed Mar 24, 2021 01:48 AM
un poco de avance, creo que ya tengo el objeto en la parte c.
Code (fw): Select all Collapse
HB_FUNC( MYVLC_MEDIA_PLAYER_EVENT_ATTACH )
{
    libvlc_event_manager_t *hEventManager = (libvlc_event_manager_t *) hb_parptr( 1 );
    PHB_ITEM pItem = hb_param( 2, HB_IT_ANY );
    
    if( pItem )
    {
        HB_USHORT usClass = hb_objGetClass( pItem );        
        //HB_SYMBOL_UNUSED( usClass );
        DimeC( (char *) hb_objGetClsName( pItem ) ); //ME RETORNA TVLC :-)
        DimeN( usClass );
        if( hb_objHasMsg(pItem,"BONPLAY") )
        {
            DimeC("TIENE BONPLAY");
        }

    ....

Necesito saber como ejecutar el block ::bOnPlay :-)
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM

Re: contactar a xmanuel para consulta

Posted: Wed Mar 24, 2021 06:11 AM

Intenta con hb_evalBlock

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: 1789
Joined: Tue Oct 11, 2005 05:01 PM

Re: contactar a xmanuel para consulta

Posted: Wed Mar 24, 2021 02:55 PM

Lo que necesito saber ahora es como ejecutar el block ::bOnPlay de la clase desde C.
Osea identificar la data del metodo y hacer un evalblock().

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM

Re: contactar a xmanuel para consulta

Posted: Fri Mar 26, 2021 01:25 PM
Hola Carlos perdona por el retraso.
Dale las gracias a Felix que me ha avisado de tu mensaje:

Tienes que usar la funcion:
Code (fw): Select all Collapse
extern HB_EXPORT PHB_ITEM hb_objSendMsg( PHB_ITEM pObj, const char *sMsg, HB_ULONG ulArg, ... );


Como puedes observa le tienes que pasar en el primer parámetro el objeto, luego el nombre del método como cadena, el numero de parámetros, y por ultimo los parámetros (son item capturados hb_param() por ejemplo)
______________________________________________________________________________

Sevilla - Andalucía
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM

Re: contactar a xmanuel para consulta

Posted: Fri Mar 26, 2021 05:17 PM

gracias...
procesando ...

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM

Re: contactar a xmanuel para consulta

Posted: Fri Mar 26, 2021 05:18 PM

Manuel tienes algun contacto? si no es mucha molestia, tengo una consulta...
referente a el api, una duda que me gustaria explicar con mas detalle...

Mil Gracias...

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM

Re: contactar a xmanuel para consulta

Posted: Fri Mar 26, 2021 07:05 PM

Dime tu correo y te escribo :roll:

______________________________________________________________________________

Sevilla - Andalucía
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM

Re: contactar a xmanuel para consulta

Posted: Fri Mar 26, 2021 07:36 PM

karlos.vargas at gmail dot com

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM

Re: contactar a xmanuel para consulta

Posted: Fri Mar 26, 2021 07:41 PM

Ya te he escrito

______________________________________________________________________________

Sevilla - Andalucía
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM

Re: contactar a xmanuel para consulta

Posted: Thu Oct 12, 2023 11:04 PM
saludos. igual necesito hacer una consulta xmanuel
mi email jbricenotapia@gmail.com

saludos
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM

Re: contactar a xmanuel para consulta

Posted: Fri Oct 13, 2023 08:51 PM

Dime por aquí!!!

______________________________________________________________________________

Sevilla - Andalucía
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM

Re: contactar a xmanuel para consulta

Posted: Sun Oct 15, 2023 09:17 PM
Buenas Tarde manuel es posible desarrollar un wrapper largo para el api en C para
https://www.transbankdevelopers.cl/referencia/posintegrado

Esto es para trabajar con tarjetas de credito o debito en chile conectada la maquina a una computadora

Saludos

Continue the discussion