Italian Copiare un file da PC a tablet tramite cavo USB

AlpVir

Well-Known Member
Licensed User
Longtime User
Un programma da me sviluppato (in VB6) su un PC windows crea un file PDF di circa 250 KB.
Al termine della creazione vorrei trasferire questo file in un tablet dove dovrà essere visualizzato da una apposita app per il momento solo abbozzata.
So farlo con il wifi ma il trasferimento è un po' lento (circa 12 secondi).
Dal lato PC uso un winsock e dal lato B4A un ServerSocket.
Non avendo vincoli "spaziali" avrei pensato di utilizzare il cavetto USB con cui l'operazione dovrebbe durare 1 o 2 secondi ma il tablet (con Android 8) viene visto dal PC come "Galaxy Tab A" e con come D: o E: o F:.
Sembrerebbe cosa facile ma, ... mi sfugge qualcosa ?
Grazie per l'attenzione
 

semar

Active Member
Licensed User
Longtime User
Se fai doppio click sull' icona "Galaxy Tab A" dovrebbe "aprirsi" come fosse un comunissimo drive. Non capisco molto il problema.. cos'é che ti impedisce di copiare il file via cavo usb ? Forse non hai impostato il tablet ad accettare il collegamento usb come memoria di massa ?
Spiegati meglio.
 

sirjo66

Well-Known Member
Licensed User
Longtime User
da quel che ho capito io, lui non vuole copiare "a mano", vorrebbe farlo in batch, ad esempio con un comando tipo
B4X:
copy c:\miaCartella\mioFile.ext \\Galaxy Tab A\Phone\miaDir\mioFile.ext
windows non vede il telefono con una unità logica (D: o E: o F: eccetera) e a quel che sembra non si può assegnargliela, quindi devi prima "montare" il dispositivo utilizzando il suo GUID

quindi (ad esempio):
B4X:
mountvol C:\GalaxyTab \\?\Volume{a000351d-dbaa-11e0-bdaa-020255061358}\
copy c:\miaCartella\mioFile.ext C:\GalaxyTab\Phone\miaDir\mioFile.ext

Per trovare il GUID del tuo Tablet devi andare sulla configurazione di Windows, selezionare "Gestione dispositivi", poi "Dispositivi portatili", click destro sul Tablet, proprietà, dettagli, dal menu a tendina scegli "GUID class"
 
Last edited:

AlpVir

Well-Known Member
Licensed User
Longtime User
E' proprio come scrive sirjo66 !
Lo voglio fare con un un programma scritto in VB6. So che questo è un forum dedicato al B4A ma so anche che molti provengono dal mondo del buon vecchio VB6.
Per adesso ho scritto qualcosa (che non funziona !) . La documentazione sul comando mountvol è scarsa o più probabilmente non la comprendo appieno.
Se ho ben capito prima devo dire che il tablet (di cui ho ricavato la GUID class) è "pari" a C:\GalaxyTab (nel tuo esempio; W o W: o W:\ nel mio)
E poi posso lanciare un normale copy.
In seguito probabilmente devo smontare il tutto.
Hai qualche informazione ulteriore che mi puoi dare ?
Grazie anticipatamente
B4X:
' codice VB6 !!!
   ' --- Ricavo la directory di Windows
   Sbuffer = String$(255, 0)
   lResult = GetWindowsDirectory(Sbuffer, Len(Sbuffer))
   WinDir = Left$(Sbuffer, lResult)
   '--- monto
   NomeFile = "Copia.pdf"
   GUID = "{eec5ad98-8080-425f-922a-dabf3de3f69a}"       ' GUID class del Tablet
   Unita = "W:\"                       ' non esiste un hd W:\ fisico !
   Sorgente = "D:\Archivi\Giudizi\" & NomeFile
   Destinazione = Unita & NomeFile
   S = WinDir + "\mountvol " & Unita & " \\?\Volume{" & GUID & "}\"
   ExecCmd S
   '--- copio
   S = "Copy " & Sorgente & " " & Destinazione
   ExecCmd S
   '--- probabilmente devo smontare
   S = WinDir + "\mountvol " & Unita & "/AData/FirmaTablet/" & NomeFile & " \\?\Volume{" & GUID & "}\ /D"
   ExecCmd S
 
Last edited:

AlpVir

Well-Known Member
Licensed User
Longtime User
Ho usato tutte queste combinazioni, ma niente !
Unita = "C:"
Unita = "C:\"
Unita = "C:\GalaxyTab"
Unita = "C:\GalaxyTab A"
Unita = "C:\Galaxy Tab A (2016)"
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Ho già fatto qualche prova con adb, senza successo.
Se <local file> è chiaro (esempio "D:\Archivi\Cartella\Copia.pdf") non mi è altrettanto chiaro <remote location>.
Nel tablet quello che per il codice B4A è qualcosa come File.DirRootExternal,"/AData/FirmaTablet/Copia.pdf" l'app Total Commander me lo indica come "/storage/emulated/0/AData/FirmaTablet/Copia.pdf".
Inoltre l'uso di adb comporta l'installazione dell'SDK o meno ?

Dimenticavo: adb devices restituisce ... nulla
 
Last edited:
D

Deleted member 103

Guest
Inoltre l'uso di adb comporta l'installazione dell'SDK o meno ?
Certo!
Con questo codice(Visual-Studio) creo un batch-File che mi da una lista dei device collegati per USB.
B4X:
    Private Sub SearchAllDevice()
        Dim Device As String
        Dim batFile As String
        batFile = "@ECHO OFF" & vbCrLf
        batFile = batFile & txtAdbPath.Text.Substring(0, txtAdbPath.Text.IndexOf(":") + 1) & vbCrLf
        batFile = batFile & "cd " & txtAdbPath.Text.Substring(0, txtAdbPath.Text.LastIndexOf("\")) & vbCrLf
        batFile = batFile & "adb.exe devices > " & Chr(34) & StartupPath & "\device.tmp" & Chr(34) & vbCrLf

        File.WriteAllText(StartupPath & "\batFile.bat", batFile)

        Dim AdbProcess As ProcessStartInfo
        AdbProcess = New ProcessStartInfo(StartupPath & "\batFile.bat")
        Dim pp As Process = Process.Start(AdbProcess)
        pp.WaitForExit()

        If File.Exists(StartupPath & "\device.tmp") Then
            Dim strTemp() As String = File.ReadAllText(StartupPath & "\device.tmp").Split(vbCrLf)
            File.Delete(StartupPath & "\device.tmp")
            File.Delete(StartupPath & "\batFile.bat")

            CheckedListBox1.Items.Clear()

            For i As Integer = 0 To strTemp.Length - 1
                Device = strTemp(i).Trim
                If Device.EndsWith("device") Then
                    Device = Device.Substring(0, Device.IndexOf(vbTab))
                    CheckedListBox1.Items.Add(Device)
                End If
            Next
        End If
    End Sub
 

sirjo66

Well-Known Member
Licensed User
Longtime User
io ho fatto delle prove con ADB e funziona perfettamente !!
Occhio che per funzionare, sul telefono deve essere attiva la modalità DEBUG

La soluzione che ti avevo dato io l'avevo trovata su internet, ma non l'avevo mai provata, ma ho visto anche io che (purtroppo) non funziona, speravo che il MOUNTVOL risolvesse il problema.

Sergio
 
Last edited:

AlpVir

Well-Known Member
Licensed User
Longtime User
Tutto OK. Con ADB avevo dimenticato le virgolette !
Adesso funziona ma (sono incontentabile !) tale soluzione prevede l'intallazione del corposo SDK.
Quella con MOUNTVOL è forse un po' più macchinosa ma evita (eviterebbe) l'installazione prima citata. Se si riuscisse a metterla a punto sarebbe un bel passo avanti.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
sicuro al 100% che serva SDK ??
In questa affermazione mi son fidato di quello che dice Filippo. Proverò, con un diverso computer.
 
Top