Page 1 of 1

Manejo de funciones para conexiones gprs

Posted: Thu Oct 25, 2007 3:34 pm
by Elias Torres
Hola a todos.
Ahora mismo estoy metido con las conexiones por gprs. Mi intención es que desde código puede lanzar la conexión, ver el estado y desconectarla. Gracias al amigo Biel que me ha suministrado estas funciones he empezado a mirarlas pero no se como usarlas. Las funciones, para empezar son estas:

HB_FUNC (GPRSCONNECT)
{
HANDLE phWebConnection = NULL;
DWORD pdwStatus = 0;

ConnMgrConnectionStatus (phWebConnection, &pdwStatus);
if (pdwStatus == CONNMGR_STATUS_CONNECTED)
{
hb_retl (TRUE);
}
else
{
CONNMGR_CONNECTIONINFO sConInfo;
memset (&sConInfo,0, sizeof (CONNMGR_CONNECTIONINFO));
sConInfo.cbSize = sizeof (CONNMGR_CONNECTIONINFO);
sConInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET;
sConInfo.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE;
sConInfo.dwFlags = CONNMGR_FLAG_PROXY_HTTP;
sConInfo.bExclusive = FALSE;
sConInfo.bDisabled = FALSE;
sConInfo.guidDestNet = IID_DestNetInternet;


if (ConnMgrEstablishConnection (&sConInfo, &phWebConnection) == S_OK)
{
unsigned int k;

for( k = 0; k < 8; k ++)
{
ConnMgrConnectionStatus(phWebConnection,&pdwStatus);
if (pdwStatus == CONNMGR_STATUS_CONNECTED)
{
hb_retl (TRUE);
}
else
{
if (pdwStatus == CONNMGR_STATUS_CONNECTIONCANCELED || pdwStatus == CONNMGR_STATUS_WAITINGCONNECTIONABORT)
{
hb_retl (FALSE);
}
Sleep (2500);
ConnMgrConnectionStatus (phWebConnection, &pdwStatus);
if (pdwStatus == CONNMGR_STATUS_WAITINGCONNECTION)
{}
if (pdwStatus == CONNMGR_STATUS_CONNECTIONCANCELED || pdwStatus == CONNMGR_STATUS_WAITINGCONNECTIONABORT)
{
hb_retl (FALSE);
}
}
}
hb_retl (FALSE);
}
else
{
hb_retl (FALSE);
}
}
}

Si alguien puede echarme una mano para ver como puedo llamar a esas funciones se lo agradeceria....

Saludos.

Elías Torres.

Posted: Thu Oct 25, 2007 3:59 pm
by Elias Torres
Hola a todos....

Ya he conseguido que me haga la conexión desde código, pero no consigo que me desconecte una vez enviado el fichero.

La función que estoy utilizando es:

HB_FUNC (GPRSRELEASE)
{
HANDLE hCon= NULL;
ConnMgrReleaseConnection( ( HANDLE ) hb_parnl( 1 ),2 );
}

Nose si me falta algo..No da error pero no me desconecta.. Alguna idea??

Saludos.

Elías Torres.

Posted: Fri Oct 26, 2007 7:12 am
by Biel EA6DD
Hola Elias,
La función GprsConnect que te pase, tiene un pequeño cambio con respecto a la de Pawel, y es que en lugar de devolver verdadero o falso, devuelve el numero de handler de la conexion.
Guarda ese numero en una variable, y despues pasalo como parametro a GprsRelease.

Espero te funcione.

Posted: Fri Oct 26, 2007 9:10 am
by Elias Torres
Biel, gracias por la ayuda. He hecho lo que me comentabas y todo ha funcionado correctamente....


Saludos.

Elías Torres.

Posted: Fri Oct 26, 2007 8:07 pm
by Vikthor
Elias Torres wrote:Biel, gracias por la ayuda. He hecho lo que me comentabas y todo ha funcionado correctamente....


Saludos.

Elías Torres.
Que versión de FWPCC y de Wmobile están usando ?

Posted: Mon Oct 29, 2007 9:25 am
by Elias Torres
Hola Viktor.

Estoy usando el build de febrero '07 y el compilador del Harbour es 46.2 (Flex). En cuanto a WMobile utilizo una PDA Qtek s200 con Windows Mobile 5 y todo me ha funcionado perfectamente gracias a la ayuda de Biel.



Saludos.
Elías Torres.

Posted: Mon May 12, 2008 1:58 pm
by Salvador
Biel.
Podrías postear las funciones para GPRS con las modificaciones que agregaste.
En que versión de Windows las has utilizado ?.
Gracias.

Salvador Gallardo.

Posted: Tue May 13, 2008 8:39 am
by Biel EA6DD
Hola Salvador,
estas son las funciones que uso para conexion y desconexion GPRS. Las he probado con Windows mobile 2003 y 2005. Esta funcion la posteo en el foro Pawel, yo solo le hecho un pequeño cambio.

Code: Select all

HB_FUNC (GPRSCONNECT)
{
   // By Pawel 
   HANDLE phWebConnection = NULL;
   DWORD pdwStatus = 0;
   //Comprobamos si ya estamos conectados.
   ConnMgrConnectionStatus (phWebConnection, &pdwStatus);
   if (pdwStatus == CONNMGR_STATUS_CONNECTED) 
   {
      hb_retnl( (long) 0 );
   }
   else
   {
      //No estamos conectados.
      //CONNECTIONINFO es la estructura que
      //le indica al Connection manager como nos queremos conectar.
      CONNMGR_CONNECTIONINFO sConInfo;
      memset (&sConInfo,0, sizeof (CONNMGR_CONNECTIONINFO));
      sConInfo.cbSize = sizeof (CONNMGR_CONNECTIONINFO);
      sConInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET; //Queremos usar parametros "GuisDesNet"
      sConInfo.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE; //Esta es la prioridad mas alta.
      sConInfo.dwFlags = CONNMGR_FLAG_PROXY_HTTP;
      sConInfo.bExclusive = TRUE ; //Permitimos compartir la conexion con otras aplicaciones.
      sConInfo.bDisabled = FALSE;
      sConInfo.guidDestNet = IID_DestNetInternet;

      if (ConnMgrEstablishConnection (&sConInfo, &phWebConnection) == S_OK)
      {
         for (unsigned int k = 0; k < 8; k ++)
         {
            ConnMgrConnectionStatus(phWebConnection,&pdwStatus);
            if (pdwStatus == CONNMGR_STATUS_CONNECTED)
            {
               hb_retnl( (long) phWebConnection );
            }
            if (pdwStatus == CONNMGR_STATUS_CONNECTIONCANCELED || pdwStatus == CONNMGR_STATUS_WAITINGCONNECTIONABORT)
            {
               hb_retnl( (long) -1 );
            }
            Sleep (2500);
         }
         hb_retnl( (long) phWebConnection );
      }
      else
      {
         hb_retnl( (long) -1 );
      }
   }
}


HB_FUNC (GPRSRELEASE)
{
   HANDLE hCon= NULL;
   ConnMgrReleaseConnection( ( HANDLE ) hb_parnl( 1 ),2 );
}

Posted: Thu Jun 05, 2008 6:27 pm
by Salvador
Muchas gracias Biel. :D

Posted: Thu Jun 05, 2008 6:27 pm
by Salvador
Muchas gracias Biel. :D