560 lines
24 KiB
HTML
560 lines
24 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
||
<meta name="description" content="docmd is a Node.js command-line tool for generating beautiful, lightweight static documentation sites from Markdown files.">
|
||
<link rel="canonical" href="/Rockwell/Optix/DotNet/tpDiagnosticQueryInterface/">
|
||
<meta property="og:title" content="tpDiagnosticQueryInterface | docmd">
|
||
<meta property="og:description" content="docmd is a Node.js command-line tool for generating beautiful, lightweight static documentation sites from Markdown files.">
|
||
<meta property="og:url" content="/Rockwell/Optix/DotNet/tpDiagnosticQueryInterface/">
|
||
<meta property="og:site_name" content="docmd">
|
||
<meta property="og:image" content="/assets/images/docmd-preview.png">
|
||
<meta property="og:type" content="website">
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:title" content="tpDiagnosticQueryInterface | docmd">
|
||
<meta name="twitter:description" content="docmd is a Node.js command-line tool for generating beautiful, lightweight static documentation sites from Markdown files.">
|
||
<meta name="twitter:image" content="/assets/images/docmd-preview.png">
|
||
|
||
|
||
<title>tpDiagnosticQueryInterface : docmd</title>
|
||
|
||
|
||
<link rel="shortcut icon" href="../../../assets/favicon.ico" type="image/x-icon">
|
||
|
||
|
||
<script>// Source file from the docmd project — https://github.com/mgks/docmd
|
||
|
||
/*
|
||
* Initialize the theme from localStorage
|
||
*/
|
||
|
||
(function() {
|
||
try {
|
||
const storedTheme = localStorage.getItem('docmd-theme');
|
||
if (storedTheme) {
|
||
document.documentElement.setAttribute('data-theme', storedTheme);
|
||
|
||
// Also update highlight CSS link to match the stored theme
|
||
const highlightThemeLink = document.getElementById('highlight-theme');
|
||
if (highlightThemeLink) {
|
||
const baseHref = highlightThemeLink.getAttribute('data-base-href');
|
||
if (baseHref) {
|
||
const newHref = baseHref + `docmd-highlight-${storedTheme}.css`;
|
||
highlightThemeLink.setAttribute('href', newHref);
|
||
}
|
||
}
|
||
}
|
||
} catch (e) {
|
||
console.error('Error applying theme from localStorage', e);
|
||
}
|
||
})();</script>
|
||
|
||
<link rel="stylesheet" href="../../../assets/css/docmd-main.css">
|
||
|
||
|
||
<link rel="stylesheet" id="highlight-theme" href="../../../assets/css/docmd-highlight-light.css" data-base-href="../../../assets/css/">
|
||
|
||
|
||
<link rel="stylesheet" href="../../../assets/css/docmd-theme-sky.css">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<!-- Google Analytics GA4 -->
|
||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8QVBDQ4KM1"></script>
|
||
<script>
|
||
window.dataLayer = window.dataLayer || [];
|
||
function gtag(){dataLayer.push(arguments);}
|
||
gtag('js', new Date());
|
||
gtag('config', 'G-8QVBDQ4KM1');
|
||
</script>
|
||
|
||
</head>
|
||
<body class="sidebar-collapsible"
|
||
data-theme="light" data-default-collapsed="false"
|
||
data-copy-code-enabled="true">
|
||
<aside class="sidebar">
|
||
<div class="sidebar-header">
|
||
|
||
<a href="/" class="logo-link">
|
||
<img src="../../../assets/images/docmd-logo-light.png" alt="docmd logo" class="logo-light" >
|
||
<img src="../../../assets/images/docmd-logo-dark.png" alt="docmd logo" class="logo-dark" >
|
||
</a>
|
||
|
||
</div>
|
||
|
||
<nav class="sidebar-nav" aria-label="Main navigation">
|
||
<ul>
|
||
|
||
<li class="" >
|
||
<a href="../../../" class="" >
|
||
<svg class="lucide-icon icon-home" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8" />
|
||
<path d="M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
|
||
</svg>
|
||
<span class="nav-item-title">Welcome</span>
|
||
|
||
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="collapsible" data-nav-id="#">
|
||
<a href="#" class="" >
|
||
<svg class="lucide-icon icon-rocket" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z" />
|
||
<path d="m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z" />
|
||
<path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0" />
|
||
<path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5" />
|
||
</svg>
|
||
<span class="nav-item-title">Getting Started</span>
|
||
<svg class="lucide-icon icon-chevron-right collapse-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="m9 18 6-6-6-6" />
|
||
</svg>
|
||
|
||
</a>
|
||
|
||
<ul class="submenu">
|
||
|
||
<li class="" >
|
||
<a href="https://docmd.mgks.dev" class="" target="_blank" rel="noopener">
|
||
<svg class="lucide-icon icon-scroll" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M19 17V5a2 2 0 0 0-2-2H4" />
|
||
<path d="M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3" />
|
||
</svg>
|
||
<span class="nav-item-title">Documentation</span>
|
||
|
||
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M15 3h6v6" />
|
||
<path d="M10 14 21 3" />
|
||
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
|
||
</svg>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="" >
|
||
<a href="https://docmd.mgks.dev/getting-started/installation" class="" target="_blank" rel="noopener">
|
||
<svg class="lucide-icon icon-download" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M12 15V3" />
|
||
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
|
||
<path d="m7 10 5 5 5-5" />
|
||
</svg>
|
||
<span class="nav-item-title">Installation</span>
|
||
|
||
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M15 3h6v6" />
|
||
<path d="M10 14 21 3" />
|
||
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
|
||
</svg>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="" >
|
||
<a href="https://docmd.mgks.dev/getting-started/basic-usage" class="" target="_blank" rel="noopener">
|
||
<svg class="lucide-icon icon-play" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z" />
|
||
</svg>
|
||
<span class="nav-item-title">Basic Usage</span>
|
||
|
||
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M15 3h6v6" />
|
||
<path d="M10 14 21 3" />
|
||
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
|
||
</svg>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="" >
|
||
<a href="https://docmd.mgks.dev/content" class="" target="_blank" rel="noopener">
|
||
<svg class="lucide-icon icon-layout-template" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<rect width="18" height="7" x="3" y="3" rx="1" />
|
||
<rect width="9" height="7" x="3" y="14" rx="1" />
|
||
<rect width="5" height="7" x="16" y="14" rx="1" />
|
||
</svg>
|
||
<span class="nav-item-title">Content</span>
|
||
|
||
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M15 3h6v6" />
|
||
<path d="M10 14 21 3" />
|
||
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
|
||
</svg>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</li>
|
||
|
||
<li class="" >
|
||
<a href="https://github.com/mgks/docmd" class="" target="_blank" rel="noopener">
|
||
<svg class="lucide-icon icon-github" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4" />
|
||
<path d="M9 18c-4.51 2-5-2-7-2" />
|
||
</svg>
|
||
<span class="nav-item-title">GitHub</span>
|
||
|
||
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M15 3h6v6" />
|
||
<path d="M10 14 21 3" />
|
||
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
|
||
</svg>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="" >
|
||
<a href="https://github.com/sponsors/mgks" class="" target="_blank" rel="noopener">
|
||
<svg class="lucide-icon icon-heart" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5" />
|
||
</svg>
|
||
<span class="nav-item-title">Support the Project</span>
|
||
|
||
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M15 3h6v6" />
|
||
<path d="M10 14 21 3" />
|
||
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
|
||
</svg>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</aside>
|
||
<div class="main-content-wrapper">
|
||
<div class="page-header">
|
||
<div class="header-left">
|
||
|
||
<button id="sidebar-toggle-button" class="sidebar-toggle-button" aria-label="Toggle Sidebar">
|
||
<svg class="lucide-icon icon-panel-left-close" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<rect width="18" height="18" x="3" y="3" rx="2" />
|
||
<path d="M9 3v18" />
|
||
<path d="m16 15-3-3 3-3" />
|
||
</svg>
|
||
</button>
|
||
|
||
<h1>tpDiagnosticQueryInterface</h1>
|
||
</div>
|
||
|
||
<div class="header-right">
|
||
<button id="theme-toggle-button" aria-label="Toggle theme" class="theme-toggle-button theme-toggle-header">
|
||
|
||
<svg class="lucide-icon icon-sun icon-sun" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<circle cx="12" cy="12" r="4" />
|
||
<path d="M12 2v2" />
|
||
<path d="M12 20v2" />
|
||
<path d="m4.93 4.93 1.41 1.41" />
|
||
<path d="m17.66 17.66 1.41 1.41" />
|
||
<path d="M2 12h2" />
|
||
<path d="M20 12h2" />
|
||
<path d="m6.34 17.66-1.41 1.41" />
|
||
<path d="m19.07 4.93-1.41 1.41" />
|
||
</svg>
|
||
<svg class="lucide-icon icon-moon icon-moon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401" />
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
|
||
</div>
|
||
<main class="content-area">
|
||
<div class="content-layout">
|
||
<div class="main-content">
|
||
<h1 id="tpdiagnosticqueryinterface">⚙️ tpDiagnosticQueryInterface</h1>
|
||
<p>La classe <strong>tpDiagnosticQueryInterface</strong> è una NetLogic che permette di eseguire query su un database SQLite e aggiornare variabili di output con i risultati in tempo reale.</p>
|
||
<p>È pensata per interfacciarsi con un database di diagnostica e fornire dinamicamente dati a variabili HMI, abilitando l’aggiornamento automatico dei valori tramite query configurabili.</p>
|
||
<hr>
|
||
<h2 id="panoramica-generale">🚦 Panoramica generale</h2>
|
||
<p>La logica si basa su:</p>
|
||
<ul>
|
||
<li>Una variabile <code>Query</code> che contiene la stringa SQL da eseguire.</li>
|
||
<li>Una variabile <code>Enabled</code> che abilita o disabilita l’esecuzione della query.</li>
|
||
<li>Una lista di variabili <code>OutVariables</code> che ricevono i valori dal primo record risultato della query.</li>
|
||
<li>Un database SQLite a cui si accede tramite percorso predefinito.</li>
|
||
</ul>
|
||
<hr>
|
||
<h2 id="funzionamento-principale">🛠️ Funzionamento principale</h2>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Elemento</th>
|
||
<th>Descrizione</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>Start()</code></td>
|
||
<td>Inizializza riferimenti alle variabili, al database e si iscrive agli eventi di cambio variabile.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>UpdateStatus()</code></td>
|
||
<td>Esegue la query SQL se abilitato, aggiorna le variabili di output con i risultati.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>Stop()</code></td>
|
||
<td>Pulisce le liste e rimuove gli handler eventi per evitare memory leak.</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<hr>
|
||
<h2 id="flusso-di-lavoro">🔄 Flusso di lavoro</h2>
|
||
<ol><li>Alla partenza, recupera le variabili <code>Query</code> e <code>Enabled</code>, e il riferimento al database SQLite.</li>
|
||
<li>Si iscrive agli eventi di cambio delle variabili <code>Query</code> e <code>Enabled</code>.</li>
|
||
<li>Quando <code>Query</code> o <code>Enabled</code> cambiano, viene eseguita la query SQL se <code>Enabled</code> è true.</li>
|
||
<li>Il primo record risultato viene scritto sulle variabili di output, fino a un massimo di variabili disponibili.</li>
|
||
</ol>
|
||
<hr>
|
||
<h2 id="dettagli-importanti">💡 Dettagli importanti</h2>
|
||
<ul>
|
||
<li>Se la query SQL fallisce, viene loggato un messaggio d’errore molto colorito e dettagliato (con frase in dialetto veneziano).</li>
|
||
<li>Le variabili di output sono i primi N figli dell’oggetto NetLogic, dove N è il numero di colonne del risultato SQL.</li>
|
||
<li>L’aggiornamento supporta solo il primo record del risultato (riga zero).</li>
|
||
</ul>
|
||
<hr>
|
||
<h2 id="come-configurare-le-variabili-di-output-su-netlogic-in-factory-talk-optix">🛠️ Come configurare le variabili di output su NetLogic in Factory Talk Optix</h2>
|
||
<p>La classe si aspetta che sull’oggetto NetLogic siano create variabili aggiuntive per mappare i valori restituiti dalla query SQL.</p>
|
||
<h3 id="1-creazione-delle-variabili-di-output">1. Creazione delle variabili di output</h3>
|
||
<ul>
|
||
<li><strong>Nome variabile:</strong> Devono avere nomi sequenziali nel formato <code>[0]</code>, <code>[1]</code>, <code>[2]</code>, ecc.</li>
|
||
<li><strong>Come crearle:</strong>
|
||
<ul>
|
||
<li>Apri Factory Talk Optix e seleziona l’oggetto NetLogic in design time.</li>
|
||
<li>Aggiungi variabili figlie di tipo <code>IUAVariable</code> o equivalente, con i nomi indicati sopra.</li>
|
||
</ul>
|
||
</li>
|
||
<li><strong>Tipo variabile:</strong> Può essere arbitrario (es. <code>String</code>, <code>Int32</code>, <code>Float</code>, ecc.) in base al tipo di dato atteso dalla colonna SQL.</li>
|
||
</ul>
|
||
<h3 id="2-gestione-delle-variabili-in-runtime">2. Gestione delle variabili in runtime</h3>
|
||
<ul>
|
||
<li>Il codice legge dinamicamente queste variabili usando la numerazione <code>[0]</code>, <code>[1]</code>, ecc., e le usa come destinazione per i valori estratti dal primo record della query.</li>
|
||
<li>Se non esistono variabili per tutte le colonne, il ciclo si interrompe al primo nome mancante.</li>
|
||
<li>È possibile aggiungere tutte le variabili necessarie in modo sequenziale, in base al numero di colonne della query.</li>
|
||
</ul>
|
||
<h3 id="3-tipo-arbitrario-e-flessibilit">3. Tipo arbitrario e flessibilità</h3>
|
||
<ul>
|
||
<li>Le variabili possono avere qualsiasi tipo supportato da Factory Talk Optix e compatibile con i tipi di dato SQL.</li>
|
||
<li>Il codice scrive valori tramite <code>RemoteWrite</code> e usa <code>UAValue</code> che gestisce diversi tipi.</li>
|
||
<li>È importante che il tipo della variabile corrisponda al tipo del dato restituito per evitare errori.</li>
|
||
</ul>
|
||
<hr>
|
||
<h3 id="esempio-di-configurazione-variabili">🔧 Esempio di configurazione variabili</h3>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Nome variabile</th>
|
||
<th>Tipo suggerito</th>
|
||
<th>Descrizione</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>[0]</code></td>
|
||
<td><code>String</code></td>
|
||
<td>Prima colonna risultato query</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>[1]</code></td>
|
||
<td><code>Int32</code></td>
|
||
<td>Seconda colonna risultato query</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>[2]</code></td>
|
||
<td><code>Float</code></td>
|
||
<td>Terza colonna risultato query</td>
|
||
</tr>
|
||
<tr>
|
||
<td>…</td>
|
||
<td>…</td>
|
||
<td>…</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<hr>
|
||
<h3 id="nota-importante">⚠️ Nota importante</h3>
|
||
<ul>
|
||
<li>La classe attualmente supporta solo il primo record della query (riga zero).</li>
|
||
<li>Per gestire più righe servirebbe implementare una logica di iterazione e mapping aggiuntiva.</li>
|
||
</ul>
|
||
<hr>
|
||
<h2 id="metodi-principali">🧰 Metodi principali</h2>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Metodo</th>
|
||
<th>Descrizione</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>Start()</code></td>
|
||
<td>Setup iniziale: recupera variabili e database, iscrive eventi, prepara lista variabili output.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>UpdateStatus()</code></td>
|
||
<td>Esegue la query e aggiorna le variabili se abilitato.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>UpdateStatus(object, VariableChangeEventArgs)</code></td>
|
||
<td>Overload che risponde agli eventi di cambio variabile, invocando il metodo senza parametri.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>Stop()</code></td>
|
||
<td>Pulizia delle risorse e rimozione degli eventi.</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<hr>
|
||
<h1 id="in-depth-funzioni-di-tpdiagnosticqueryinterface">🔍 In Depth: Funzioni di tpDiagnosticQueryInterface</h1>
|
||
<hr>
|
||
<h3 id="start"><code>Start()</code></h3>
|
||
<blockquote>
|
||
<p><strong>Descrizione:</strong><br>
|
||
Metodo di inizializzazione chiamato all’avvio della NetLogic.<br>
|
||
Recupera le variabili <code>Query</code> e <code>Enabled</code> e il database SQLite.<br>
|
||
Registra gli eventi di cambio variabile per aggiornare lo stato.<br>
|
||
Costruisce la lista <code>OutVariables</code> basandosi sui figli dell’oggetto NetLogic.</p>
|
||
</blockquote>
|
||
<blockquote>
|
||
<p><strong>Eccezioni:</strong><br>
|
||
Lancia eccezioni se le variabili o il database non vengono trovati, con messaggi personalizzati in dialetto veneziano.</p>
|
||
</blockquote>
|
||
<hr>
|
||
<h3 id="updatestatus"><code>UpdateStatus()</code></h3>
|
||
<blockquote>
|
||
<p><strong>Descrizione:</strong><br>
|
||
Controlla se la logica è abilitata leggendo la variabile <code>Enabled</code>.<br>
|
||
Se abilitata, esegue la query SQL contenuta in <code>Query</code>.<br>
|
||
Scrive il primo record dei risultati sulle variabili <code>OutVariables</code>.</p>
|
||
</blockquote>
|
||
<blockquote>
|
||
<p><strong>Error Handling:</strong><br>
|
||
In caso di errore nella query, logga un messaggio di errore molto colorito contenente dettagli tecnici.</p>
|
||
</blockquote>
|
||
<hr>
|
||
<h3 id="updatestatusobject-sender-variablechangeeventargs-e"><code>UpdateStatus(object sender, VariableChangeEventArgs e)</code></h3>
|
||
<blockquote>
|
||
<p><strong>Descrizione:</strong><br>
|
||
Handler evento che richiama semplicemente <code>UpdateStatus()</code> senza parametri per aggiornare lo stato quando <code>Query</code> o <code>Enabled</code> cambiano.</p>
|
||
</blockquote>
|
||
<hr>
|
||
<h3 id="stop"><code>Stop()</code></h3>
|
||
<blockquote>
|
||
<p><strong>Descrizione:</strong><br>
|
||
Pulizia e rimozione dei riferimenti alle variabili e agli eventi.<br>
|
||
Serve a prevenire perdite di memoria quando la NetLogic viene fermata o distrutta.</p>
|
||
</blockquote>
|
||
<hr>
|
||
|
||
|
||
|
||
</div>
|
||
|
||
<!-- DEBUG: {"headingsLength":17} -->
|
||
|
||
<!-- TOC sidebar -->
|
||
<div class="toc-sidebar">
|
||
|
||
|
||
<div class="toc-container">
|
||
<h2 class="toc-title">On This Page</h2>
|
||
<ul class="toc-list">
|
||
|
||
<li class="toc-item toc-level-2">
|
||
<a href="#panoramica-generale" class="toc-link">🚦 Panoramica generale</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-2">
|
||
<a href="#funzionamento-principale" class="toc-link">🛠️ Funzionamento principale</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-2">
|
||
<a href="#flusso-di-lavoro" class="toc-link">🔄 Flusso di lavoro</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-2">
|
||
<a href="#dettagli-importanti" class="toc-link">💡 Dettagli importanti</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-2">
|
||
<a href="#come-configurare-le-variabili-di-output-su-netlogic-in-factory-talk-optix" class="toc-link">🛠️ Come configurare le variabili di output su NetLogic in Factory Talk Optix</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-3">
|
||
<a href="#1-creazione-delle-variabili-di-output" class="toc-link">1. Creazione delle variabili di output</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-3">
|
||
<a href="#2-gestione-delle-variabili-in-runtime" class="toc-link">2. Gestione delle variabili in runtime</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-3">
|
||
<a href="#3-tipo-arbitrario-e-flessibilit" class="toc-link">3. Tipo arbitrario e flessibilità</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-3">
|
||
<a href="#esempio-di-configurazione-variabili" class="toc-link">🔧 Esempio di configurazione variabili</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-3">
|
||
<a href="#nota-importante" class="toc-link">⚠️ Nota importante</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-2">
|
||
<a href="#metodi-principali" class="toc-link">🧰 Metodi principali</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-3">
|
||
<a href="#start" class="toc-link">Start()</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-3">
|
||
<a href="#updatestatus" class="toc-link">UpdateStatus()</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-3">
|
||
<a href="#updatestatusobject-sender-variablechangeeventargs-e" class="toc-link">UpdateStatus(object sender, VariableChangeEventArgs e)</a>
|
||
</li>
|
||
|
||
<li class="toc-item toc-level-3">
|
||
<a href="#stop" class="toc-link">Stop()</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</main>
|
||
<footer class="page-footer">
|
||
<div class="footer-content">
|
||
<div class="user-footer">
|
||
© 2025 Project.
|
||
</div>
|
||
<div class="branding-footer">
|
||
Build with <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z"></path><path d="M12 5 9.04 7.96a2.17 2.17 0 0 0 0 3.08c.82.82 2.13.85 3 .07l2.07-1.9a2.82 2.82 0 0 1 3.79 0l2.96 2.66"></path><path d="m18 15-2-2"></path><path d="m15 18-2-2"></path></svg> <a href="https://docmd.mgks.dev" target="_blank" rel="noopener">docmd.</a>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
</div>
|
||
|
||
<script src="../../../assets/js/docmd-main.js"></script>
|
||
|
||
|
||
<script src="../../../assets/js/docmd-image-lightbox.js"></script>
|
||
|
||
|
||
|
||
|
||
|
||
</body>
|
||
</html> |