Borrar / copiar archivos en una PDA desde PC

Post Reply
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Borrar / copiar archivos en una PDA desde PC

Post 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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

Antonio,
¿Como éste, por ejemplo? http://www.filecluster.com/Internet/Ftp ... et-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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Rafael,

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

Antonio Linares
www.fivetechsoft.com
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post 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 _.
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
tsales
Posts: 186
Joined: Sat Oct 08, 2005 7:32 am

Post 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
Toni Sales
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post 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
tsales
Posts: 186
Joined: Sat Oct 08, 2005 7:32 am

Post 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
Toni Sales
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post 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
tsales
Posts: 186
Joined: Sat Oct 08, 2005 7:32 am

Post by tsales »

RAfael
Si te bajas el PELLESC en la carpeta BIN existen uno fichero CECOPY.exe que te ofrecen esta posibilidad.

Saludos
Toni Sales
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

Toni:
He encontrado CeCopy.exe en los Power Toys de Microsoft, aquí: http://www.microsoft.com/downloads/deta ... aylang=en

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
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post 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.
Pedro Gonzalez
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post 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

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
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post 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
Pedro Gonzalez
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

Alguien tiene algo hecho para copiar archivos desde el pc al pocket? usando RAPI.



gracias
Pedro Gonzalez
Post Reply