Evoluzione della Strumentazione. Software Architecture. Multiplatform Compatibility

Documenti analoghi
IL LABVIEW LEZ_2. Corso di. Misure per la Automazione e la Qualità (Studenti Ingegneria Elettrica III anno Nuovo Ordinamento )

LabVIEW parte II. Ing. Gianfranco Miele November 3, 2010

IL LABVIEW LEZ_3. Corso di

LabView Parte 1 IL LABVIEW LEZ_1. Corso di. Misure per la Automazione e la Qualità (Studenti Ingegneria Elettrica III anno Nuovo Ordinamento )

Corso di Misure per l Automazione e la Produzione Industriale

Introduzione al linguaggio di programmazione LabVIEW

LabView IL LABVIEW LEZ_3. Parte 3. Corso di Strumentazione Virtuale. Corso di

Corso di. Misure per la Automazione e la Qualità (Studenti Ingegneria Elettrica III anno Nuovo Ordinamento ) IL LABVIEW LEZ_3

LabVIEW. Laboratory Virtual Instrument Engineering Workbench. Esempio. Misure Elettroniche 1. Introduzione. Differenze tra strumento stand-alone e VI

Laboratory Virtual Pannello frontale

LabVIEW (Laboratory Virtual Instrument Engineering Workbench)

L ambiente di lavoro di LabVIEW

LabVIEW - generalità

Programma del corso Elettronica 2

DEI DATI. Training per principianti RAPPRESENTAZIONE SCUOLA DI LABVIEW

Dipartimento di Ingegneria Industriale e dell Informazione. Acquisizione dati da sistemi di misura

Dispense delle Esercitazioni dei moduli:

Raccolta degli esercizi svolti in aula

Introduzione a LabVIEW

Dipartimento di Ingegneria Industriale e dell Informazione. Programmazione di un convertitore digitale/analogico

4. I moduli in Access 2000/2003

Università di Cagliari

Dipartimento di Ingegneria Industriale e dell Informazione. Realizzazione e programmazione di un convertitore digitale/analogico

Conversione Analogico/Digitale

FUNZIONI. Ivan Lanese

File binari e file di testo

Insert > Object > Chart

Ing. Simone Giovannetti

Docente Prof. Claudio De Capua Ing. Antonella Meduri

Dipartimento di Ingegneria Industriale e dell Informazione. Sistema per la misura del guadagno di corrente beta in transistori bipolari

Raccolta di tutorial Python #1: basi e Tkinter dal sito francescomilanese.com SOMMARIO

Dati due punti sul piano calcolare la loro distanza

L INTERFACCIA GRAFICA DI EXCEL

INTRODUZIONE A VISUAL STUDIO

Dispense delle Esercitazioni dei moduli:

Lab 01 Introduzione a Codelite

LabView: Corso Base pag. 7

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Fogli di Calcolo. Corso di Informatica. Fogli di Calcolo. Fogli di Calcolo. Corso di Laurea in Conservazione e Restauro dei Beni Culturali

Capitolo Tavola e grafico

Corso di Elettronica Industriale (CdL in Ingegneria Meccatronica, sede di Mantova) Acquisizione dati da sistemi di misura

Quando usare file di dati

COSTRUZIONE DI UN APPLICAZIONE

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

A B C LabVIEW. Sviluppo di Software per la Stazione di raggi cosmici EEE

Gestione della configurazione Input/Output PLC Cosa c'è di nuovo?

Corso di Access. Prerequisiti. Modulo L2A (Access) Struttura delle tabelle

Corso di Laboratorio di Sistemi Operativi

Sistemi Operativi FILE SYSTEM : INTERFACCIA. D. Talia - UNICAL. Sistemi Operativi 8.1

Introduzione alla programmazione

NOTE SULL USO DI ECLIPSE per la compilazione di programmi c

Rappresentazione dell informazione

Manuale del programma PROGPAR. Per comandare la scheda relè connessa alla porta pa... Page 1 of 5

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Strutture dati e loro organizzazione. Gabriella Trucco

Operazioni base di Input e Output

CONOSCENZE / CONTENUTI SVILUPPATI Tecnologie e Progettazione di sistemi elettrici ed elettronici 3 FEN

LE MASCHERE. Maschera standard. Maschera semplice. Questa maschera però non consente di nascondere alcuni campi e visualizza i record uno ad uno.

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Gestione di files Motivazioni

Implementazione di DFA in C

In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.

Introduzione a Visual Studio 2005

Informatica Applicata al Suono Tutorial Matlab

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

PROGRAMMA DIDATTICO CONSUNTIVO A.S. 2018/2019. CLASSE 3Ae. Unità di lavoro 1: I SISTEMI INFORMATICI

gdb: manuale di rapida consultazione

Le operazioni di Input e Output

Il linguaggio macchina

I.T.I.S. M. Faraday Dipartimento Tecnologico Programmazione Modulare PROGETTO DIDATTICO DELLA DISCIPLINA

Fondamenti di Informatica T-1 CdS Ingegneria Informatica. Introduzione agli ambienti di sviluppo MS Visual Studio 2005/2008/2010 CodeLite 6.1.

Gocce di Java. Gocce di Java. Tipi di dato primitivi. Pierluigi Crescenzi. Università degli Studi di Firenze

L AMBIENTE CODE BLOCKS E L IO

2 Lavorare con Eclipse

What is LabVIEW???? Pietro Giannone. Dipartimento di Ingegneria Elettrica Elettronica e dei Sistemi. Università degli Studi di Catania

Laboratorio di Calcolo Numerico Laboratorio 4: Grafici di convergenza e functions

Installazione di EasyPhp. Avviare EasyPhp. La finestra di amministrazione di EasyPhp

A. Ferrari Java: Stream e File

Fogli Elettronici: MS Excel

Capitolo Tavola e grafico

Operazioni su file di caratteri

Introduzione al linguaggio macchina. Istruzione l/m

Interfaccia del file system

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

OpenOffice Calc. Sommario. Operazioni fondamentali. Informatica a.a. 2013/2014 (Dip. Psicologia) OpenOffice Calc (4.1.0)

La formattazione dei dati

L AMBIENTE CODE BLOCKS E L IO

Streams e disk files

Compilatori. g ++ prog.c. che crea il file eseguibile a.out. È utile conoscere alcune opzioni di g ++

Javascript. - Corso Web Design - Media Dream Academy. Stefano Gaborin

Unix e comandi di base

Formazione a Supporto dell Inserimento Lavorativo. Elementi di Word avanzato. Docente Franchini Gloria

JavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript

Windows. La prima realizzazione di un ambiente grafico si deve alla Apple (1984) per il suo Macintosh. La gestione dei file conserva la logica del DOS

Transcript:

Misure Elettroniche Evoluzione della Strumentazione Strumento Stand Alone Strumento Virtuale (basato su PC) DISPLAY AND CONTROL Daniele Gallo Dipartimento di Ingegneria Industriale e dell Informazione Via Roma, 29 81031 Aversa (CE) E-mail: daniele.gallo@unina2.it 1 Register-mapped I/O Limitate capacità di espansione Funzionalità fisse Interfaccia esterna Definito dal Costruttore! Memory mapped I/O Processamento Dati Veloce Connessione Internet/intranet Online data logging/trending Online report generation Memoria Espandibile Definito dall Utente!!! 2 Software Architecture Multiplatform Compatibility LabVIEW Acquisition Analysis Presentation Instrument Drivers o Platform neutral o Leverage common technology o Migrate applications between platforms o Also available on Concurrent PowerMAX NI-488.2 NI-VXI NI-DAQ Serial Commands G Language è un linguaggio grafico dove i programmi sono scritti disegnando dei diagrammi a blocchi 3 4 1

LabView Librerie di funzioni Ambiente di sviluppo grafico: - Codice - Interfaccia utente Modulare Compilatore 32 bit Elevato numero di funzioni Librerie per la gestione della strumentazione Librerie per l'acquisizione dati Possibilità di includere routine in altro linguaggio o Calcolo, confronto, cicli di controllo o Operazioni su aggregati di dati (stringhe, array,...) o I/O su file o Gestione strumentazione (RS232, 488, VXI,...) o Acquisizione dati o Analisi (Generazione ed elaborazione segnali, Statistica, Fitting, Algebra lineare,...) o Comunicazione (DDE, TCP/IP, ActiveX) o Gestione applicazione (DLL, Timers, Sincronizzazione) 5 6 LabVIEW Startup Screen Virtual Instrument (VI) Il Front Panel Il Block Diagram L icona/connettore 7 8 2

Il Front Panel Elementi del Front Panel Icona/Connettore E l interfaccia utente dell applicazione Contiene: - Controlli (input) - Indicatori (output) Toolbar Controllo numericol Controllo Knob Legenda Etichetta Indicatore Chart 9 10 Caratteristiche di controlli e indicatori Il Block Diagram - E il codice sorgente dell applicazione (in Linguaggio G) - Controlli e indicatori del pannello appaiono come Terminali - Nodi o funzioni: ricevono dati dai connettori di ingresso e forniscono dati su quelli in uscita Impostare il range di valori Impostare il formato di rappresentazione 11 12 3

Elementi del Block Diagram Dataflow programming Indicatore Terminale Un nodo è eseguito quando i dati sono disponibili a TUTTI i suoi terminali di ingresso Un nodo fornisce i dati ai suoi terminali di uscita quando è terminata la sua esecuzione Se non esiste dipendenza tra due nodi, l ordine con cui verranno eseguiti non è prevedibile! Controllo Terminale Costante numerica 13 Nodo Somma 14 Il modello di programmazione LabView è... Data driven e non è... Dataflow programming Un filo collega un unica sorgente di dati con uno o più nodi Il colore e lo spessore del filo individuano il tipo di dato Scalar Array 1D Array 2D Control driven Event driven Object oriented Numeri Booleani Stringhe Arancione (floating point) Blu (interi) Verde Viola 15 16 4

Tipi di dato numerici L ambiente di sviluppo: Le palette Palette delle Funzioni (Diagramma) Palette dei Controlli (Pannello) 17 18 L ambiente di sviluppo: la Toolbar Control and Function Palettes Controls Palette (Panel Window) Functions Palette (Diagram Window) Trova Debugging Stop Continuous Run Run Livello Superiore Opzioni di visualizzazione 19 20 5

L ambiente di sviluppo: i Tool Combinazioni di tasti Tastiera: Tab Spazio Operating: Inserimento dati Positioning: Posizionamento e ridimensionamento Labeling: Gestione etichette Wiring: Collegamento (nel Block Diagram) Object pop-up: Menu dell'oggetto Scrolling: Scorrimento della finestra Breakpoint: Inserimento stop (debug) Probe: Visualizzazione dati nei fili (debug) Color copy: Copia di un colore Coloring: Per colorare un oggetto <Ctrl-R> Esegue il VI <Ctrl-E> Mostra pannello/diagramma <Ctrl-H> Finestra di context help <Ctrl-B> Cancella fili interrotti <Ctrl-U> Riordina Tutto <Ctrl-F> Cerca oggetto o testo <Ctrl-Space> Cerca funzione <Shift> Incremento/spostamento veloce 21 22 Tecniche di debugging SubVI Click sulla freccia spezzata: Info sull errore Highlighting button: Esecuzione animata Probe: Mostra il valore dei dati mentre scorrono lungo i fili Breakpoint: ferma l esecuzione quando i dati sono disponibili sul filo Un VI può essere usato nel Block Diagram di un altro VI di livello più alto Nel VI chiamante, un SubVI è rappresentato con la sua icona Single Step: Esecuzione passo-passo Step Over: Esecuzione passo-passo, non entra nei nodi Step Out: Esecuzione passo-passo, esce dai nodi nei quali entrato 23 24 6

Realizzazione di un SubVI Disegno dell icona Associazione di controlli e indicatori alle caselle del connettore Salvataggio su disco Chiamata ad un SubVI Functions >> Select a VI Trascinare l icona sul diagramma chiamante 25 26 Connessioni di un SubVI La struttura Case o o Required Recommended " Solo un sottodiagramma viene eseguito " Il valore passato al selettore determina il codice da eseguire " Il selettore può essere booleano, numerico o stringa o Optional Selettore booleano: if...then...else 27 28 7

La struttura Case Menu di scelta " Con selettori di tipo numerico o stringa si possono gestire scelte multiple " Add Case dal menu di contesto per aggiungere nuove scelte " Un Case deve essere quello di default " I controlli List & Ring associano un intero ad una voce selezionabile 29 30 Ingressi ed uscite del case (tunnel) Il ciclo while Da Functions >> Structures Qui va il codice da iterare Tunnel di uscita Iteration terminal Ripetere? Conditional terminal " In TUTTI i case devono essere collegati TUTTI i tunnel " Il ciclo termina quando si fornisce FALSE al conditional terminal " Il codice è eseguito almeno una volta " L'iteration terminal dà il numero di iterazioni raggiunto 31 32 8

Ciclo while: esempio Label Waveform chart Legenda Palette Aggiornamento: " Strip chart " Scope chart " Sweep chart 33 34 Visualizzazione con waveform chart Tipi numerici e conversioni " Interi con segno: I8, I16, I32 " Interi senza segno: U8, U16, U32 " In virgola mobile: SGL (32), DBL (64), EXT " Complessi Coercion dot I 16 DBL DBL Ad ogni iterazione il waveform chart riceve uno scalare 35 36 9

Proprietà di controlli e indicatori Comportamento dei controlli booleani Representation (tipo numerico) Numero di cifre e notazione Range ( o autorange ) Label e caption Per i waveform chart: Description History length Update mode Display sincrono Opzioni grafiche (colori, griglia,...) 37 Switch - Commuta per pressione e rilascio Latch Ritorna nello stato di default quando viene letto dal diagramma " When pressed " When released " Until released 38 Temporizzazione Ciclo while temporizzato Esempio: in un loop while si aggiorna un waveform chart: " 50000 cicli / s senza synchronous display " 100 cicli / s con synchronous display Esecuzione di azioni ad intervalli prestabiliti Impegno limitato di risorse Adeguamento ai tempi di risposta dell'utente Sono valori effettivi? 39 40 10

Funzioni di attesa Funzioni di attesa 41 42 Grafici multiple plot Shift Registers Trasferiscono dati da una iterazione alla successiva Si inseriscono con un right-click sul bordo del loop Il terminale destro conserva il dato alla fine della iterazione Il terminale sinistro fornisce il dato alla iterazione successiva Bundle (nella palette Functions >> Cluster): assembla i suoi ingressi in un unico cluster Un cluster è una struttura che raccoglie più elementi in un nuovo tipo di dato Inizializzazione Da passo precedente Per il prossimo passo 43 44 11

Shift Registers: esempio Shift Registers 1 loop prima 2 loop prima 3 loop prima L'ultimo valore va passato qui Si possono aggiungere altri shift register per ottenere valori di iterazioni precedenti 45 46 Esempio: Running average Il ciclo for Numero di iterazioni da eseguire Numero corrente di iterazioni Esegue il codice al suo interno un numero prestabilito di volte 47 48 12

Arrays Controlli e indicatori per gli array " Collezioni di elementi (dati) dello stesso tipo " Una o più dimensioni, fino a 2 31 elementi per dimensione " Si accede agli elementi con un indice per dimensione " Il primo elemento ha sempre indice 0 1. Selezionare Array dalla palette dei controlli 2. Inserire un controllo del tipo desiderato nella Array Shell Indice 0 1 2 3 4 5 6 7 8 9 array di 10 elementi 1.2 3.2 8.2 8.0 4.8 5.1 6.0 1.0 2.5 1.7 Array bidimensionale 0 1 2 3 4 0 1 2 3 4 5 6 Add Dimension per 2D arrays 49 Procedura analoga per le costanti array 50 Autoindexing Creazione di array 2D Il loop accumula l'array al suo margine 1D array # righe 0 1 2 3 4 5 Auto-Indexing abilitato (Default nel For) 1D array 0 1 2 3 4 5 # colonne 2D array 0 1 2 3 Auto-Indexing disabilitato (Default nel While) Scalare risultato dell'ultima iterazione Il loop interno crea gli elementi di ogni riga Il loop esterno sovrappone le righe 51 52 13

Autoindexing e lettura di array Funzioni per gli array Non deve essere impostato direttamente Array 7 3 2 5 4 Number of Elements element dimension size Initialize Array initialized array Il ciclo viene eseguito per un numero di volte pari al numero di elementi dell'array collegato 10 4 10 10 10 10 53 54 Funzioni per gli array Funzioni per gli array array Elemento Array con il nuovo elemento accodato array index(0) length subarray Array 3 2 5 Elemento 7 Array 1 4 2 Build Array 3 2 5 7 1 4 2 La funzione Build Array resizable Nuovo array Array 1 2 7 3 2 5 8 Index 2 Length 4 Array Subset 7 3 2 5 Array Subset 1D Array 1D Array 3 2 5 1 4 2 1D Array 3 2 5 1D Array 1 4 2 3 2 5 1 4 2 2D Array 3 2 5 1 4 2 1D Array Dal menu di contesto: change to element change to array array index Index Array element Array 3 2 5 7 1 4 2 Index 2 2D Array 3 2 5 1 4 2 Row Index 0 Column Index 2 Element 5 Element 5 55 56 14

Funzioni per gli array Polimorfismo Index array Estrae una colonna 0 Ingressi delle funzioni di tipo diverso " Comportamento dipendente dal tipo degli ingressi Tutte le funzioni aritmetiche sono polimorfiche 0 0 Combinazione Scalare + Scalare 5 2 7 Risultato Scalare Estrae una riga Array + Scalare 1 4 2 2 3 6 4 Array Dal menu di contesto della Index Array: " Add dimension " Disable input Array + Array 3 2 5 1 4 2 Array + Array 1 4 2 3 2 5 7 4 6 7 4 6 7 Array Array 57 58 I Cluster Altre funzioni per i Cluster " Combinano più strutture dati in un nuovo tipo dati (Record in C) " Possono contenere elementi di tipo diverso " Si possono definire costanti, controlli e indicatori di tipo Cluster " L'ordine degli elementi è importante Modifica di un elemento di un Cluster: Unbundle 59 60 15

Waveform Graph Single-Plot Waveform Graph Tracciano un array di valori numerici rispetto all'indice 1D Array Terminale del Waveform Graph (è un Array 1D) Legenda 1D Array Terminale del Waveform Graph (è un Cluster) Palette " X0 è il valore iniziale per le ascisse " deltax è la distanza orizzontale tra i punti del grafico 61 62 Multiple-Plot Waveform Graph XY Graph Traccia un array rispetto ad un altro Build Array 1D Arrays 2D array Terminale del Waveform Graph (è un Array 2D) Single-plot XY Graph Multi-plot XY Graph clusters cluster array Terminale del Waveform Graph (è un Array di Cluster) 63 64 16

La struttura Sequence Sequence Locals " I sottodiagrammi vengono eseguiti uno dopo l'altro " Consente di fissare l'ordine di esecuzione di VI non dipendenti Passano dati da un frame al solo frame successivo Si definiscono sul bordo della Sequence Dati non disponibili Sequence local in uscita dal Frame 1 Dati disponibili 65 66 Formula Node Formula Node: Conditional Branching - Implementazione di equazioni complicate - Variabili create sul bordo - I nomi delle variabili sono case sensitive - Ogni istruzione deve terminare con un punto e virgola (;) - <Ctrl-H> per l'elenco delle funzioni disponibili if (x >= 0) then y = sqrt(x) else y = -99999.0 end if Conditional Operator False Condition X*X Condition True Condition 67 68 17

Formula Node: Variabili temporanee " Si definiscono come uscite, ma non vengono collegate Esempio In un VI sono presenti due cicli while eseguiti parallelamente Si vogliono fermare entrambi alla pressione di un singolo bottone Soluzioni sbagliate: 69 70 Soluzione corretta: Note sulle variabili locali Terminale del controllo (tasto stop ) Variabile locale configurata come read local (sorgente dati) associata al controllo Come creare una variabile locale: Tasto destro del mouse sul terminale e Create >> Local Variable oppure Dalla palette funzioni Structures >> Local Variable ; selezionare poi (tasto destro sulla variabile) con Item Select il controllo/indicatore Un controllo/indicatore al quale si vuole associare una variabile locale deve avere una label, che diventerà il nome della variabile stessa La scrittura su una local aggiorna il corrispondente controllo/indicatore La lettura da una local legge il valore corrente del corrispondente controllo/indicatore Infine, scegliere se si vuole leggere o scrivere da/verso la variabile 71 72 18

Inizializzazione di controlli Tramite le locals è possibile dare valori iniziali ai controlli Le inizializzazioni di tutti i controlli possono essere raccolte in una sezione apposita del codice (startup) Se necessario, i valori di inizializzazione si possono caricare da file. Una subpalette di funzioni ( Configuration file ) permette la gestione di file di configurazione Variabili globali (globals) Le variabili globali hanno usi simili alle locals, ma sono accessibili da altri VI Impieghi: Controllo dell'esecuzione di uno o più VI da un altro VI Condivisione di dati tra più VI Sono un tipo particolare di VI: I dati sono memorizzati negli elementi del pannello Non hanno diagramma a blocchi Write Global Read Global 73 74 Creare ed usare variabili globali Note sull'uso di variabili locali e globali Palette Structures >> Global Variable Dal suo menu di contesto Open Front Panel Inserire nel pannello gli elementi necessari (label obbligatoria) Salvare il VI - variabile globale Nel diagramma del VI di partenza, dal menu di contesto della variabile globale: Select Item per scegliere l'elemento Da altri VI, la variabile globale è accessibile tramite la voce Select a VI... della palette delle funzioni 75 Inizializzare ogni variabile globale (scrivendovi) prima di leggerne il contenuto. In assenza di inizializzazione, sarà restituito un valore di default. Le variabili locali e globali sono un'eccezione al dataflow programming Rendono il diagramma più difficile da capire L'accesso ai dati in una variabile è più lento Attenzione ai casi di race condition! Risultato x = x * 5 x = x + 2 oppure x + 2 x = x * 5 Usare le variabili solo quando non esistono altre possibilità 76 19

Property nodes (o attibute nodes) Creazione di un property node Consentono di accedere in lettura e scrittura alle proprietà di un elemento del pannello (non al contenuto) Esempi: Il colore del testo di un indicatore numerico La condizione di abilitato/disabilitato di un bottone Levocidiunring control Scale e cursori di un chart Posizione e dimensioni di un controllo/indicatore Dal menu di contesto di un elemento del pannello o del suo terminale: Create >> Attribute Node Usare l'operating tool per scegliere l'attributo 77 78 Usare i property nodes Scegliere (tasto destro) se leggere o scrivere da/verso l'attributo Altre proprietà si possono aggiungere ridimensionando il property node Il colore aiuta ad individuare il tipo di dato Alcune proprieà sono clusters - usare Bundle e Unbundle Ordine di valutazione degli attributi: dall'alto verso il basso Usare la help window (Ctrl-H) per avere informazioni su un attributo Attributi comuni di controlli/indicatori Visible è visibile Disabled se = 2 non è modificabile dall'utente (aspetto inalterato) se = 1 è non modificabile e grigio se = 0 è modificabile Key Focus possiede il cursore Position cluster posizione (left e top): pixel dall'angolo in alto a sx Blinking lampeggio intermittente Format tipo enumerato: decimale, scientifico,... Precision numero di cifre decimali... Inoltre, possono essere lette/modificate tutte le stringhe di un controllo/indicatore (label,caption,...) ed i colori delle sue varie parti L'elenco degli attributi cambia a seconda del tipo di controllo/indicatore 79 80 20

Gestione di un menu Le Stringhe Inizializzazione Menu Fine? No Sì Scelta? No Sì Proc1 Proc2 Proc3 Fine Una stringa è una sequenza di caratteri Ogni carattere ha una corrispondente codifica numerica in byte (8 bit) secondo lo standard ASCII I primi 32 dei 256 caratteri ASCII non sono visualizzabili (controllo) Gli ultimi 128 caratteri costituiscono il set esteso Impieghi: visualizzazione di messaggi, I/O su file, controllo di strumentazione Esistono controlli e indicatori di tipo stringa Stringa: V D C - 1 2. 4 5 6 # ASCII: 86 68 67 32 45 49 50 46 52 53 54 81 82 Display Modes per gli indicatori stringa Funzioni per le stringhe Normal display \ code display Backslash codes per alcuni caratteri di controllo: String Length String Length = 20 Password display Hex display \b backspace \s spazio \r return (CR) \n new line (LF) \t tab Concatenate Strings Strings The quick brown fox jumped over the lazy dog. Concatenated String 83 84 21

Funzioni per le stringhe Funzioni per le stringhe String Subset String Length Offset DC Substring Format Into String ( è resizable ) Match Pattern quick brown fox Scan From String ( è resizable ) 85 86 Le stringhe di formato Funzioni per l' I/O su File " Indicano il formato, il tipo di dato, il numero di caratteri, l'allineamento ed il numero di cifre decimali (per i floating point) con cui visualizzare un dato " Si usano come nella funzione printf()del linguaggio C " Esempio: Risultato = %.1f %d intero con segno %u intero senza segno %s stringa %f floating point (15.012)...... " Dal menu di contesto, Edit Format String apre una finestra di dialogo che facilita la preparazione della stringa di formato 87 Risultato = 12.5 88 Alto livello: Read/Write to spreadsheet file Read/Write characters to file Read lines from file Read/Write to binary file Livello intermedio: Open, Read, Write, Close Livello avanzato: Gestione directory Dipendenti dal S.O. File dialog 22

Funzioni per i file di livello intermedio Scrittura su file Funzioni di livello intermedio Gestione diretta delle operazioni sui file: Apertura del file: Open/Create/Replace File Lettura o scrittura: Read File e Write File Chiusura del file: Close File Gestione errori File path: il formato dipende dal s.o. function: modalià di apertura Refnum: identifica il file nel seguito error: cluster x gestione errori E'un array di byte (8 bit) 89 90 La Read File per default restituisce stringhe Lettura da file Funzioni di livello intermedio Lettura da file Funzioni di livello intermedio Costante byte Array di byte Il contenuto di un file può avere diverse rappresentazioni 91 Il tipo di dato connesso al Byte stream type fissa il tipo degli elementi dell'array in uscita dalla Read File Analogamente, la Write File è una funzione polimorfica 92 23

Gestione errori Funzioni di livello intermedio Lettura da file: condizione di fine file (EOF) Funzioni di livello intermedio Non appena chiamata, ogni funzione controlla il connettore error in; Se trova status = True, significa che a monte si è verificato un errore: non esegue alcuna operazione e termina; Se si verifica un errore durante la sua esecuzione, error out = True. Error Cluster: C è stato errore? Numero associato all'errore E' possibile usare il campo Code del Cluster di errore per rilevare la condizione di raggiunta fine del file Current: Legge il prossimo byte a partire dalla posizione corrente Count: Numero di byte da leggere ad ogni chiamata In quale VI si è verificato? 93 94 File di testo e file binari a = 1.234e-5 b = 200 z=false Un file di testo è una sequenza di stringhe di caratteri ASCII delimitate da sequenze di fine linea (CR+LF): a = 1.234e-5<CR><LF>b = 200<CR><LF>z=FALSE... Facilmente interpretabile Scambio dati con altre applicazioni (fogli elettronici o word processor) La rappresentazione dei valori numerici è a lunghezza variabile L'accesso ai dati deve essere sequenziale In un file binario la codifica dei dati dipende dalla particolare applicazione La rappresentazione dei valori numerici è a lunghezza fissa, e richiede un numero minore di byte L'accesso può essere casuale 95 File di tipo Foglio Elettronico (Spreadsheet) I dati sono organizzati in righe e colonne Le colonne sono separate da un delimitatore (TAB) Le righe sono separate da sequenze new line (CR+LF) File: 0<TAB>0.4258<CR><LF> 1<TAB>0.3073<CR><LF> 2<TAB>0.9453<CR><LF> 3<TAB>0.964<CR><LF> 4<TAB>0.9517<CR><LF> Nel foglio elettronico: 96 24

Scrittura su spreadsheet Con funzioni di livello intermedio Funzioni di alto livello per i file Write to Spreadsheet File Read from Spreadsheet File Write Characters to File Read Characters from File Read Lines from File 97 Ora la Write File scrive stringhe (polimorfismo) Effettuano direttamente le operazioni più frequenti di I/O su file di testo Aprono e chiudono il file (non deve farlo il chiamante) Nel loro diagramma a blocchi chiamano le funzioni di livello intermedio 98 Scrittura su spreadsheet Con funzioni di alto livello Lettura su spreadsheet Con funzioni di alto livello 0,00\t0,35\r\n1,00\t0,19\r\n2,00\t0,28\r\n3,00\t0,29\r \n Autoindexing abilitato Stringa rimanente La funzione Write to Spreadsheet File accetta in ingresso array 1D e 2D Se non specifica un nome di file, si apre una finestra di dialogo Apri file.. Si può specificare il carattere delimitatore (TAB per default), trasporre l'array 2D, aggiungere i dati ad un file esistente (append) 99 100 25

Lettura su spreadsheet Con funzioni di alto livello Gerarchie di Sub VI Altre funzioni di alto livello: Write Characters to File: Scrive una stringa di caratteri in un file Read Lines from Files: Legge un numero specificato di linee da un file Binary File VIs: 4 funzioni per la lettura/scrittura di array di I16 o SGL su file 101 102 LabView project LabView DAQ MX 103 104 26

LabView DAQ MX 105 27