16 KiB
Este proyecto, denominado Uc09_Utility, es una aplicación de escritorio de Windows Forms diseñada para interactuar con instrumentos Maselli.
Funcionamiento General:
-
Inicio y Configuración (Program.cs y FormPrincipaleMDI_Load):
- La aplicación se inicia ejecutando FormPrincipaleMDI (Uc09_Utility\FormPrincipaleMDI.cs).
- Configura el entorno de la aplicación, incluyendo estilos visuales y manejo global de excepciones. Las excepciones no controladas se registran en un archivo
log.txt
dentro de una carpetalogs
. - Al cargar el formulario principal (FormPrincipaleMDI_Load):
- Detecta la versión de Windows.
- Procesa argumentos de línea de comandos para activar modos especiales como "DEMO", "PROVABRIX", "DEBUG" o "CCD".
- Carga la configuración desde un archivo
setup.txt
. - Ajusta la resolución de la aplicación según la configuración o la pantalla.
- Define rutas para archivos de servicio, iconos e imágenes.
- Inicializa variables y los instrumentos Maselli (ClassInizializzazioni.InizializzaStrumenti()).
- Establece la comunicación serial (ClassSerialeStrumenti) con los instrumentos basándose en la configuración (puerto COM, baudrate).
- Inicializa una conexión a una base de datos SQL (
ClassDatabaseSQLMaselli
). - Un servicio (CommunicationHandlerLoggerService) se encarga de eliminar datos antiguos (más de seis meses).
-
Interfaz Principal (MDI):
- FormPrincipaleMDI es un contenedor MDI (Multiple Document Interface), lo que significa que puede albergar múltiples ventanas secundarias (paneles) dentro de ella.
-
Navegación por Paneles (timer1_Tick):
- Un temporizador (timer1) se ejecuta periódicamente (cada 800 ms).
- En cada Tick del temporizador, el método timer1_Tick (Uc09_Utility\FormPrincipaleMDI.cs) verifica la variable Pannelli.NumeroPannello.
- Si Pannelli.NumeroPannello cambia, el panel (formulario) actual se cierra y se abre uno nuevo correspondiente al nuevo número. Existe una larga serie de
if-else if
que instancia diferentes formularios (ej. Form1, Frm_setup, FormUC08Liv1, FrmParameters, etc.) según este número. - Este mecanismo permite cambiar dinámicamente la interfaz que se muestra al usuario.
-
Comunicación con Instrumentos:
- La aplicación se comunica con los instrumentos Maselli a través del puerto serie.
- Maneja eventos como el cambio de protocolo de comunicación de un instrumento a "Maselli" (OnProtocolFunctionChangedToMaselli).
-
Manejo de Cierre (MainFormClosing):
- Antes de cerrar, si la comunicación serial está activa, presenta un diálogo de confirmación.
- Permite al usuario decidir si confirma el protocolo MASELLI o si se deben realizar cambios antes de cerrar la comunicación serial.
¿Qué permite realizar?
La aplicación parece ser una utilidad central para:
- Monitorear y controlar diversos tipos de instrumentos Maselli (identificados por los diferentes formularios como FormUC08Liv1, FormURXXLivello1, FrmOssigenoLiv1, etc.).
- Configurar los instrumentos y los parámetros de la aplicación (ej. Frm_setup, Frm_InstrumentConfiguration).
- Visualizar datos provenientes de los instrumentos (posiblemente en formularios como FormDataAcquisition, FormMisureUR70).
- Realizar diagnósticos y ver alarmas (FormDiagnostica, FormAlarms).
- Gestionar la calibración y certificados (Frm_certif_calibr).
- Guardar datos o configuraciones (FormSaveFile).
- Operar en diferentes modos (normal, demo, debug) para pruebas o funcionalidades específicas.
En resumen, Uc09_Utility actúa como un panel de control y gestión para una variedad de instrumentos Maselli, facilitando su configuración, monitoreo y la adquisición de datos en un entorno industrial o de laboratorio.
Communicacion:
La comunicación con los dispositivos Maselli en este proyecto se gestiona principalmente a través de la comunicación serial (puerto COM). Aquí te explico los puntos clave:
-
Inicialización de la Comunicación Serial (
ClassSerialeStrumenti
yFormPrincipaleMDI_Load
):- En el evento
FormPrincipaleMDI_Load
(Uc09_Utility\FormPrincipaleMDI.cs), después de cargar la configuración, se llama aClassInizializzazioni.InizializzaStrumenti()
. - Dentro de
ClassInizializzazioni
(no visible en el.csproj
pero inferido por su uso), es muy probable que se instancie y configure un objeto de la claseClassSerialeStrumenti
. ClassSerialeStrumenti
(tampoco visible directamente, pero su nombre es muy indicativo) sería la responsable de:- Abrir el puerto COM especificado en el archivo de configuración (
setup.txt
). - Configurar los parámetros del puerto serie como baudrate, paridad, bits de datos y bits de parada, también leídos desde la configuración.
- Manejar el envío y recepción de datos hacia/desde los instrumentos Maselli.
- Abrir el puerto COM especificado en el archivo de configuración (
- En el evento
-
Protocolo de Comunicación:
- La aplicación parece soportar un protocolo específico de Maselli. Esto se evidencia en el método
OnProtocolFunctionChangedToMaselli
enFormPrincipaleMDI.cs
. - Este método se activa cuando un instrumento cambia su función de protocolo a "Maselli", lo que sugiere que la aplicación adapta su comportamiento de comunicación según el protocolo activo del instrumento.
- La aplicación parece soportar un protocolo específico de Maselli. Esto se evidencia en el método
-
Envío y Recepción de Comandos/Datos:
- Una vez establecida la conexión serial, la aplicación enviará comandos a los instrumentos para solicitar datos, cambiar configuraciones, iniciar mediciones, etc.
- Recibirá respuestas de los instrumentos que contienen los datos medidos, estados, confirmaciones, o errores.
- La clase
ClassSerialeStrumenti
probablemente encapsula la lógica para formatear los comandos según el protocolo Maselli y para interpretar los datos recibidos.
-
Manejo de Eventos y Datos:
- Los diferentes formularios (paneles) que representan a cada instrumento (
FormUC08Liv1
,FormURXXLivello1
, etc.) interactuarán conClassSerialeStrumenti
(directa o indirectamente) para:- Enviar solicitudes específicas al instrumento que representan.
- Recibir y mostrar los datos actualizados del instrumento.
- Gestionar alarmas o eventos reportados por el instrumento.
- Los diferentes formularios (paneles) que representan a cada instrumento (
-
Cierre de la Comunicación:
- En el evento
MainFormClosing
deFormPrincipaleMDI.cs
, se verifica si la comunicación serial está activa. - Si lo está, se presenta un diálogo al usuario. Esto es importante para asegurar que cualquier operación en curso con el instrumento se complete o se cancele de forma segura antes de cerrar el puerto.
- Se ofrece la opción de "Confirmar Protocolo MASELLI" o realizar cambios, lo que podría implicar enviar un comando final al instrumento antes de cerrar la conexión.
- En el evento
En resumen, la comunicación se basa en una conexión serial configurada según los parámetros definidos en setup.txt
. Una clase dedicada (ClassSerialeStrumenti
) maneja las operaciones de bajo nivel del puerto COM y la implementación del protocolo Maselli, mientras que los formularios de la interfaz de usuario interactúan con esta clase para controlar y monitorear los instrumentos.
Cambio de protocolo:
***La aplicación, específicamente Uc09_Utility, no parece realizar el cambio de protocolo en el dispositivo Maselli en sí misma, sino que reacciona a una notificación de que el protocolo del instrumento ha cambiado a "Maselli".
Este manejo se centra en el método OnProtocolFunctionChangedToMaselli
que se encuentra en FormPrincipaleMDI.cs
. Así es como probablemente funciona:
-
Detección y Notificación Externa:
- El instrumento Maselli cambia su protocolo de comunicación a "Maselli". Esto puede ser iniciado por el propio instrumento, por una configuración directa en el dispositivo, o a través de un comando enviado (posiblemente por esta utilidad u otra).
- Una librería o componente de más bajo nivel, encargado de la comunicación directa con el instrumento (potencialmente parte de
UI.Library.dll
, que está referenciada en tu archivo Uc09_Utility.csproj), detecta este cambio. - Este componente de bajo nivel luego dispara un evento dentro de la aplicación para notificar sobre el cambio de protocolo.
-
Suscripción al Evento:
- En el código de
FormPrincipaleMDI.cs
, el métodoOnProtocolFunctionChangedToMaselli
está suscrito a ese evento específico. Esto significa que cuando el evento de "cambio de protocolo a Maselli" se dispara, este método se ejecuta automáticamente.
- En el código de
-
Acciones Dentro de
OnProtocolFunctionChangedToMaselli
:- Una vez que se llama a
OnProtocolFunctionChangedToMaselli
, la aplicación Uc09_Utility toma las medidas necesarias para adaptarse al nuevo estado del protocolo del instrumento. Las acciones específicas dentro de este método podrían incluir:- Registrar el evento de cambio de protocolo (por ejemplo, en un archivo de log).
- Actualizar variables internas de la aplicación que rastrean el estado actual del protocolo de comunicación.
- Reconfigurar aspectos de la comunicación serial (manejada por
ClassSerialeStrumenti
) si el protocolo "Maselli" tiene requisitos diferentes a un protocolo anterior (por ejemplo, diferentes estructuras de comando, análisis de datos o temporizaciones). - Modificar la interfaz de usuario, habilitando o deshabilitando funciones, o cambiando la información mostrada, si estas son específicas del protocolo "Maselli".
- Una vez que se llama a
En resumen, el archivo .csproj
indica el uso de librerías externas como UI.Library.dll
. Es muy probable que esta librería (o una similar que esta utilice) gestione la comunicación con el hardware Maselli y sea responsable de generar el evento al que OnProtocolFunctionChangedToMaselli
responde. La aplicación Uc09_Utility actúa como un observador que se adapta cuando se le informa que el instrumento está operando bajo el protocolo "Maselli".