Autore Topic: Due connessioni UDP  (Letto 1107 volte)

Offline Pino Zollo

  • Gamberetto
  • *
  • Post: 6
    • Mostra profilo
Due connessioni UDP
« il: 06 Aprile 2020, 17:30:24 »
Ciao...
Il mio programma cerca di parlare con due Arduino (ESP32, Wamos ESP8266) via Wi-Fi in UDP.
I due Arduino si collegano al PC usando IP statici differenti....e porte differenti.
Il programma Gambas3 fa polling e gli Arduino rispondono solo se interrogati.
Con uno va tutto bene....
...ma le cose mi si confondono se aggiungo un altro Socket nel form.

la Public Sub UDPServer_Read()  sembra essere unica, cioè non differenziabile fra i due Socket.

Si può fare con un solo Socket ?
Grazie
Pino ZP4KFX

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Due connessioni UDP
« Risposta #1 il: 06 Aprile 2020, 18:34:52 »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Due connessioni UDP
« Risposta #2 il: 06 Aprile 2020, 19:19:04 »
Con uno va tutto bene....
...ma le cose mi si confondono se aggiungo un altro Socket nel form.

la Public Sub UDPServer_Read()  sembra essere unica, cioè non differenziabile fra i due Socket.
Dunque hai inserito due routine diverse ...Server_Read( ), una per ciascun Socket ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Pino Zollo

  • Gamberetto
  • *
  • Post: 6
    • Mostra profilo
Re:Due connessioni UDP
« Risposta #3 il: 06 Aprile 2020, 19:58:59 »
Non mi permette di avere 2 Server_Read
« Ultima modifica: 06 Aprile 2020, 19:59:44 da Pino Zollo »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Due connessioni UDP
« Risposta #4 il: 06 Aprile 2020, 20:04:27 »
Non mi permette di avere 2 Server_Read
...più precisamente cosa accade ? Viene sollevato un avviso di errore o cos'altro ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Due connessioni UDP
« Risposta #5 il: 07 Aprile 2020, 01:57:59 »
Potresti provare :-\ a differenziare l'apertura delle porte di ciascun Arduino in due distinte Classi
La porta del primo Arduino la apri - ad esempio - nella Classe principale; quella del secondo la apri in una Classe secondaria appositamente creata via codice ed ovviamente richiamata in/da quella principale.

Ad esempio, quindi nella Classe principale:
Codice: [Seleziona]
Public cl As New Class1


Public Sub Main()

' Invochiamo la sub-procedura della Classe secondaria per aprire e leggere la porta del "secondo" Arduino:
  cl.ApreSecondoArduino()

' Qui invece viene aperta la porta del "primo" Arduino:
  ...etc...
  ...etc...

End


Public Sub UDPServer_Read()

' Qui in codice per leggere la porta del "primo" Arduino:
   .........
   ...etc....

Ovviamente nella Classe secondaria sarà posto il codice analogo necessario per aprire e leggere la porta del secondo Arduino.
« Ultima modifica: 07 Aprile 2020, 02:10:49 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Pino Zollo

  • Gamberetto
  • *
  • Post: 6
    • Mostra profilo
Re:Due connessioni UDP
« Risposta #6 il: 08 Aprile 2020, 03:39:09 »
Potresti provare :-\ a differenziare l'apertura delle porte di ciascun Arduino in due distinte Classi
La porta del primo Arduino la apri - ad esempio - nella Classe principale; quella del secondo la apri in una Classe secondaria appositamente creata via codice ed ovviamente richiamata in/da quella principale.

Ad esempio, quindi nella Classe principale:
Codice: [Seleziona]
Public cl As New Class1


Public Sub Main()

' Invochiamo la sub-procedura della Classe secondaria per aprire e leggere la porta del "secondo" Arduino:
  cl.ApreSecondoArduino()

' Qui invece viene aperta la porta del "primo" Arduino:
  ...etc...
  ...etc...

End


Public Sub UDPServer_Read()

' Qui in codice per leggere la porta del "primo" Arduino:
   .........
   ...etc....

Ovviamente nella Classe secondaria sarà posto il codice analogo necessario per aprire e leggere la porta del secondo Arduino.

Se capisco bene dovrei fare due Form, in uno gestico una connessione e nell'altro la seconda.....

C'é  modo di farlo via istruzioni ?...senza un secondo Form ?
Grazie.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Due connessioni UDP
« Risposta #7 il: 08 Aprile 2020, 08:47:15 »
Se capisco bene dovrei fare due Form
No. Non due Form, bensì uno solo.
Servendoti delle risorse grafiche, puoi anche usare un solo Form (dove richiami la porta del primo Arduino) e una Classe (senza Form), da te creata nell'IDE, nella quale inserisci il codice necessario per gestire la porta del secondo Arduino.
Instanzierai tale Classe, da te creata (...priva di un Form), dalla Classe del Form principale (FMain.class), e da qui stesso la invocherai.


Quanto sopra da me suggerito si basa sulla soluzione di un problema analogo, a me accaduto per la lettura contemporanea di due porte seriali da due distinti dispositivi MIDI esterni.
...magari sarà risolutivo anche in questo tuo caso.  :-\
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »