Uno switch plug & play (PnP) può essere considerato come un terminale intelligente, che una volta alimentato e collegato agli altri dispositivi di rete, consente la comunicazione dei dati senza alcun intervento da parte dell'utente: i parametri delle porte, quali la velocità di trasmissione, il controllo di flusso (duplex e full duplex), sono inpostati automaticamente quando la porta dello switch è connessa ad un dispositivo di rete tramite un cavo, senza che l'utente abbia alcun controllo su questo processo.

L'impiego di un managed switch permette all'utente di scegliere i parametri ottimali per ciascuna porta, creando una rete completamente ottimizzata. Ad esempio se due dispositivi devono scambiarsi dati con prestazioni real time, è possibile riservare loro una maggiore larghezza di banda a scapito di stazioni di rete più lente. Allo stesso modo se è noto a priori che alcuni dispositivi non si scambieranno mai informazioni, è possibile programmare lo switch per evitare che inoltri i pacchetti anche ai dispositivi non interessati.

Infine, grazie al supporto del protocollo SNMP (Simple Network Management Protocol), questa categoria di switch semplifica il monitoraggio dello stato della rete: l'utente può ispezionare il numero ed il tipo di messaggi che transitano attraverso ciascuna porta ed individuare i pacchetti con errori, così da risalire ai dispositivi che causano i problemi di comunicazione.


Per jitter si intende il fenomeno della irregolarità del clock in un segnale digitale. È facile intuire che poiché in natura non esistono parametri “stabili” qualunque segnale digitale è affetto da jitter (così come qualunque segnale analogico è affetto da rumore).

Nelle reti, ed in particolare in quelle IP come Internet, il jitter si riferisce alla variazione statistica nel ritardo dei pacchetti, causata dalle code interne ai router congestionate.


OLE for Process Control (OPC) è una tecnologia utilizzata per semplificare il trasferimento dei dati tra i sistemi di controllo industriali, le interfaccie operatore, i sistemi di supervisione e sistemi software aziendali come i database. Fu sviluppato con l'intenzione di fornire una tecnologia standard che consentisse a sistemi di controllo differenti di interagire tra loro.

Prima dell'avvento di OPC, gli sviluppatori di applicazioni software erano costretti a sviluppare un driver di comunicazione per ciascun sistema di controllo con cui intendevano scambiare dei dati; OPC, invece, ha messo a disposizione un'interfaccia comune per interagire con differenti prodotti di controllo industriale, indipendentemente dall'hardware e dal software utilizzati nel processo.

Prosegue...

Alcuni linguaggi di programmazione, ad esempio java o C#, inizializzano automaticamente le variabili al momento della loro dichiarazione. Questo è un grande vantaggio perché solleva il programmatore da questo onere, che può diventare noioso e causa di errore soprattutto quando si a che fare con classi contenenti più di un costruttore.

Il C++, purtroppo, non fornisce questo particolare meccanismo, ma può essere emulato grazie ai template. Prima di proseguire è bene ricordare che i template sono una caratteristica del C++ che consente di realizzare del codice parametrico che viene espanso durante la fase di compilazione.

La questione diventa particolarmente noiosa con le strutture, poiché costringe il programmatore ad aggiungere in ogni costruttore una chiamata alla funzione memset per azzerarne tutti i campi.

typedef struct libro
{
  char titolo[100];
  char autore[50];
  int anno_pubblicazione;
  float prezzo;
} t_libro;
t_libro guida;
memset (&guida, 0, sizeof(guida));

Detto questo possiamo continuare e scrivere un template che possa essere utilizzato per effettuare automaticamente l'inizializzazione di una struttura:

template <typename>
struct Clean : public T
{
  Clean()
  {
    memset(this, 0, sizeof(T));
  }
};

Come si vede dal frammento di codice precedente, la struttura passata come parametro al template è estesa dalla classe Clean, che nel suo costruttore provvede ad azzerare se stessa e di conseguenza la classe base.

Vediamo un esempio di utilizzo.

int main()
{
  Clean<t_libro> libro;
  std::cout << libro.titolo << std::endl;
  return 0;
}

Calendario

<<  febbraio 2012  >>
lumamegivesado
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

View posts in large calendar

Archivio

Licenza d'uso
Eccetto dove diversamente specificato, i contenuti di questo sito sono rilasciati mediante:

Licenza Creative Common