109 lines
16 KiB
Markdown
109 lines
16 KiB
Markdown
|
||
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". |