Comunidad Gambas-es
Comunicaciones - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html)
+--- Tema: Comunicaciones (/thread-1126.html)

Páginas: 1 2


Comunicaciones - tincho - 07-12-2022

Hola Amigos.
Hace tiempo que siento curiosidad por las opciones de comunicación disponibles en gambas, y pensando en como establecer un canal de comunicación entre dos programas gambas para lo del tablero de puntaje de TercoIDE no se me ocurre como hacerlo de la forma mas eficiente.

En definitiva, como un programa gambas puede "decir" a otro cierra contacto 4 o "dime" temperatura 1 etc. etc. 

Desde el punto de vista de las comunicaciones hay dos grupos:
  • Gambas<PROTOCOLO>Gambas
  • Gambas<PROTOCOLO>OTRA-COSA
¿Que protocolos se pueden usar? y... ¿Hay ejemplos de estos?


RE: Comunicaciones - Shordi - 07-12-2022

Ni idea. Fuera de ssh, nfs, html o vnc, que conectan con servidores o PCs nunca he utilizado otro. Para otros programas dentro de la misma máquina tienes dBus, pero no todos los programas son acordes con él.

Saludos


RE: Comunicaciones - vuott - 07-12-2022

Hace algún tiempo yo hice algunos Confused estudios sobre este tema.

https://www.gambas-it.org/wiki/index.php/Guide_della_comunit%C3%A0#Trasmissione_di_dati_fra_due_programmi_Gambas_o_fra_un_programma_esterno_ed_un_programma_Gambas


RE: Comunicaciones - tincho - 07-12-2022

(07-12-2022, 15:55)vuott escribió: Hace algún tiempo yo hice algunos Confused estudios sobre este tema.

Perfecto, lo estoy estudiando ahora mismo.

Ok, en este se puede enviar texto de un programa a otro.
[Imagen: WaJLLd4.png]
¿Es posible establecer una comunicación bidireccional?


RE: Comunicaciones - jsbsan - 07-12-2022

Tincho:
Cita:En definitiva, como un programa gambas puede "decir" a otro cierra contacto 4 o "dime" temperatura 1 etc. etc. 

Puedes usar socket, gambas trae un ejemplo de esto.
Yo hice hace tiempo un programa de chat que funcionaba con socket...

Tambien se puede usar el protocolo de mqtt (mosquito), mirate este enlace:
https://gambas-es.org/showthread.php?tid=117&highlight=mqtt

Saludos

Julio

Nota:
El programa chat, tanto para clientes como para el servidor los puedes encontrar en:
https://github.com/jsbsan/Ejemplos-del-Curso-De-Gambas3/tree/main/00%20PROGRAMAS%20COMPLETOS/CHAT


RE: Comunicaciones - tincho - 07-12-2022

(07-12-2022, 19:44)jsbsan escribió: Puedes usar socket, gambas trae un ejemplo de esto.

Gracias, estoy empezando a leer sobre este tema parece que tiene muchas posibilidades y aplicaciones.

(07-12-2022, 19:44)jsbsan escribió: Yo hice hace tiempo un programa de chat que funcionaba con socket...

Gracias por compartir este código, seguramente me venga muy bien para estudiar como funciona socket.
pd: Intente abrirlo pero no es posible convertirlo a la versión 3 (es gambas2), intentare echar un vistazo de todas maneras.


RE: Comunicaciones - tincho - 07-12-2022

(07-12-2022, 19:44)jsbsan escribió: Tambien se puede usar el protocolo de mqtt (mosquito), mirate este enlace:

Si recuerdo que conversamos de este tema, pero yo por lo menos no seguí indagando ¿Tu si?.
El usuario Silex propuso un código pero no intente usarlo.
Código:
' Gambas module file
Private proceso As Process 
 
Public Sub Main()
  Print "Nos suscribimos al Topic Pruebagambas"
  proceso = Shell "mosquitto_sub -h 'test.mosquitto.org' -t 'Pruebagambas'" For Read As "recepcion"
End
 
Public Sub recepcion_read() 
  Dim datos As String
  datos = Read #Last, Lof(Last) 
  Print "Recepción:" & datos
End
Luego en la pagina de MQTT hay un esquema del protocolo.
https://mqtt.org/
[Imagen: mqtt-publish-subscribe.png]
De wikipedia en inglés he traducido al castellano pues no existe.

Visión general
El protocolo MQTT define dos tipos de entidades de red: un corredor de mensajes y una serie de clientes. Un broker MQTT es un servidor que recibe todos los mensajes de los clientes y, a continuación, enruta los mensajes a los clientes de destino apropiados. Un cliente MQTT es cualquier dispositivo (desde un microcontrolador hasta un servidor completo) que ejecuta una biblioteca MQTT y se conecta a un agente MQTT a través de una red.

La información se organiza en una jerarquía de temas. Cuando un editor tiene un nuevo dato que distribuir, envía un mensaje de control con los datos al broker conectado. A continuación, el broker distribuye la información a los clientes que se hayan suscrito a ese tema. El editor no necesita tener ningún dato sobre el número o la ubicación de los suscriptores, y éstos, a su vez, no tienen que estar configurados con ningún dato sobre los editores.

Si un broker recibe un mensaje sobre un tema para el que no hay suscriptores actuales, el broker descarta el mensaje a menos que el publicador del mensaje lo haya designado como mensaje retenido. Un mensaje retenido es un mensaje MQTT normal con el indicador retenido en true. El agente almacena el último mensaje retenido y la QoS correspondiente para el tema seleccionado. Cada cliente que se suscribe a un patrón de tema que coincide con el tema del mensaje retenido recibe el mensaje retenido inmediatamente después de suscribirse. El intermediario sólo almacena un mensaje retenido por tema. Esto permite a los nuevos suscriptores de un tema recibir el valor más reciente en lugar de esperar a la siguiente actualización de un editor.

Cuando un cliente de publicación se conecta por primera vez al broker, puede configurar un mensaje predeterminado que se enviará a los suscriptores si el broker detecta que el cliente de publicación se ha desconectado inesperadamente del broker.

Los clientes sólo interactúan con un corredor, pero un sistema puede contener varios servidores corredores que intercambian datos basados en los temas actuales de sus suscriptores.

Un mensaje de control MQTT mínimo puede tener tan sólo dos bytes de datos. En caso necesario, un mensaje de control puede transportar casi 256 megabytes de datos. Hay catorce tipos de mensajes definidos que se utilizan para conectar y desconectar un cliente de un broker, publicar datos, acusar recibo de datos y supervisar la conexión entre cliente y servidor.

MQTT se basa en el protocolo TCP para la transmisión de datos. Una variante, MQTT-SN, se utiliza sobre otros transportes como UDP o Bluetooth.

MQTT envía las credenciales de conexión en formato de texto plano y no incluye ninguna medida de seguridad o autenticación. Esto se puede proporcionar mediante el uso de TLS para cifrar y proteger la información transferida contra la interceptación, modificación o falsificación.

El puerto MQTT no cifrado por defecto es 1883. El puerto cifrado es 8883


RE: Comunicaciones - tincho - 08-12-2022

Instalando mosquito brooker en la raspberry pi.
Por cierto no les parece que el nombre Raspberry pi es berreta, ortera, cutre, malo ? no se, Arduino por ejemplo, me parece un buen nombre, pero Raspberry...? y Pi ?

Install Mosquitto MQTT Broker on Raspberry Pi
https://randomnerdtutorials.com/how-to-install-mosquitto-broker-on-raspberry-pi/

Mosquitto SSL Configuration -MQTT TLS Security
http://www.steves-internet-guide.com/mosquitto-tls/


RE: Comunicaciones - jsbsan - 08-12-2022

Tincho:
Cita:Si recuerdo que conversamos de este tema, pero yo por lo menos no seguí indagando ¿Tu si?.
No, pero se que es muy potente.
He visto videos usandolo con python:
https://www.albertcoronado.com/2018/07/07/iot-con-mqtt-mosquitto-python/


RE: Comunicaciones - Shordi - 08-12-2022

Cita:pero Raspberry...? y Pi ?
Pi se pronuncia igual que pie, o sea, tarta en inglés. Raspberry Pi=Tarta de Frambuesa
¿Por qué esa horterada digna de mi nieta de 6 años?... ni idea. Al fin y al cabo son ingleses los desarrolladores, si veranean en Magaluz, no se les puede pedir mucho...

Saludos