cap.9

27
9. Stringuri și Fișiere I/O (Intrare/Ieșire) TOPICS A. String controls and indicators B. String functions C. File I/O operations D. High-level File I/O VIs E. Low-level File I/O VIs F. Format text files for use in spreadsheets

Upload: costelgxa

Post on 21-Aug-2015

138 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Cap.9

9. Stringuri și Fișiere I/O (Intrare/Ieșire)

TOPICSA. String controls and indicatorsB. String functionsC. File I/O operationsD. High-level File I/O VIsE. Low-level File I/O VIsF. Format text files for use in spreadsheets

Page 2: Cap.9

A. Controale și Indicatoare String (Șir de caractere)

• Un rol aparte intre controalele/indicatoarele din mediul LabView il joacă cele pentru lucrul cu sir de caractere si tabele. Componentele din această categorie permit citirea/afisarea acestui tip de date.

• Un string este o secvență de caractere (ASCII) afișabile sau neafișabile (spațiu, tab, e.t.c.)• Utilizări – afișarea mesajelor, controlul instrumentelor, fișiere I/O• Controalele/indicatoarele string se găsesc în subpaleta Controls» »Text Control or Text

Indicator

Page 3: Cap.9

• Normal display

• Password display

• \ code display

• Hex display

Moduri de afișare a stringurilor

Page 4: Cap.9

• Funcţiile pentru valorile alfanumerice sunt grupate în subpaleta String a paletei de funcții. Mai frecvent utilizate sunt cele pentru transformarea caracterelor în majuscule (To Upper Case), pentru transformarea caracterelor în minuscule (To Lower Case), de calculare a lungimii unui şir de caractere (String Length), de compunere a unui şir din două şiruri distincte (Concatenate String), de identificare şi înlocuire a unui şir în cadrul altuia (Search and Replace String) etc.

B. Funcţii  String

• De asemenea, subpaleta String conţine un element String Constant utilizat pentru introducerea în diagramă a valorilor alfanumerice constante.

Page 5: Cap.9

• Funcţia String Length determină numărul de caractere dintr-o valoare alfanumerică. Sunt luate în considerare şi caracterele neafişabile (spaţiu, Tab, sfârşit de linie etc). Numărul de caractere de la ieşirea funcţiei este exprimat ca un număr întreg pe patru octeţi.

• Funcţia Concatenate Strings posedă un număr de intrări ce poate fi modificat de către utilizator prin dimensionarea simbolului funcţiei (în mod asemănător cu Compound Arithmetic). La ieşirea sa, funcţia generează o valoare alfanumerică obţinută prin concatenarea textelor de la intrările sale, în ordinea de sus în jos.

Page 6: Cap.9

• Funcţia String Subset extrage, din textul conectat la intrarea String, o porţiune de Length caractere începând de la caracterul aflat la poziţia Offset inclusiv (pentru primul caracter se consideră offset = 0). Dacă la intrarea Offset a funcţiei nu este introdusă nici o valoare, funcţia consideră că extragerea se va efectua începând cu primul caracter (valoarea implicită 0 a intrării offset). Dacă la intrarea Length nu este introdusă nici o valoare, funcţia consideră că extragerea se va efectua până la ultimul caracter inclusiv.

Page 7: Cap.9

• Funcţia Replace Substring şterge o porţiune din textul conectat la intrarea String şi introduce în locul respectiv textul conectat la intrarea Substring. Porţiunea înlocuită începe de la caracterul aflat pe poziţia Offset inclusiv şi conţine Length caractere. Intrarea Offset are valoarea implicită 0, iar intrarea Length are o valoare implicită egală cu numărul de caractere legat la intrarea Substring. Dacă la intrarea Substring nu se leagă nici o valoare, funcţia efectuează o ştergere a unei porţiuni, iar dacă la intrarea Length se leagă valoarea 0 funcţia efectuează, de fapt, o inserare a unei porţiuni.

Page 8: Cap.9

• Funcţia Search and Replace String caută textul Search String  în textul conectat la intrarea String, iar când îl găseşte, îl înlocuieşte cu textul conectat la intrarea Replace String. Căutarea are loc începând de la poziţia Offset a textului String. Dacă la intrarea Offset nu se conectează nici o valoare, căutarea are loc începând cu prima poziţie. Dacă la intrarea Replace String nu se conectează nici o valoare, atunci funcţia efectuează o ştergere (înlocuire cu text vid). Dacă la intrarea Replace All nu se conectează nici o valoare, atunci funcţia se opreşte după prima apariţie a textului Search String. Dacă la această intrare se conectează o valoare logică de tip True, funcţia efectuează înlocuiri pentru toate apariţiile textului Search String. Funcţia generează textul rezultat în urma înlocuirii la ieşirea Result String, iar la ieşirea Offset Past Replacement generează o valoare indicând poziţia caracterului aflat imediat după ultimul caracter înlocuit.

Page 9: Cap.9

• Funcţia Search/Split String caută textul conectat la intrarea Search String/char în textul conectat la intrarea String. Căutarea se efectuează începând cu poziţia Offset. Dacă textul căutat este găsit, funcţia împarte textul iniţial în două părţi, astfel: partea dinaintea textului căutat (Substring Before Match) şi textul căutat urmat de restul textului în care s-a făcut căutarea (Match + Rest Of String). Funcţia generează la ieşirea Offset Of Match poziţia în care a fost găsit textul căutat. Dacă textul căutat nu a fost găsit, ieşirea Substring Before Match conţine tot textul legat la intrarea String, iar ieşirea Offset Of Match are valoarea -1.

Page 10: Cap.9

• Funcția Format Into String convertește numere într-un șir de caractere (1.28→1.2800). Această funcție nu este folosită doar pentru conversia datelor numerice în date string. Mai pot fi convertite în stringuri următoarele elemente: căi de fișiere, enumerări, date Booleene. De exemplu, utilizând formatul %s un Boolean va fi convertit în "FALSE" sau "TRUE." Utilizând formatul %d, Booleanul va fi convertit în "0" sau "1." Similar, utilizând formatul %s, un Enum va fi convertit în textul său. Utilizând formatul %d, Enum va fi convertit în valoarea sa întreagă.

Page 11: Cap.9

Converting Numerics to StringsThe Build String Express VI concatenates an input string. If the inputs are not a string, the inputs are converted to a string based on the configuration of the Express VI. The Build String Express VI is available in the Functions»Output palette.

Page 12: Cap.9

Scan From String: Converts the input string containing valid numeric characters to individual numbers. Format string can specify multiple outputs with differing data types (numeric, Boolean, etc.). The function can be stretched out to add more output terminals.

Converting Strings to Numerics

Page 13: Cap.9

1. Să se realizeze un VI care să convertească un număr și un control slide (Trailer) într-un string și care să concateneze acest string cu un alt string (Header) astfel încât să rezulte un singur string de ieșire. VI-ul va determina de asemenea lungimea stringului de ieșire.

Exerciții

Page 14: Cap.9

3. Se va realiza un VI care să exemplifice modul de creare a unui tabel, în care fiecare coloană corespunde unei variabile diferite

2. Să se realizeze un VI care să convertească un număr într-un string și care să concateneze acest string cu alte stringuri astfel încât să rezulte un singur string de ieșire. VI-ul va determina de asemenea lungimea stringului de ieșire.

Page 15: Cap.9

C. Fișiere Intrare/Ieșire (I/O)

Operaţiile cu fişiere de intrare / ieşire (I/O) au ca scop principal stocarea datelor pe un suport şi preluarea datelor dintr-un fişier

Principalele operații ce pot fi realizate sunt:• Deschidere si închidere fisiere de date;• Citirea datelor din fișiere si scrierea datelor

în fisiere;• Mutarea si redenumirea fisierelor si

directorilor;• Crearea de directori și fișiere, specificați în

controlul cale; • Scrierea de stringuri, numere, vectori și

clustere în fișiere.Fișierele pot fi binare, text sau tabel.Scrierea/Citirea în fișierele de măsurare

LabVIEW au extensia “lvm” (*.lvm)

Page 16: Cap.9

Four Hierarchy Levels:

High-level File VIs

Intermediate File VIs and Functions

Advanced File Functions subpalette

Express VIs

There are 4 levels of file I/O hierarchy: High-Level Utility File VIs, Intermediate File I/O functions, Advanced File I/O and Express VIs functions.

Page 17: Cap.9

The high-level VIs handle all lower level functions transparently and provide a simplified means of error handling. If an error occurs, a dialog box appears showing the error.The Intermediate File I/O functions provide substantially more flexibility while still handling the lowest level of functionality for you. You can handle 80-90% of file I/O operations at this level. Encourage students to use the Intermediate File I/O functions for their applicationsThe Advanced File I/O functions manage all file I/O operations explicitly but are the most complex.

This is a great place to explain the difference between VIs and Functions. Functions are manilla/yellow, are the lowest level calls LabVIEW can make, and you do not have access to their block diagram or source code. VIs included in the functions palette have white backgrounds and if you look at their block diagrams you will see they are composed of functions.

Page 18: Cap.9

• Write to Spreadsheet File

• Read from Spreadsheet File

• Write Characters to File

• Read Characters from File

• Read Lines from File

D. High-level File I/O VIs

Page 19: Cap.9

E. Model de program pentru un Fișier I/O

Deschide/Crează/

Înlocuiește Fișier

Citește și/sau

Scrie în Fișier

Închide Fișier

VerificăErorile

Page 20: Cap.9

Salvarea (Scrierea) datelor într-un fișier

• Deschide/Crează/Înlocuiește, deschide fișierul existent test1.dat și generează fișierul identificator refnum și clusterul error, care este un mănunchi de date ce conține informații referitoare la erorile posibile.

• Write File scrie datele• Close File închide fișierul• Simple Error Handler verifică erorile

Page 21: Cap.9

Exemplu de scriere într-un fișier

• Open/Create/Replace opens the existing file TEST1.DAT and generates refnum and error cluster

• Write File writes the data• Close File closes the file• Simple Error Handler checks for errors

Page 22: Cap.9

Citirea datelor dintr-un fișier

• Open/Create/Replace opens the file

• Read File reads the specified number of bytes from the file

• Close File closes the file

• Simple Error Handler checks for errors

Page 23: Cap.9

F. Formarea stringurilor tabelare

• Tabelele sunt unelte foarte utile pentru manipularea și analiza datelor• Există mai multe formate pentru datele tabelare. Cel mai întâlnit este formatul

delimitat prin “tab”:– Coloanele sunt separate prin caracterul tab– Rândurile sunt separate prin caracterul end-of-line (enter)

• Tabelele sunt ușor de realizat utilizând VI-urile fișiere I/O din LabVIEW, cel mai utilizat fiind Format into File

Format Into File convertește orice număr într-un string și inserează caracterele “tab” si “end-of-line”. Ieșirea este un string în format tab delimitat compatibil cu multe programe tabelare.

Page 24: Cap.9

Crearea fișierelor tabelare

Tab End of Line

Page 25: Cap.9

Funcţii Expres pentru lucru cu Fişire I/O• În figura de mai jos se exemplifică utilizarea funcţiei de scriere a datelor într-un fişier (Write To

Measurement File). Se remarcă construcţia fişierului de date cu precizările referitoare la data simulării, numărul de eşantioane etc.

• LabVIEW Measurement• Writer_Version 2• Reader_Version 2• Separator Tab• Decimal_Separator ,• Multi_Headings Yes• X_Columns No• Time_Pref Relative• Operator Mihai• Date 2009/04/27• Time 11:01:18,363543• ***End_of_Header***•

• Channels 1• Samples 100• Date 2009/04/27• Time 11:01:18,363543• X_Dimension Time• X0 0,0000000000000000E+0• Delta_X 0,001000• ***End_of_Header***• X_Value Sine Comment• 0,000000• 0,063418• 0,126580• 0,189233• 0,251123• 0,312003• 0,371627• 0,429755• 0,486152• 0,540593• 0,592857• 0,642734• 0,690024• 0,734536• 0,776090

Page 26: Cap.9

• Exemplificarea citirii unui fişier de măsurători test_2.lvm şi vizaualizarea informaţiei acetuia este prezentată în figura de mai jos.

Page 27: Cap.9

Exercițiu: Să se realizeze VI-ul de mai jos, care stochează datele într-un fișier și care afișază valoarea medie, maximă și minimă a acestor date