Italian Inviare stringa di testo da smartphone a pc e viceversa

FreeWolF

Active Member
Licensed User
Longtime User
Ciao a tutti!

Vorrei provare a realizzare due piccoli programmi che mi permettano di inviare una stringa di testo da una textbox sullo smartphone dopo aver premuto un bottone ad una textbox in un programma per pc e viceversa tramite internet. Entrambi i programmi li vorrei scrivere con B4A e B4J.

Ho visto che c'è un tutorial sul Asnycstream, ma da quello che leggevo, Erel consigliava di utilizzare B4XSerializator per inviare e ricevere piccole cose, solo che non sono riuscito a trovare il tutorial per capire come implementarlo, qualcuno potrebbe darmi una mano?

Grazie mille in anticipo!
 

LucaMs

Expert
Licensed User
Longtime User
Non ti serve né Asyncstream né B4XSerializator per inviare solo stringhe di testo.

A dire il vero, in questo momento non mi viene in mente cosa dovresti usare per creare un progetto B4J che scambi DIRETTAMENTE testi con un'app B4A; la prima cosa che mi viene in mente sono i web server B4J, tramite i quali puoi ottenere quanto ti serve.

Ci sono tanti esempi, sul sito; questo è uno:
https://www.b4x.com/android/forum/threads/websocket-client-library.40221/
 

udg

Expert
Licensed User
Longtime User
Visto che sei in fase preliminare di acquisizione informazioni, prova a dare un'occhiata anche al mondo MQTT. Ci sono servizi gratuiti (ed open source) che ti permettono di veicolare informazioni anche da 1 a molti oltre che 1 a 1. Se non ricordo male c'è un esempio di chat proposto da Erel che puo' essere modificato affinchè utilizzi un server esterno.

udg
 

FreeWolF

Active Member
Licensed User
Longtime User
Chiedo scusa, mi sono spiegato male per la fretta. In pratica vorrei realizzare un'applicazione con B4J che fa da server e riceve dati (sottoforma di stringhe di testo) da un'applicazione client sul telefono fatta con B4A. Non posso guardare qualche esempio inerente al protocollo TCP/IP o esiste qualcosa di più veloce?

Poi questa sarebbe solo una prova, lo scopo finale è di inviare dati da più smartphone, ma per adesso mi basta fare qualcosa di tranquillo, per imparare.
 

LucaMs

Expert
Licensed User
Longtime User
E' proprio ciò che fa l'esempio al link che ho messo in #3:
Sending events to the server
Receiving events from the server

ed è proprio ciò che potresti ottenere anche usando MQTT, come consigliato da @udg.

Al primo impatto possono sembrare cose complicate, bisogna "farci la mano", come con ogni cosa, ma è chiaro che, a meno che tu non voglia un esempio completamente funzionante ed in italiano, si devono affrontare quegli argomenti ed usare quegli oggetti.
 

FreeWolF

Active Member
Licensed User
Longtime User
Nell' esempio che hai mandato (quello del websocket), non capisco perchè mi dà errore durante la compilazione:

B4X:
ws.RunFunction("ServerTime", Array As Object(DateTime.Time(DateTime.Now)))
Word: runfunction

In pratica nella libreria Websocket che sono andato a scaricare, sembra che non ci siano alcune cose...

Ho notato che se eseguo l'esempio di Erel funziona tutto, mentre se provo a inglobare il codice in un mio progetto mi esce quell'errore....
 

udg

Expert
Licensed User
Longtime User
Date un'occhiata anche a questo tutorial.
Qui Erel utilizza B4J come webserver che scambia dati con un'app B4A. La parte interessante è l'utilizzo di un tipo dati definito dall'utente (Orders).
L'esempio è già multiutente grazie agli handler del webserver.

udg
 

LucaMs

Expert
Licensed User
Longtime User
Date un'occhiata anche a questo tutorial.
Qui Erel utilizza B4J come webserver che scambia dati con un'app B4A. La parte interessante è l'utilizzo di un tipo dati definito dall'utente (Orders).
L'esempio è già multiutente grazie agli handler del webserver.

udg
E' interessante anche perché non è un web server, non usa oggetti websocket.

Grazie per l'indicazione, @udg
 

FreeWolF

Active Member
Licensed User
Longtime User
In effetti di roba interessante ce nè un bel pò!

Ho un quesito ora: siccome l' ideale è sviluppare applicazioni web oriented, che voi sappiate, esiste un editor stile quello WISIWIG dell' IDE, ma per applicazioni web, cioè da visualizzare tramite browser? Naturalmente compatibile con B4J, quello interno non mi pare che supporti questa funzione...
 

LucaMs

Expert
Licensed User
Longtime User
In effetti di roba interessante ce nè un bel pò!

Ho un quesito ora: siccome l' ideale è sviluppare applicazioni web oriented, che voi sappiate, esiste un editor stile quello WISIWIG dell' IDE, ma per applicazioni web, cioè da visualizzare tramite browser? Naturalmente compatibile con B4J, quello interno non mi pare che supporti questa funzione...

Probabilmente dovresti utilizzare:
https://www.b4x.com/android/forum/threads/abmaterial-framework-for-webapps.60072/#content

(io mai fatto, spero non sia troppo complicato :))
 

udg

Expert
Licensed User
Longtime User
ABMaterial è un bellissimo framework, utile soprattutto se non avete voglia di barcamenarvi tra javascript, CSS etcetc. Non è facilissimo da apprendere nei suoi dettagli ed occupa un bel po' di spazio, ma comunque è molto comodo. Io ho condotto solo alcuni test e quindi ancora non posso dire di conoscerlo decentemente.

Per il tutorial del post #10, Erel suggerisce di utilizzare il B4XSerializator invece del RAF cosi' come è presentato nel tutorial. Poca roba, ma conviene saperlo prima di iniziare..eheh
 

LucaMs

Expert
Licensed User
Longtime User
Per il tutorial del post #10, Erel suggerisce di utilizzare il B4XSerializator invece del RAF cosi' come è presentato nel tutorial. Poca roba, ma conviene saperlo prima di iniziare..eheh
Sì, ho letto il tuo post e la sua risposta ma, spero sia solo perché non ero interessatissimo e quindi ho solo dato un'occhiata velocemente, non ho mica capito il motivo di quella risposta.
 

udg

Expert
Licensed User
Longtime User
Mah, forse perchè B4xSerializator è comune alle 3 piattaforme B4A,B4i e B4J e (spero) risolva quel limite del dover dimensionare il buffer per il caso peggiore.
Comunque ho postato un esempio "funzionante" relativo ad una lista..anche se qualcosa mi dice che non sia pulitissimo. Per ora una sensazione (ed in genere viene confermata), poi vediamo tra risposte al thread e studio da parte mia. Adesso mi preoccupa piu' il borbottio nello stomaco..eheheh
 

udg

Expert
Licensed User
Longtime User
Avevo ragione a dubitare...
Riporto qui il codice di Erel, semplice e pulito. Attenzione: si riferisce solo alla parte di invio/ricezione dei dati!
B4X:
'B4J server codice per inviare la lista:
Dim ser As B4XSerializatorDim buffer() As Byte =ser.ConvertObjectToBytes(Obj)
Out.WriteBytes(buffer, 0, buffer.Length)

'B4A codice per ricevere la lista:
Dim set As B4XSerializatorDim tdl AsList = ser.ConvertBytesToObject(Bit.InputStreamToBytes(Job.GetInputStream))

Perchè non mi sono ricordato anch'io di quel Bit.InputStreamToBytes? Certo, un oggetto che si chiama Bit ti fa pensare ad altro, ma dopo 3 anni di B4x dovevo ricordarmelo!

Bye
 
Top