Page 1 of 1

Borrar / copiar archivos en una PDA desde PC

PostPosted: Sat Jan 05, 2008 7:01 pm
by Rafael Clemente
Tengo una PDA conectada por USB a mi PC. Tengo instalado Active Sync y puedo transferir archivos desde el PC a la PDA y viceversa simplemente arrastrandolos de una ventana a otra. Hasta aquí todo bien.

Alguien sabe si hay alguna forma de hacer lo mismo desde programa con FWH / FWPPC?. Por ejemplo: En mi PC ejecutar un programa FWH que en un momento dado haga FErase("Mi PDA\Carpeta\Archivo.txt")
O bien Copy File ("C:\Mi archivo...", "PDA\Mi archivo...")

Gracias
Rafael

PostPosted: Sun Jan 06, 2008 7:28 am
by Antonio Linares
Rafael,

Mira a ver si localizas un servidor "SSH" para Windows Mobile:

http://es.wikipedia.org/wiki/Secure_Shell

Estos dias lo estoy usando para el iPhone, y enamora la potencia que el SSH ofrece :-) (scp, sftp, etc.) Es una herramienta del mundo Unix

Te permitirá hacer eso que quieres y muchísimas más cosas

PostPosted: Sun Jan 06, 2008 12:35 pm
by Rafael Clemente
Antonio,
¿Como éste, por ejemplo? http://www.filecluster.com/Internet/Ftp-Clients/Download-HsTftpCE-TFTP-Client-Server-for-Pocket-PC.html

Supongo que he de descargarlo e instalarlo en la PDA. ¿Necesito instalar algo así también en el PC? Lo que quiero es poder borrar ficheros en la PDA mediante un comando ***DESDE EL PC***; no al revés, que es lo que parece que permiten todos los SSH que he visto para Pocket

Gracias
Rafael

PostPosted: Sun Jan 06, 2008 4:59 pm
by Antonio Linares
Rafael,

Necesitas SSH en ambos. En el Pocket PC como servidor y en el PC como cliente.

PostPosted: Mon Jan 07, 2008 5:13 pm
by Rafael Clemente
Antonio,
Me ha bajado un par de SSH servers para Pocket PC (freeware y de pago). No he podido instalar ninguno de los dos: "xxxx no es una aplicación de Pocket PC válida" en ambos casos.
Lo he probado en dos PDA: iPAQ antiguo (2001) con Pocket PC v3.0 y Acer N35 v 4.20, (de 2003) :(
Seguiré buscado...
Gracias y un saludo,
Rafael

PostPosted: Mon Jan 07, 2008 6:19 pm
by tsales
Rafael
Lo puedes hacer utilizando las funciones RAPI.
Prueba con esto.

FUNCTION FErasePPc( cFile, lMsg )
LOCAL lVRet := RAPI_BORRAFICHERO_PDA( AnsiToWide(cFile), IF(lMsg=NIL,.F.,lMsg) )

IF lMsg
IF lVRet
MSGINFO(cFile + " Fichero Borrado correctante")
ELSE
MSGINFO(" El Fichero " + cFile + " NO ha podido ser Borrado")
ENDIF
ENDIF
RETURN lVRet

HB_FUNC( RAPI_BORRAFICHERO_PDA )
{


typedef HRESULT (WINAPI * _CeRapiInitEx_) (RAPIINIT *) ;
typedef HRESULT (WINAPI * _CeRapiUninit_) (void);
typedef BOOL (WINAPI * _CeDeleteFile_) (LPCWSTR);
typedef DWORD (WINAPI * _CeGetLastError_) (void);

BOOL lMuestraErrores = FALSE ;

HINSTANCE lRapi;
_CeRapiInitEx_ CeRapiInitEx;
_CeRapiUninit_ CeRapiUninit;
_CeDeleteFile_ CeDeleteFile;
_CeGetLastError_ CeGetLastError;

HRESULT lConnected;
RAPIINIT ri;
BOOL lResultado;

// Cargamos la librería
lRapi = LoadLibrary ( "Rapi.dll" );
if ( lRapi == NULL ) {
MessageBox(NULL,"Error:no cargada librería","Rapi",MB_OK);
hb_retl(FALSE);
return ;
}


// Cargamos las funciones
CeRapiInitEx = (_CeRapiInitEx_) GetProcAddress((HMODULE) lRapi,"CeRapiInitEx");
CeRapiUninit = (_CeRapiUninit_) GetProcAddress((HMODULE) lRapi,"CeRapiUninit");
CeDeleteFile = (_CeDeleteFile_) GetProcAddress((HMODULE) lRapi,"CeDeleteFile");
CeGetLastError = (_CeGetLastError_) GetProcAddress((HMODULE) lRapi,"CeGetLastError");


// Conectamos
ri.cbSize = sizeof(RAPIINIT);
ri.heRapiInit = NULL;
ri.hrRapiInit = NULL;
if(FAILED(CeRapiInitEx(&ri))) {
FreeLibrary(lRapi);
hb_retl( FALSE );
return;
}
if(WaitForSingleObject(ri.heRapiInit, 3000) != WAIT_OBJECT_0) {
CeRapiUninit();
FreeLibrary(lRapi);
hb_retl( FALSE ) ;
return;
}


lResultado = CeDeleteFile( (LPCWSTR)hb_parc(1) );




// Control de Errores
if( !lResultado ){
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
CeGetLastError(),
0, // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// Mostramos el error (si así lo piden)
lMuestraErrores = (ISLOG(2) ? (BOOL) hb_parl(2) : lMuestraErrores);
if( lMuestraErrores ) MessageBox( NULL, (LPTSTR)lpMsgBuf, L"Error", MB_OK | MB_ICONINFORMATION );

// Liberamos memoria
LocalFree( lpMsgBuf );
}



// Desconectamos
CeRapiUninit();

// Descargamos librería
FreeLibrary(lRapi);

hb_retl( lResultado );

}

Saludos

PostPosted: Mon Jan 07, 2008 8:11 pm
by Rafael Clemente
Toni,
Muchas gracias por tu ejemplo, per no he podido echarlo a andar. Probablemente es porque mis conocimientos de C son muy escasos, por no decir inexistentes.
He incluído todo tu listado entre #pragma BEGIN DUMP y #pragma ENDDUMP. Al compilar me da un montón de errores. Los primeros:
    Error RMAKE/R2001 Exit 1: 'c:\bcc55\bin\bcc32 -M -c -Ic:\harbour\include TEST.C
    OM.C'
    Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
    TEST.C:
    Error E2147 TEST.PRG 112: 'WINAPI' cannot start a parameter declaration in fu
    nction HB_FUN_RAPI_BORRAFICHERO_PDA
    Error E2147 TEST.PRG 112: 'RAPIINIT' cannot start a parameter declaration in
    function HB_FUN_RAPI_BORRAFICHERO_PDA
etc...
Probablemente me falta algún include o algo más. (Utilizo FWH 2.6 + Harbour) Alguna sugerencia?
Muchas gracias
Rafael

PostPosted: Tue Jan 08, 2008 7:19 am
by tsales
Rafael
Incluye esto:

#include "windows.h"
#include "hbapi.h"
#include <hbapifs.h>
#include "rapi.h"
#include <wininet.h>
#include "winerror.h"
#define BUFFER_SIZE 8192

Saludos

PostPosted: Tue Jan 08, 2008 8:08 am
by Rafael Clemente
Toni:
Formidable!!!. Con los includes funcionó a la primera. Si no es mucho abusar, tienes alguna función más que permita copiar archivos desde el PC a la PDA y viceversa?
Un montón de gracias
Rafael

PostPosted: Tue Jan 08, 2008 9:41 am
by tsales
RAfael
Si te bajas el PELLESC en la carpeta BIN existen uno fichero CECOPY.exe que te ofrecen esta posibilidad.

Saludos

PostPosted: Tue Jan 08, 2008 11:02 am
by Rafael Clemente
Toni:
He encontrado CeCopy.exe en los Power Toys de Microsoft, aquí: [url]http://www.microsoft.com/downloads/details.aspx?FamilyId=74473FD6-1DCC-47AA-AB28-6A2B006EDFE9&displaylang=en
[/url]

Va perfecto y hace exactamente lo que yo quería. Además, los Power Toys incluyen un par de aplicaciones que te permiten ejecutar programas de la PDA en el PC y unas cuantas cosas más. Muy útil.

Gracias por apuntarme el camino. Un saludo,
Rafael

PostPosted: Tue Jan 08, 2008 11:40 am
by pymsoft
Visto que estamos en el tema...

Yo para copiar archivos desde el pocket a la pc lo hago en este modo:

COPY FILE miarchivo.dbf TO \\server\c\carpeta\miarchivo.dbf

todo esto si estoy conectado con wi-fi...

En vez, si estoy conectado con cable, con activesync no funciona... alguna idea de como copiar desde el pocket al pc de programa?, o como ver la unidad del pc al cual estamos conectado?, porque cuando conectamos con activesync se crea una direccion IP sea para el pc que para el pocket...

Saludos.

PostPosted: Tue Jan 08, 2008 11:54 am
by Rafael Clemente
Pedro:
Yo acabo de descubrir CECOPY.EXE (lo puedes bajar del link que he puesto más arriba) que me funciona de maravilla para copiar desde/hacia la PDA:
Code: Select all  Expand view
WaitRun('CECOPY Test.txt "dev:\SD-MMC CARD\MIFOLDER"', .T. )

WaitRun('CECOPY "dev:\SD-MMC CARD\MIFOLDER\Test.txt"  desk:\ ', .T. )

Además, permite copiar directorios enteros (no lo he probado)

No uso WiFi; tengo la PDA conectada al PC mediante un cable USB y ActiveSync
Por cierto: Es posible conectar mi PDA a mi red local mediante cable USB? Alguna idea?
Saludos,
Rafael

PostPosted: Tue Jan 08, 2008 12:59 pm
by pymsoft
Rafel: tambien uso cecopy, pero sirve solo si lo llamas desde el pc, no desde el terminal. El tema es que me copia todo un archivo, y yo quiero copiar solo algunos registros... se que puedo hacer archivos temporales y luego copiarlos, pero ahi me toca hacer una operacion en el terminal y otra en el pc... quisiera hacer todo desde el terminal como lo hago ahora, pero solo si estoy conectado al wi-fi.

Tu PDA puedes conectarla a la red local, que yo sepa solo si estas conectado con wi-fi, al menos esas son mis pruebas, el tema que conectado con el cable es mucho mas rapido.

Saludos

PostPosted: Thu Apr 24, 2008 9:46 am
by pymsoft
Alguien tiene algo hecho para copiar archivos desde el pc al pocket? usando RAPI.



gracias