Obsidean_VM/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Basic FAQ Software.md

109 lines
16 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Este proyecto, denominado [Uc09_Utility](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), es una aplicación de escritorio de Windows Forms diseñada para interactuar con instrumentos Maselli.
**Funcionamiento General:**
1. **Inicio y Configuración ([Program.cs](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) y [FormPrincipaleMDI_Load](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)):**
- La aplicación se inicia ejecutando [FormPrincipaleMDI](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) ([Uc09_Utility\FormPrincipaleMDI.cs](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)).
- 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 carpeta `logs`.
- Al cargar el formulario principal ([FormPrincipaleMDI_Load](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)):
- 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()](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)).
- Establece la comunicación serial ([ClassSerialeStrumenti](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)) 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](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)) se encarga de eliminar datos antiguos (más de seis meses).
2. **Interfaz Principal (MDI):**
- [FormPrincipaleMDI](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) es un contenedor MDI (Multiple Document Interface), lo que significa que puede albergar múltiples ventanas secundarias (paneles) dentro de ella.
3. **Navegación por Paneles ([timer1_Tick](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)):**
- Un temporizador ([timer1](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)) se ejecuta periódicamente (cada 800 ms).
- En cada [Tick](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) del temporizador, el método [timer1_Tick](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) ([Uc09_Utility\FormPrincipaleMDI.cs](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)) verifica la variable [Pannelli.NumeroPannello](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html).
- Si [Pannelli.NumeroPannello](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) 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](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [Frm_setup](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [FormUC08Liv1](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [FrmParameters](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), etc.) según este número.
- Este mecanismo permite cambiar dinámicamente la interfaz que se muestra al usuario.
4. **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](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)).
5. **Manejo de Cierre ([MainFormClosing](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)):**
- 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](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [FormURXXLivello1](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [FrmOssigenoLiv1](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), etc.).
- **Configurar** los instrumentos y los parámetros de la aplicación (ej. [Frm_setup](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [Frm_InstrumentConfiguration](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)).
- **Visualizar datos** provenientes de los instrumentos (posiblemente en formularios como [FormDataAcquisition](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [FormMisureUR70](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)).
- Realizar **diagnósticos** y ver **alarmas** ([FormDiagnostica](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [FormAlarms](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)).
- Gestionar la **calibración** y **certificados** ([Frm_certif_calibr](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)).
- Guardar datos o configuraciones ([FormSaveFile](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)).
- Operar en diferentes modos (normal, demo, debug) para pruebas o funcionalidades específicas.
En resumen, [Uc09_Utility](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) 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:
1. **Inicialización de la Comunicación Serial (`ClassSerialeStrumenti` y `FormPrincipaleMDI_Load`):**
- En el evento `FormPrincipaleMDI_Load` ([Uc09_Utility\FormPrincipaleMDI.cs](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)), después de cargar la configuración, se llama a `ClassInizializzazioni.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 clase `ClassSerialeStrumenti`.
- `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.
2. **Protocolo de Comunicación:**
- La aplicación parece soportar un protocolo específico de Maselli. Esto se evidencia en el método `OnProtocolFunctionChangedToMaselli` en `FormPrincipaleMDI.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.
3. **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.
4. **Manejo de Eventos y Datos:**
- Los diferentes formularios (paneles) que representan a cada instrumento (`FormUC08Liv1`, `FormURXXLivello1`, etc.) interactuarán con `ClassSerialeStrumenti` (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.
5. **Cierre de la Comunicación:**
- En el evento `MainFormClosing` de `FormPrincipaleMDI.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 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](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), 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:
1. **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](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)), detecta este cambio.
- Este componente de bajo nivel luego dispara un evento dentro de la aplicación para notificar sobre el cambio de protocolo.
2. **Suscripción al Evento:**
- En el código de `FormPrincipaleMDI.cs`, el método `OnProtocolFunctionChangedToMaselli` 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.
3. **Acciones Dentro de `OnProtocolFunctionChangedToMaselli`:**
- Una vez que se llama a `OnProtocolFunctionChangedToMaselli`, la aplicación [Uc09_Utility](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) 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".
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](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) actúa como un observador que se adapta cuando se le informa que el instrumento está operando bajo el protocolo "Maselli".