Italian [abbandono il progetto UPD & MQTT] [b4a][B4J] progetto UDP

ivanomonti

Expert
Licensed User
Longtime User
Ringrazio @Star-Dust che mi ha dato un poco di luce per il mio progetto, ora va perfezionato e avevo promesso che avrei iniziato anche la versione Android e cavoli e cambiato molto dal 2014 :), ho questo errore su un progetto semplice che la versione desktop va benissimo senza errori, riscritta per Android va bene al 90 ma in fase ri ricezione va in crash.

B4X:
Logger connesso a:  samsung SM-T530
--------- beginning of main
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create (first time) **
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.
** Activity (main) Resume **
java.lang.RuntimeException: java.lang.RuntimeException: Object should first be initialized (B4XView).
    at anywheresoftware.b4a.keywords.Common$14.run(Common.java:1750)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:145)
    at android.app.ActivityThread.main(ActivityThread.java:6134)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Caused by: java.lang.RuntimeException: Object should first be initialized (B4XView).
    at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:67)
    at anywheresoftware.b4a.objects.B4XViewWrapper.getViewObject(B4XViewWrapper.java:104)
    at anywheresoftware.b4a.objects.B4XViewWrapper.asPanelWrapper(B4XViewWrapper.java:107)
    at anywheresoftware.b4a.objects.B4XViewWrapper.GetAllViewsRecursive(B4XViewWrapper.java:307)
    at b4a.example.b4xmainpage$ResumableSub_B4XPage_Created.resume(b4xmainpage.java:89)
    at anywheresoftware.b4a.keywords.Common$14.run(Common.java:1748)
    ... 8 more
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create (first time) **
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.
** Activity (main) Resume **
b4xmainpage_senddata_packetarrived (java line: 160)
java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
    at android.widget.AdapterView.addView(AdapterView.java:706)
    at anywheresoftware.b4a.objects.PanelWrapper.AddView(PanelWrapper.java:65)
    at anywheresoftware.b4a.objects.B4XViewWrapper.AddView(B4XViewWrapper.java:326)
    at b4a.example.b4xmainpage._senddata_packetarrived(b4xmainpage.java:160)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:221)
    at anywheresoftware.b4a.BA$2.run(BA.java:395)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:145)
    at android.app.ActivityThread.main(ActivityThread.java:6134)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create (first time) **
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.
** Activity (main) Resume **
b4xmainpage_senddata_packetarrived (java line: 160)
java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
    at android.widget.AdapterView.addView(AdapterView.java:706)
    at anywheresoftware.b4a.objects.PanelWrapper.AddView(PanelWrapper.java:65)
    at anywheresoftware.b4a.objects.B4XViewWrapper.AddView(B4XViewWrapper.java:326)
    at b4a.example.b4xmainpage._senddata_packetarrived(b4xmainpage.java:160)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:221)
    at anywheresoftware.b4a.BA$2.run(BA.java:395)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:145)
    at android.app.ActivityThread.main(ActivityThread.java:6134)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create (first time) **
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.
** Activity (main) Resume **
b4xmainpage_senddata_packetarrived (java line: 160)
java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
    at android.widget.AdapterView.addView(AdapterView.java:706)
    at anywheresoftware.b4a.objects.PanelWrapper.AddView(PanelWrapper.java:65)
    at anywheresoftware.b4a.objects.B4XViewWrapper.AddView(B4XViewWrapper.java:326)
    at b4a.example.b4xmainpage._senddata_packetarrived(b4xmainpage.java:160)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:221)
    at anywheresoftware.b4a.BA$2.run(BA.java:395)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:145)
    at android.app.ActivityThread.main(ActivityThread.java:6134)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Copying updated assets files (1)
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create (first time) **
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.
** Activity (main) Resume **

Per me ora e tutto arabo se qualcuno che smanetta con Android mi sa dare indicazioni lo ringrazio
 

Star-Dust

Expert
Licensed User
Longtime User
L'errore dice che c'è una vista non inizializzata
 

ivanomonti

Expert
Licensed User
Longtime User
L'errore dice che c'è una vista non inizializzata
B4X:
        Dim data As String = DateTime.Now & " " & BytesToString(Packet.Data,0,Packet.Data.Length,"UTF8")
        Dim lb As Label
        lb.Initialize("lb")
        lb.SingleLine=False
        lb.Width=ListView1.Width-20
        lb.Tag = "id001-lb-lc-100"
        lb.Text = data
        ListView1.AddView(lb,0,0,ListView1.Width-20,30dip)

ListView1.AddView(lb,0,0,ListView1.Width-20,30dip) e qui che salta
 

ivanomonti

Expert
Licensed User
Longtime User
Progetto base riuscito alla grande, ringrazio @Star-Dust per avermi dato un idea grandiosa e @LucaMs per avermi scosso, in sostanza attraverso dispositivi di qualsiasi natura android, pc, ios ricevo richieste e invio le risposte tutto attraverso il server UDP che al momento va come desideravo.

Ora manca la grafica del dispositivo e app per ios e il mio obiettivo iniziale l'ho raggiunto.

quello che non capisco e come mettere le label che si allargano in base alla stringa se di due o tre o di 20 righe, in modo da non avere il testo tranciato



2023-03-18_011930.jpg
93ea76c7-078d-41ae-a8c6-a11b311ca9e2.jpg
 

ivanomonti

Expert
Licensed User
Longtime User
Il progetto si comporta bene, realizzato quello che chiamo server e il client, ma graficamente è spoglio che al momento è una mia decisione.

schermata iniziale poni le domande al server, il server risponde (a volte no e sto verificando il motivo) il client riceve che sia uno che siano mille non importa insomma chi è in ascolto riceve.

seconda schermata (ancora da definire) leggo il testo selezionato e lo posso ascoltare, copiare o inviare, il costo di ogni risposta e domanda e di circa 100/150 token circa 0.03$/1000*100=0,0045$ usando il modello text-davinci-003 quindi circa 4,5$ per 1000 richieste che non sono pochi.

ora vorrei vedere come si comporta udp in una rete pubblica vale a dire tablet remoto > pc locale con ip pubblico e come individuare i possibili errori di perdita pacchetti, chiedo vostro aiuto come sempre, al momento ho pensato di usare noip per creare un ip pubblico, ma accetto anche vostri consigli.

1679564946645.png




01.png
02.png
 

ivanomonti

Expert
Licensed User
Longtime User
Come fai a spedire risposte da pc verso telefoni?
se rimane in ascolto su ip pubblico lo fai senza problemi come nella rete locale se ho capito bene UDP ora sto provando a fare in questo modo

1) settare port forwarding home&life hub
2) indirizzare con un IP (noip) il mio indirizzo di rete
3) installato DUR di noip che al cambio mi aggiorna IP statico di noip
4) impostare app client e poi si vedrà, anche perché non ricordo più nulla... mi piacerebbe avere qualche consiglio anche per questo :)

1679571855337.png
 

amorosik

Expert
Licensed User
No, forse mi sono spiegato male
Se vuoi inviare un messaggio da pc ad un telefono, come fai?
(che e' diverso dalla richiesta inviata dal telefono verso il pc e risposta del pc verso il telefono)
 

ivanomonti

Expert
Licensed User
Longtime User
in effetti sto guardando il tutto ma esiste il modo, perchè da telefono pc funziona, viceversa mmmmm no, come vedi il pc riceve ip del telefonino ma vorrei capire visto che il tablet si aggancia ad hotspot di iphone se quel ip e del tab o iphone

1679583511595.png
 

amorosik

Expert
Licensed User
La richiesta avviene a seguito dei tentativi fatti in passato, pur sapendo con che ip address il telefono e' collegato alla rete, tutti i tentativi di raggiungere da pc fisso l'indirizzo del telefono si sono sempre rivelati infruttuosi, e credo questo sia dovuto al fatto che i vari gestori di telefonia non consentono la comunicazione 'verso' la connessione attuale del telefono, non e' questione di conoscere l'ip address col quale il telefono e' collegato ad internet ma di un voluto impedimento posto dai gestori telefonia
Esistono poi delle sim che vengono pubblicizzate con ip statico e pubblico, quelle gialle, probabilmente con quelle la cosa si puo' fare, mai provate
 

ivanomonti

Expert
Licensed User
Longtime User
no non ho provato e non saprei nemmeno dove iniziare, avrei bisogno di esempi semplici
 

ivanomonti

Expert
Licensed User
Longtime User
ora funziona tutto ma vorrei inviare app a due telefonini fidati e lontani per provare anche con i loro telefoni una a napoli e uno a varese ma ho questo errore


B4X:
B4A Versione: 12.20
Analisi del Codice.    (0.19s)
    Java Versione: 14
Building folders structure.    (0.66s)
Esecuzione azione personalizzata.    (0.05s)
Compilazione del codice.    (1.39s)
Compilazione del codice di layouts    (0.03s)
Organizzazione Librerie.    (0.00s)
    (AndroidX SDK)
Compilazione risorse    (0.06s)
Collegamento risorse    (0.33s)
Compilazione del codice Java prodotto.    (1.38s)
Ricerca librerie che necessitano di essere "dexed".    (0.01s)
Dex code    (1.57s)
Dex merge    (3.12s)
Copia risorse delle librerie    (0.64s)
Building app bundle    (1.15s)
Firmatura del file AAB    Error
Signing key non impostata
 

ivanomonti

Expert
Licensed User
Longtime User
falsa emozione non si connette ancora mi sa che prima ero sotto rete locale, che cazzone che sono
 

ivanomonti

Expert
Licensed User
Longtime User
@picenainformatica vedu che tu hai usato questo MTTQ

Ma io ho questo errore su android
(Exception) java.lang.Exception: java.lang.IllegalArgumentException: no NetworkModule installed for scheme "tcp" of URI "tcp://151.66.30.122:51042" ip rete esterna con noip
(Exception) java.lang.Exception: java.lang.IllegalArgumentException: no NetworkModule installed for scheme "tcp" of URI "tcp://192.168.1.41:51042" router
(Exception) java.lang.Exception: java.lang.IllegalArgumentException: no NetworkModule installed for scheme "tcp" of URI "tcp://192.168.1.41:51042" ip pc
(Exception) java.lang.Exception: java.lang.IllegalArgumentException: no NetworkModule installed for scheme "tcp" of URI "tcp://127.0.01:51042" localhost
 

ivanomonti

Expert
Licensed User
Longtime User
per il momento abbandono il progetto UDP e MQTT pechè richiede troppa attenzione e non ho le risorse e conoscenze, in quando devo poi lavorare con immagini e la cosa si andrebbe a complicare, quindi passo tutto ad un altro percorso dove mi trovo più a mio agio e di sicuro meno problematiche da pc a telefono e da telefono a pc visto come sta funzionando internet e sicurezza.

L'idea e di passare a mysql e b4x al momento funziona egregiamente ed è molto più veloce e scalabile, quindi questa conversazione si chiude qui e si passa alla prossima versione completamente riscritta.
 
Top