FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Pocket PC Problemas Socket y Windows CE 4.2
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Problemas Socket y Windows CE 4.2
Posted: Tue Mar 14, 2006 07:30 PM

Hola,

Intentado juguetear con los sockets he descubierto que dan un internal error en Windows CE, sin embargo en Windows Mobile parece que va bien, incluyendo el emulador.

Las pruebas las estoy haciendo con una casio cassiopea IT-600

Esto falla: o := TSocket():New( , oWnd )

Esto también: nSocket := Socket( AF_IRDA, SOCK_STREAM, 0 )
devuelve -1 en vez de un nº de socket y no es un valor válido.

Es muy importante, pues inmediatamente, perdemos compatibilidad con las máquinas industriales bajo win CE.

Un Saludo,
Joaquín

Un Saludo,

Joaquín Martínez
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Problemas Socket y Windows CE 4.2
Posted: Tue Mar 14, 2006 07:57 PM

Joaquín,

Con los builds más recientes de FWPPC se indica la descripción del error interno. ¿ Que descripción te sale ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Problemas Socket y Windows CE 4.2
Posted: Tue Mar 14, 2006 08:18 PM

El mensage es un msgbox que casi no da tiempo de leerlo, pues desaparece sólo, como título pone "hb_internal()" y como texto "internal error".

Construído con el último build, no existe más descripción del error por ningún lado, ni siquiera como error.txt en la carpeta donde lo ejecuto.

Un Saludo,
Joaquín

Un Saludo,

Joaquín Martínez
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Problemas Socket y Windows CE 4.2
Posted: Thu Mar 16, 2006 08:19 PM

Antonio,

Sigo con las pruebas, a ver si averiguamos de donde viene el problema.
El siguiente ejemplo:

WSAStartup()
msginfo( "Pru socket1 "+str(socket(AF_IRDA, SOCK_STREAM, 0)) )
msginfo( "Pru socket2 "+str(prusock()) )
WSACleanUp()

//--------- Función en C para prusock() ---------------
HB_FUNC( PRUSOCK )
{
hb_retni( socket(AF_IRDA, SOCK_STREAM, 0) );
}

En windows Mobile la 1 da Ok la 2 da Error.

En windows CE 5.0 la 1 da Error la 2 da Ok

Explicación? No encuentro ninguna. A ver si Antonio ve alguna diferencia entre la implementación que tiene de la función socket fwppc, de la que muestro yo de pruebas.

Un Saludo,
Joaquín

Un Saludo,

Joaquín Martínez
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Problemas Socket y Windows CE 4.2
Posted: Thu Mar 16, 2006 08:30 PM

Se me olvidaba decir, por si pudiera tener algo que ver, que estos son los ficheros que incluyo en la cabecera del C

pragma BEGINDUMP

include <windows.h>

include <hbapi.h>

include "winsock2.h"

define _WIN32_WCE

include <af_irda.h>

Un Saludo,
Joaquín

Un Saludo,

Joaquín Martínez
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Problemas Socket y Windows CE 4.2
Posted: Thu Mar 16, 2006 09:04 PM

Joaquín,

la implementación de sockets de FWPPC está en source\winapi\winsock.c

y la llamada a la función socket() se hace desde la Clase TSocket así:

Socket( AF_INET, SOCK_STREAM, IPPROTO_IP )

Tu usas AF_IRDA en vez de AF_INET. AF_IRDA es el infrarojos, no ? quizá sea esa la diferencia.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Problemas Socket y Windows CE 4.2
Posted: Thu Mar 16, 2006 09:36 PM

Antonio,

No van por ahí los tiros, te explico:

Esto directamente falla en Win CE

TSocket():New( , oWnd ) // provoca hb_internal error

y otro tema es que me parece que ya he visto la diferencia:

En el código C hay que definir lo siguiente:

// Para Windows Mobile

define _WIN32_WCE

// Para Windows CE 5.0

define _WIN32_WINDOWS

El problema es que no soy muy ducho con el C y no sé poner al principio, lo siguiente ( son simulados los comandos de C )

pragma BEGINDUMP

include <windows.h>

include <hbapi.h>

//---------- Habría alguna manera de poner este trocito en C
if IsMobile
#define _WIN32_WCE
else
#define _WIN32_WINDOWS
//-------------------------------------------------------------------

Include ....

Un Saludo,
Joaquín

include <af_irda.h>

Un Saludo,

Joaquín Martínez
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Problemas Socket y Windows CE 4.2
Posted: Thu Mar 16, 2006 09:49 PM

Joaquín,

Estás usando el build más reciente de FWPPC y no te sale la descripción del error interno ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Problemas Socket y Windows CE 4.2
Posted: Thu Mar 16, 2006 10:04 PM

Antonio,

Acabo de instalar el de hoy y ahora no sale ni internal error, poniendo esto:

msginfo("Antes")

o := TSocket():New( ,oWnd)

msginfo("después")

......

La palabra "después" nunca llega a mostrarse y el sistema se queda como herido (aunque no de muerte) porque puedes pulsar otro botón y salir.

Con el build de hace un par de días sólo mostraba hb_internal error

Un Saludo,
Joaquín

Un Saludo,

Joaquín Martínez
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Problemas Socket y Windows CE 4.2
Posted: Thu Mar 16, 2006 10:24 PM
Joaquín,

Acabamos de probar este ejemplo con el build de FWPPC más reciente, en el emulador, y ha funcionado correctamente:
#include "FWCE.ch"

function Main()

   local oWnd, o

   DEFINE WINDOW oWnd

   msginfo("Antes") 

   o := TSocket():New( ,oWnd ) 

   msginfo("después")
   
   ACTIVATE WINDOW oWnd

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion