Como conectar y transferir archivos por wifi

Como conectar y transferir archivos por wifi

Postby Elias Torres » Thu Nov 16, 2006 1:36 pm

Hola a todos....

He leido por el foro que para poder acceder desde la pocket pc a un archivo ubicado en otra maquina se ha de mapear el directorio de esa computadora para que sea accesible haciendo

\\NombreOtraComputadora\path\NombreFichero.

Yo realizo eso pero no me abre el archivo... Lo que pretendo es descargarme (para luego volver a volcar la informacion) una tabla desde otra ubicacion mediante wifi...

He leido tambien que se debe cargar en memoria con la funcion MemoRead(). Lo hago y cuando pongo MsgInfo( MemoRead( "\\NombreOtraComputadora\path\NombreFichero" ) ) me aparece el cuadro de dialogo vacio. Me gustaria que alguien me guiara un poco sobre este tema, o de donde puedo obtener mas informacion...


Gracias y un saludo a todos...

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby R.F. » Thu Nov 16, 2006 3:53 pm

Elias:

Recuerda que para eso necesitas tener el PPC con Windows Mobile 2005, las versiones anteriores (CE o Mobile 2003) no funcionan para abrir ficheros compartidos por la red.
Saludos
R.F.
R.F.
 
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Postby Elias Torres » Thu Nov 16, 2006 5:26 pm

Gracias Rene, he descargado el emulador para la version 5. Por cierto va super lento, pero es la unica forma que tengo de poder probar la aplicacion, puesto que todavia no dispongo de ninguna pocket pc con la version 5....

Lo que he hecho ha sido lo siguiente...

Para probar he puesto una tabla .dbf y .cdx en otra maquina. Mi intencion es que cuando arranque la aplicacion esta localice de esa maquina los archivos en cuestion y me los pueda descargar en la pda (en algun directorio) para poder trabajar de forma autonoma con ellos y luego hacer lo mismo pero en sentido contrario, es decir volver a volcar la tabla modificada en la maquina donde la cogi...


Como comentaba antes he leido que se necesita guardar la ruta previa de la maquina donde se encuentre los archivos que necesito descargar... Lo que he hecho es:

MemoRead( "\\maquina\path\articulos" )
USE (CurDir() + "\\maquina\path\articulos") VIA "DBFCDX" new
articulos->( OrdSetFocus( "cod_art+nom_art+codcli" ) )
INDEX ON cod_art+nom_art+codcli TO articulos
AliasArticulos := Alias()

Pero esto no me funciona me dice que no puede abrir la tabla....

Que es lo que me falta??


Un saludo...

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Antonio Linares » Thu Nov 16, 2006 6:42 pm

Elías,

> MemoRead( "\\maquina\path\articulos" )

Eso lee el contenido de ese fichero a memoria. No es necesario si vas a hacer un USE luego.

> USE (CurDir() + "\\maquina\path\articulos") VIA "DBFCDX" new

Usa:

USE "\\maquina\path\articulos" VIA "DBFCDX" new
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Elias Torres » Thu Nov 16, 2006 7:25 pm

Gracias Antonio, me ha funcionado...

Queria comentarte otra cosilla..He cogido el programa ftp.prg y lo he modificado con los datos de ip de mi ftp, el usuario y la contraseña

PUBLIC server:="ftp://ip"+space(15)
PUBLIC user:="usuario"+space(15)
PUBLIC pass:="pass"+space(15)
PUBLIC loc_archivo:=curdir()+"\users.bmp"+space(15)
PUBLIC rem_archivo:="users.bmp"+space(40)

El archivo que pretendo enviar como prueba es una imagen llamada users.bmp. Lo he puesto como te muestro. Mi pregunta es: ¿se supone que el archivo que envio al servidor lo está cogiendo de la carpeta samples? Si quisiera darle otra ubicacion, ¿como lo hago?.

Por ultimo, entendiendo que esto está bien, cuando le doy al boton de enviar me muestra un msginfo con un 6 y no me carga nada en el ftp, ¿esto que significa?....

Un saludo y gracias por la ayuda...

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Antonio Linares » Thu Nov 16, 2006 8:45 pm

Elías,

> Si quisiera darle otra ubicacion, ¿como lo hago?.

Cambia CurDir() por la ubicación que quieras.

>
Por ultimo, entendiendo que esto está bien, cuando le doy al boton de enviar me muestra un msginfo con un 6 y no me carga nada en el ftp, ¿esto que significa?....
>

El ejemplo ftp.prg sólo muestra el valor de FTPPUTFILE() y esa función devuelve un valor lógico. No se de donde te sale un 6.

Cómo has modificado ftp.prg ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Elias Torres » Fri Nov 17, 2006 11:41 am

Hola Antonio.

El ftp.prg lo he modificado solamente las lineas:

PUBLIC server:="ftp://ip"+space(15)
PUBLIC user:="usuario"+space(15)
PUBLIC pass:="pass"+space(15)
PUBLIC loc_archivo:=curdir()+"\users.bmp"+space(15)
PUBLIC rem_archivo:="users.bmp"+space(40)

correspondientes a la funcion MAIN. Donde pone ip pongo logicamente la direccion del ftp, en usuario el login y en pass la contraseña. Users.bmp es el archivo que pretendo enviar...

Por lo demas no he cambiado nada... No se si ese será el problema. No se si entendi mal el post anterior, ¿el programa no realiza la transmision fisicamente?...

Si este fuera el caso me podrías indicar como hacerlo? Te lo agradecería..

Un saludo y gracias-

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Antonio Linares » Fri Nov 17, 2006 12:55 pm

Tienes alguna llamada a MsgInfo() en tu código ?

Solo tienes un "?" ?

Copia aqui el código completo.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Elias Torres » Fri Nov 17, 2006 1:15 pm

Antonio el codigo es el siguiente...


#include "Fwce.ch"

//
// File attributes
//

#define FILE_ATTRIBUTE_READONLY 1
#define FILE_ATTRIBUTE_HIDDEN 2
#define FILE_ATTRIBUTE_SYSTEM 4
#define FILE_ATTRIBUTE_DIRECTORY 16
#define FILE_ATTRIBUTE_ARCHIVE 32
#define FILE_ATTRIBUTE_NORMAL 128
#define FILE_ATTRIBUTE_TEMPORARY 256


//
// access types for InternetOpen()
//

#define INTERNET_OPEN_TYPE_PRECONFIG 0 // use registry configuration
#define INTERNET_OPEN_TYPE_DIRECT 1 // direct to net
#define INTERNET_OPEN_TYPE_PROXY 3 // via named proxy
#define INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY 4 // prevent using java/script/INS


//
// manifests
//

#define INTERNET_INVALID_PORT_NUMBER 0 // use the protocol-specific default

#define INTERNET_DEFAULT_FTP_PORT 21 // default for FTP servers
#define INTERNET_DEFAULT_GOPHER_PORT 70 // " " gopher "
#define INTERNET_DEFAULT_HTTP_PORT 80 // " " HTTP "
#define INTERNET_DEFAULT_HTTPS_PORT 443 // " " HTTPS "
#define INTERNET_DEFAULT_SOCKS_PORT 1080 // default for SOCKS firewall servers.


//
// service types for InternetConnect()
//

#define INTERNET_SERVICE_FTP 1
#define INTERNET_SERVICE_GOPHER 2
#define INTERNET_SERVICE_HTTP 3


//
// flags for FTP
//

#define INTERNET_FLAG_TRANSFER_ASCII 1
#define INTERNET_FLAG_TRANSFER_BINARY 2


FUNCTION MAIN()
LOCAL oWnd
PUBLIC server:="ftp://ipftp"+space(15)
PUBLIC user:="usuario"+space(15)
PUBLIC pass:="pass"+space(15)
PUBLIC loc_archivo:=curdir()+"\users.bmp"+space(15)
PUBLIC rem_archivo:="users.bmp"+space(40)
PUBLIC lSobreescribir:=.T.
PUBLIC lBinary:=.T.
DEFINE WINDOW oWND TITLE "Prueba FTP"
#DEFINE margen_derecho 5
#DEFINE largo_say 100
#DEFINE largo_get 130
#DEFINE ancho 20
#DEFINE separacion_entre_lineas ancho+10

** SERVIDOR:

#DEFINE oSay1 oWND:aControls[1]
@10,margen_derecho SAY "Servidor: " SIZE largo_say, ancho PIXEL OF oWND
@ oSay1:ntop, oSay1:nRight+1 GET server SIZE largo_get, ancho PIXEL OF oWnd

** USER:

#DEFINE oSay2 oWnd:aControls[3]
@ oSay1:nTop+separacion_entre_lineas, margen_derecho SAY "User:" SIZE largo_say, ancho PIXEL OF oWnd
@ oSay2:nTop, oSay2:nRight+1 GET user SIZE largo_get,ancho PIXEL OF oWnd

** PASS:

#DEFINE oSay3 oWnd:aControls[5]
@ oSay2:nTop+separacion_entre_lineas, margen_derecho SAY "Password:" SIZE largo_say, ancho PIXEL OF oWnd
@ oSay3:nTop, oSay3:nRight+1 GET pass SIZE largo_get,ancho PIXEL OF oWnd

* ARCHIVO LOCAL:

#DEFINE oSay4 oWnd:aControls[7]
@ oSay3:nTop+separacion_entre_lineas, margen_derecho SAY "Archivo local:" SIZE largo_say, ancho PIXEL OF oWnd
@ oSay4:nTop, oSay4:nRight+1 GET loc_archivo SIZE largo_get,ancho PIXEL OF oWnd

* ARCHIVO REMOTO:

#DEFINE oSay5 oWnd:aControls[9]
@ oSay4:nTop+separacion_entre_lineas, margen_derecho SAY "Archivo Remoto:" SIZE largo_say, ancho PIXEL OF oWnd
@ oSay5:nTop, oSay5:nRight+1 GET rem_archivo SIZE largo_get,ancho PIXEL OF oWnd

* ENVIAR

#DEFINE oButton1 oWnd:aControls[11]
@ oSay5:nTop+separacion_entre_lineas, margen_derecho+10 BUTTON "Enviar" SIZE 50, ancho PIXEL ACTION msginfo(enviar()) OF oWnd

* TRAER

#DEFINE oButton2 oWnd:aControls[12]
@ oButton1:nTop, oButton1:nRight+20 BUTTON "Traer" SIZE 50, ancho PIXEL ACTION msginfo(traer()) OF oWnd

* SOBREESCRIBIR

#DEFINE oChk1 oWnd:aControls[13]
@ oButton1:nTop+separacion_entre_lineas, margen_derecho CHECKBOX lSobreescribir PROMPT "Sobreescribir" SIZE 150, ancho PIXEL OF oWnd

* BINARY

#DEFINE oChk2 oWnd:aControls[14]
@ oChk1:nTop+separacion_entre_lineas, margen_derecho CHECKBOX lBinary PROMPT "Transferencia Binaria" SIZE 150, ancho PIXEL OF oWnd

ACTIVATE WINDOW oWND
RETURN NIL

FUNCTION Enviar()
LOCAL nRet
LOCAL hInternet, hConnect
hInternet = INTERNETOPEN( "Anystring", INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0 )
hConnect = INTERNETCONNECT(hInternet, rtrim(server), INTERNET_INVALID_PORT_NUMBER, rtrim(user), rtrim(pass), INTERNET_SERVICE_FTP, 0, 0 )
IF FTPPUTFILE( hConnect, rtrim(loc_archivo), rtrim(rem_archivo),iif(lBinary,INTERNET_FLAG_TRANSFER_BINARY,INTERNET_FLAG_TRANSFER_ASCII), 0 )
nRet:=0
ELSE
nRet:=GetLAstError()
ENDIF
INTERNETCLOSEHANDLE( hConnect )
INTERNETCLOSEHANDLE( hInternet )
RETURN nRet

FUNCTION Traer()
LOCAL nRet
LOCAL hInternet, hConnect
hInternet = INTERNETOPEN( "Anystring", INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0 )
hConnect = INTERNETCONNECT(hInternet, rtrim(server), INTERNET_INVALID_PORT_NUMBER, rtrim(user), rtrim(pass), INTERNET_SERVICE_FTP, 0, 0 )
IF FTPGETFILE( hConnect, rtrim(rem_archivo), rtrim(loc_archivo), IIF( lSobreescribir,0,1), FILE_ATTRIBUTE_ARCHIVE, 0, 0 )
nRet:=0
ELSE
nRet:=GetLAstError()
ENDIF
INTERNETCLOSEHANDLE( hConnect )
INTERNETCLOSEHANDLE( hInternet )
RETURN nRet

#pragma BEGINDUMP

#include "windows.h"
#include "wininet.h"
#include "hbapi.h"


LPWSTR AnsiToWide( LPSTR );


HB_FUNC( INTERNETOPEN )
{
LPWSTR cAgent = AnsiToWide( hb_parc( 1 ) );
LPWSTR cProxyName = AnsiToWide( hb_parc( 3 ) );
LPWSTR cProxyBypass = AnsiToWide( hb_parc( 4 ) );
HINTERNET hInternet = InternetOpen( cAgent, hb_parnl( 2 ), cProxyName, cProxyBypass, hb_parnl( 5 ) );
hb_xfree( cAgent );
hb_xfree( cProxyName );
hb_xfree( cProxyBypass );
hb_retnl( ( LONG ) hInternet );
}

HB_FUNC( INTERNETCLOSEHANDLE )
{
hb_retl( InternetCloseHandle( ( HINTERNET ) hb_parnl( 1 ) ) );
}

HB_FUNC( INTERNETCONNECT )
{
LPWSTR cServerName = AnsiToWide( hb_parc( 2 ) );
LPWSTR cUserName = AnsiToWide( hb_parc( 4 ) );
LPWSTR cPassword = AnsiToWide( hb_parc( 5 ) );
HINTERNET hInternet = InternetConnect( ( HINTERNET ) hb_parnl( 1 ), cServerName, ( INTERNET_PORT ) hb_parnl( 3 ), cUserName, cPassword, hb_parnl( 6 ), hb_parnl( 7 ), hb_parnl( 8 ) );
hb_xfree( cServerName );
hb_xfree( cUserName );
hb_xfree( cPassword );
hb_retnl( ( LONG ) hInternet );
}

HB_FUNC( FTPGETFILE )
{
LPWSTR cRemoteFile = AnsiToWide( hb_parc( 2 ) );
LPWSTR cNewFile = AnsiToWide( hb_parc( 3 ) );
hb_retl( FtpGetFile( ( HINTERNET ) hb_parnl( 1 ), cRemoteFile, cNewFile, hb_parl( 4 ), hb_parnl( 5 ), hb_parnl( 6 ), hb_parnl( 7 ) ) );
hb_xfree( cRemoteFile );
hb_xfree( cNewFile );
}

HB_FUNC( FTPPUTFILE )
{
LPWSTR cLocalFile = AnsiToWide( hb_parc( 2 ) );
LPWSTR cNewRemoteFile = AnsiToWide( hb_parc( 3 ) );
hb_retl( FtpPutFile( ( HINTERNET ) hb_parnl( 1 ), cLocalFile, cNewRemoteFile, hb_parnl( 4 ), hb_parnl( 5 ) ) );
hb_xfree( cLocalFile );
hb_xfree( cNewRemoteFile );
}

#pragma ENDDUMP


Saludos...

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Antonio Linares » Fri Nov 17, 2006 4:55 pm

Elías,

Si te aparece un 6 debe ser el resultado de GetLAstError().

Has buscado que significa ese código de error ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Elias Torres » Fri Nov 17, 2006 4:56 pm

Hola..

Antonio al final he solucionado el tema del ftp. He cogido otro ejemplo del foro y me funciona correctamente. Viendo el funcionamiento del ftp al que se le pasa la direccion ip, el usuario y la contraseña se me ha ocurrido si existe alguna funcion que haga ese uso a la hora de coger un archivo desde otra maquina....

Yo el archivo desde otra maquina lo uso asi:

USE ("\\maquina\path\archivo.dbf") share

Lo que pasa es que cada vez que entro me pide el usuario y la contraseña que tiene el equipo... Se puede pasar por parametros a alguna funcion para que haga la validacion sobre la marcha???


Gracias a todos lo que poneis ejemplos en el foro, nos sirven de mucho..

Saludos.

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Antonio Linares » Fri Nov 17, 2006 5:00 pm

Elías,

No lo sé, habría que buscar documentación al respecto.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Elias Torres » Fri Nov 17, 2006 5:35 pm

Antonio:

Se que lo que voy a preguntar es una boberia pero resulta que no se como leer una tabla con un select y quedarme solo con algunos campos y almacenarlos en una tabla o cursor temporal.....

En fox si se como es pero aqui no me va me da error....


saludos.

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Antonio Linares » Fri Nov 17, 2006 10:26 pm

Elías,

Una forma de hacerlo es crear un índice por la condición que necesites.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

ayuda

Postby prm_pedro » Sat Nov 18, 2006 7:19 pm

oye elias me podrias conceder tu codi del ftp para reutilizarlo



:oops: bueno si se puede...


espero y me lo puedas proporcionar
prm_pedro
 
Posts: 46
Joined: Tue Oct 10, 2006 6:16 pm

Next

Return to FiveWin para Pocket PC

Who is online

Users browsing this forum: No registered users and 14 guests