Italian Scambio dati testo pc device

Priamo

Member
Licensed User
Longtime User
Save a tutti,
chiedevo se si possono scambiare dati string tra un'applicazione .net su pc ed un device con android, ho visto già un post vecchio al quale però non è seguita alcuna risposta. Essendo nuovo di b4a, mi sto un po perdendo nei tanti tutorial, che cmq trovo molto ben fatti. Ho pensato all' uso di un web service, dei socket, al salvataggio di file dall' una e dall' altra parte, ma noto che cmq sono sempre rivolti verso il web, a me servirebbe solo colloquiare in lan wireless. Magari potete consigliarmi un esempio più appropriato che mi è sfuggito, qualche libreria che esplica queste funzioni. Ringrazio anticipatamente chi vorrà dedicarmi un po del suo tempo.
Saluti a tutti.
 

AlpVir

Well-Known Member
Licensed User
Longtime User

Priamo

Member
Licensed User
Longtime User
Ciao,

grazie per la risposta, ho fatto un applicazione in .net per provare l'esempio, vb6 non c'è più da me. Al momento sono riuscito ad ottenere la connessione con l'emulatore, più tardi proverò a trasmettere e ricevere qualche cosa, ti tengo aggiornato nel caso possa servirti.
 

Priamo

Member
Licensed User
Longtime User
Salve,

sono riuscito a ricevere e trasmette senza grosse difficoltà, ovviamente il tutto va affinato in base alle proprie esigenze, per quanto riguarda il programmino che mi hai suggerito, non vanno fatte modifiche, devi solo mettere l 'indirizzo del server e la porte, per il server ti giro una console application con vs 2010 quindi mf 4.0, per provare basta solo che ti cambi la porta uguale a quella del programmino, ed a me ha funzionato correttamente.
Per il prg b4a, fai attenzione che dal designer devi spostarti alcuni elementi dell' interfaccia che così non si vedono , un due button e qualche altra cosa adesso non ricordo, forse il mio emulatore non era dimensionato in modo adeguato. Spero che puoi realizzare quello che volevi. ciao ed ancora grazie del link.
 

Attachments

  • ProvaSocket_server .zip
    64.2 KB · Views: 425

AlpVir

Well-Known Member
Licensed User
Longtime User
Purtroppo l'esempio da te allegato non fa il caso mio perchè sviluppato con un linguaggio di cui non ho la disponibilità e che non conosco; in pratica non so tradurre le istruzioni da vs2010 a VB6. Qualcuno (o tu stesso) può darmi una mano ?
 

Priamo

Member
Licensed User
Longtime User
Purtoppo vb6 non lo conosco, magari però potresti fare il contrario, passare alle nuove versioni, sul sito microsoft puoi scaricarti la versione vb 2010 express gratuita, che per queste cose è più che sufficiente, poi ti apri la soluzione e vadrai che non è molto difficile, comincia così poi posso anche aiutarti. ciao.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Ho scaricato ed installato vb2010 e sono riuscito a trasmettere una stringa dal device android (reale) al PC windows collegati fra loro col wi-fi.
In realtà il mio scopo finale era l'inverso: trasmettere da PC a Android. Hai dei suggerimenti ?
 

Priamo

Member
Licensed User
Longtime User
In questo codice:
---
While (True)
Try
Dim networkStream As NetworkStream = clientSocket.GetStream()
Dim bytesFrom(10024) As Byte
networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))
Dim dataFromClient As String = System.Text.Encoding.ASCII.GetString(bytesFrom).Trim
If dataFromClient <> "?" Then
'MsgBox(dataFromClient)
msg("Data from client - ")
End If
'Dim serverResponse As String = "Server response " + Convert.ToString(requestCount)
'Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(serverResponse)
'networkStream.Write(sendBytes, 0, sendBytes.Length)
'networkStream.Flush()
'msg(serverResponse)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End While
---
le ultime 5 righe devono essere decommantate, in pratica devi togliere l'apice iniziale. In effetti quello che trasmette al device è
'networkStream.Write(sendBytes, 0, sendBytes.Length)
dove sendbyte è quello che vuoi trasmette trasformato in byte, dalla stringa
serverResponse.

Fammi sapere ciao.
 

giannimaione

Well-Known Member
Licensed User
Longtime User
ciao ragazzi,

anche io ho avuto la stessa esigenza, e cioè trasferire dati da una applicazione PC/WIN verso una applicazione ANDROID.
La soluzione che ho adottato è la seguente:

sul PC/WIN creo un file dati in formato TXT e poi lo trasferisco in una cartella remota tramite FTP.

sul device ANDROID, sempre tramite FTP, prelevo i dati e poi li scrivo in un DB SQLite.

in pratica il PC/WIN contiene dati contabili e vengono preparati e trasferiti ogni fine giornata lavorativa (in genere verso le ore 18:00). i dati restano a disposizione sulla cartella remota, fin quando non li "prelevo" con il mio device. Infatti tramite la lib FTP, dopo avere scaricato i dati , eseguo la cancellazione.
Il fatto di avere una cartella remota è molto utile, in quanto mi permette di scaricare i dati sul device in qualsiasi momento e in qualsiasi luogo.

ciao,
 

Priamo

Member
Licensed User
Longtime User
Uè paisà...
E' una buona idea, nel tuo caso quello che mi servirebbe è il trsferimento del file che mi permetterebbe l'invio di più dati con un miglior ordine, mentre adesso trasferisco solo delle stringhe concatenate per poi decifrarle dall' altro lato, ma con l'esempio che mi ha suggerito AlpVir, non so se è possibile fare questa cosa, hai qualche idea?
Tra win e win trasmetto una classe, un oggetto, con tutte le sue proprietà, chissa se sia fattibile con b4a, che cmq trovo molto ben fatto, per me è stata un bellissima sorpresa scoprire l'esitenza di questa tecnologia, tra l'altro, molto ben supportato, addirittura per me è la prima volta che trovo un supporto anche in italiano, a parte microsoft ovviamente, in genere sono sempre tutti in inglese. Le potenzialità sono enormi, anche dai numerosi esempi e tutorial, pare che si possa fare tutto o quasi, non resta che studiarlo nel migliore dei modi per sfruttarlo al massimo.
ciao.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
@priamo
Puoi allegare il progetto vb2010 "PC-->Android" ?
@giannimaione
La soluzione che utilizza FTP presuppone l'utilizzo di internet, cosa che preferirei non fare.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Nel post #8 c'è uno spezzone di codice. Non sapendo molto (diciamo nulla) di vb2010 trovo difficoltà ad integrarlo in un vero progetto (con estensione sln ?). Inoltre ad esso dovrebbe essere abbinato un progetto in B4A di cui non ho nessuna informazione e che dovrebbe essere totalmente diverso da quello di cui ti avevo dato il link (TestTcpIp). Forse B4A Server ? ( http://www.b4x.com/forum/basic4andr...ise-house-android-applications.html#post53629 )
Perdonami ma su questi argomenti sono un completo principiante.
 
Last edited:

Priamo

Member
Licensed User
Longtime User
Allora,

ho postato una cartella zippata, in essa trovi la soluzione completa, che non devi integrare, ma solo far partire, perchè è già una soluzione di per se. Essendo un'applicazione console, non vedrai il form che siamo soliti vedere con windows, e questo vale anche per vb6 mi pare, ma vedrai aprirsi una finestra command, tipo vecchio dos per intenderci, che ti visualizza tutto quello che sniffa sulla porta che gli dici tu, è molto simile al socket server che si usa in b4a, il principio è uguale, ma ovviamente con costrutti diversi.
Il server è già implementato lo lanci da visual studio e già ti funziona, tutto quello che passa sulla porta lo riceve. Per verificare quando riceve un dato, posizionati con un breakpoint sulla riga:

clientSocket = serverSocket.AcceptTcpClient()

e procedi con f8 per capirne il funzionamento, non ti applicare troppo sui thread che lancia e le classi che inizializza, questo non ti serve , ma trovati il punto dove puoi prelevarti i dati che ti interessano, dovrebbe essere la string msg mi pare.

premi f5, e dovresti vedere la finestra del command aprirsi, ti indica la dicitura server started
togli gli apici alle altre istruzioni, come ti ho detto in precedenza.

Il progetto b4a è quello che mi hai indicato tu, ho solo impostato l'ip del server e la porta, e funziona correttamente, inizia a trasmettere e ricevere, poi ci risentiamo, per il server non devi fare niente devi solo lanciarlo.

Ti dirò di più se vai nella cartella bin debug, trovi l'eseguibile senza farlo partire da visual studio.
Prova e fammi sapere.

L'intera soluzione la trovi nel post 4, in allegato trovi ProvaSocket_Server.zip
se non la trovi te la mando su un'email.
Ciao.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Tutto quanto da te indicato io l'ho già fatto nei giorni scorsi e funziona perfettamente, sia lanciando l'exe che lanciando il progetto vb2010 che sono in grado di modificare lievemente, per ora.
Ho agito così :
1) lancio il progetto slh su un computer di cui ho individuato preventivamente l'IP
2) utilizzando un altro computer installo su un device Android l'app TestTcpIp.b4a, dopo aver impostato l'identico IP
3) l'app mi segnala correttamente "Connected !"
4) faccio tap sul pulsante test e sul PC mi si apre un MsgBox con il messaggio indicato nell'app.
Fine qui tutto OK: ho trasmesso qualcosa dall'app Android al PC Windows !
Solo che tutto questo è è relativo alla comunicazione da Android a PC ("Android-->PC"), non da PC ad Android (che è quello che mi interessa, come indicato sinteticamente nel post #11).
O sbaglio qualcosa ?
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Lato Android quale codice devo usare ?
Ho visto il codice del B4a Server ma è assai complesso. Inizierei da qualcosa di più basilare.
Grazie e ciao
EDIT: Aggiunto il progetto Android completo. Funziona secondo quando da me desiderato. Grazie infinite
 

Attachments

  • ServerSocket.zip
    6.9 KB · Views: 288
Last edited:

Priamo

Member
Licensed User
Longtime User
Ok mi fa piacere.
Se riesci approfondisci vb.net che è nettamente superiore al vb6.
Cmq approfitto per chiederti un paio di cose, se ti va di rispondermi te ne sarei grato.
Provando un app sul device, quando lo giro in orizzontale o verticale, mi si azzerano i campi come se ripartisse da capo oltre a dissestarmi tutto il layout, mi sai dire come posso fare per bloccarlo in modo che non cambi e resti bloccato sull'asse che voglio io.ciao grazie
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Avrai sicuramente visto che nel menu Project - Orientatio supported ci sono le voci Both, Portrait e Lanscape. Inoltre saprai che quando si ruota il device interviene la sub Activity_Create (e qui fa comodo la variabile booleana FirstTime).
Riguardo il confronto VB6/vb2010 convengo anch'io circa la superiorità del secondo rispetto al primo ma sarebbe mia intenzione inserire la possibilità di interagire con un device Andoird in un progetto (in VB6) che comprende decine di form e moduli (persino qualche gosub derivando esso dal VB3) ed è collaudato da più e più anni di onorato servizio. Passare tutto al vb2010 è, a mio giudizio, troppo oneroso.
Grazie ancora.
 
Top