<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel xmlns:blog="http://www.dotnetnuke.com/blog/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
    <title>IToolS Blog</title>
    <description>IToolS Blog</description>
    <link>http://www.albertoschiassi.it/Home/tabid/55/BlogId/3/Default.aspx</link>
    <webMaster />
    <pubDate>lun, 20 apr 2026 22:37:57 GMT</pubDate>
    <lastBuildDate>lun, 20 apr 2026 22:37:57 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>Blog RSS Generator Version 5.0.0.0</generator>
    <item>
      <title>Text to speech</title>
      <link>https://www.albertoschiassi.it/Home/tabid/55/EntryId/118/Text-to-speech.aspx</link>
      <description>&lt;span style="color: #333333;"&gt;Installare il Microsoft Speech Platform – Runtime Languages (Version 11) scaricandolo da &lt;/span&gt;&lt;a href="https://www.microsoft.com/en-us/download/details.aspx?id=27224" style="color: #595959; margin: 0px; padding: 0px; border: 0px;"&gt;https://www.microsoft.com/en-us/download/details.aspx?id=27224&lt;/a&gt;&lt;span style="color: #333333;"&gt;. Quindi installare le lingue desiderate scaricando i TTS dal link &lt;/span&gt;&lt;a href="https://www.microsoft.com/en-us/download/details.aspx?id=27224" style="color: #595959; margin: 0px; padding: 0px; border: 0px;"&gt;https://www.microsoft.com/en-us/download/details.aspx?id=27224&lt;/a&gt;</description>
      <author />
      <comments>https://www.albertoschiassi.it/Home/tabid/55/EntryId/118/Text-to-speech.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">https://www.albertoschiassi.it/Home/tabid/55/EntryId/118/Text-to-speech.aspx</guid>
      <pubDate>Thu, 22 Nov 2018 08:25:00 GMT</pubDate>
    </item>
    <item>
      <title>IToolS OPC UA Server</title>
      <link>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/117/IToolS-OPC-UA-Server.aspx</link>
      <description>&lt;span style="color: #333333;"&gt;Nell’esempio riportato sotto viene mostrato come creare una applicazione che mediante i componenti IToolS pubblica i valori di un certo numero di variabili, in questo caso due, mediante il protocollo OPC UA.&lt;/span&gt;&lt;br style="color: #333333;" /&gt;
&lt;span style="color: #333333;"&gt;La pubblicazione delle variabili IToolS avviene mediante la creazione di due componenti IOServer, dove uno funge da sorgente (“Simulation”) e uno da destinazione (OpcUAServer), il collegamento tra il Group (“group1”) e l’IOServer (“ioserver2”) permette di pubblicare le variabili IToolS mediante il protocollo OPC UA.&lt;/span&gt;
&lt;p&gt;&lt;span style="color: #333333;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #333333;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;pre style="font-family: Consolas; color: black; background: white;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Collections.Generic;
 
&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; OpcUAServerSample
{
   &lt;span style="color: blue;"&gt;using&lt;/span&gt; IToolS.Components.Communication;
   &lt;span style="color: blue;"&gt;using&lt;/span&gt; IToolS.Components.IOServers;
 
   &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Program&lt;/span&gt;
   {
      &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Main()
      {
         IToolS.Components.&lt;span style="color: #2b91af;"&gt;ComponentBase&lt;/span&gt;.RaiseEventsOnMainThread = &lt;span style="color: blue;"&gt;false&lt;/span&gt;;
 
         &lt;span style="color: #2b91af;"&gt;Group&lt;/span&gt; group = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Group&lt;/span&gt;() { GroupName = &lt;span style="color: #a31515;"&gt;"group1"&lt;/span&gt; };
 
         &lt;span style="color: #2b91af;"&gt;Variable&lt;/span&gt; variable1 = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Variable&lt;/span&gt;() {
             VariableName = &lt;span style="color: #a31515;"&gt;"variable1"&lt;/span&gt;,
             Area = &lt;span style="color: #a31515;"&gt;"HR"&lt;/span&gt;,
             Address = &lt;span style="color: #a31515;"&gt;"0"&lt;/span&gt;
         };
 
         &lt;span style="color: #2b91af;"&gt;Variable&lt;/span&gt; variable2 = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Variable&lt;/span&gt;()
         {
             VariableName = &lt;span style="color: #a31515;"&gt;"variable2"&lt;/span&gt;,
             Area = &lt;span style="color: #a31515;"&gt;"HR"&lt;/span&gt;,
             Address = &lt;span style="color: #a31515;"&gt;"1"&lt;/span&gt;
         };
 
            variable1.Changed += variableChanged;
         variable2.Changed += variableChanged;
 
         &lt;span style="color: #2b91af;"&gt;IOServer&lt;/span&gt; ioserver1 = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;IOServer&lt;/span&gt;() { Name = &lt;span style="color: #a31515;"&gt;"Simulation"&lt;/span&gt; };
         &lt;span style="color: #2b91af;"&gt;IOServer&lt;/span&gt; ioserver2 = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;IOServer&lt;/span&gt;() { Name = &lt;span style="color: #a31515;"&gt;"OpcUAServer"&lt;/span&gt; };
         &lt;span style="color: #2b91af;"&gt;Client&lt;/span&gt; client = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Client&lt;/span&gt;()
         {
             ClientName = &lt;span style="color: #a31515;"&gt;"client1"&lt;/span&gt;,
             Group = group,
             IOServer = ioserver1
         };
 
         group.Add(variable1);
         group.Add(variable2);
 
         group.IOServer = ioserver2;
 
         client.Start();
         group.StartIOServer();
 
         &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Press ENTER to exit"&lt;/span&gt;);
         &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.ReadLine();
 
         client.Stop();
         client.StopIOServer();
         group.StopIOServer();
      }
 
      &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; variableChanged(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, IToolS.Data.&lt;span style="color: #2b91af;"&gt;ChangedEventArgs&lt;/span&gt; e)
      {
         &lt;span style="color: #2b91af;"&gt;Variable&lt;/span&gt; variable = (&lt;span style="color: #2b91af;"&gt;Variable&lt;/span&gt;)sender;
 
         &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"{0} value: {1}"&lt;/span&gt;, variable.VariableName, e.NewValue);
      }
   }
}
&lt;/pre&gt;</description>
      <author />
      <comments>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/117/IToolS-OPC-UA-Server.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/117/IToolS-OPC-UA-Server.aspx</guid>
      <pubDate>Tue, 11 Jul 2017 09:54:00 GMT</pubDate>
    </item>
    <item>
      <title>How to create a page alarm management with IToolS</title>
      <link>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/71/How-to-create-a-page-alarm-management-with-IToolS.aspx</link>
      <description>&lt;p&gt;How to create a page alarm management with IToolS&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="margin: 0px auto; text-align: center;"&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/ufc0MmC7Um4" frameborder="0"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;</description>
      <author />
      <comments>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/71/How-to-create-a-page-alarm-management-with-IToolS.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/71/How-to-create-a-page-alarm-management-with-IToolS.aspx</guid>
      <pubDate>Tue, 04 Apr 2017 06:18:00 GMT</pubDate>
    </item>
    <item>
      <title>IToolS® for eMbeDDed</title>
      <link>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/56/IToolS®-for-eMbeDDed.aspx</link>
      <description>&lt;img alt="" src="/Portals/0/IToolS/Embedded/itoolsEmbedded.png" style="width: 247px; height: 288px;" /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.albertoschiassi.it/Portals/0/Blog/Files/3/56/IToolS for eMbedded.pdf"&gt;IToolS for eMbedded.pdf&lt;/a&gt;</description>
      <author />
      <comments>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/56/IToolS®-for-eMbeDDed.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/56/IToolS®-for-eMbeDDed.aspx</guid>
      <pubDate>Mon, 02 Jan 2017 09:09:00 GMT</pubDate>
    </item>
    <item>
      <title>IToolS Ethernet/IP driver</title>
      <link>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/52/IToolS-Ethernet-IP-driver.aspx</link>
      <description>Il driver IToolS Ethernet/IP e' utilizzato per interrogare i dispositivi Allen Bradley.  
&lt;p&gt;Per impostare la comunicazione con un dispositivo Allen Bradley è necessario impostare la proprietà "Name" dell'ioserver a "ABEthernetIP" 
&lt;/p&gt;
&lt;p&gt;Le variabili sono lette e scritte per nome, è quindi necessario inserire nella proprietà "Address" della variable il nome della variabile che si vuole gestire. &lt;/p&gt;
&lt;p&gt;I tipi di dato gestiti sono: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;SINT  	1 byte (unsigned small integer)  = Byte &lt;/li&gt;
    &lt;li&gt;USINT  	1 byte (unsigned small integer)  = UByte &lt;/li&gt;
    &lt;li&gt;UINT  	2 byte (unsigned integer)        = UInteger &lt;/li&gt;
    &lt;li&gt;INT		2 byte (integer)                 = Integer &lt;/li&gt;
    &lt;li&gt;REAL		4 byte (floating point value)    = Real &lt;/li&gt;
    &lt;li&gt;UDINT  	4 byte (unsigned double integer) = ULong &lt;/li&gt;
    &lt;li&gt;DINT 		4 byte (double integer)          = Long &lt;/li&gt;
    &lt;li&gt;LINT		8 byte (long integer)            = DoubleLong &lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;
La lettura dei tag viene effettuate per nome e non per indirizzamento e dimensione come per altri driver (ad esempio Modbus, Siemens, Omron, ecc...) quindi per qualsiasi tag può essere utilizzato il tipo "Variant".
È auspicabile utilizzare tipi di dato non "Variant" nel caso in cui il valore letto dal dispositivo debba poi essere convertito, scalato o soggetto a qualche trasformazione. 
&lt;/p&gt;
&lt;p&gt;Il campo area non è utilizzato. &lt;/p&gt;
&lt;p&gt;Sono implementate le letture e scrittura multiple. 
&lt;/p&gt;
&lt;p&gt;La porta socket da utilizzare per la comunicazione è la: 44818&lt;/p&gt;</description>
      <author />
      <comments>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/52/IToolS-Ethernet-IP-driver.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/52/IToolS-Ethernet-IP-driver.aspx</guid>
      <pubDate>Mon, 02 Jan 2017 08:31:00 GMT</pubDate>
    </item>
    <item>
      <title>IToolS Clients Server</title>
      <link>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/51/IToolS-Clients-Server.aspx</link>
      <description>IToolS Clients Server è un componente che offre la possibilità di eseguire operazioni su una lista di Client da remoto, attraverso un server web. 
&lt;p&gt;Il server permettere l’invocazione dei metodi del client da remoto mediante la tecnologia WCF, sul quale sono esposti due endpoint: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;basicHttpEndPoint &lt;/li&gt;
    &lt;li&gt;webHttpEndPoint &lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;
Le operazioni disponibili sono:  
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Avviare/Arrestare il client con nome specificato &lt;/li&gt;
    &lt;li&gt;Avviare/Arrestare tutti i client associati al server &lt;/li&gt;
    &lt;li&gt;Leggere e scrivere le variabili associate al server &lt;/li&gt;
    &lt;li&gt;Eseguire l'autenticazione sul server (se la richiesta di autenticazione è abilitata) &lt;/li&gt;
&lt;/ul&gt;</description>
      <author />
      <comments>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/51/IToolS-Clients-Server.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/51/IToolS-Clients-Server.aspx</guid>
      <pubDate>Sat, 02 Jan 2016 06:20:00 GMT</pubDate>
    </item>
    <item>
      <title>Using IToolS in C++/CLI and MFC</title>
      <link>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/54/Using-IToolS-in-C-CLI-and-MFC.aspx</link>
      <description>In questo articolo sono presenti due progetti che mostrano come utilizzare i driver IToolS in un'applicazione MFC ed in un'applicazione console VC++:
&lt;p&gt; &lt;/p&gt;
&lt;pre style="font-family: Consolas; color: black; background-color: white;"&gt;&lt;span style="color: green;"&gt;// IToolSVCClr.cpp : Defines the entry point for the console application.&lt;/span&gt;
&lt;span style="color: green;"&gt;//&lt;/span&gt;
 
&lt;span style="color: blue;"&gt;#include&lt;/span&gt; &lt;span style="color: #a31515;"&gt;"stdafx.h"&lt;/span&gt;
&lt;span style="color: blue;"&gt;#include&lt;/span&gt; &lt;span style="color: #a31515;"&gt;&lt;vcclr.h&gt;&lt;/span&gt;
 
 
&lt;span style="color: blue;"&gt;void&lt;/span&gt; OnChanged(System::&lt;span style="color: #2b91af;"&gt;Object&lt;/span&gt;^ &lt;span style="color: gray;"&gt;sender&lt;/span&gt;, IToolS::Data::&lt;span style="color: #2b91af;"&gt;ChangedEventArgs&lt;/span&gt; ^&lt;span style="color: gray;"&gt;e&lt;/span&gt;)
{
   System::&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;::WriteLine(System::&lt;span style="color: #2b91af;"&gt;String&lt;/span&gt;::Format(&lt;span style="color: #a31515;"&gt;"New value {0}"&lt;/span&gt;, 
      &lt;span style="color: gray;"&gt;e&lt;/span&gt;-&gt;NewValue));
}
 
&lt;span style="color: blue;"&gt;int&lt;/span&gt; &lt;span style="color: #6f008a;"&gt;_tmain&lt;/span&gt;(&lt;span style="color: blue;"&gt;int&lt;/span&gt; &lt;span style="color: gray;"&gt;argc&lt;/span&gt;, &lt;span style="color: #2b91af;"&gt;_TCHAR&lt;/span&gt;* &lt;span style="color: gray;"&gt;argv&lt;/span&gt;[])
{
   &lt;span style="color: #2b91af;"&gt;gcroot&lt;/span&gt;&lt;IToolS::Lite::Communication::&lt;span style="color: #2b91af;"&gt;Variable&lt;/span&gt;^&gt; variable = 
      &lt;span style="color: blue;"&gt;gcnew&lt;/span&gt; IToolS::Lite::Communication::&lt;span style="color: #2b91af;"&gt;Variable&lt;/span&gt;();
   &lt;span style="color: #2b91af;"&gt;gcroot&lt;/span&gt;&lt;IToolS::Lite::Communication::&lt;span style="color: #2b91af;"&gt;Client&lt;/span&gt;^&gt; client = 
      &lt;span style="color: blue;"&gt;gcnew&lt;/span&gt; IToolS::Lite::Communication::&lt;span style="color: #2b91af;"&gt;Client&lt;/span&gt;();
   &lt;span style="color: #2b91af;"&gt;gcroot&lt;/span&gt;&lt;IToolS::Lite::Communication::&lt;span style="color: #2b91af;"&gt;Group&lt;/span&gt;^&gt; group = 
      &lt;span style="color: blue;"&gt;gcnew&lt;/span&gt; IToolS::Lite::Communication::&lt;span style="color: #2b91af;"&gt;Group&lt;/span&gt;();
   &lt;span style="color: #2b91af;"&gt;gcroot&lt;/span&gt;&lt;IToolS::Lite::IOServers::&lt;span style="color: #2b91af;"&gt;IOServer&lt;/span&gt;^&gt; ioserver = 
      &lt;span style="color: blue;"&gt;gcnew&lt;/span&gt; IToolS::Lite::IOServers::&lt;span style="color: #2b91af;"&gt;IOServer&lt;/span&gt;();
 
   variable-&gt;VariableName = &lt;span style="color: #a31515;"&gt;"var"&lt;/span&gt;;
   variable-&gt;Address = &lt;span style="color: #a31515;"&gt;"10"&lt;/span&gt;;
   variable-&gt;Changed += &lt;span style="color: blue;"&gt;gcnew&lt;/span&gt; IToolS::Data::&lt;span style="color: #2b91af;"&gt;ChangedEventHandler&lt;/span&gt;(OnChanged);
 
   group-&gt;Add(variable);
 
   ioserver-&gt;Name = &lt;span style="color: #a31515;"&gt;"Simulation"&lt;/span&gt;;
 
   client-&gt;Group = group;
   client-&gt;IOServer = ioserver;
   client-&gt;Start();
 
   System::&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;::WriteLine(&lt;span style="color: #a31515;"&gt;"Press ENTER to exit"&lt;/span&gt;);
   System::&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;::ReadLine();
 
   client-&gt;Stop();
   client-&gt;StopIOServer();
 
   &lt;span style="color: blue;"&gt;return&lt;/span&gt; 0;
}
 
&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;</description>
      <author />
      <comments>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/54/Using-IToolS-in-C-CLI-and-MFC.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/54/Using-IToolS-in-C-CLI-and-MFC.aspx</guid>
      <pubDate>Sat, 02 Jan 2016 05:44:00 GMT</pubDate>
    </item>
    <item>
      <title>Using IToolS StratonNG driver</title>
      <link>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/49/Using-IToolS-StratonNG-driver.aspx</link>
      <description>Il driver T5 e' in grado di leggere variabili dal runtime straton. 
&lt;p&gt;Nel campo address e' necessario inserire l'indirizzo che di trova nel file APPLI.SYB:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;pre style="font-family: Consolas; color: black; background-color: white;"&gt;&lt;file&gt;=K5SYB.V1
&lt;proj&gt;=LOGIC
&lt;crc&gt;=1534836188
&lt;vers&gt;=4
&lt;date&gt;=1371717010
&lt;ctsize&gt;=1
&lt;ctretoffset&gt;=1
&lt;ctretsize&gt;=0
0x01000001(0)[0]=bBOOL
0x0c000001(0)[0]=iINT16
...&lt;/pre&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;
Sopra e' riportato una stralcio del file APPLI.SYB dove e' presente la dichiarazione di due variabili:&lt;/p&gt;
&lt;div&gt;&lt;br /&gt;
 
&lt;pre style="font-family: Consolas; color: black; background-color: white;"&gt;0x01000001(0)[0]=bBOOL
0x0c000001(0)[0]=iINT16&lt;/pre&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;
Se vogliamo ad esempio interrogare la variabile "bBOOL", nel campo address dobbiamo inserire "01000001".
Alla partenza il driver in base al valore inserito in Address si calcola l'indirizzo reale e il tipo di dato associato,
in fase di progettazione non e' quindi necessario impostare la proprieta' "VariableType" in quanto e' il driver che in base
al valore presente nel campo "Address" estrae il tipo e lo imposta.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;pre style="font-family: Consolas; color: black; background-color: white;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Text;
 
&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; TestStratonNG
{
   &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Program&lt;/span&gt;
   {
      &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue;"&gt;string&lt;/span&gt;[] args)
      {
         IToolS.Components.&lt;span style="color: #2b91af;"&gt;ComponentBase&lt;/span&gt;.RaiseEventsOnMainThread = &lt;span style="color: blue;"&gt;false&lt;/span&gt;;
 
         IToolS.Components.Communication.&lt;span style="color: #2b91af;"&gt;Variable&lt;/span&gt; s_variable1 = &lt;/pre&gt;
&lt;pre style="font-family: Consolas; color: black; background-color: white;"&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;new&lt;/span&gt; IToolS.Components.Communication.&lt;span style="color: #2b91af;"&gt;Variable&lt;/span&gt;();
         IToolS.Components.Communication.&lt;span style="color: #2b91af;"&gt;Group&lt;/span&gt; s_group1 = &lt;/pre&gt;
&lt;pre style="font-family: Consolas; color: black; background-color: white;"&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;new&lt;/span&gt; IToolS.Components.Communication.&lt;span style="color: #2b91af;"&gt;Group&lt;/span&gt;();
         IToolS.Components.IOServers.&lt;span style="color: #2b91af;"&gt;IOServer&lt;/span&gt; s_ioServer1 = &lt;/pre&gt;
&lt;pre style="font-family: Consolas; color: black; background-color: white;"&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;new&lt;/span&gt; IToolS.Components.IOServers.&lt;span style="color: #2b91af;"&gt;IOServer&lt;/span&gt;();
         IToolS.Components.Communication.&lt;span style="color: #2b91af;"&gt;Client&lt;/span&gt; s_client1 = &lt;/pre&gt;
&lt;pre style="font-family: Consolas; color: black; background-color: white;"&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;new&lt;/span&gt; IToolS.Components.Communication.&lt;span style="color: #2b91af;"&gt;Client&lt;/span&gt;();
 
 
         s_ioServer1.Name = &lt;span style="color: #a31515;"&gt;"StratonNG"&lt;/span&gt;;
         s_ioServer1.NetConfig.Port = 1100;
         s_ioServer1.NetConfig.Address = &lt;span style="color: #a31515;"&gt;"172.17.250.183"&lt;/span&gt;;
 
         s_variable1.VariableName = &lt;span style="color: #a31515;"&gt;"sSTRING"&lt;/span&gt;;
         s_variable1.Address = &lt;span style="color: #a31515;"&gt;"08000001"&lt;/span&gt;;
         s_variable1.Changed += s_variable1_Changed;
 
         s_group1.Items.Add(s_variable1);
 
         s_client1.Group = s_group1;
         s_client1.IOServer = s_ioServer1;
 
         s_client1.Start();
 
         &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Press ENTER to exit"&lt;/span&gt;);
         &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.ReadLine();
 
 
 
      }
 
      &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; s_variable1_Changed(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, IToolS.Data.&lt;span style="color: #2b91af;"&gt;ChangedEventArgs&lt;/span&gt; e)
      {
         &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #2b91af;"&gt;String&lt;/span&gt;.Format(&lt;span style="color: #a31515;"&gt;"Variable: {0} type: {1} value: {2}"&lt;/span&gt;, &lt;/pre&gt;
&lt;pre style="font-family: Consolas; color: black; background-color: white;"&gt;((IToolS.Components.Communication.&lt;span style="color: #2b91af;"&gt;Variable&lt;/span&gt;)sender).VariableName, &lt;/pre&gt;
&lt;pre style="font-family: Consolas; color: black; background-color: white;"&gt;((IToolS.Components.Communication.&lt;span style="color: #2b91af;"&gt;Variable&lt;/span&gt;)sender).VariableType, e.NewValue));
      }
   }
}
&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/div&gt;</description>
      <author />
      <comments>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/49/Using-IToolS-StratonNG-driver.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/49/Using-IToolS-StratonNG-driver.aspx</guid>
      <pubDate>Sat, 02 Jan 2016 03:54:00 GMT</pubDate>
    </item>
    <item>
      <title>Diagnostica dei driver IToolS</title>
      <link>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/43/Diagnostica-dei-driver-IToolS.aspx</link>
      <description>Un esempio semplice che consente di valutare tempistiche e risultati delle operazioni di I/O.
&lt;p&gt; 
&lt;/p&gt;
&lt;pre style="font-family: Consolas; color: black; background-color: white;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="color: green;"&gt;//...&lt;/span&gt;
&lt;span style="color: blue;"&gt;for&lt;/span&gt; (&lt;span style="color: blue;"&gt;int&lt;/span&gt; i = 0; i &lt; 5; ++i)
{
   &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Cycle: {0}"&lt;/span&gt;, i);
 
   DateTime time = DateTime.Now;
   IToolS.Data.&lt;span style="color: #2b91af;"&gt;ClientResult&lt;/span&gt; result = 
      client.ReadSync(&lt;span style="color: blue;"&gt;new&lt;/span&gt; IToolS.Components.Communication.&lt;span style="color: #2b91af;"&gt;Variable&lt;/span&gt;[] { 
      variable1, variable2, variable3, variable4, variable5, 
      variable6, variable7, variable8, variable9, variable10 });
   &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Time: {0}"&lt;/span&gt;, (DateTime.Now - time).TotalMilliseconds);
 
   &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (IToolS.IOServers.&lt;span style="color: #2b91af;"&gt;IORequest&lt;/span&gt; request &lt;span style="color: blue;"&gt;in&lt;/span&gt; result.Requests)
   {
      &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Request: {0}"&lt;/span&gt;, request.Result.ToString());
   }
 
}
&lt;span style="color: green;"&gt;//...&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;</description>
      <author />
      <comments>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/43/Diagnostica-dei-driver-IToolS.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/43/Diagnostica-dei-driver-IToolS.aspx</guid>
      <pubDate>Thu, 06 Aug 2015 20:59:00 GMT</pubDate>
    </item>
    <item>
      <title>IToolS i18Next utility</title>
      <link>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/114/IToolS-i18Next-utility.aspx</link>
      <description>&lt;pre style="font-family: Consolas; color: black; background: white;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.IO;
 
&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; IToolS.Web.i18Next
{
   &lt;span style="color: blue;"&gt;using&lt;/span&gt; Newtonsoft.Json.Linq;
 
   &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Translator&lt;/span&gt;
   {
      &lt;span style="color: #2b91af;"&gt;String&lt;/span&gt; _path;
 
      &lt;span style="color: #2b91af;"&gt;Dictionary&lt;/span&gt;&lt;&lt;span style="color: #2b91af;"&gt;String&lt;/span&gt;, &lt;span style="color: #2b91af;"&gt;JObject&lt;/span&gt;&gt; _dictionary;
 
      &lt;span style="color: blue;"&gt;private&lt;/span&gt; Translator()
      {
         _dictionary = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Dictionary&lt;/span&gt;&lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;, &lt;span style="color: #2b91af;"&gt;JObject&lt;/span&gt;&gt;();
      }
 
      &lt;span style="color: blue;"&gt;public&lt;/span&gt; Translator(&lt;span style="color: #2b91af;"&gt;String&lt;/span&gt; path, &lt;span style="color: #2b91af;"&gt;String&lt;/span&gt; jsonFileName = &lt;span style="color: #a31515;"&gt;"translation.json"&lt;/span&gt;)
         : &lt;span style="color: blue;"&gt;this&lt;/span&gt;()
      {
         _path = path;
 
         &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue;"&gt;var&lt;/span&gt; folder &lt;span style="color: blue;"&gt;in&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Directory&lt;/span&gt;.GetDirectories(path))
         {
            &lt;span style="color: #2b91af;"&gt;String&lt;/span&gt; directoryName = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DirectoryInfo&lt;/span&gt;(folder).Name;
 
            &lt;span style="color: #2b91af;"&gt;String&lt;/span&gt; jsonFile = &lt;span style="color: #2b91af;"&gt;Path&lt;/span&gt;.Combine(path, directoryName, jsonFileName);
 
            &lt;span style="color: blue;"&gt;if&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.Exists(jsonFile))
            {
               &lt;span style="color: #2b91af;"&gt;JObject&lt;/span&gt; jObject = &lt;span style="color: #2b91af;"&gt;JObject&lt;/span&gt;.Parse(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.ReadAllText(jsonFile));
 
               _dictionary[directoryName] = jObject;
            }
         }
      }
 
      &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;String&lt;/span&gt; Translate(&lt;span style="color: #2b91af;"&gt;String&lt;/span&gt; culture, &lt;span style="color: #2b91af;"&gt;String&lt;/span&gt; text)
      {
         &lt;span style="color: blue;"&gt;if&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;String&lt;/span&gt;.IsNullOrEmpty(text))
            &lt;span style="color: blue;"&gt;return&lt;/span&gt; text;
 
         &lt;span style="color: blue;"&gt;if&lt;/span&gt; (!_dictionary.ContainsKey(culture))
            &lt;span style="color: blue;"&gt;return&lt;/span&gt; text;
 
         &lt;span style="color: #2b91af;"&gt;String&lt;/span&gt;[] fields = text.Split(&lt;span style="color: #a31515;"&gt;'.'&lt;/span&gt;);
 
         &lt;span style="color: #2b91af;"&gt;JToken&lt;/span&gt; jToken = _dictionary[culture];
 
         &lt;span style="color: blue;"&gt;for&lt;/span&gt; (&lt;span style="color: blue;"&gt;int&lt;/span&gt; i = 0; i &lt; fields.Length; i++)
         {
            jToken = jToken[fields[i]];
 
            &lt;span style="color: blue;"&gt;if&lt;/span&gt; (jToken == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
               &lt;span style="color: blue;"&gt;return&lt;/span&gt; text;
 
            &lt;span style="color: blue;"&gt;if&lt;/span&gt; (i == fields.Length - 1)
               &lt;span style="color: blue;"&gt;return&lt;/span&gt; jToken.ToString();
         }
 
         &lt;span style="color: blue;"&gt;return&lt;/span&gt; text;
      }
   }
}
&lt;/pre&gt;</description>
      <author />
      <comments>https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/114/IToolS-i18Next-utility.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">https://www.albertoschiassi.it/IToolS/tabid/94/EntryId/114/IToolS-i18Next-utility.aspx</guid>
      <pubDate>Mon, 09 Mar 2015 15:10:00 GMT</pubDate>
    </item>
  </channel>
</rss>