Italian problema su ftp senza wireless

insoft

Member
Licensed User
Buongiorno a tutti.
Premetto che sono un principante di b4a.
Sto scrivendo un app che come prima cosa deve scaricare dei file csv da un server cloud aruba.
Ho scopiazzato pezzi di codice di Erel utilizzando la libreria NET versione 1.77

Mi sono accorto che funziona ma solo all'interno di una rete wireless.
Se disattivo il wireless sullo smartphone e voglio sfruttare la rete dati legata alla sim del gestore non va nulla.
E' perché ho usato la libreria net al posto di quella ftp o c'è qualcosa d'altro che non conosco.

Un saluto a tutti e un grazie particolare a chi mi darà una soluzione.
 

Star-Dust

Expert
Licensed User
Sembra un comportamento strano.
Possiamo vedere il codice del download? Hai una connessione 3g/4g valida e pagata?
 

insoft

Member
Licensed User
Premesso che l'ho provato su un tablet non mio ma che riceve e fa messaggi e telefonate con una sim tim questo è il codice

Sub CaricaCSVDaCloud (ServerFolder As String)

ProgressDialogShow2("Importazione chiamate dal server cloud",False)
ftp.Initialize("FTP", IndirizzoFTP, PortaFtp, UserIDFTP, PasswordFTP)

ftp.List(ServerFolder)
Wait For FTP_ListCompleted (ServerPath As String, Success As Boolean, Folders() As FTPEntry, Files() As FTPEntry)

If Success Then
For Each f As FTPEntry In Files
ftp.DownloadFile(ServerPath & "/" & f.Name, False, File.DirDefaultExternal & "/Scambio", f.Name)

Wait For FTP_DownloadCompleted (ServerPath2 As String, Success As Boolean)

Log($"File ${ServerPath2} downloaded. Success = ${Success}"$)

Next

End If

ProgressDialogHide

Come dicevo è scopiazzato da uno degli esempi del sito b4a
 

Star-Dust

Expert
Licensed User
per favore inserisci il codice all'interno dei target:
[ CODE] ... [ /CODE]
cosi possiamo capire meglio il codice.


Cmq superficialmente mi sembra corretto. Può essere un problema della rete del dispositivo.

Hai i permessi per scrivere nella Memoria interna? Qual'é l'sdk target?
 

insoft

Member
Licensed User
B4X:
Sub CaricaCSVDaCloud (ServerFolder As String)

    ftp.Initialize("FTP", IndirizzoFTP, PortaFtp, UserIDFTP, PasswordFTP)
   
    ftp.List(ServerFolder)
    Wait For FTP_ListCompleted (ServerPath As String, Success As Boolean, Folders() As FTPEntry, Files() As FTPEntry)
    
    If Success Then
        For Each f As FTPEntry In Files
             ftp.DownloadFile(ServerPath & "/" & f.Name, False, File.DirDefaultExternal & "/Scambio", f.Name)
             Wait For FTP_DownloadCompleted (ServerPath2 As String, Success As Boolean)
             Log($"File ${ServerPath2} downloaded. Success = ${Success}"$)
        Next
     End If
Spero adesso il codice sia più chiaro.
Riproverò appena ho per le mani di nuovo il tablet in oggetto verificando innanzitutto che disattivando la wireless il dispositivo navighi in internet cosa che mi sono dimenticato di fare.

Quindi dici che l'uso della libreria NET anziché di quella FTP non può influire.

Intanto grazie.
 

insoft

Member
Licensed User
per favore inserisci il codice all'interno dei target:
[ CODE] ... [ /CODE]
cosi possiamo capire meglio il codice.


Cmq superficialmente mi sembra corretto. Può essere un problema della rete del dispositivo.

Hai i permessi per scrivere nella Memoria interna? Qual'é l'sdk target?
I permessi penso siano corretti anche perché con la rete wireless attiva scarica i file correttamente.
Se non dico una castroneria l'sdk target è il 16 (derivato dal configura percorsi di b4a - spero di non averti detto una fesseria).

Ancora grazie.
 

Star-Dust

Expert
Licensed User
Ti da la lista e non scarica il file oppure non ti da nemmeno la lista in 3g?

Non ho ben capito la parte in cui dici che usi .NET intendi la libreria?
 

insoft

Member
Licensed User
Dimenticavo di dire che nella stessa app c'è un il richiamo a un web service che manda una stringa json sullo stesso server cloud e che disabilitando la rete wireless funziona sempre perfettamente, quindi penso non dovrebbe essere un problema di navigazione altrimenti fuori rete neanche quella funzionerebbe.
 

insoft

Member
Licensed User
I permessi penso siano corretti anche perché con la rete wireless attiva scarica i file correttamente.
Se non dico una castroneria l'sdk target è il 16 (derivato dal configura percorsi di b4a - spero di non averti detto una fesseria).

Ancora grazie.
 

Star-Dust

Expert
Licensed User
Dimenticavo di dire che nella stessa app c'è un il richiamo a un web service che manda una stringa json sullo stesso server cloud e che disabilitando la rete wireless funziona sempre perfettamente, quindi penso non dovrebbe essere un problema di navigazione altrimenti fuori rete neanche quella funzionerebbe.
Quindi ricapitolando.

Hai un App che scarica un file da un server ma anche invia una stringa JSON sullo stesso server.
Quando passi in 3g non ti scarica il file dal server.

Domanda: segnala errore? non da risultati? ti da la lista dei file presenti sul server?
 

insoft

Member
Licensed User
Si in effetti è così.

Si tratta di una app per gestire le chiamate di un centro assistenza elettrodomestici.

Per prima cosa scarica via ftp dei csv che contengono i dati delle chiamate della giornata (che sono stati mandati sul server cloud tramite il server aziendale e un apposita estrazione) e popola alcune tabelle sqlite (ovviamente lo scarico non deve essere legato alla presenza fisica di una rete wireless ma deve poter essere fatto la mattina dal tecnico magari quando è già sul furgone).

Attraverso l'app vengono completati i dati dell'intervento a intervento terminato (ora inizio, fine, materiali utilizzati, importi vari ecc.)

Al termine il tecnico da per chiusa la chiamata e parte un web service che manda tutti questi dati al server cloud.

Spero di aver chiarito almeno l'applicazione.

Comunque hai ragione, prima devo verificare le cose che mi hai chiesto (o fatto una prova al volo stamattina e non ho con me il tablet in questione).
Faccio tutte queste verifiche appena posso per poter dare risposta a queste tue giuste domande.
 

Star-Dust

Expert
Licensed User
Ok, verifica e poi vediamo.
Io ti consiglio di usare un php di Aruba, gratuito e molto più snello per gestire il tipo di App che hai creato tu.

Puoi usarlo come DataBase remoto, inserendo, consultando, modificando (campi) e anche eliminando singoli record e non dovendo scaricarsi tutto il database per passarlo dentro l'App.

Questo permetterà durante il giorno di fare dei piccoli aggiornamenti sulle chiamate, magari lo stato (Conclusa, Non effettuata, Annullata, eccc..) o aggiungere una singola chiamata
 

insoft

Member
Licensed User
ok penso alla tua soluzione e mi documento un po' (come ti dicevo sono un principiante in materia anche se vecchio di programmazione e non solo, ho cominciato prima del primo pc ibm del 1980 ma si lavorava in cobol e rpg).
Verifico le altre cose e poi ci riaggiorniamo.
Per ora 1000 grazie.
 

Star-Dust

Expert
Licensed User
ok penso alla tua soluzione e mi documento un po' (come ti dicevo sono un principiante in materia anche se vecchio di programmazione e non solo, ho cominciato prima del primo pc ibm del 1980 ma si lavorava in cobol e rpg).
Verifico le altre cose e poi ci riaggiorniamo.
Per ora 1000 grazie.
qua il più giovane ha 80 anni e sviluppava app sui nastri forati (non esistevano ancora i floppy) :D
 

giannimaione

Well-Known Member
Licensed User
... e se il problema fosse Aruba ?
verifica nel pannello di controllo FTP quali sono i paesi/nazioni o il range di indirizzi IP che possono accedere tramite FTP.
 
Top