Sunteți pe pagina 1din 166

UNIVERSITATEA DIN PETROŞANI

CATEDRA AUTOMATICĂ, INFORMATICĂ APLICATĂ


ŞI CALCULATOARE

INTERFEŢE UTILIZATOR
NOTE DE CURS

TITULAR CURS: Conf.univ.dr.ing. NICOLAE PĂTRĂŞCOIU


Laborator: Asist.drd.ing. ADRIAN TOMUŞ

PETROŞANI
2006 - 2007
Cap.1.

Introducere

1.1. Definirea interfeţelor utilizator


Interfaţa utilizator (User Interface, UI) reprezintă o mulţime de elemente prin
intermediul cărora omul reprezentând utilizatorul intră în contact cu un sistem simplu
reprezentat de o maşină, un dispozitiv, program sau un sistem complex format dintr-un
ansamblu de maşini, dispozitive sau programe.
Orice interfaţă utilizator are două componente esenţiale:
9 intrări prin intermediul cărora utilizatorul poate să acţioneze asupra sistemul
9 ieşiri prin intermediul cărora sistemul produce efectele acţiunii utilizatorului
Pentru a lucra cu un sistem utilizatorul trebuie să poată controla acest sistem precum şi
să poată face permanent o evaluare a stărilor acestuia.
De exemplu la conducerea unui automobil şoferul utilizează volanul pentru controlul
direcţiei, pedalele de acceleraţie şi frână precum şi maneta schimbătorului de viteze pentru
controlul vitezei automobilului. Şoferul îşi dă seama despre direcţie privind prin parbrizul
automobilului şi primeşte informaţii exacte despre viteza citind vitezometrul automobilului. În
acest caz interfaţa utilizator a automobilului este în totalitate formată din instrumentele pe
care şoferul le poate utiliza pentru a efectua operaţiile de conducere şi menţinere în limite
normale de funcţionare a automobilului.
Termenul de interfaţă utilizator este cel mai adesea folosit în contextul utilizării unui
sistem de calcul sau al unui echipament electronic. Interfaţa utilizator a unui sistem mecanic,
a unui vehicul sau a unei instalaţii industriale poartă, de regulă, denumirea de interfaţă om –
maşină (Human – Machine Interface, HMI). Şi acest termen provine din termenul original
MMI (Man – Machine Interface), abreviere care însă are acum alte semnificaţii cum ar fi de
exemplu Management and Manufacturing Information. Oricare din cele două abrevieri se
referă însă la “stratul” de separare dintre om şi maşina propriu-zisă.
Adesea un sistem poate să aibă mai multe interfeţe utilizator în funcţie de tipul sau
natura utilizatorului ce foloseşte acest sistem prin intermediul interfeţei utilizator. Astfel de
exemplu in cazul unei baze de date privind structura de personal a unei firme interfaţa
utilizator este optimizată prin limitarea numărului de funcţii pentru şeful serviciului de
personal şi trebuie să conţină toate funcţiile privind actualizarea şi menţinerea acestei baze de
date pentru operatori.

1.2. Caracteristicile interfeţelor utilizator


Proiectarea unei interfeţe utilizator pentru un anumit sistem are efect asupra mulţimii
de acţiuni pe care ulterior utilizatorul acelei aplicaţii trebuie să le efectueze atât pentru a
furniza parametrii de intrare ai sistemului cât şi pentru a interpreta datele sau rezultatele
obţinute de la sistem.
Aplicabilitatea sau utilizabilitatea este o caracteristică prin intermediul căreia
proiectarea unei interfeţe utilizator specifice unui anumit sistem sau aplicaţie este în
concordanţă cu psihologia utilizatorului, reprezentând gradul de înţelegere din partea
utilizatorului precum şi cu fiziologia utilizatorului reprezentând facilităţile oferite pentru
uşurinţa manipulării funcţiilor acestei interfeţe. Această caracteristică exprimă şi gradul prin
care interfaţa utilizator poate fi considerată efectivă, eficientă şi satisfăcătoare faţă de cerinţele
impuse prin proiectare.
Aplicabilitatea este cea mai importantă caracteristică a unei interfeţe utilizator dar este
asociată şi cu o altă caracteristică şi anume funcţionalitatea acesteia. Aceasta descrie cum
interfaţa poate fi folosită de utilizator astfel încât să fie atinse cu eficienţă obiectivele impuse
de contextul utilizării acesteia.

1
În aplicaţiile din domeniul tehnologiei informaţiei (IT) sau a interacţiunilor om –
calculator interfaţa utilizator este un program de calculator prin intermediul căruia utilizatorul
primeşte informaţii sub formă grafică, text sau audio privind desfăşurarea acţiunii şi de
asemenea prin intermediul căruia utilizatorul controlează cu ajutorul tastaturii, mouse-ului sau
ecranului sensibil (touchscreen) derularea acţiunii.
Ţinând seama de această definire interfeţele utilizator cele mai utilizate în domeniul IT
sunt:
1. Interfeţe utilizator grafice (Graphical User Interfaces, GUI) care acceptă stabilirea
parametrilor de intrare prin intermediul dispozitivelor de tip tastatură şi mouse şi
generează rezultate sub formă grafică pe monitorul calculatorului. Există principii
prin intermediul cărora se realizează proiectarea interfeţelor utilizator grafice:
i. interfeţe realizate prin proiectare orientată pe obiect (Object – Oriented
User Interface, OOUI)
ii. interfeţe realizate prin proiectare orientată pe aplicaţie
2. Interfeţe utilizator bazate pe tehnologie Web (Web – Based User Interfaces) care
acceptă parametrii de intrare de intrare de tip text şi generează ieşiri sub formă de
pagini Web ce pot fi distribuite prin Internet şi văzute de un utilizator prin utilizarea
unui program Web Broser. Astfel de interfeţe pot fi implementate în medii de
programare precum Java, AJAX, Microsoft.NET sau alte medii care permit
controlul în programe separate.
3. Interfeţe utilizator bazate pe linii de comandă (Command – Line Interfaces) în care
utilizatorul furnizează parametrii de intrare ai sistemului prin intermediu unui şir de
caractere cu ajutorul tastaturii iar sistemul răspunde cu informaţii de tip text pe
monitorul calculatorului.
4. Interfeţe utilizator sensibile la atingere (Tactile Interfaces sau Touch Interfaces)
care sunt interfeţe de tip grafic utilizând un display sensibil la atingere care va
reprezenta atât dispozitivul de intrare cât şi dispozitivul de ieşire. Sunt utilizate de
regulă la elementele de automatizare şi conducere a proceselor cum ar fi automatele
programabile (PLC – urile)
5. Interfeţe utilizator cu atenţionare (Attentive User Interfaces) generează semnale de
atenţionare a utilizatorului şi nivelul şi gradul de detaliere al acestor semnale este
prestabilit de utilizator
6. Interfeţe utilizator de tip gest (Gesture interfaces) care sunt interfeţe utilizator de tip
grafic şi care acceptă ca intrări anumite mişcări efectuate de utilizator cu mâna sau
mouse – ul sau alt dispozitiv de tip pointer.
7. Interfeţe utilizator telefonice (Telephone User Interfaces) care acceptă intrări
generate de utilizator cu ajutorul tastaturii unui telefon transmise prin linia
telefonică şi generează ieşiri de asemenea de tip mesaj vocal retransmis tot prin
linia telefonică şi recepţionate la un telefon de utilizator.

Alte două caracteristici ale interfeţelor utilizator sunt modalitatea şi modul.


Modalitatea caracterizează comunicaţia între om şi calculator şi această comunicaţie
este bidirecţională. Este deci necesară stabilirea simţului prin care omul percepe informaţiile
de la calculator altfel spus simţurile umane sunt transformate în modalităţi de tip vedere sau
auz. Informaţiile de la calculator pot fi preluate prin vedere sau modalitate vizuală respectiv
prin auz sau modalitate auditivă.
Pe de altă parte este necesară stabilirea senzorilor sau a dispozitivelor prin care
calculatorul recepţionează intrările generate de utilizatorul uman, calculatorul putând fi
echipat cu o diversitate de senzori şi dispozitive care să îndeplinească această funcţie.
Modul este o caracteristică a interfeţei utilizator prin intermediul căreia sistemul
interfaţat reacţionează în diferite moduri în funcţie de starea sau setările pe care le are pentru
aceleaşi intrări. Cel mai cunoscut exemplu care să evidenţieze această caracteristică îl

2
reprezintă funcţia tastei “Caps Lock”, astfel în funcţie de starea acestei taste textul introdus
poate fi scris cu litere mici sau cu litere mari prin utilizarea aceloraşi taste de editare a textului
Dintre cele câteva forme de exprimare a interfeţelor utilizator prezentate anterior şi de
asemenea care să satisfacă cel mai bine condiţiile impuse prin caracteristicile acestora
interfeţele utilizator grafice (GUI) sunt cele mai utilizate

1.3. Evoluţia interfeţelor utilizator

Fig.1.1. Evoluţia în timp a interfeţelor utilizator

3
În fig.1.1 este prezentată o evoluţie în timp a interfeţelor utilizator, chiar dacă o astfel
de evoluţie este foarte greu de rezumat ţinând seama de particularităţile multiple ale diverselor
forme de exprimare a interfeţelor utilizator chiar şi luând în considerarea numai interfeţele
utilizator de tip grafic.
Părintele interfeţei om – maşină este considerat Douglas Englebart care a şi conectat

Fig.1.2. Prima interfaţă om – calculator


periferice de tip „typewriter” reprezentând o primă
formă a tastaturii de azi precum şi un dispozitiv cu
trei taste dispuse în partea superioară denumit „bug”
reprezentând o primă formă a mouse – ului de azi.
Pentru obiectele selectate pe ecran (tub catodic) “bug
– ul” lăsa pe ecran puncte luminoase pentru a marca
acţiunea respectivă.
A apărut perspectiva transmiterii de texte între
două sisteme şi această aplicaţie a fost dezvoltată de
firma Xerox care a introdus ferestrele în interfaţă,
mărginirea şi etichetarea acestora precum şi
posibilitatea de muta aceste ferestre pe ecran. Toate
aceste facilităţi ale unei interfeţe sunt cuprinse în
interfaţa Smalltalk. O variantă specifică procesării
documentelor reprezentând precursorul unui mediu de
tip „office” a deyvoltat-o tot firma Xerox sub forma
Fig.1.3. Interfaţa Smalltalk pachetului Xerox Star 8010 Document Processor prin
intermediul căruia a apărut şi posibilitatea transmiterii
documentelor printr-o facilitate de tip e-mail, disponibil în 1981 pentru suma de 17.000$.
Un pas important în realizarea interfeţelor a fost făcut odată cu apariţia firmei Apple
(fondată în 1979 într-un garaj de Steve Jobs şi Steve Wozniak care prin intermediul interfeţei
Lisa (fig.1.4) introduce de fapt conceptul de GUI care a fost completată ulterior prin primul
proiect Mcintosh. Noutăţile apărute constau în existenţa icoanelor prin intermediul cărora se

Fig.1.4. Interfeţele Lisa şi Mcintosh ale firmei Apple


4
poate realiza accesul la aplicaţii cu dublu – clic efectuat cu mouse – ul precum şi existenţa
meniurilor de tip pull – down. Este primul proiect care reprezintă o aplicaţie de tip grafică pe
calculator.
La începutul anilor ’80 multe firme din domeniu îşi dezvoltă pentru aplicaţiile
instalate pe sistemele proprii interfeţe specifice acestora, astfel în fig.1.5. sunt prezentate
câteva astfel de interfeţe cu care au fost dotate microcomputerele Tandy, Atari sau Comodore
64

Fig.1.5. Interfeţe
ale microcomputerele
Tandy, Atari sau Comodore 64

În această perioadă îşi face apariţia sistemul Windows versiunea 1.0 a cărui interfaţă a
fost iniţial denumită Interface Manager şi a reprezentat o compilaţie între interfaţele VisiOn şi

Fig.1.6. Primele interfeţe Windows, versiunea 1.0 respectiv 1.01


Microsoft Word for DOS, ulterior în 1985 prin versiunea 1.01 interfaţa a fost mult
îmbunătăţită. Elementele noi au fost reprezentate de formatul color, adăugarea barelor de
scroll, posibilitatea redimensionării ferestrelor, adăugarea unei bare de meniuri pentru fiecare
fereastră imediat sun bara de titlu a ferestrei. Prin varianta 2.0 lansată în 1987 Microsoft aduce
câteva îmbunătăţiri interfeţei cum ar fi posibilitatea suprapunerii ferestrelor eliminând
restricţia privind împărţirea ecranului între ferestrele aplicaţie precum şi posibilitatea de
minimizare/maximizare a ferestrelor, fig.1.6. În aceiaşi perioadă apare sistemul OS/2 a cărui
interfaţă (fig.1.7) la început era de tip text si a devenit grafică începând cu versiunea 1.2
5
Fig.1.7. Interfeţele sistemelor Windows 2.0 şi OS/2 1.2

La începutul anilo
anilorr ’90 mulţi dintre protagonişti încep să dispară aşa că pe
pe scenă rămân ca
protagonişti principali platformele Windows şi Mcintosh. Astfel popularitatea Windows
creşte odată cu versiunile 3.0 (1990) şi 3.1 (1992), fig.1.8. dar versiunea Windows 95
(fig.1.7.) definitivează calitatea de lider pentru Microsoft şi în domeniul interfeţelor utilizator
de tip grafic

Fig.1.8. Interfeţele sistemelor Windows 3.1 şi Windows 95


Windows Vista
reprezentând versiunea
“next generation” a
sistemului Windows,
(planificat a fi lansat în 30
ianuarie 2007) aduce noutăţi
prin transparenţa şi umbrele
adăugate obiectelor.
Reuneşte interfeţele
“Clasic” şi “Basic” ale
versiunilor anterioare

Fig.1.9. Interfaţa sistemului


Windows Vista

6
Dar interfeţe utilizator nu înseamnă numai interfeţele sistemelor de operare ci şi
interfeţe specifice diverselor aplicaţii, astfel în fig.1.10. sunt prezentate câteva exemple de
interfeţe utilizator de tip grafic (GUI) pentru aplicaţii specifice.

a) b)

c) d)

e) f)

Fig.1.10. Exemple de interfeţe grafice specifice aplicaţiei


a – interfaţa unei aplicaţii de tip carte de telefon
b – interfaţa unei aplicaţii de tip analiză şi procesare a datelor (The Science Analysis
Graphical Environment, SAGE )
c - interfaţa unei aplicaţii de tip control al unui sistem de poziţionare
d - interfaţa unei aplicaţii de tip proiectare asistată
e - interfaţa unei aplicaţii de tip vizualizare a rezultatelor obţinute prin prelucrare de date
f - interfaţa unei aplicaţii de tip instrumentaţie virtuală (LabView, LabWindows)

7
PARTEA I

LABWINDOWS/CVI

Cap.2
Introducere în LABWINDOWS/CVI

2.1. Prezentare LabWindows/CVI


LabWindows/CVI este un mediu de dezvoltare pentru programatorii în C, abrevierea
CVI provine la „C for Virtual Instrumentation” adică un mediu de programare C pentru
realizarea de instrumentaţie virtuală. Acest mediu de programare poate fi utilizat pentru
realizarea de următoare activităţi:
9 dezvoltarea interactivă de programe aplicaţie
9 realizarea de interfeţe utilizator de tip grafic, GUI
9 acces la biblioteci de funcţii pentru crearea aplicaţiilor de/pentru instrumentaţie
9 acces la un bogat set de unelte software pentru aplicaţii de tip achiziţii de date, analiză
şi prezentare
După instalare LabWindows/CVI va avea următoarele componente prezentate în
tabelul 1:

Tabelul 1
c:\...\CVI70\bin Fişiere cu bibliotecile LabWindows/CVI şi fişiere help
c:\...\CVI70\extlib Fişiere pentru utilizarea bibliotecilor LabWindows/CVI cu
compilatoare externe
c:\...\CVI70\fonts Fişiere cu font-uri necesare pentru operaşii grafice
c:\...\CVI70\include Fişiere de tip include asociate cu biblioteci
c:\...\CVI70\instr Module cu exemple de instrumente
c:\...\CVI70\redist Fişiere necesare redistribuirii aplicaţiilor
c:\...\CVI70\samples Coduri sursă pentru exemple de programe
c:\...\CVI70\sdk Fişiere pentru biblioteca Software Developer’s Kit (SDK)
c:\...\CVI70\toolslib Unelte de dezvoltare şi biblioteci adiţionale
c:\...\CVI70\tutorial Programe utilizate în exerciţii de tip tutorial
c:\...\CVI70\vxd Şabloane cu exemple de coduri vxd
c:\...\CVI70\wizard Fişiere utilizate în LabWindows/CVI wizard

În mediul de dezvoltarea LabWindows/CVI se pot edita, compila, realiza legături cu


biblioteci (link) şi depanare (debug) programe scrise în limbajul C. Pentru scrierea (editarea)
programelor se utilizează funcţii ce se găsesc bibliotecile de funcţii ale mediului de dezvoltare
LabWindows/CVI. Pe lângă acestea fiecare funcţie dispune de o interfaţă denumită “panoul
funcţiei” (function panel) prin intermediul căruia se poate executa funcţia şi genera codul de
apelare al acestei funcţii. Când se lucrează cu panoul funcţiei printr-un clic – dreapta pe acesta
sau pe un element al acestuia se poate accesa help – ul funcţiei, elementului, clasei sau
bibliotecii ce conţine acea funcţie.
Programele scrise în mediul LabWindows/CVI trebuie să respecte regulile specifice
limbajului de programare C. Pentru dezvoltarea de programe se pot utiliza modulele
compilatorului C pe obiecte, bibliotecile de legături dinamice (DLL – uri), biblioteci specifice
limbajului C şi driver – e ale instrumentelor utilizate, toate acestea în legătură cu fişierele
sursă C.
Puterea mediului LabWindows/CVI constă în bibliotecile acestuia, biblioteci ce conţin
funcţii necesare în toate fazele de dezvoltare a aplicaţiei şi aceste sunt:
¾ Data Acquisition Libraries (Achiziţii de date) ce conţine bibliotecile: IVI
(Interchangeable Virtual Instrument), GPIB/GPIB 488.2 (General Purpose Interface

8
Bus), NI-DAQmx şi Traditional NI-DAQ (National Instruments – Data AQuisition),
RS-232, VISA (Virtual Instrument Software Architecture) şi VXI (VME eXtensions
for Instrumentation, unde VME este un standard de magistrală introdus iniţial pentru
microcontrolerul Motorola 68000)
¾ Data Analysis (Analiză de date) ce conţine bibliotecile: pentru operaţii de formatare şi
intrare/ieşire, analiză şi analiză avansată
¾ Data Presentation (Prezentare a datelor) ce conţine bibliotecile pentru interfaţa
utilizator
¾ Networking and Interprocess Communication Applications (Aplicaţii pentru
comunicaţii de date) ce conţine bibliotecile: Dynamic Data Exchange (DDE), de
control al protocolului de transmisie (Transmission Control Protocol TCP), ActiveX
şi DataSocket
Componentele de lucru ale mediului LabWindows/CVI sunt următoarele:
¾ Biblioteci standard şi panouri funcţie interactive pentru următoarele componente
• GPIB
• RS-232
• Virtual Instrument Software Architecture (VISA), pentru realizarea de
arhitecturi pentru sisteme de achiziţie şi prelucrare a datelor
• Achiziţii de date
• Analiza datelor
• Transport Control Protocol (TCP), pentru controlul protocolului de transport
• DataSocket, pentru transferul de date între aplicaţii diverse
• Dynamic Data Exchange (DDE), pentru comunicaţii în Windows
• Fişiere de intrare/ieşire (I/O)
• Formatare date
¾ Editor şi ghid pentru interfaţă grafică cu biblioteci pentru construcţia, afişarea şi controlul
interfeţei utilizator de tip grafic
¾ Ghid şi biblioteci pentru controlul aplicaţiilor ActiveX
¾ Ghid şi biblioteci pentru crearea de drivere pentru instrumente IVI, pentru simularea şi
compatibilizarea acestora cu tipuri de instrumentaţie clasică
¾ Set de instrumente pentru drivere conţinând funcţii de înalt nivel şi interactive pentru
controlul de instrumente specifice
¾ Mediul de dezvoltarea ce conţine ferestre pentru administrarea proiectelor şi codurilor
sursă oferind facilităţi pentru editare şi depanare completă
Pentru programarea în mediul LabWindows/CVI sunt respectate reguli comune de
programare în oricare alt limbaj sau mediu de programare. În acest caz există posibilitatea de
a crea un proiect funcţional al aplicaţiei înainte de a începe programarea prin scriere de coduri
specifice. De asemenea este posibilă adăugarea de documentaţie şi comentarii pentru o
administrarea adecvată a aplicaţiei.
Mediul LabWindows/CVI oferă şi facilitatea de creare a unei interfeţe utilizator de
grafic prin utilizarea editorului interfeţei utilizator (User Interface Editor) pentru programele
aplicaţie create. Construirea acestei interfeţe grafice se poate realiza prin utilizarea funcţiilor
din biblioteca User Interface Library
LabWindows/CVI poate fi utilizat de asemenea pentru crearea de drivere pentru
instrumente şi instrumente virtuale
Mediul LabWindows/CVI are următoarele ferestre fiecare dintre acestea cu propria
bară de meniuri:
¾ Fereastra Workspace (Workspace Window) ce apare odată cu lansarea
LabWindows/CVI şi poate fi utilizată pentru deschiderea, editarea, construcţia, rularea şi
salvarea fişierelor de tip proiect (.prj). De asemenea poate fi utilizată pentru
deschiderea, editarea şi salvarea fişierelor de tip workspace (.cws). Un proiect conţine o

9
listă a fişierelor ce sunt utilizate într-o aplicaţie iar un fişier de tip workspace poate
conţine mai multe proiecte precum şi setările necesare construcţiei proiectelor;
¾ Editorul interfeţei grafice (User Interface Editor) pentru realizarea de interfeţe grafice cu
utilizarea de meniuri de tip pull – down, căsuţe de dialog, elemente de control pentru
introducerea parametrilor şi elemente de indicare a valorilor. Odată realizată o interfaţă
fişierul acesteia va fi salvat cu extensia (.uir);
¾ Fereastra sursă (Sourse Window) pentru crearea, editarea, rularea, depanarea şi salvarea
codului sursă;
¾ Fereastra de execuţie interactive (Interactive Execution Window) pentru execuţia unor
selecţii extrase din cod. Prin utilizarea acestei ferestre nu este necesară existenţa întregului
cod cum este cazul ferestrei sursă. De exemplu se pot executa secvenţe de program C fără
a declara o funcţie de tip main;
¾ Panouri ale funcţiilor (Function panels) utilizate pentru execuţia de funcţii extrase din
bibliotecile corespunzătoare şi pentru a insera coduri în fereastra sursă;
¾ Ferestre pentru afişarea variabilelor, tablouri, şiruri de caractere (Variables, Array
Display, String Display, and Watch windows) utilizate pentru verificarea şi depanarea
programelor. Pot fi observate valori ale variabilelor din program şi de asemenea pot fi
afişate tablourile şi variabilele de tip şir de caractere prin activarea comenzilor de oprire
condiţionată (breakpoints);
¾ Editorul arborescent al funcţiilor (Function Tree Editor) utilizat pentru construirea unei
structuri arborescente a fişierelor în panoul funcţiilor;
¾ Ferestre pentru editorul de panouri de funcţii (Function Panel Editor windows) utilizate
pentru construirea panourilor de funcţii;
¾ Editorul arborescent al funcţiilor de ajutor ferestre pentru editorul funcţiilor de panou de
ajutor (Function Tree Help Editor and Function Panel Help Editor windows) utilizate
pentru adăugarea de informaţii de tip ajutor pentru funcţiile de panou şi instrumentelor
Dezvoltarea de aplicaţii în mediul LabWindows/CVI poate fi făcută utilizând limbajul
de programare ANSI C şi este în concordanţă cu standardele ANSI X3.159-1989 şi ISO/IEC
9899:1990 pentru programarea în limbajul C. Bibliotecile LabWindows/CVI pot fi utilizate de
asemenea şi cu alte compilatoare sau linker – e.
Se poate utiliza LabWindows/CVI ca un simplu editor de text pentru scrierea
întregului program sau proiect, metodă relativ greoaie de dezvoltare a unei aplicaţii ce poate fi
însă simplificată prin folosirea panourilor de funcţii pentru rularea de funcţii şi inserarea
automată a codurilor acestora în program.
Un proiect conţine toate fişierele componente ale aplicaţiei şi în cel mai simplu caz
poate avea un singur fişiere sursă. O aplicaţie tipică reprezentând un proiect conţine mai multe
module reprezentând fişiere cod precum şi o interfaţă utilizator, aceasta fiind fişiere cu
extensia (.uir). Module reprezentând fişiere cod pot fi incluse ca fişiere sursă sau fişiere
compilate. Fişierele sursă pot fi depanate utilizând facilitatea mediului LabWindows/CVI care
realizează şi o identificare a erorilor în timpul rulării codurilor din fişierele sursă. Pentru a fi
incluse ca biblioteci sau obiecte în proiect fişierele trebuie să fie compilate utilizând pentru
aceasta fie compilatorul din LabWindows/CVI fie un alt compilator compatibil. Pentru a
reduce spaţiul de memorie utilizat un fişier sursă poate fi marcat astfel încât acesta să fie doar
compilat fără a fi verificat şi din punct de vedere al erorilor.
Prin utilizarea editorului interfeţei utilizator se pot crea obiecte (panouri, controale,
meniuri) care se utilizează în realizarea interfeţei utilizator şi se salvează după aceea cu
extensia (.uir). Aceste obiecte pot fi încărcate, afişate sau modificate în program utilizând
bibliotecile interfeţei utilizator. De asemenea pot fi specificate funcţii de tip callback ce vor fi
apelate la apariţia unui eveniment cu acţiune asupra acestor obiecte
Generatorul de cod LabWindows/CVI CodeBuilder generează codul C complet în
timpul compilării sau rulării unui fişier (.uir) creat sau editat de utilizator. Prin utilizarea
facilităţilor acestui generator de cod se simplifică operaţiile de scriere a codurilor şi de

10
asemenea se elimină erorile de sintaxă sau de scriere concomitent cu asigurarea consistenţei
codului sursă.
2.2. Fereastra Workspace (Workspace Window)
Fereastra Workspace (Workspace Window) este utilizată pentru deschiderea,
editarea, rularea şi salvarea fişierelor proiect (.prj) precum şi pentru deschiderea, editarea şi
salvarea fişierelor workspace (.cws), fişiere ce conţin setări care nu au influenţă asupra
modalităţilor de realizare a proiectelor cum ar fi de exemplu puncte de oprire condiţionată
(breakpoints). Un workspace poate conţine unul sau mai multe proiecte, acestea la rândul lor
reprezentând o listă a fişierelor necesare efectuării unei aplicaţii.
Fereastra Workspace conţine câteva dintre diversele componente ale mediului
LabWindows/CVI şi aici se poate lucra cu toate fişierele. De asemenea există posibilitatea de
a vedea ieşiri ca de exemplu erori sau rezultate.
Fereastra Workspace conţine patru zone conform fig.1.1

Zona
pentru
proiect

Zona de lucru cu
dimensiuni ajustabile

Zona
pentru
biblioteci
Zona pentru afişarea ieşirilor

Fig.1.1. Fereastra Workspace şi zonele acesteia


Zona pentru proiect (Project Tree) conţine lista fişierelor fiecărui proiect inclus în
workspace, ştiind că pot fi incluse unul sau mai multe proiecte. Unul dintre acestea poate fi
activ la un moment dat şi în zona proiectului numele acestuia este marcat prin bold – uire.
Numai asupra proiectului activ se pot efectua operaţiile specifice acestei ferestre menţionate
anterior. Un marcaj de tip asterisc lângă numele unui proiect faptul că asupra acestuia s-au
făcut modificări şi este necesară salvarea. Deschiderea sau editarea unui fişier se poate face cu
dublu – clic pe numele acestuia. Pentru fişierele de tip .fp (fişiere corespunzătoare
aplicaţiilor de tip driver pentru instrumente) efectul acţiunii dublu – clic constă în deschiderea
unei cutii de dialog pentru selecţia panourilor funcţiilor. Pentru fişiere create în alt mediu

11
decât LabWindows/CVI efectul acţiunii dublu – clic constă în deschiderea acestui fişier în
editorul asociat acestuia.
Dacă proiectul este ataşat unui cod sursă de control al sistemului alături de icon – ul
fiecărui fişier în zona bibliotecilor apare un simbol de tip box. Semnificaţiile acestui simbol
pot fi următoarele:
9 simbol gol înseamnă că fişierul respectiv se află sub controlul codului sursă;
9 simbol cu margini roşii înseamnă că fişierul respectiv este confirmat de utilizator;
9 simbol cu margini albastre înseamnă că fişierul respectiv este confirmat de
altcineva.
În zona pentru biblioteci se pot adăuga coloane cu informaţii suplimentare cum ar fi:
informaţii de stare, data şi ora modificării fişierului sau mărimea fişierului.
O acţiune clic – dreapta pe numele proiectului (fig.1.2.) permite efectuarea
următoarelor acţiuni:
9 salvare proiect;
9 setarea proiectului selectat ca proiect activ;
9 asamblare proiect;
9 editare proiect;
9 scoaterea proiectului selectat din
workspace;
9 listare fişiere din proiect;
9 adăugare de folder – e la proiect;
9 adăugare de fişier la proiect;
9 creare a unui nou fişier în proiect;
9 reluarea ultimei versiuni salvate a
proiectului;
9 extragere proiectului de sub controlul
programului sursă;
9 introducerea proiectului de sub controlul
programului sursă;
Fig.1.2. Efectul acţiunii clic – 9 descompunerea în componente a
dreapta pe numele proiectului proiectului;
9 căutarea de elemente biblioteci;
9 descompunerea bibliotecilor în elemente componente;
9 recompunerea bibliotecilor după elementele componente.
O acţiune clic – dreapta pe un fişier din structura proiectului cum ar fi fişierul sursă
sau fişierul interfaţă utilizator (fig.1.3.) permite efectuarea următoarelor acţiuni:
9 deschiderea fişierului respectiv editarea
fişierelor pentru aplicaţii driver (.fp) sau a
fişierelor create în alt mediu decât
LabWindows/CVI;
9 salvarea fişierului;
9 excluderea fişierului din operaţia de
asamblare a acestora în cadrul unui proiect.
Această opţiune se aplică numai fişierelor
sursă;
9 activarea opţiunii “O” prin intermediul căreia
operaţia de compilare a surselor se face fără
informaţii privind depanarea acestora;
9 înlocuirea unui fişier cu un altul;
9 înlăturarea unui fişier din proiect;
Fig.1.3. Efectul acţiunii clic – 9 compilarea fişierului, opţiune aplicabilă
dreapta pe numele proiectului numai fişierelor sursă;

12
9 marcarea fişierelor sursă pentru compilare, astfel la o nouă asamblare a proiectului
se realizează recompilarea acestor fişiere;
9 reluarea ultimei versiuni salvate a fişierului;
9 extragere fişierului de sub controlul programului sursă;
9 extragere fişierului de sub controlul programului sursă;
9 introducerea fişierului de sub controlul programului sursă;
9 descompunerea în componente a fişierului;
9 căutarea de elemente biblioteci;
9 descompunerea bibliotecilor în elemente componente;
9 recompunerea bibliotecilor după elementele componente.
O acţiune clic – dreapta pe un folder (fig.1.4.)
permite efectuarea următoarelor acţiuni:
9 redenumire folder;
9 înlăturare folder;
9 adăugarea unui fişier în proiect;
9 crearea unui nou fişier în proiect;
9 căutarea de elemente biblioteci;
9 descompunerea bibliotecilor în elemente
componente;
Fig.1.4. Efectul acţiunii clic – 9 recompunerea bibliotecilor după
dreapta pe numele folder - ului elementele componente.

O acţiune clic – dreapta pe un spaţiu liber în zona


bibliotecilor (fig.1.5.) permite efectuarea următoarelor
acţiuni:
9 sortarea fişiere după nume, cale, extensie sau
dată;
9 găsirea căi complete a fişierelor;
9 căutarea de elemente în biblioteci;
9 descompunerea bibliotecilor în elemente
componente;
9 recompunerea bibliotecilor după elementele
Fig.1.5. Efectul acţiunii clic –
componente.
dreapta pe spaţiu liber
Zona pentru biblioteci (Library Tree) conţine o structură arborescentă a funcţiilor din
bibliotecile şi instrumentele LabWindows/CVI. La încărcarea unui instrument folder – ul
acestuia va conţine o structură arborescentă a panourilor funcţiilor respectivului instrument.
Printr-un dublu – clic pe instrument în zona bibliotecilor se deschide cutia de dialog a
editorului pentru acel instrument. Pentru a deschide panoul funcţiei se face dublu – clic pe
numele funcţiei în zona bibliotecilor.
Meniul contextual al
zonei pentru biblioteci conţine
următoarele opţiuni:
9 afişarea în ordine
alfabetică a funcţiilor
fie după nume fie
după titlul panoului
funcţiilor;
9 personalizare struc-
turii arborescente a
Fig.1.6. Meniu contextual Fig. 1.7. Personalizarea bibliotecilor;
pentru zona bibliotecilor structurii bibliotecilor 9 deschiderea panoului

13
funcţiei, opţiune aplicabilă numai funcţiilor;
9 acces la help pentru biblioteci, clase şi funcţii;
9 descompunere a funcţiilor în Source Code Browser, opţiune aplicabilă numai
funcţiilor;
9 căutarea de elemente în biblioteci;
9 descompunerea bibliotecilor în elemente componente;
9 recompunerea bibliotecilor după elementele componente.
Zona de lucru (Window Confinement Region) conţine ferestrele pentru programe
sursă, pentru editorul interfeţei utilizator şi pentru editorul de funcţii. La deschiderea oricăreia
dintre aceste ferestre meniurile şi barele de unelte vor fi cele corespunzătoare modului de
lucru ales pentru această zonă. Fereastra corespunzătoare modului de lucru curent poate fi
extrasă din interfaţa LabWindows/CVI alegând opţiunea Window >> Release Window sau
poate fi reintrodusă în interfaţa LabWindows/CVI alegând opţiunea Window >> Confine
Window.
Zona pentru afişarea ieşirilor (Output Window Region) conţine ferestre în care se
afişează liste cu erorile ce pot apărea la asamblarea modulelor (Build Errors), erorile rezultate
ca urmare a rulării programului (Run-Time Errors), ieşiri ca urmare a operaţiilor de depanare
(Debug Output) şi pentru căutarea rezultatelor. Printr-un dublu – clic pe un element din aceste
liste se poate evidenţia linia respectivă în fişierul în care este eroarea, nu se pot însă evidenţia
erorile de control ale codului sursă
Un proiect va conţine unul sau mai multe dintre următoarele fişiere dacă acesta nu este
utilizat ca un program de tip driver sau dacă nu a fost încărcat prin utilizarea comenzii
LoadExternalModule:
9 fişiere sursă (.c);
9 fişiere obiect (.obj);
9 fişiere bibliotecă (.lib)
Următoarele fişiere sun opţionale în lista fişierelor proiectului:
9 fişiere de cap (Header (.h) files) care sunt uşor de deschis pentru a fi văzute sau
editate astfel încât să existe siguranţa că acestea vor fi găsite de către compilator;
9 fişiere pentru interfaţa utilizator (User interface resource (.uir) files) care sunt uşor
de deschis pentru a fi văzute sau editate astfel încât să existe siguranţa că acestea vor fi
găsite de către LabWindows/CVI în momentul verificării aplicaţiei;
9 fişiere de tip driver pentru panouri de funcţii (Instrument driver function panel
(.fp) files) care determină ca LabWindows/CVI să le încarce pe acestea ca
instrumente virtuale la deschiderea proiectului

14
Cap.3

Editorul interfeţei utilizator

3.1. Prezentarea editorului interfeţei utilizator


Mediul de programare LabWindows/CVI permite realizarea de interfeţe utilizator de
tip grafic (Graphical User Interface – GUI) prin intermediul obiectelor predefinite în
bibliotecile sale.
Aceste obiecte sunt de tipul panouri, butoane de comandă, meniuri de tip pull – down,
butoane rotative, înregistratoare grafice, înregistratoare de tip osciloscop, display – uri
analogice sau digitale şi multe alte controale şi indicatoare. Controalele sunt acele obiecte
prin intermediul cărora se pot modifica parametrii iar indicatoarele sunt obiecte prin
intermediul cărora sunt afişate valori ale variabilelor.
Un exemplu de GUI realizat în mediul LabWindows/CVI este prezentat în fig.3.1.

Fig.3.1. Exemplu de GUI realizat în LabWindows/CVI


Crearea unui GUI se poate face prin apelarea de funcţii în program sau poate fi creat
în mod interactiv prin utilizarea editorului interfeţei utilizator (User Interface Editor). Crearea,
aranjarea şi personalizarea obiectelor în editorul interfeţei utilizator este uşurată de
posibilitatea lucrului de tip drop-and-drag cu aceste obiecte. Avantajul utilizării editorului
interfeţei utilizator este dat şi de faptul că permite crearea de aplicaţii GUI oricât de complexe
fără a scrie o singură linie de program. Odată realizat un GUI în editorul interfeţei utilizator
acesta va fi salvat ca un fişier (.uir) de tip resursă pentru interfaţa utilizator (User Interface
Resource).
În acest capitol sunt prezentate elemente necesare creării de GUI în mod interactiv
prin utilizarea editorului interfeţei utilizator. Este descris editorul interfeţei utilizator şi
procedurile utilizate pentru editarea de panouri, controale şi bare de meniuri. Prin utilizarea
editorului se pot crea dar şi modifica fişiere de tip resurse (.uir) pentru interfeţe utilizator.
Deschiderea meniului interfeţei se face prin selectarea opţiunii New sau Open din meniul File
şi alegerea meniului User Interface (*.uir) după cum este prezentat în fig.3.2.

15
Fig.3.2. Deschiderea meniului interfeţei utilizator
Odată deschisă o sesiune de lucru pentru crearea unei interfeţe utilizator fereastra
editorului arată ca în fig.3.3.

Fig.3.3. Fereastra editorului interfeţei utilizator

În această fereastră pot fi create şi editate panourile, controalele, indicatoarele şi barele


de meniuri necesare realizării unui GUI. Pentru aceasta sunt utilizate uneltele situate sub bara
de meniuri a ferestrei care asigură o editare facilă (high-level) cu ajutorul mouse – ului.
Selectarea cu mouse – ul a unei unelte determină schimbarea cursorului astfel încât forma
acestuia să reflecte modul de editare selectat.
În fereastra editorului interfeţei utilizator pot fi utilizate unelte ale cîror icoane sunt
prezentate în tabelul următor

Tabelul 3.1
Icon Acţiune unealtă
unealtă
Unealtă utilizată pentru operaţii asupra obiectelor. În modul de operare
evenimentele generate sunt afişate în colţul dreapta al barei de unelte şi această
afişare se face cu o întârziere necesară observării fiecărui eveniment

Unealtă utilizată pentru selecţia, poziţionarea şi dimensionarea obiectelor

Unealtă utilizată pentru etichetarea obiectelor sau modificarea textelor asociate


cu obiecte
Unealtă utilizată pentru colorarea obiectelor. Paleta de culori disponibilă este
activată printr-o acţiune clic – dreapta. Culoarea selectată poate fi utilizată
pentru colorarea automată a obiectelor printr-o acţiune clic – stânga pe acestea
Această unealtă (pipetă) este activată prin selectarea uneltei de colorare şi
apăsarea tastei < Ctrl >. Printr-un clic pe un obiect unealta de colorare preia
culoarea acestui obiect şi aceasta poate fi aplicată pentru mai multe obiecte.

16
3.2. Prezentarea acţiunii CodeBuilder
Codul C complet al unui fişier (.uir)
specific interfeţei utilizator creat sau editat , pentru
a fi compilat şi rulat, poate fi generat prin utilizarea
facilităţii mediului LabWindows/CVI de generare
a codului (CodeBuilder). Astfel prin alegerea
opţiunii corespunzătoare din meniul Code (fig.3.4.)
se poate obţine scheletul codului (skeleton code).
Acest schelet al codului este secvenţă de cod corect
obţinută din punct de vedere sintactic şi al
programării care poate fi compilat şi rulat fără a fi
Fig.3.4. Alegerea opţiunii de necesară scrierea de linii de cod.
generare a codului Prin utilizarea acestei facilităţi se poate
salva timp la realizarea unei aplicaţii prin
eliminarea necesităţii tastării liniilor de cod şi în
acelaşi timp sunt eliminate eventualele erori de
sintaxă sau tastare care pot apărea la scrierea
liniilor de cod. Se obţine un fişier cod sursă
organizat şi cu consistenţa stilului de programare.
Deoarece CodeBuilder – ul permite compilarea şi
rularea imediată a programului se pot face şi teste
ale funcţionării programului chiar pe durata
dezvoltării acestuia.
Prin alegerea opţiunii Code»Generate»All
Code (fig.3.5.), LabWindows/CVI plasează în
fişierul codului sursă stabilit ca fişier ţintă
declaraţia #include, declaraţii ale variabilelor şi
funcţii de apelare utilizate precum şi funcţia main.
Fiecare funcţie utilizată, prin intermediul unui bloc
de decizie din structura acesteia, permite alegerea
unei anumite opţiuni corespunzătoare unui
eveniment specificat. Se pot specifica diferite
Fig.3.5. Opţiunea evenimente pentru controlul funcţiilor de apelare şi
Code»Generate»All Code pentru funcţiile apelabile de pe panoul aplicaţiei
prin alegerea opţiunii Code»Preferences, fig.3.6.

Fig.3.6. Specificarea de
evenimente prin alegerea opţiunii
Code»Preferences

17
Chiar dacă programul funcţionează acesta trebuie personalizat pe aplicaţie pentru
implementarea acţiunilor corespunzătoare fiecărui eveniment.
La generarea codului pentru un anume control sau panou prin apelarea unei funcţii
LabWindows/CVI plasează scheletul codului acestei funcţii în fişierul ţintă în aceiaşi formă
completă ca şi cum ar fi fost generat prin intermediul comenzii Code»Generate»All Code.
Oricum acest cod trebuie însoţit de o funcţie main în structura unui proiect pentru ca acesta
să funcţioneze. Prin omiterea funcţiei main în orice situaţie de apelare a unei funcţii pentru
care se face referire într-un fişier .uir înseamnă că nu este complet codul respectiv.
Pentru a evita astfel de omisiuni este de preferat pentru început utilizarea comenzii
Code»Generate»All Code pentru a produce un proiect funcţional pe baza unui fişier .uir
iniţial. După aceasta se pot adăuga noi controale, panouri sau meniuri în fişierul .uir dar
este necesară selecţia comenzilor Code»Generate»Panel Callback, Control Callbacks sau
Menu Callbacks pentru a realiza corespondenţa între noile elemente adăugate şi fişierul
sursă.
De asemenea prin utilizarea CodeBuilder există siguranţa că programul astfel generat
va avea finalitatea aşteptată prin includerea cererii QuitUserInterface. La alegerea
comenzii Code»Generate»All Code va apărea o fereastră de dialog pentru alegerea funcţiei
prin intermediul căreia se poate finaliza programul. Pentru siguranţa finalizării programului se
pot apela chiar mai multe funcţii.

3.3. Meniul File


Opţiunile meniului File sunt prezentate în fig.3.7
şi acestea reprezintă următoarele comenzi

Fig.3.7. Meniul File

3.3.1. New, Open, Save şi Exit LabWindows/CVI


Comenzile New, Open, Save şi Exit sunt comenzi generale cu semnificaţii identice în
diferite medii de programare.
Comanda New cu submeniul prezentat în fig.3.8.a este utilizată pentru a deschide
diferite tipuri de ferestre de lucru în care se pot realiza diferite tipuri de fişiere.
18
a) b)
Fig.3.8. Submeniurile comenzilor New şi Open
Prin alegerea opţiunilor Source sau Include se deschide fereastra prin care pot fi
create fişierele .c respectiv .h.
Prin alegerea opţiunii User Interface se deschide fereastra prin care pot fi creat un
fişier .uir.
Prin alegerea opţiunii Project apare o fereastră de dialog cu întrebarea de renunţare la
proiectul aflat în lucru, deoarece la un moment dat se poate într-un singur proiect. Prin
selectarea opţiunii Yes apare o fereastră nouă în care se poate începe un proiect nou. De
asemenea utilizatorul este întrebat dacă salvează fişierele modificate în proiectul vechi şi dacă
salvează opţiunile proiectului vechi.
Prin alegerea opţiunii Funcţion Tree apare o fereastră nouă în care poate fi creat un
fişier nou.fp.
Comanda Open cu submeniul prezentat în fig.3.8.b este utilizată pentru a deschide
diferite tipuri de ferestre de lucru cu tipuri de fişiere specificate şi realizate anterior. Tipul de
fişier ce poate fi deschis cu această comandă este specificat prin extensia acestuia,
semnificaţia unei astfel de extensii fiind prezentată în subcapitolul 2.2 şi este identică
opţiunilor date de comanda New.
Comanda Save este utilizată pentru salvarea fişierului cu extensia .uir, dacă se
doreşte altă extensie această se va scrie după numele fişierului iar dacă nu se doreşte
adăugarea nici unei extensii după numele fişierului se introduce un blanc (spaţiu gol)
Comanda Exit LabWindows/CVI este utilizată pentru închiderea sesiunii curente
LabWindows/CVI. Dacă a fost modificat orice fişier deschis după ultima salvare sau dacă
există cel puţin o fereastră nedenumită la activarea acestei comenzi va apărea un mesaj către
utilizator pentru a face salvările necesare.

3.3.2. Alte comenzi din meniul File


În meniul File există şi alte comenzi de asemenea cu semnificaţii identice în diferite
medii de programare cum sunt:
• Save As prin care se salvează un fişier .uir cu nume specificat de utilizator
sau prin care este posibilă schimbarea numelui unui fişier, nume care va apărea
în bara de titlu din fereastra editorului interfeţei utilizator. Ca şi în cazul
comenzii Save dacă se doreşte altă extensie această se va scrie după numele
fişierului iar dacă nu se doreşte adăugarea nici unei extensii după numele
fişierului se introduce un blanc (spaţiu gol);
• Close prin care sunt închise ferestrele active. Dacă de la ultima salvare s-au
făcut modificări ale conţinutului fişierului a cărui fereastră este activă la
activarea acestei comenzi va apărea un mesaj către utilizator pentru a face
salvările necesare;
• Save All prin care sunt salvate prin care sunt salvate fişierele deschise;
• Add File to Project prin care este adăugat fişierul .uir din fereastra curentă
în lista de fişiere a proiectului activ;

19
• Set Active Project prin care un proiect al cărui fişier .prj este deschis
devine activ;
• Read Only este o comandă prin care
sunt suprimate posibilităţile de editare
din fereastra curentă a editorului
icon interfeţei utilizator. La activarea
acestei comenzi pe panoul aplicaţiei
din fereastra editorului interfeţei
utilizator apare un icon care specifică
această anulare a posibilităţilor de
editare, fig.3.9.
• Print prin care se deschide o căsuţă de
dialog prin intermediul căreia este
Fig.3.9. Efectul comenzii Read Only posibilă trimiterea întregului fişier
.uir sau a ferestrei active Windows
de pe ecran către imprimantă pentru tipărire sau într-un fişier. De asemenea
prin intermediul aceleiaşi căsuţe de dialog se pot seta diverse opţiuni ale
utilizatorului privind modul de tipărire.

3.4. Meniul Edit


Opţiunile meniului Edit sunt prezentate în fig.3.10 şi acestea sunt utilizate în fereastra
editorului interfeţei utilizator pentru editarea panourilor, controalelor şi a barelor de meniuri

Fig.3.10. Meniul Edit


3.4.1. Comanda Workspace
LabWindows/CVI păstrează în Workspace setări care nu afectează modalitatea de
construire a unui proiect existând posibilitatea de a include mai multe proiecte în Workspace.
Astfel pentru crearea unui nou proiect se activează comanda Workspace din meniul Edit prin
intermediul căreia apare o fereastră de dialog, Edit Workspace, (fig.3.11.) pentru
introducerea unui nou proiect în Workspace sau pentru crearea unui nou Workspace pentru
proiect.

20
Fereastra de dialog Edit Workspace afişează toate fişierele de tip proiect (.prj)
existente în Workspace şi are următoarele opţiuni

• Project Files – afişează o listă cu toate


fişierele de tip proiect (.prj) existente în
Workspace ;
• Add – adaugă proiecte în Workspace şi
aceste proiecte pot fi căutate pe disc;
• Remove – elimină un proiect din
Workspace;
• Move Up – mută proiecte selectate către
începutul listei şi această listă stabileşte
ordinea de apariţie a proiectelor în
structura ierarhică a acestora (Project
Fig.3.11. Fereastra de dialog
Tree);
Edit Workspace
• Move Down – acţiune similară comenzii
Move Up dar mutarea se face către sfârşitul listei;
• OK – acceptarea schimbărilor efectuate şi închiderea ferestrei de dialog;
• Cancel - închiderea ferestrei de dialog fără acceptarea nici unei schimbări.

3.4.1. Comanda Project


Comanda Project deschide o fereastră de
dialog Edit Project (fig.3.12) prin intermediul
căreia se pot face modificări în proiect şi aceasta
are următoarele opţiuni:
• Project Label – conţine numele
proiectului care va identifica proiectul în
structura ierarhică a acestor proiecte;
• Project Files – conţine o structură
arborescentă a fişierelor din proiect;
• Use Absolute Path for File – forţează
LabWindows/CVI să reţină calea către
fişier ca o cale absolută în proiect astfel
încât permanent să se urmărească această
Fig.3.12. Fereastra de dialog
cale indiferent de locaţia de unde se
Edit Project
încarcă fişierul respectiv;
• Add – deschide o fereastră de dialog Add Files
to Project prin intermediul căreia pot fi
selectate unul sau mai multe fişiere pentru a fi
adăugate la proiect;
• Replace – deschide o fereastră Replace File
prin intermediul căreia se pot înlocui fişiere
originale ale proiectului;
• Remove – şterge fişiere din lista de fişiere a
proiectului;
• Include Path – deschide o fereastră Include
Paths în care se poate indica calea pe care
LabWindows/CVI o va utiliza pentru căutarea
fişierelor header (.h);
Fig.3.13. Fereastra de dialog
• Source Code Control – deschide o fereastră
Source Code Control Options Source Code Control Options (fig.3.13) unde

21
se pot specifica setările pentru controlul codului sursă;
• OK – acceptarea schimbărilor efectuate şi închiderea ferestrei de dialog;
• Cancel - închiderea ferestrei de dialog fără acceptarea nici unei schimbări.

3.4.2. Comenzile Undo şi Redo


Cu ajutorul comenzii Undo se poate anula o acţiunea anterioară astfel că ecranul
revine la starea anterioară efectuării acţiunii. Această comandă este activă numai când se
efectuează operaţii de editare ale interfeţei utilizator. Se formează o stivă cu până la 100
acţiuni de editare astfel că această comandă se poate repeta pentru o serie de acţiunii de
editare. Numărul de acţiuni depuse în stivă asupra căruia să se poată aplica comanda Undo se
poate seta selectând Options»Preferences.
Comanda Redo are un efect opus comenzii Undo şi cu ajutorul acesteia se poate anula
efectul comenzilor Undo efectuate accidental asupra unei serii de acţiuni. Comanda Redo este
activă numai dacă comanda anterioară a fost o comandă Undo, orice acţiune anterioară unei
astfel de comenzii dezactivează posibilitatea efectuării comenzii Redo. Comenzile Undo şi
Redo se activează sau se dezactivează în mod dinamic în meniu în funcţie de acţiunea în curs
de execuţie, astfel de exemplu după mutarea unui element de control sau indicator se
activează opţiune Undo Move Control.

3.4.3. Comenzile Cut, Copy şi Paste


Comenzile Cut şi Copy controleză Clipboard – ul din Windows astfel pentru a tăia
sau copia un control sau indicator în Clipboard se selectează acest element după care se
selectează una din comenzile Cut sau Copy din meniu Edit şi LabWindows/CVI depune acel
element în Clipboard. Prin utilizarea comenzii Copy acel control sau indicator rămâne şi în
fereastra de lucru dar prin utilizarea comenzii Cut acesta va fi şters din fereastră. Elementele
asupra cărora se efectuează acţiuni generate de aceste comenzi nu se acumulează în Clipboard
astfel de câte ori se efectuează aceste comenzi controlul sau indicatorul asupra căruia
acţionează va înlocui elementul depus în Clipboard de comenzi anterioare.
Pentru utilizarea comenzilor Cut sau Copy se pot urma următorii paşi:
1. se selectează elementul ce urmează a se plasa în Clipboard prin următoarele
opţiuni:
a. cu clic – stânga pe element;
b. acţionând tasta <Tab> până ce elementul va fi selectat;
c. prin delimitare cu mouse – ul a zonei ce cuprinde mai multe elemente ce se
doreşte a fi selectate;
d. cu combinaţia <Shift + clic – stânga> pentru a alege mai multe elemente ce
se doreşte a fi selectate
2. se selectează una din comenzile Cut sau Copy din meniu Edit
În meniul Edit există şi comenzile Copy Panel şi Cut Panel prin intermediul cărora
obiectul acţiunilor celor două comenzi Copy şi Cut nu va mai fi unul sau mai multe elemente
selectate de pe panoul interfeţei utilizator ci întreg acest panou. Efectul comenzilor Copy
Panel şi Cut Panel este similar efectului comenzilor Copy şi Cut numai că se aplică nu
elementelor panoului ci întregului panou.
Pentru utilizarea comenzilor Copy Panel sau Cut Panel se pot urma următorii paşi:
1. se selectează panoul ce urmează a se plasa în Clipboard prin următoarele opţiuni:
a. cu clic – stânga pe panou;
b. cu combinaţia <Shift + Ctrl + săgeată – stânga sau săgeată – dreapta> până
când este selectat panoul corespunzător
2. se selectează una din comenzile Cut sau Copy din meniu Edit
Comanda Paste reintroduce în fereastra aplicaţiei reprezentând editorul interfeţei
utilizator elemente, panouri sau texte plasate anterior în Clipboard. Această plasare de obiecte
din Clipboard se paote face de câte ori este nevoie ele fiind rezidente în Clipboard până când

22
este utilizată din nou una din comenzile Cut, Cut Panel, Copy, sau Copy Panel. Comenzile
New şi Open nu şterg conţinutul Clipboard – ului.
3.4.4. Comanda Menu Bars
Comanda Menu Bars deschide o fereastră de dialog Menu Bar Lisprezentată în
fig.3.14 şi aceasta va conţine o listă a barelor
de meniuri corespunzătoare fişierelor resursă
aranjate în ordine alfabetică.
Fereastra de dialog Menu Bar List are
următoarele opţiuni:
• Create – deschide o fereastră de dialog
Edit Meniu Bar (fig.3.15) prin
intermediul căreia se creează o bară de
meniu care se va aşeza în lista din
Fig.3.14. Fereastra de dialog fereastra Menu Bar List imediat după
Menu Bar List bara de meniu selectată din această listă
• Edit – deschide fereastra de
dialog Edit Meniu Bar
(fig.3.15) prin intermediul
căreia se editează bara de
meniu selectată
• Cut – şterge elementele (item
– urile) selectate din listă şi le
transferă în Clipboard
• Copy – copiază fără a le
şterge din listă elementele
(item – urile) selectate şi le
transferă în Clipboard
• Paste – inserează conţinutul
unei bare de meniu din
Clipboard în listă, inserarea
făcându-se înaintea item –
ului selectat în lista din
Menu Bar List
Fig.3.15. Fereastra de dialog Edit Menu Bar • Done – închide fereastra de
dialog Menu Bar List
Fereastra de dialog Edit Menu Bar apare la activarea uneia din opţiunile Create sau
Edit în fereastra de dialog Menu Bar List şi are următoarele opţiuni:
• Menu Bar Constant Prefix – setează resurse de identificare (ID) pentru bara de
meniu care prin intermediul comenzii LoadMenuBar sunt transferate în memorie.
Prefixul barei de meniu reprezentând o constantă de tip şir de caractere este definită în
fişierul header (.h) care este generat de LabWindows/CVI în momentul salvării
fişierul interfaţă utilizator (.uir). Dacă nu este atribuit un prefix prin completarea
căsuţei Menu Bar Constant Prefix în momentul salvării fişierului (.uir) un astfel
de prefix va fi atribuit de User Interface Editor;
• Constant Name – setează o constantă reprezentând numele item – ului pe care
LabWindows/CVI îl ataşează prefixului pentru a forma ID – ul acestui item. Acest ID
se va regăsi în funcţii de tipul GetMenuBarAttribute şi
SetMenuBarAttribute. Atunci când meniul unui item generează un eveniment
ID – ul respectivului item poate fi obţinut prin funcţia GetUserEvent.
• Item Name – setează numele meniului sau submeniului curent. Dacă se subliniază cu
linie dublă o anumită literă în Item Name litera respectivă va apărea subliniată în

23
etichetă şi utilizatorul poate utiliza această literă împreună cu tasta <Alt> pentru
selecţia item – ului respectiv;
• Callback Function – câmp opţional în care se poate scrie numele unei funcţii ce va fi
apelată atunci când item – ul selectat din meniu generează un eveniment;
• Modifier Key – stabileşte taste care pot fi utilizate pentru execuţia item – ului curent
din meniu;
• Shortcut Key – identifică taste care pot fi utilizate pentru execuţia item – ului curent
din meniu;
• Dimmed – stabileşte dacă item – ul iniţial al meniului este marcat ca inactiv;
• Checked – stabileşte dacă item – ul iniţial al meniului este marcat cu semnul √
(check);
• Bold– stabileşte dacă item – ul iniţial al meniului este marcat prin bold – uire;
• Insert Item – inserează un nou item după item – ul curent selectat în fereastra
editorului de meniu;
• Insert Child Item – inserează un nou sub – item după cel curent selectat în fereastra
editorului de meniu;
• Insert Separator – inserează un separator inaintea item – ului curent selectat;
• Move Up – mută item – ul selectat în poziţie superioară în ierarhia submeniului;
• << Change Level – mută item – ul selectat în poziţie superioară în ierarhia meniului;
• Change Level >> - mută item – ul selectat în poziţie inferioară în ierarhia meniului;
• Move Down – mută item – ul selectat în poziţie inferioară în ierarhia submeniului;
• Cut – şterge item – ul selectat şi face o copie a acestuia în clipboard;
• Copy – face o copie a item – ului selectat în clipboard;
• Paste – inserează în meniu
un item depus în clipboard;
• Paste Child – inserează
un sub – item depus în
clipboard în fereastra
editorului de meniu;
• OK – acceptă modificările
făcute în fereastra
editorului de meniu şi
închide această fereastră;
• Cancel – abandonează
modificările făcute şi
Item
abandonează fereastra
Child Item editorului de meniu;
• Help – apelează help – ul
pentru editorului de meniu;
• Preview – afişează starea
curentă a barei de meniuri
în partea superioară a
Fig.3.16. Exemplu de utilizare a ferestrei
fereastra editorului de
Edit Menu Bar
meniu.
O exemplificare a utilizării opţiunilor ferestrei editorului barei de meniu este
prezentată în fig.3.16.

3.4.5. Comanda Panel

24
Comanda deschide fereastră Edit Panel (3.17) prin intermediul căreia se pot realiza
modificări ale panourile aplicaţiilor.
Secţiunea Source Code
Connection a ferestrei Edit panel
are următoarele opţiuni pentru
utilizator:
• Constant Name – constantă
prin care se setează resursele
de identificare (ID) ale
panoului. Aceste resurse prin
intermediul comenzii
LoadPanel sunt incarcate în
memorie. Numele constantei
se găseşte în fişierul .h care
este generat de
LabWindows/CVI în
momentul salvării fişierului
.uir. Dacă nu se atribuie un
Fig.3.17. Fereastra de dialog Edit Panel nume de către utilizator
acestei constante acesta va fi
atribuit automat în momentul salvării fişierului .uir;
• Callback Function – specifică numele unei funcţii apelate atunci când este generat un
eveniment pe panoul frontal. Specificarea acestei funcţii apelate este opţională.
Secţiunea Panel Settings a ferestrei Edit panel are următoarele opţiuni pentru utilizator:
• Panel Title – setează titlul panoului;
• Menu Bar– setează denumirea barei de meniuri;
• Close Control – atribuie unuia dintre controalele de pe panou funcţia de închidere a
acestuia;
• Top – setează poziţionarea panoului faţă de marginea de sus a ecranului, în pixeli;
• Left – setează poziţionarea panoului faţă de marginea din dreapta a ecranului, în
pixeli;
• Height – setează înălţimea panoului, în pixeli;
• Width - setează înălţimea panoului, în pixeli;
• Scroll Bars – activează sau dezactivează bară de scroll pe panou;
• Auto-Center Vertically (when loaded) – poziţionare automată a panoului în centrul
vertical al ecranului;
• Auto-Center Horizontally (when loaded) –
poziţionare automată a panoului în centrul
orizontal al ecranului;
• Other Attributes – setează alte atribute
(fig.3.18) privind comportarea sau aspectul
panoului
În fereastra Quick Edit Window sunt
observabile efectele tuturor acţiunilor desfăşurate în
fereastra Edit panel. Meniurile panoului în fereastra
Quick Edit Window operează ca şi meniurile din
fereastra principală a editorului interfeţei
Secţiunea Attributes for Child Panels a
ferestrei Edit panel are următoarele opţiuni pentru
utilizator:
Fig.3.18. Alte atribute ale panoului • Frame Style – setează diverse stiluri pentru

25
conturul panoului;
• Frame Thickness – setează diverse grosimi pentru conturul panoului;
• Size Title Bar Height to Font – setează grosimea barei de titlu la dimensiunea
maximă a literelor din această bară;
• Title Bar Thickness – setează grosimea barei de titlu şi această opţiune este activă
numai dacă nu este activă opţiunea;
• Title Style – setează stilul barei de titlu.

3.4.6. Comanda Control


Comanda Control deschide o fereastră (fig.3.19) în care este editat controlul selectat
pe panou. Această editare se poate realiza prin comanda Control dar şi prin efectul unui
dublu – clic pe controlul ales. Această fereastră poate avea diverse secţiuni printre care
Source Code Connection, Control Settings, Control Appearance, Quick Edit Window, şi
Label Appearance.

Fig.3.19. Exemplu de fereastră de dialog Control


Secţiunea Source Code Connection oferă următoarele opţiuni pentru utilizator:
• Constant Name – prin care utilizatorul stabileşte un nume de constantă pentru panou
astfel încât să se genereze un identificator al acestuia (ID). Prin intermediul acestuia
poate fi identificat acest control în orice funcţie specifică acestuia cum ar fi
GetCtrlVal şi SetCtrlAttribute. ID – ul este definit în fişierul .h generat
automat în momentul salvării fişierului .uir. Dacă acest nume nu este stabilit de
utilizator va fi generat un nume la salvarea fişierului .uir.
• Callback Function – prin care se stabileşte o anumită funcţie care va fi apelată atunci
când acest control generează un eveniment. Şi denumirea acestei funcţii este
opţională.
Secţiunea Control Settings oferă posibilitatea utilizatorului să stabilească anumite
atribute pentru tipul de control editat în această fereastră. Elementele acestei secţiuni diferă în
raport cu tipul controlului editat. De exemplu pentru controlul de tip potenţiometru prezentat
în fig.3.19 această secţiune permite stabilirea valorii implicite la care se setează acest control
(Default Value), în acest caz 75, tipul de dată (Data Type), în acest caz în format dublă
precizie, modul de control (Control Mode), etc
Anumite controale cum ar fi Ring Control sau List Box permit ca prin intermediul
acestei secţiuni să se poată genera anumite valori pe care să le ia acestea, valori care pot fi
definite şi prin etichete. Această opţiune devine activă prin intermediul butonului
Label/Value Pairs care este specific numai anumitor controale. În fig. 3.20 este exemplificat

26
un caz al unui control de tip Ring Control şi se observă că plecând de la o formă iniţială a
acestuia (fig. 3.20.a) prin intermediul ferestrei de dialog Edit Label/Value Pairs (fig. 3.20.b)
sunt stabilite valori care apar şi în fereastra de editare Edit Ring Knob (fig. 3.20.c) astfel că
după validarea editării se modifică atributele controlului (fig. 3.20.d).

a)

b)

d)

c)

Fig.3.20. Exemplu de utilizare a opţiunilor din secţiune Control Settings


Secţiunea Control Appearance din fereastra de dialog deschisă de comanda Control
pentru controale de tip numeric oferă posibilităţi de definire a altor atribute ale acestora şi
anume a atributelor ce se referă la aspectul fizic al respectivului control.
În fereastra Quick Edit Window utilizatorul are posibilitatea să vadă orice modificare
făcută asupra controlului editat aceste modificări având aspectul identic cu cel ce va apărea pe
panoul după finalizarea editării respectivului control. Altfel spus prin intermediul acestei
ferestre există posibilitatea setărilor interactive pentru toate atributele controlului editat.
Secţiunea Label Appearance oferă posibilităţi de definire a altor atribute ce ţin de
aspectul etichetei controlului. Dacă înaintea unei litere din se tastează de două ori underline
litera respectivă va apărea subliniată în etichetă şi utilizatorul poate selecta rcontrolul
respectiv prin apăsare simultană <Alt + literă>.

3.4.7. Comanda Tab Order


Prin această comandă se stabileşte ordinea de selectare a controalelor de pe panou prin
intermediul tastelor <Tab> sau <Shift + Tab >. La crearea unui control poziţia acestuia va fi
întotdeauna la sfârşitul listei. Prin copiere şi reaşezare a unui control pe panou, în listă acesta
poziţia acestuia va fi imediat după controlul copiat. Fereastra de dialog a comenzii Tab
Order şi panoul pentru care este aranjată ordinea de selectare este prezentată în fig.3.21

27
Fig.3.21. Comanda Tab Order
Pentru stabilirea ordinii de selectare sunt utilizate următoarele elemente în fereastra
Edit Tabbing Order:
- cursor utilizat pentru schimbarea numărului ce reprezintă poziţia în căsuţa
Click To Set To;
- cursorul poate fi schimbat în “pipetă” prin apăsarea tastei <Ctrl>. Cu
ajutorul acestui element se poate schimba numărul în căsuţa Click To Set To cu
numărul curent asociat controlului;
- buton pentru validarea ordinii de selecţie;

- buton pentru ştergerea unei anumite ordini realizate şi revenire la ordinea


iniţială ce corespunde celei afişate în colţul din dreapta

3.4.8. Comanda Set Default Font


Utilizarea acestei comenzi determină alegerea fontului pentru controlul selectat ca font
implicit pentru toate controalele. De asemenea se poate alege fontul unei etichete ca font
implicit pentru toate etichetele panoului. Controalele nou create vor prelua fontul implicit ales

3.4.9. Comanda Apply Default Font


Comanda Apply Default Font permite setarea fontului pentru controlul selectat
(şi/sau eticheta acestuia) cu fontul controlului (şi/sau eticheta acestuia) ales ca implicit.

3.4.10. Comanda Control Style


Este o comandă ce permite schimbarea stilului unui control selectat. La activarea
acestei comenzi se deschide fereastra Convert Control Style cu opţiuni pentru alegerea
noului stil al controlului. De exemplu un control numeric de tip potenţiometru este schimbat
cu unul de tip slide, conform fig.3.22. Se observă că atributele controlului cum ar fi etichetele
şi limitele de valori nu se schimbă.

Fig.3.22. Schimbarea stilului unui control prin comanda


28
3.4.11. Comanda Edit Custom Controls
Această comandă permite crearea de
controale proprii ale utilizatorului pentru a fi
salvate în configuraţia de controale. Lista
controalelor proprii este salvată de
LabWindows/CVI între sesiunile de lucru. Prin
selectarea comenzii Edit Custom Controls se
deschide fereastra de dialog Edit Custom
Controls (fig.3.23.) care conţine următoarele
opţiuni pentru utilizator:
• Add – deschide o fereastră de dialog
(fig.3.24.) ce conţine toate controalele de
pe panou interfeţei utilizator cu
posibilitatea de urmărire a controlului în
Fig.3.23. Fereastra Edit Custom Controls
subfereastra Preview şi de modificare a
etichetei în căsuţa Control Name to
Display in Meniu. Aici se poate selecta
un anumit control care să devină control
propriu al utilizatorului prin activarea
butonului OK;
• Delete – şterge controlul selectat astfel
încât acesta nu mai apare la activarea
comenzii Create;
• Edit – deschide căsuţa de dialog Edit
Fig.3.24. Fereastra Add Custom Controls Control;
• Edit Name – deschide o
căsuţă de dialog în care se
poate schimba numele
(eticheta) controlului;
• Code – deschide o fereastră
de dialog (fig.3.25.) prin
intermediul căreia se
Fig.3.25. Fereastra Code stabilesc fişierele ce se pot
asocia cu controlul selectat.
9 Program File – fişier .fp, fişier sursă sau obiect prin intermediul căruia se
implementează funcţii suplimentare pentru respectivul control. La selecţia
comenzii Code»Generate»All Code sau Generate Custom Control Code,
automat LabWindows/CVI adaugă fişierul program la proiect;
9 Header File – fişier de tip include care însoţeşte programul. La selecţia comenzii
Code»Generate»All Code sau Generate Custom Control Code,
LabWindows/CVI va include fişierul header în fişierul sursă;
9 Template File for main – conţine codul pe care LabWindows/CVI îl importă în
funcţia principală la selecţia comenzii Code»Generate»All Code sau Generate
Custom Control Code. LabWindows/CVI va insera codul urmat de apelarea
funcţiei LoadPanel;
9 Operate in UI Editor – în modul operare LabWindows/CVI va genera automat un
fişier DLL care va permite controlului să se comporte ca o aplicaţie completă. Se
poate interacţiona cu controlul în modul operare
• Move Up – mută controlul selectat, în listă, cu o linie deasupra;
• Move Down – mută controlul selectat, în listă, cu o linie dedesupt;

29
• OK – acceptă modificările făcute în fereastra de dialog Edit Custom Controls şi
închide această fereastră;
• Cancel - închide fereastra de dialog Edit Custom Controls fără a accepta
modificările făcute.
LabWindows/CVI furnizează următoarele controale:
• Ok Button
• Quit Button
• Toolslib Controls – prin care controalele LabWindows/CVI sunt configurate pentru a
furniza funcţii suplimentare:
9 Radio Group
9 Animation Control
9 Combo Box
9 Tab Control
9 File Browser
9 Hot Ring
9 Path Control
9 Password Control
9 3D Graph
9 Graph Cursors
9 Horizontal Scroll Bar
9 Vertical Scroll
9 NI-DAQmx IO Controls – utilizabile numai în cazul în care pe calculator este
instalată aplicaţia NI-DAQmx, astfel încât se pot alege controale specifice
acesteia.

3.5. Meniul Create


Opţiunile meniului Edit sunt
prezentate în fig.3.26 şi acestea sunt
utilizate în fereastra editorului
interfeţei utilizator pentru crearea
panourilor, controalelor şi a barelor de
meniuri

3.5.1. Comanda Panel


Comanda Panel plasează un
panou nou în fereastra editorului
interfeţei utilizator (User Interface
Editor). Pentru editarea acestuia vezi
cele prezentate mai sus (paragraful
3.4.5) corespunzătoare comenzilor din
meniul Edit

3.5.2. Comanda Menu Bar


Comanda Menu Bar deschide
fereastra de dialog Edit Menu Bar
Fig.3.26. Meniul Create prezentată mai sus, în paragraful 3.4.4.

3.5.3. Controale
Celelalte opţiuni ale meniului Create sunt rezervate creării şi poziţionării pe panou a
diferitelor controale specifice aplicaţiei pentru care va fi realizată interfaţa utilizator. După
crearea unui control, acesta poate fi modificat prin utilizarea comenzilor din meniul Edit,
prezentat în subcapitolul 3.4

30
3.5.3.1. Controale de tip Numeric
Controalele de tip numeric prezentate în
a) b) fig.3.27 se împart la rândul lor în:
a. Numeric
b. Numeric color
c. Numeric slide

3.5.3.1.a. Control Numeric


Un control numeric este utilizat pentru
introducerea sau pentru citirea unei valori numerice
prin intermediul panoului. De exemplu un control de
c) tip numeric, prin care se introduc date, poate fi
reprezentat pe panou ca in fig.3.28.
Fig.3.27. Controale de tip Numeric Setarea valorii numerice se poate realiza cu:
9 mouse – ul – click asupra săgeţilor sus/jos din
stânga controlului pentru modificarea valorii
cu incrementul stabilit;
9 tastatura – prin marcarea câmpului cu unealta
de operare sau unealta de modificare a
Fig.3.28. Control Numeric textelor asociate unui element prezentate în
tabelul 3.1. şi în continuare se utilizează fie
tastele numerice pentru înscrierea valorii fie săgeţile sus/jos de pe tastatură pentru
modificarea valorii cu incrementul stabilit;
Pentru editarea controlului se face clic – dreapta pe acesta şi rezultă fereastra de
editare a controlului prezentată în fig.3.29

a) b)

Fig.3.29. Fereastra Edit Control pentru un control de tip numeric


În această fereastră se pot seta atribute ai controlului, printre care:
31
• Default Value – valoarea numerică implicită a acestuia
• Data Type – formatul valorii numerice şi care poate fi sub una din formele prezentate
în fig.3.30.a;
• Minimum şi Maximum – valoarea numerică minimă şi respectiv maximă pe care
poate să o ia acest control;
• Inc. Value – incrementul de creştere sau scădere a valorii numerice la utilizarea
mouse – ului sau săgeţilor;
• Range Checking – verificare a domeniului şi care poate fi sub una din formele
prezentate în fig.3.30.b;
• Control Mode – prin care elementului i se stabileşte funcţia de control prin care se
introduc date sau de tip indicator prin care se citesc date;
• Format and Precision – prin care se setează numărul de caractere al valorii şi
formatul afişării acesteia, conform fig.3.30.c;
• Show/Hide Parts – prin care se pot arăta sau ascunde elemente ale controlului cum ar
fi săgeţile de stabilire a valorii numerice;
• Text Sile – prin care se stabilesc atributele textului reprezentând valoarea afişată,
fig.3.30.d;
• Label Style – prin care se stabilesc atributele textului corespunzător etichetei, având
aceleaşi elemente cu cele ale valorii reprezentate în fig.3.30.d;

b)

a) c)

d)

Fig.3.30. Atribute ale controlului din fereastra Edit Control


3.5.3.1.b. Control Numeric Color
Un control numeric color este utilizat pentru introducerea sau pentru citirea unei culori
prin intermediul panoului. De exemplu un control de tip numeric color, prin care se introduc
date, poate fi reprezentat pe panou ca în
fig.3.31.
Setarea culorii se poate realiza cu
mouse – ul prin utilizarea uneltei de operare
a unui element prezentată în tabelul 3.1. şi
alegerea culorii dorite din tabelul ce se
deschide prin clic – dreapta.

Fig.3.31. Control Numeric Color


32
Pentru editarea controlului se face clic – dreapta pe acesta şi rezultă fereastra de
editare a controlului prezentată în fig.3.32

Fig.3.32. Fereastra Edit


Control pentru un control
numeric color

În această fereastră se pot seta atribute ai controlului, printre care:


• RGB Value – permite setarea culorii controlului astfel valoarea înscrisă aici reprezintă
un întreg cu lungimea de 4-byte având formatul hexazecimal 0x00RRGGBB, pentru
componentele roşu (red), verde (green) şi respectiv albastru (blue).
• Control Mode – prin care elementului i se stabileşte funcţia de control prin care se
introduc culori sau de tip indicator prin care se afişează culori;
• Show More Button – prin care se setează afişarea butonului cu opţiune “mai mult”
(more);
• Show Transparent – prin care se setează opţiunea de transparenţă sau nu;
• Initially Dimmed – prin care se setează opţiunea de validare a controlului sau
invalidare a acestuia prin afişarea lui în format gri;
• Initialy Hidden - prin care se setează opţiunea de validare a controlului sau invalidare
prin ascunderea (neafişarea) acestuia;

3.5.3.1.b. Controale Numeric Slide


Controalele numerice slide ca orice controale de tip numeric sunt utilizate pentru
introducerea sau vizualizarea de valori numerice cum ar fi de exemplu valoarea unei tensiuni
electrice. Acestea pot avea diverse forme de reprezentare grafică printre care: de tip buton de
potenţiometru (knob), de tip aparat de măsură (meter), de tip termometru (thermometer), de
tip manometru (gauge) şi de tip cadran (dial).
Controalele numerice slide sunt caracterizate de domeniul de valori, reprezentat de o
scală, pe care le pot genera sau pe care le pot afişa. În funcţie de forma controalelor scala
poate fi liniară sau circulară.
Opţional un astfel de
control este însoţit de un afişaj
digital care operează identic cu
controlul cu care este sincronizat
şi va afişa aceiaşi valoare ca şi
acesta.
În fig.3.33 sunt
Fig.3.33. Controale Numeric Slide prezentate câteva exemple de
controale numerice slide.

33
Pentru editarea controlului se face clic – dreapta pe acesta şi rezultă fereastra de
editare a controlului prezentată în fig.3.34

Fig.3.34. Fereastra Edit Control


pentru un control numeric slide

În această fereastră se pot seta atribute ai controlului şi aceste atribute sunt similare
celor specifice unui control numeric prezentate
în subcapitolul 3.5.3.1.a. şi având aceiaşi
semnificaţie. Faţă de acestea apare suplimentar
butonul:
• Range Values – care prin intermediul
ferestrei Edit Range Values permite
setarea valorilor limită ale domeniului,
incrementul de creştere sau scădere a
valorii precum şi verificarea
domeniului de încadrare a valorii în
Fig.3.35. Atribute ale controlului în
cazul în care elementul este setat ca
fereastra Edit Range Values
indicator (fig.3.35).

3.5.3.2. Controale de tip Text


Controalele de tip Text (fig.3.36)
permit introducere sau afişarea prin
intermediul interfeţei utilizator a informaţiilor
de tip text. Aceste controale pot fi:
a) b) a. şir de caractere (String)
b. fereastră text (Text Box)
Fig.3.36. Controale Text

3.5.3.2.a. Control String


Controlul de tip String este utilizat pentru a introduce
sau pentru a vizualiza un sir de caractere cum ar fi de exemplu
numele unui utilizator şi are formatul general prezentat în
fig.3.37.
Fig.3.37. Control String Prin utilizarea acestui control în orice mod cu excepţia
aceluia de indicator se poate schimba textul de la tastatură fie
numai prin intermediul tastelor fie şi cu ajutorul mouse – ului.

34
Pentru a modifica textul este necesară utilizarea uneltei de modificarea a textelor
asociate cu obiecte prezentată în tabelul 3.1 şi în cazul utilizării mouse – ului cu un clic în
locul ales se introduce textul necesar. La utilizarea tastelor se pot utiliza tastele direcţionale
pentru poziţionarea cursorului, tasta < Home > pentru deplasarea la începutul şirului şi
tasta < End > pentru deplasarea la sfârşitul şirului.
Dacă controlul este în modul Hot sau Validate odată cu schimbarea textului şi după
validare prin intermediul tastei < Enter > sau clic pe un alt obiect se poate genera un
eveniment care poate fi reprezentat, de exemplu, de apelarea unei funcţii Callback
Function.
Pentru editarea controlului se face clic – dreapta pe acesta şi rezultă fereastra de
editare a controlului prezentată în fig.3.38

Fig.3.38. Fereastra Edit Control


pentru un control String

În această fereastră se pot seta atribute ale controlului String şi acestea sunt atribute
uzuale întâlnite şi la celelalte controale prin care se poate seta textul sau eticheta controlului
cu excepţia:
• Max Entry Lengh – prin intermediul căruia se poate seta numărul maxim de caractere
ale şirului de caractere, în byte, ce constituie un control sau un indicator. Dacă nu se
restricţionează numărul de caractere valoarea numerică a atributului este –1

3.5.3.2.b. Control Text Box


Controlul de tip Text Box este utilizat pentru a introduce sau pentru a vizualiza un şir de
caractere cum ar fi de exemplu numele unui utilizator şi are formatul general prezentat în
fig.3.39.
Controlul asigură wrap – parea (includerea textului în fereastră)
după linie, cuvânt sau caracter precum şi posibilitatea adăugării de bare
de scroll atât orizontale cât şi verticale. Este posibilă astfel scrierea de
texte în fereastra controlului şi aranjarea programabilă a acestora. Este
de asemenea posibilă introducerea textului direct pe mai multe linii
Fig.3.39. Control prin trecerea la o linie nou cu tastele < Ctrl + Enter >. Poziţionarea
Text Box cursorului în text se poate face cu mouse – ul, cu tastele < Home >
pentru deplasarea la începutul şirului şi tasta < End > pentru deplasarea
la sfârşitul şirului sau cu tastele direcţionale.
Pentru setarea atributelor acestui control se deschide fereastra Edit Text Box cu dublu
clic pe control sau prin prin comanda Edit Control, fig.3.40.

35
Fig.3.40. Fereastra Edit Control
pentru un control Text Box

În această fereastră se pot seta atribute ale controlului Text Box printre care:
• Visible Lines – numărul de linii vizibile în fereastra text;
• Wrap Mode – setează ca includerea textului în fereastră să se facă după caracter,
cuvânt sau linie, fig.3.41.a;
• Scroll Bars – vizibilitatea liniilor de scroll orizontală, verticală sau ambele, fig.3.41.b;
• Scroll Bar Size – grosimea liniilor de scroll, îngustă, medie sau groasă, fig.3.41.c;

a) b) c)
Fig.3.41. Atribute ale controlului Text Box

• Text Box Option – setare a opţiunilor pentru fereastra text, fig.3.42. prin care se pot
stabili:
9 Max Entry Lengh – numărul
maxim de caractere ale şirului, în
byte. Dacă nu se restricţionează
numărul de caractere valoarea
numerică a atributului este –1;
9 Extra lines – numărul de linii
suplimentare;
Fig.3.42. Fereastra Text Box Options 9 Enter Key Causes Newline – prin
care se validează opţiunea de
trecere pe linie nou, în timpul introducerii textului cu combinaţia de taste < Ctrl +
Enter >

36
3.5.3.3. Controale de tip Command Button
Controalele de tip Command Button (fig.3.43.)
sunt reprezentate de butoane prin care se poate
declanşa o acţiune. Pentru uşurinţa identificării
acţiunii declanşate pe buton se poate ataşa o etichetă
cu denumirea acţiunii generate.
Controalele de acest tip pot fi:
Fig.3.43. Controale Command Button a. Square Command Button;
b. Picture Command Button.
Operarea cu aceste controale este posibilă prin intermediul tastaturii cu utilizarea
tastelor < Enter > sau < spacebar >. Dacă controlul este setat Hot sau Validate acţiunea
generată de acesta are loc la apăsarea acestor taste. De asemenea operarea este posibilă şi prin
intermediul mouse – ului caz în care printr-un clic pe control are loc generarea acţiunii.

3.5.3.3.a. Control Square Command Button


Este utilizat pentru generarea sau declanşarea unei
acţiuni dacă nu este setat ca indicator, fig.3.44.
Pentru setarea atributelor acestui control se deschide
fereastra Edit Command Button cu dublu clic pe control sau
Fig.3.44. Control prin prin comanda Edit Control, fig.3.45.
Square Command Button

Fig.3.45. Fereastra Edit Control


pentru un control
Square Command Button

Faţă de atributele prezentate mai sus, în cazul altor controale, unul singur este specific
acestuia şi anume:
• Auto Sizing – prin intermediul căruia se poate seta dimensiunilor controlului astfel
încât să cuprindă textul etichetei după ambele dimensiuni (Always Auto Size), după
lăţime (Grow Only) sau după lungime (Shrink Only) precum fără auto-dimensionare
(Never Auto Size)

3.5.3.3.b. Control Picture Command Button


Este utilizat ca şi Square Command Button pentru
generarea sau declanşarea unei acţiuni dacă nu este setat ca
indicator, fig.3.46
Pentru setarea atributelor acestui control se deschide
Fig.3.46. Control fereastra Edit Command Button cu dublu clic pe control sau
Picture Command Button prin prin comanda Edit Control, fig.3.47

37
Fig.3.47. Fereastra Edit Control
pentru un control
Square Command Button

Faţă de atributele prezentate mai sus, în cazul controlului Square Command Button
sau a altor controale, unul singur este specific acestuia şi anume:
• Images – prin intermediul căruia se poate
imaginea ce apare pe control şi de regulă,
pentru o bună funcţionalitate a interfeţei
utilizator în care este utilizat, trebuie să
ătură între imagine şi acţiunea
existe o legătură
declanşată de acţionarea acestui control.
Fereastra Edit Picture pentru setarea
atributelor corespunzătoare imaginii,
Fig.3.48. Fereastra Edit Picture fig.3.48. permite efectuarea următoarelor
acţiuni:
9 Fit Mode – prin care ssee stabileşte legătura între dimensiunile imaginii şi
cele ale controlului precum şi modul de aranjare a imaginii ataşate
controlului;
9 Load Image – prin care se deschide calea de alegere şi selectare a
imaginii;
9 Paste Image – prin care se ataşează controlului o imagine aflată în
clipboard;
9 Unload Image – prin care se anulează o imagine ataşată anterior
controlului pentru a fi încărcată eventual o altă imagine.

3.5.3.4. Controale de tip Toggle Button


Controalele de tip Toggle Button (fig.3.49.) sunt reprezentate de butoane prin care se poate
comuta între două stări diferite. Fiecare din acest
control are două poziţii: “apăsat” (On) căreia îi este
atribuită valoarea logică 1 şi respectiv “neapăsat” (Off)
căreia îi este atribuită valoarea logică 0.
Controalele de acest tip pot fi:
a. Square Button;
b. Square Push Button;
c. Round Radio Button;
Fig.3.49. Controale Toggle Button d. Square Radio Button;
e. Check Box

38
Fig.3.50. Fereastre Edit
Control pentru controale
Toggle Button

39
f. Picture Toggle Button
Operarea cu aceste controale este posibilă prin intermediul tastaturii cu utilizarea
tastelor < Enter > sau < spacebar >. Dacă controlul este setat Hot sau Validate acţiunea
generată de acesta are loc la apăsarea acestor taste. De asemenea operarea este posibilă şi prin
intermediul mouse – ului caz în care printr-un clic pe control are loc generarea acţiunii.
Pentru setarea atributelor acestor controale se deschid ferestrele Edit . . . cu dublu clic
pe control sau prin comanda Edit Control şi pentru fiecare control în parte din această clasă
se obţin ferestrele prezentate în fig.3.50
După cum se observă din aceste ferestrele sunt atribute specifice controalelor de tip
buton prezentate în subcapitolul 3.5.3.3. sau altor tipuri de controale prezentate mai sus.
Excepţie face atributul, care este specific acestei clase de controale:
• Initial State – prin care se setează starea iniţială a controlului şi care poate fi “apăsat”
(On) căreia îi este atribuită valoarea logică 1 şi respectiv “neapăsat” (Off) căreia îi
este atribuită valoarea logică 0.

3.5.3.4. Controale de tip LED (Light Emitting Diode)


Controalele de tip LED (fig.3.51.) sunt reprezentate de elemente cu funcţia principală de
indicator prin care se poate indica una din două stări
diferite. Fiecare din acest control are două poziţii:
“activat” (On) căreia îi este atribuită valoarea logică 1
şi respectiv “neactivat” (Off) căreia îi este atribuită
valoarea logică 0.
Controalele de acest tip pot fi:
a. Round LED;
Fig.3.51. Controale Toggle Button b. Square LED.
Având funcţia de indicator nu pot fi utilizate pentru generarea sau declanşarea unui
eveniment dar funcţia poate fi schimbată prin intermediul ferestrei de setare a atributelor
astfel încât elementele să îndeplinească şi funcţia tipică de control. Pentru aceasta trebuie setat
modul astfel încât acesta să fie Normal, Hot sau Validate. Operarea în acest caz este posibilă
prin intermediul tastaturii cu utilizarea tastelor < Enter > sau < spacebar >. De asemenea
operarea este posibilă şi prin intermediul mouse – ului caz în care printr-un clic pe control are
loc generarea acţiunii.
Pentru setarea atributelor acestor controale se deschide fereastra Edit LED cu dublu
clic pe control sau prin comanda Edit Control şi se obţine fereastra prezentată în fig.3.52

Fig.3.52. Fereastra Edit Control


pentru un control LED

După cum se observă din această fereastră sunt atribute specifice controalelor de tip
binar prezentate mai sus. În acest caz utilizatorul are posibilitatea de a seta culori specifice

40
celor două stări indicate sau semnalizate de control. Pentru aceasta se utilizează atributul
Initial State cu care se comută între cele două stări ale controlului On respectiv Off. Pentru
fiecare dintre acestea cu unealta pentru colorarea obiectelor (vezi tabelul 3.1) din subfereastra
Quick Edit Window se alege culoarea dorită pentru fiecare dintre cele două stări.

3.5.3.5. Controale de tip Binary Switch


Controalele de tip Binary Switch (fig.3.53.)
sunt reprezentate de comutatoare prin care se poate
selecta una din două stări diferite On respectiv Off.
Acestor două stări li se pot asocia valori numerice sau
etichete de tip text.
Controale de acest tip pot fi:
a. Vertical Toggle Switch;
b. Horizontal Toggle Switch.
Fig.3.53. Controale Binary Switch Atâta timp cât controlul este setat în orice alt
mod decât Indicator starea acestuia poate fi schimbată prin intermediul tastaturii sau a mouse
– ului. Pentru operarea prin intermediul tastaturii se poate alege una din variantele:
⎯ Se apasă tasta direcţională < up > sau <Home > pentru comutare poziţia On;
⎯ Se apasă tasta direcţională < down > sau <End> pentru comutare poziţia Off;
⎯ Se apasă direcţională < spacebar > sau <Enter> pentru comutare între cele două stări.
Pentru operarea cu mouse – ul comutarea între stări se poate face clic asupra
controlului sau asupra etichetei corespunzătoare stării dorite.
Dacă controlul este în modul Hot sau Validate odată cu schimbarea textului şi după
validare prin intermediul tastei < Enter > sau clic pe un alt obiect se poate genera un
eveniment.
Pentru setarea atributelor acestor controale se deschide fereastra Edit Binary Switch
cu dublu clic pe control sau prin comanda Edit Control şi se obţine fereastra prezentată în
fig.3.54.

Fig.3.54. Fereastra Edit


Control pentru un control
Binary Switch
Printre atributele specifice acestui control sunt:
• Data Type – formatul valorii numerice şi care poate fi sub una din formele, prezentate
în fig.3.54:

41
• Initial State – prin care se setează starea iniţială a controlului şi care poate fi On
căreia îi este atribuită o valoarea setabilă şi un text şi respectiv Off căreia îi este
atribuită de asemenea o valoarea setabilă şi un text.
• ON Value – valoare setabilă pentru starea On;
• OFF Value – valoare setabilă pentru starea Off;
• ON Text – text setabil pentru starea On;
• OFF Text – text setabil pentru starea Off.

3.5.3.6. Controale de tip Ring


Controalele de tip Ring (fig.3.55.) sunt reprezentate de elemente prin care se poate
realiza o selecţie într-un grup de item – uri. Fiecare item se găseşte sub forma unei etichete
sau perechi de valori. Atunci când este sub forma unei etichete la selecţia item – ului respectiv
va fi afişat un text caracteristic acestui item. Dacă se găseşte sun forma unei perechi de valori
la selecţia item – ului respectiv se va afişa o valoare numerică sau un şir de caractere specific
acestuia
Controale de acest tip pot fi:
a. Ring;
b. Meniu Ring;
c. Recessed Meniu Ring;
d. Pop – up Meniu;
e. Vertical Pointer Slide;
f. Vertical Level Slide;
g. Horizontal Pointer Slide;
h. Horizontal Level Slide;
i. Knob;
j. Dial;
k. Gauge;
l. Meter
m. Tank
n. Thermometer
Fig.3.55. Controale Ring
o. Picture Ring
Atâta timp cât controlul este setat în orice alt mod decât Indicator se poate selecta un
item prin intermediul tastaturii sau a mouse – ului.
Operarea prin intermediul tastaturii este posibilă pentru controalele a ... d şi o şi se
poate alege una din variantele:
⎯ Se apasă tasta direcţională < up > pentru selecţia item – ului anterior;
⎯ Se apasă tasta direcţională < down >pentru selecţia item – ului următor;
Operarea cu aceste controale se poate face şi în format pop – up (desfăşurare) când
apare o listă a item – urilor controlului ca cea din fig.3.56.
Desfăşurarea listei şi selecţia unui item din această listă
se poate face astfel:
⎯ Se apasă tasta < spacebar > pentru desfăşurarea listei;
⎯ Se utilizează tastele direcţionale < up > şi < down >
pentru selecţia item – ului în listă;
⎯ Se apasă < Enter > pentru validarea selecţie şi se observă
Fig.3.56. Operare pop – up că dispare lista iar controlul afişează item – ul selectat;
⎯ Se apasă < Esc > pentru a anula operaţia de selecţie.
Operarea controlului cu mouse – ul este posibilă pentru toate controalele a ... o şi
pentru acest mod de operare se pot utiliza, dacă există, săgeţile ataşate controlului sau prin
parcurgerea următoarelor etape:
⎯ Clic pe control pentru desfăşurarea listei;

42
⎯ Clic pe item – ul ales pentru selecţia acestuia din listă şi se observă că dispare lista iar
controlul afişează item – ul selectat;
⎯ Clic în afara meniului pentru anularea operaţie de selecţie

3.5.3.6.a. Controale Ring


Controalele Ring (inel) sunt utilizate pentru selecţia unui item dintr-o listă. Pentru
setarea atributelor acestor controale se deschide fereastra Edit Ring cu dublu clic pe control
sau prin comanda Edit Control şi se obţine fereastra prezentată în fig.3.57.

Fig.3.57. Fereastra Edit


Control pentru un control

Atribute specifice acestui control sunt:


• Default Index – prin care este indicată ordinea de aşezare a item – urilor în listă;
• Disable Check Mark – prin care este dezactivată marcarea în listă a item – ului
curent;
• Label/Value Pairs –
buton prin care se
deschide fereastra Edit
Label/Value Pairs
(fig.3.58) prin intermediul
căreia se creează sau se
editează lista acestui
control prin intermediul
următoarelor atribute ale
acestei liste:
9 Data Type –
selectează tipul de dată
al valorilor
Fig.3.58. Fereastra Edit Label/Value Pairs controlului;
9 Precision – selectează
numărul de digiţi afişaţi după virgulă;
9 Label – specifică eticheta care va apărea în lista controlului. Pentru a adăuga o
etichetă în listă se scrie numele în acest câmp şi se apasă < Enter >. Cursorul se va
muta în câmpul Value.

43
9 Value – specifică o valoare, numele unei constante sau o expresie asociată cu
eticheta din câmpul Label. Pentru a adăuga o valoare se scrie în acest câmp. Poate
fi utilizat şi numele unei constante sau orice expresie validă în C, după care se
apasă < Enter > şi acestea împreună cu eticheta vor fi adăugate în listă.
9 Below – inserează o linie goală înaintea liniei selectate în listă;
9 Above - inserează o linie goală după linia selectată în listă;
9 Cut – elimină linia selectată din listă şi o depune în clipboard;
9 Copy – copiază linia selectată în clipboard;
9 Paste – inserează o etichetă şi valoare din clipboard după linia selectată în listă;
9 OK – acceptă crearea sau modificare listei şi închide fereastra;
9 Cancel – abandonează crearea sau modificare listei şi închide fereastra;
9 Help – afişează help – ul ferestrei Edit Label/Value Pairs.

3.5.3.6.b. Controale Slide


Controalele Slide sunt
utilizate pentru selecţia unui
item dintr-un grup. În această
categorie sunt incluse
controalele e ... n. Majoritatea
acestor controale sunt
asemănătoare celor de tip
Numeric (fig.3.59) diferenţa
Fig.3.59. Controale de selecţie de tip Slide
fiind dată de faptul că
alegerea, în acest caz, se face dintr-un număr limitat de posibilităţi.
Pentru setarea atributelor acestor controale se deschide fereastra Edit Ring cu dublu
clic pe control sau prin comanda Edit Control şi se obţine fereastra prezentată în fig.3.60.

Fig.3.60. Fereastra Edit Control


pentru un control Slide

Faţă de cazul controalelor Ring apar atributele specifice acestor controale Slide:
• Tick Style – prin care se setează prezenţa sau nu a marcajelor grafice pentru fiecare
item din grup reprezentând o opţiune pe control;
• Fill Option – prin care se setează modul de umplere (colorare) a controlului faţă de
marker astfel există posibilităţile: fără umplere (No Fill), umplere în stânga (Fill Left)
sau umplere în dreapta (Fill Right).

44
3.5.3.6.c. Controale Picture Ring
Controalele Picture Ring sunt utilizate pentru selecţia unui item dintr-un grup.
Fiecare item este ataşat controlului în format imagine/valoare pereche astfel încât la selecţia
item – ului se va afişa imaginea asociată în format bitmap (.bmp) ataşată acestuia. Valoarea
pereche a item – ului poate fi în format numeric sau şir de caractere.
Pentru setarea atributelor acestui control se deschide fereastra Edit Picture Ring cu
dublu clic pe control sau prin comanda Edit Control şi se obţine fereastra prezentată în
fig.3.61.

Fig.3.61. Fereastra Edit Control


pentru un control Picture Ring

Faţă de cazul controalelor Ring şi Slide apar atributele specifice acestor controale
Picture Ring astfel:
• Image/Value Pairs – înlocuieşte
atributul Labe/Value Pairs şi prin
intermediul ferestrei Edit
Image/Value Pairs (fig.3.62) se
creează sau se editează grupul de
imagini ataşate acestui control prin
intermediul următoarelor atribute ale
acestei liste:
9 Data Type - selectează tipul de
dată al valorilor controlului;
9 Load Image – prin care se
deschide calea de alegere şi
selectare a imaginii;
9 Paste Image – prin care se
ataşează controlului o imagine
aflată în clipboard;
9 Unload Image – prin care se
Fig.3.62. Fereastra Edit Image/Value Pairs anulează o imagine ataşată
anterior controlului pentru a fi
încărcată eventual o altă imagine
9 Value – specifică o valoare, numerică sau şir de caractere asociată cu imaginea.
9 Below – inserează o linie goală înaintea liniei selectate în grup;
9 Above - inserează o linie goală după linia selectată în grup;

45
9 Cut – elimină linia selectată din listă şi o depune în clipboard;
9 Copy – copiază linia selectată în clipboard;
9 Paste – inserează o etichetă şi valoare din clipboard după linia selectată în listă;
9 OK – acceptă crearea sau modificare listei şi închide fereastra;
9 Cancel – abandonează crearea sau modificare listei şi închide fereastra;
9 Help – afişează help – ul ferestrei Edit Label/Value Pairs.

3.5.3.7. Controale de tip List & Tables


Controalele de tip List & Tables (fig.3.63) sunt
reprezentate de elemente prin care se pot realiza operaţii
de genul selecţiei unui item dintr-o listă, de vizualizare a
unei liste ierarhizate de item – uri şi de introducere sau
vizualizare a datelor aranjate în formă matricială.
Controale de acest tip pot fi:
a. List Box;
b. Tree;
c. Table.
Fig.3.63. Controale List & Tables

3.5.3.7.a. Control List Box


Controlul List Box este utilizat pentru selecţia unui
item dintr-o listă şi un exemplu al acestui control este prezentat
în fig.3.64. Diferenţa faţă de alte controale de selecţie este dată
de faptul că prin intermediul acestui control se pot selecta şi
două sau mai multe item – uri.
Operarea cu acest control se poate face prin intermediul atât a
Fig.3.64. Control List Box tastaturii cât şi a mouse – ului.
Operarea prin intermediul tastaturii se face pe următoarele căi:
⎯ Se utilizează tastele direcţionale < up > şi < down > pentru selecţia item – ului în listă;
⎯ Se apasă < Home > pentru selecţia item – ului din capătul listei;
⎯ Se apasă < End > pentru selecţia item – ului de la sfârşitul listei;
⎯ Se apasă < Page up > pentru a desfăşura lista cu o pagină în sus;
⎯ Se apasă < Page down > pentru a desfăşura lista cu o pagină în jos;
⎯ Se utilizează modul Quick Type prin tastarea primei sau primelor litere ale item – ului;
⎯ Odată selectat un item marcarea acestuia se poate realiza cu tasta < spacebar >.
Operarea prin intermediul mouse - ului se face pe următoarele căi:
⎯ Selecţia item – ului se face cu clic;
⎯ Căutarea unui item se face în listă se face cu ajutorul barelor de scroll.
Dacă controlul este setat în modul Hot sau Validate o acţiune asupra unui item din
listă va genera un eveniment pe următoarele căi:
⎯ Dacă controlul este setat Check Mode se selectează item – ul în listă după care se
apasă tasta < spacebar > sau se face clic pe acest item;
Dacă controlul nu este setat Check Mode se selectează item – ul în listă după care se
apasă tasta < Enter > sau se face dublu – clic pe acest item.
Pentru setarea atributelor acestui control se deschide fereastra Edit List Box cu dublu
clic pe control sau prin comanda Edit Control şi se obţine fereastra prezentată în fig.3.65.

46
Fig.3.65. Fereastra Edit
Control pentru un control
Picture Ring

Atribute specifice acestui control sunt:


• Label/Value Pairs – similar aceluiaşi
atribut pentru controlul Ring;
• List Box Options –care deschide
fereastra List Box Options (fig.3.66) prin
intermediul căreia se pot seta anumite
opţiuni ale listei, cum sunt.
9 Check Mode – asigură marcarea item
– urilor selectate în listă;
9 Text Click Toggles Check – asigură
marcarea item – urilor şi prin clic pe
Fig.3.66. Fereastra List Box Options numele acestora;
9 Draggable Marks – asigură
posibilitatea tragerii cu mouse – ul a
marcajelor;
9 List Box Has Images – asigură
ataşarea de imagini listei. Marcajele
pot fi de tip bifare (Check Mark) sau
de tip punctual (Check Box),
Fig.3.67. Tipuri de marcaje reprezentate conform fig.3.67

3.5.3.7.b. Control Tree


Controlul Tree este utilizat pentru vizualizarea item –
urilor dintr-o structură arborescentă de item - uri şi un exemplu
al acestui control este prezentat în fig.3.68. Acest control
permite selecţia item – urilor sau a grupurilor de item - uri
Selecţia item – urilor se poate face prin intermediul
tastaturii sau a mouse – ului.
Pentru selecţia prin intermediul tastaturii există
următoarele variante:

Fig.3.68. Control Tree

47
⎯ Se utilizează tastele direcţionale < up > şi < down > pentru selecţia item – ului în listă;
⎯ Se apasă < Shift > şi tastele direcţionale pentru selecţia de item – uri multiple, dacă
structura este în multiple selection mode;
⎯ Se apasă < Ctrl > şi tastele direcţionale pentru deselecţia de item – uri multiple, dacă
structura este în multiple selection mode;
Pentru selecţia prin intermediul mouse - ului există următoarele variante:
⎯ Se face clic pe item – ul cerut pentru selecţie;
⎯ Se apasă < Shift > şi clic pentru selecţia de item – uri multiple, dacă structura este în
multiple selection mode;
⎯ Se apasă < Ctrl > şi clic pentru deselecţia de item – uri multiple, dacă structura este în
multiple selection mode;
Dacă controlul este setat în modul Hot sau Validate este posibilă generarea unui
eveniment prin următoarele căi:
⎯ Se face dublu clic pe item – ul din structură;
⎯ Realizează o schimbare a etichetei item – ului;
⎯ Se apasă < Return >
⎯ Se marcheză/demarcheză o căsuţă de marcaj (checkbox)

Fig.3.69. Fereastra Edit


Control pentru un
control Tree
Pentru setarea atributelor acestui control se deschide
fereastra Edit List Box cu dublu clic pe control sau prin
comanda Edit Control şi se obţine fereastra prezentată în
fig.3.69.
Atribute specifice acestui control sunt:
• Default Index – indică item – ul selectat din
control;
• Advanced Tree Options – permite deschiderea
ferestrei Advanced Tree Options, fig.3.70, pentru
setarea de opţiuni ale structurii arborescente,
printre care:
9 Selection Mode – stabileşte câte structuri de
item – uri pot fi selectate (None, Single,
Multiple);
9 Indent Offset – stabileşte în număr de pixeli
distanţa de afişare a item – ului faţă de
marginea grafică a coloanei structurii;
9 Show Connection Lines – specifică dacă va fi
Fig.3.70. Fereastra trasată o linie grafică intre item – rile
Advanced Tree Options structurate ierarhic

48
9 Show Plus/Minus Box – specifică dacă va fi afişat semnul “+” atunci când
structura nu este desfăşurată;
9 Show Images - specifică dacă va fi afişat un icon al item – ului, fig.3.71.
Tipul icon . ului se alege prin intermediul opţiunii Image List care va deschide
fereastra Edit Image List prin intermediul căreia se stabileşte lista imaginilor
ce vor reprezenta icon – uri ale item -urilor;

Fig.3.71. Fereastra Edit Image List

9 Show Marks – specifică dacă item – ul va avea un marcaj în structură;


9 Mark Reflect – specifică dacă marcajul unui item bază se va reflecta către
toate ramurile acelui item;
9 Auto Expand – specifică dacă selecţia unui item bază va determina
autoexpandarea întregii structuri a acestuia;
9 Full Row Select – specifică dacă selecţia unui item pe o coloană va determina
şi selecţia item – urilor de pe liniile corespunzătoare ale celorlalte coloane;
9 Enable Popup Meniu – validarea meniului popup;
9 Enable Drag Drop – validarea operaţie de drag&drop pentru schimbarea
poziţiei item – urilor în structură;
9 Draggable Marks – specifică dacă marcajele pot fi “trase” cu mouse – ului
prin operaţie drag
9 Edit Column/Cells – opţiune prin care se deschide fereastra Edit
Column/Cells, fig.3.72, prin care se editează coloanele şi celulele acestora, cu
următoarele opţiuni:

Fig.3.72. Fereastra Edit Column/Cells


¾ Column Labels Visible - specifică dacă eticheta coloanei este vizibilă;
¾ Column – indica numărul coloanei;

49
¾ Insert Column Before – inserează o coloană înaintea coloanei curente;
¾ Insert Column After – inserează o coloană după coloana curentă;
¾ Edit Column – deschide
fereastra Edit Column n,
fig.3.73, prin intermediul căreia
se setează:
ƒ Width – lăţimea
coloanei;
ƒ Show Vertical Grid –
specifică dacă se
afişează marcajul grafic
al coloanei;
ƒ Vertical Grid Color –
setează culoarea
marcajului grafic al
coloanei;
ƒ Label Visible – afişează
eticheta coloanei;
¾ Cell – indică numărul coloanei
Fig.3.73. Fereastra Edit Column n şi cel al liniei curente din
coloană;
¾ Background Color – setează culoarea de marcare a celulei curente din
coloană.
• Scroll Bar – setează ce bare de scroll vor fi afişate;
• Scroll Bar Size – setează lăţimea barei de scroll;
• Label – indică numele item – ului curent selectat;
• Add Item – adaugă un item în structura. Poziţia acestui item în structură este
determinată de poziţia item - ului curent selectat;
• Add Child Item – adaugă un item ramură (subitem) a item – ului bază curent;
• Edit Item – deschide fereastra Edit Item,
fig.3.74. prin intermediul căreia se pot seta:
9 Label – eticheta item – ului;
9 Value – valoare numerică asociată item -
ului;
9 Tag – denumire de identificare a item –
ului;
9 Mark – tipul de marcaj al item – ului.
Dacă se alege un marcaj de tip punctual
(radio) acesta poate fi blocat dacă în
fereastra Advanced Tree Options se
setează opţiunea Radio Sibling Always
Marked.
9 Size Mode – se alege dimensionarea
celulei specifică item – ului curent şi
Fig.3.74. Fereastra Edit Item poate fi ajustabilă în raport cu fontul sau
de dimensiune fixă caz în care se setează
dimensiunea prin atributul Height;
9 No Edit Label – nu este permisă editarea etichetei;
9 Image – se poate alege din lista de imagini (Edit Image List) acea imagine
care va forma ico – ul item - ului curent. Se pot alege imagini diferite pentru
cele două situaţii: structură expandată sau structură pliată

50
3.5.3.7.c. Control Table
Controlul Table este utilizat pentru
introducerea sau vizualizarea datelor în format
matricial sub forma unui tabel. Fiecare celulă a
tabelului poate să conţină date de tip numeric, text
sau imagine, după cum este prezentat exemplul din
fig.3.75
Atâta timp cât controlul este setat în orice
mod cu excepţia celui de Indicator se poate naviga
în interiorul tabelului sau se poate modifica
Fig.3.75. Control Table conţinutul unei celule atât cu tastatura cât şi cu
mouse – ul.
Tabelul reprezentat de acest control are două stări distincte: starea Selecţie şi starea
Editare în raport cu care LabWindows/CVI va interpreta acţiuni ale tastelor sau mouse – ului.
Starea Selecţie
Dacă controlul este în starea Selecţie pentru schimbarea unei celule active cu tastatura
se utilizează următoarele procedee:
⎯ Se utilizează tastele direcţionale < up >, < down >, < left >, < right > pentru activarea
celulei;
⎯ Se apasă < Home > pentru activarea primei celule a liniei curente;
⎯ Se apasă < End > pentru activarea ultimei celule a liniei curente;
⎯ Se utilizează tastele direcţionale < Page Up >, < Page Down > pentru deplasare cu o
pagină în tabel;
⎯ Se apasă < Ctrl + Home > pentru activarea primei celule a primei linii;
⎯ Se apasă < Ctrl + Home > pentru activarea ultimei celule a ultimei linii;
⎯ Prin utilizarea tastei < Shift > în combinaţie cu tastele menţionate mai sus se pot
selecta mai multe celule astfel încât să fie posibile acţiuni de genul: sortare, căutare,
copiere a unui grup de celule.
Pentru schimbarea unei celule active cu mouse – ul se utilizează următoarele procedee:
⎯ Se selectează o celulă prin clic oriunde în interiorul acesteia. Prin apăsarea butonului
stânga şi tragere cu mouse – ul se pot selecta mai multe celule;
⎯ Prin clic pe eticheta unei linii se selectează toate celulele acelei linii;
⎯ Prin clic pe eticheta unei coloane se selectează toate celulele acelei coloane;
⎯ Prin clic pe colţul stânga – sus se selectează toate celulele tabelului.
Starea Editare
Dacă controlul este în starea Editare pentru a putea edita o celulă aceasta nu trebuie să
fie în unul din modurile: Picture, Dimmed sau Indicator. Comutarea din starea Selecţie în
starea Editare se poate face cu dublu – clic pe celula în care urmează să se facă editarea sau
selecţia acesteia şi apăsarea tastei < F2 >.
Pentru editare unei celule active cu tastatura se utilizează următoarele procedee:
⎯ Combinaţia de taste < Ctrl + taste direcţionale > determină editarea celulei învecinate;
⎯ Se apasă < Enter > pentru editarea celulei următoare în coloană;
⎯ Se apasă < Shift + Enter > pentru editarea celulei anterioare în coloană;
⎯ Se apasă < Tab > pentru editarea celulei la dreapta celei curente;
⎯ Se apasă < Shift + Tab > pentru editarea celulei la stânga celei curente;
Dacă editarea se face cu mouse – ul pentru editarea celulei se face cu dublu – clic
oriunde în interiorul acesteia.
Pentru setarea atributelor acestui control se deschide fereastra Edit List Box cu dublu
clic pe control sau prin comanda Edit Control şi se obţine fereastra prezentată în fig.3.76.

51
Fig.3.76. Fereastra Edit
Control pentru un
control Table

Atributele specifice acestui control sunt:


• Table Mode – setează modul cum va fi iniţializată fiecare celulă nouă creată prin
InsertTableRows sau InsertTableColumns şi aceste moduri pot fi Row,
Column sau Grid.
• Edit Default Cell Values – deschide fereastra Edit Default Cell Values, fig.3.77, pentru
editarea implicită a celulelor şi prin intermediul căreia se pot seta următoarele:
9 Type – specifică tipul datelor şi
care pot fi Numeric, Picture sau
String.
9 Cell Appearance – specifică
elemente grafice ale tabelului
cum sunt: Horizontal Grid
Color, Vertical Grid Color,
Background Color, Show
Horizontal Grid, Show Vertical
Grid.
9 Fit Mode – specifică modul de
aranjarea imaginii în celulă.
9 Numeric Attributes – sunt
atribute ale valorilor numerice şi
sunt similare controlelor de tip
Numeric prezentate în subcap.
Fig.3.77. Fereastra Edit Default Cell Values
3.5.3.1
9 String Attributes - sunt atribute ale valorilor şir de caractere şi sunt similare
controlelor de tip Numeric prezentate în subcap. 3.5.3.2.
• Scroll Bars – asigură vizibilitatea liniilor de scroll orizontală, verticală sau ambelor;
• Scroll Bars Size – stabileşte lăţimea barelor de scroll;
• Row Label Visible – stabileşte vizibilitatea etichetelor pentru linii;
• Column Label Visible – stabileşte vizibilitatea etichetelor pentru coloane;
• Insert Row Above – inserează o linie înaintea celei curente;
• Insert Row Below – inserează o linie după cea curentă;
• Cut/Paste/Copy Row – taie/inserează/copiază linia curentă;

52
• Edit Row – deschide fereastra Edit Row, fig.3.78, de editare a liniei al cărui număr este
specificat prin atributul Row şi prin intermediul căreia se
pot seta următoarele:
9 Edit Default Cell Values – editarea celulei cu valori
implicite definite conform fig.3.76;
9 Size Mode – permite setarea modului de dimensionare a
celulei care poate fi după font (Size to Cell Font), după
imagine (Size to Cell Image), după ambele sau prin
stabilirea explicită a dimensiunii (Use Explicit Size);
9 Height – dimensiune explicită setabilă numai dacă
Mode Size este setat ca Use Explicit Size;
9 Wrap Mode – setează ca includerea (alinierea) textului
în celulele liniei curente să se facă după caracter, cuvânt
sau linie;
9 Label Visible – asigură vizibilitatea etichetei;
Fig.3.78. Fereastra Edit Row 9 Use Tabel text – eticheta poate fi un text introdus prin
linia Label
• Insert Column Above – inserează o coloană înaintea celei curente;
• Insert Column Below – inserează o coloană după cea curentă;
• Cut/Paste/Copy Column – taie/inserează/copiază coloana curentă;
• Edit Column – deschide fereastra Edit Column, fig.3.79, de editare a coloanei al cărui
număr este specificat prin atributul Column şi prin intermediul căreia se pot seta
următoarele:
9 Edit Default Cell Values – editarea celulei cu valori implicite definite conform
fig.3.76;
9 Size Mode – permite setarea modului de dimensionare a celulei care poate fi după font
(Size to Cell Font), după imagine (Size to Cell Image), după ambele sau prin
stabilirea explicită a dimensiunii (Use Explicit Size);
9 Height – dimensiune
explicită setabilă numai
dacă Mode Size este
setat ca Use Explicit
Size;
9 Wrap Mode – setează ca
includerea (alinierea)
textului în celulele
coloanei curente să se
facă după caracter,
cuvânt sau linie;
9 Label Visible – asigură
vizibilitatea etichetei;
Fig.3.79. Fereastra Edit 9 Use Tabel text – eticheta
Column poate fi un text introdus
prin linia Label
• Cell – afişează coordonatele celulei curente adică numărul coloanei şi respectiv
numărul liniei;
• Type – specifică tipul datelor din celula curentă;
• Default Value – specifică valoarea din celula curentă;
• Edit Cell – editează celula curentă într-o fereastră având aceiaşi configuraţie cu
fereastra Edit Default Cell Values prezentată în fig.3.77.

53
3.5.3.8. Controale de tip Decorations
Controalele de tip Decorations (fig.3.80) sunt reprezentate de elemente care au doar
rolul de mării impactul vizual al interfeţei utilizator.
Controale de acest tip pot fi:
a. Raised Box (cutie în relief);
b. Recessed Box (cutie înfundată);
c. Vertical Smooth Box (cutie netedă
verticală);
d. Horizontal Smooth Box (cutie netedă
orizontală).
Aceste controale nu conţine date dar şi
acestora le pot fi ataşate funcţii ce pot fi apelate în
Fig.3.80. Controale Decorations situaţia unui eveniment generat de un clic pe astfel
de control.
Pentru setarea atributelor acestui control se deschide fereastra Edit List Box cu dublu
clic pe control sau prin comanda Edit Control şi se obţine fereastra prezentată în fig.3.81.

Fig.3.81. Fereastra Edit


Control pentru un control
Decorations

Deoarece un astfel de control poate fi setat doar ca Indicator se observă că practic nu


există atribute specifice unui astfel de control, singurele atribute fiind:
• Callback Function – specifică numele unei funcţii apelate atunci când este generat un
eveniment pe panoul frontal. Specificarea acestei funcţii apelate este opţională.
• Initially Hidden – specifică faptul că la iniţierea interfeţei utilizator controlul va fi
ascuns.

3.5.3.9. Controale de tip Graph


Controalele de tip Decorations (fig.3.82) sunt reprezentate de elemente cu rolul de
reprezentare sub diverse forme grafice a datelor.
Controale de acest tip pot fi:
a. Graph (osciloscop);
b. Strip Chart (înregistrator);
c. Digital Graph (analizor logic);

3.5.3.9. Control Graph


Controlul Graph permite reprezentarea grafică a
unuia sau mai multor seturi de date. Reprezentările
grafice pot fi: curbe, puncte, forme grafice, imagini
Fig.3.82. Controale de tip Graph sau şiruri de caractere.
Un exemplu de astfel de control este prezentat
în fig.3.83.

54
ntru setarea atributelor acestui control se
Pentru
deschide fereastra Edit List Box cu dublu clic pe
control sau prin comanda Edit Control şi se obţine
fereastra prezentată în fig.3.84.

Fig.3.83. Control Graph

Fig.3.84. Fereastra Edit Control


pentru un control Graph

Atributele specifice acestui control sunt:


• Data Mode – specifică dacă datele a căror
reprezentare grafică a fost realizată sunt
reţinute sau nu. Ştergerea acestor date
poate să salveze din memorie dar are şi
dezavantajul că reprezentarea grafică
poate să dispară controlul este rescalat sau
dacă nu este setat atributul
ATTR_SMOOTH_UPDATE FALSE şi
se cere o redesenare a reprezentării grafice
• Smooth Update – specifică dacă o copie
a graficului este păstrată în format .bmp
fără a fi însă afişată (off – screen). Prin
activarea acestui atribut se elimină
fenomenul de “pâlpâire” a graficului la
mutarea cursorului dar se consumă multă
memorie.
• Enable Zooming – setează setează posibilitatea
de acţiune interactivă a utilizatorului prin
efectuarea de zoom în fereastra grafică a
Fig.3.85. Fereastra Edit Axis Settings controlului.

55
• Bottom X – Axis – deschide o fereastră Edit Axis Settings (fig. 3.85) prin
intermediu căreia se fac setări ale abscisei (axa X), cu dispunerea etichetelor de tip
valoric sau şir de caractere în partea de jos a ecranului controlului, printre care:
9 Axis Name – stabileşte numele axei;
9 Minimum – se setează valoarea minimă a variabilei pe axa X, şi care va
reprezenta originea axei;
9 Maximum – se setează valoarea maximă a variabilei pe axa X;
Obs: Aceste două setări sunt inactive dacă este marcată opţiunea Auto Scale
9 Offset – decalaj al valorii minime faţă de originea axei X;
9 Gain – multiplicator al valorilor variabilei pe axa X;
9 Divisions – număr de diviziuni pe axa X;
Obs: Această setare este inactivă dacă este marcată opţiunea Auto Divisions
9 Precisions – setează numărul de zecimale ale valorilor variabilei pe axa X;
9 Padding – setează numărul de digiţi ai valorii întregii pentru variabila pe axa X;
9 Display Format – seteasză formatul de afişarea al valorilor variabilei pe axa X;
9 Eng. Units (Engineering Units) – reprezintă o putere negativă a lui 10 cu care se
multiplică valorile pentru a calcula valorile actuale ale variabilei X. De exemplu
dacă este definit domeniul de valori -100 ... 100 şi este setat Eng. Units = 2
domeniul de valori va fi -1 ... 1.
9 Show Grid – se setează afişarea caroiajului pe ecran corespunzător diviziunilor
axei X;
9 Show Minor Grid Lines – completează caroiajul şi cu linii corespunzătoare
subdiviziunilor axei X;
9 Log Scale – afişarea valorilor pe axa X în scală logaritmică;
9 Show labels – afişează valorile variabilei pe axa X;
9 Reverse Axis – inversează ordinea a afişare a valorilor variabile pe axa X;
9 Loose Fit – determină care dintre valorile maxime şi minime ale scalei sunt
calculate când autoscalarea este validată. Dacă autoscalarea nu este validată
valorile maxime şi minime sunt reprezentate de cea mai mare şi respectiv de cea
mai mică valoare pentru toate curbele. Dacă autoscalarea este validată valorile
maxime şi minime sunt calculate în concordanţă cu valoarea stabilită de atributul
Loose Fit Units
9 Enable Label String – opţiune prin intermediul căreia valorile variabilei pe axa X
sunt înlocuite cu etichete de tip şir de caractere, de exemplu valoarea 0 este
înlocuită cu eticheta „minim” iar valoarea 100 este înlocuită cu eticheta „maxim”.
• Top X – axis - deschide aceiaşi fereastră Edit Axis Settings (fig. 3.84) prin intermediu
căreia se fac setări ale abscisei (axa X), cu dispunerea etichetelor de tip valoric sau şir de
caractere în partea de sus a ecranului controlului;
• Left Y – axis - deschide aceiaşi fereastră Edit Axis Settings (fig. 3.84) prin intermediu
căreia se fac setări ale ordonatei (axa Y), cu dispunerea etichetelor de tip valoric sau şir de
caractere în partea stângă a ecranului controlului;
• Right Y – axis - deschide aceiaşi fereastră Edit Axis Settings (fig. 3.84) prin intermediu
căreia se fac setări ale ordonatei (axa Y), cu dispunerea etichetelor de tip valoric sau şir de
caractere în partea dreaptă a ecranului controlului;
• Cursors – deschide fereastra Edit Cursors, fig.3.86, prin intermediul căreia se validează
afişarea unuia sau mai multor cursoare peste curbă şi se pot face setări asupra cursoarelor
utilizate pe ecranul controlului:
9 Number of Cursors – stabileşte numărul de cursoare;
9 Cursor Number – selectează cursorul curent pentru setare;
9 Color – setează culoarea cursorului curent;

56
9 Mode – setează modul de utilizare al
cursorului curent, acesta putând fii Free
Form cu posibilitatea de stabilire a poziţiei
dată numai de mişcarea mouse – ului sau
Snap to Grig, caz în care poziţia este dată
şi de caroiaj (grid)
9 Point Style – setează forme grafice pentru
cursor respectiv marker – rele de pe acesta;
9 Cross Hair Style – setează forme grafice
pentru reticulul cursorului;
9 Use Right Y Axis – validează utilizarea
axei Y din dreapta ecranului;
9 Use Top X Axis – validează utilizarea axei
X din partea de sus a ecranului;
Fig.3.86. Fereastra Edit Cursors 9 Enable – validează afişarea cursorului
curent.
• Grid Color – setează culoarea caroiajului;
• Show Border Area – validează afişarea conturului controlului;
• Show Legend – validează afişarea legendei prin intermediul căreia se pot seta: forma,
culoarea şi grosimea liniei utilizată în reprezentarea curbei.
• Anti – Aliased Plotting – trasare grafică cu eliminarea datelor eronate ce pot reprezenta
de exemplu perturbaţii suprapuse peste un semnal a cărui evoluţie în timp este
reprezentată grafic.

3.5.3.9.b. Control Strip Chart


Controlul Strip Chart (înregistrator) afişează
datele, în timp real, în mod grafic sub forma uneia sau
mai multor curbe care sunt actualizate simultan. Aceste
curbe sunt trasate pe o suprafaţă activă a controlului
reprezentând un ecran virtual. O curbă poate să
reprezinte un date măsurate continuu de pe canal un
canal de măsură. Un exemplu de control Strip Chart
este prezentat în fig.3.87
Un astfel de control este utilizat numai în modul
Indicator, astfel că asupra lui nu se pot efectua operaţii
Fig.3.87. Control Strip Chart

Fig.3.88. Fereastra Edit Control


pentru un control Strip Chart

57
cu tastatura sau mouse – ul.
Pentru setarea atributelor acestui control se deschide fereastra Edit Strip Chart cu
dublu clic pe control sau prin comanda Edit Control şi se obţine fereastra prezentată în
fig.3.88.
Atributele specifice acestui control sunt:
• Points per Screen – setează numărul de
puncte ce vor forma curba afişată pe
ecranul controlului;
• Scroll mode – setează modul de scroll –
are (defilare) a curbei pe ecran şi acest
mod poate fi: Continuous (în mod
continuu), Block (blocare), Sweep (baleiaj
de înlocuire a vechilor date cu noile date)
• X – axis – setarea parametrilor axei X,
identică cu cea a controlului Graph;
• Y – axis – setarea parametrilor axei Y,
identică cu cea a controlului Graph;
Fig.3.89. Fereastra Edit Traces • Traces – deschide fereastra Edit Trace,
fig.3.89. prin intermediu căreia se pot seta următoarele opţiuni ale graficului:
9 Number of Traces – numărul de curbe vizualizate simultan;
9 Trace Number – numărul curbei curente;
9 Trace Style – stilul curbei care poate fi setată de exemplu subţire (Thin Line) sau
groasă (Fat Line) sau poate fi obţinută prin succesiune de puncte (Scatter) sau
unirea (Connected) punctelor reprezentând valori ale datelor;
9 Line Style – stilul liniei care poate fi continuă (Solid), întreruptă (Dash), prin
puncte (Dot) sau linie – punct (Dash - Dot)
9 Point Style – opţiune activă doar dacă stilul curbei este Scatter şi permite alegerea
tipului de puncte
9 Trace Color – culoarea curbei;
9 Trace Visible – se activează trasarea curbei aleasă prin Trace Number.
• Grid Color – setează culoarea caroiajului de pe ecran;
• Show Border Area – validează vizualizarea conturului controlului;
• Anti – Aliased Plotting – trasare grafică cu eliminarea datelor eronate ce pot reprezenta
de exemplu perturbaţii suprapuse peste un semnal a cărui evoluţie în timp este
reprezentată grafic.

3.5.3.9.c. Control Digital Graph


Controlul Strip Chart (analizor logic) afişează un şir de date, în mod grafic sub forma
uneia sau mai multor curbe reprezentând nivele
logice pe linii sau magistrale de date în format binar.
Aceste curbe sunt trasate pe o suprafaţă activă a
controlului reprezentând un ecran virtual. O curbă
poate să reprezinte un date măsurate continuu de pe o
linie sau magistrală de date. Un exemplu de control
Digital Graph este prezentat în fig.3.90
Un astfel de control este utilizat numai în
modul Indicator, astfel că asupra lui nu se pot efectua
operaţii cu tastatura sau mouse – ul.
Fig.3.90. Control Digital Graph Pentru setarea atributelor acestui control se
deschide fereastra Edit Digital Graph cu dublu clic
pe control sau prin comanda Edit Control şi se obţine fereastra prezentată în fig.3.91.

58
Fig.3.91. Fereastra Edit Control
pentru un control Digital Graph

Atributele specifice acestui control sunt:


• Smooth Update – specifică dacă o copie a graficului este păstrată în format .bmp
fără a fi însă afişată (off – screen). Prin activarea acestui atribut se elimină fenomenul
de “pâlpâire” a graficului la mutarea cursorului dar se consumă multă memorie.
• Autosize Plot – validează autoscalarea formelor de undă în raport cu dimensiunea
ferestrei grafice a controlului reprezentând ecranul. Dacă nu este validată această
opţiune şi ecranul nu este suficient de mare pentru toate formele de undă, o parte din
acestea nu vor putea fi afişate;
• Expand Buses – validează descompunerea magistralelor de date în linii componente
ale acestora. Dacă nu este validată această opţiune liniile sunt strânse în magistrală şi
etichetele de stare afişează valoarea hexazecimală a magistralei ăn locul valorilor
individuale de „0” şi “1” corespunzătoare nivelelor logice pe fiecare linie.
• Plot Color – setează culoarea graficelor;
• Line Label – setează textul care va fi afişat pe axa Y pentru fiecare formă de undă
dacă ATTR_DIGWAVEFORM_EXPAND_BUSES este setat TRUE adică este
validată descompunerea magistralelor. Pot fi utilizate simbolurile "[BUS]" şi "[LINE]"
în etichetarea liniilor. La trasarea formelor de undă LabWindows/CVI va înlocui
"[BUS]" cu numărul curent al magistralei şi "[LINE]" cu numărul curent al liniei.
Numerotarea liniilor şi magistralelor începe de la zero. De exemplu şirul de caractere
"Semnal [BUS]-[LINE]" va crea o singură etichetă "Semnal 0-3" pentru a patra linie a
primei magistrale. Şirul de caractere "[BUS]-Linie [LINE]" va crea eticheta "2-Linie
0" pentru prima linie a celei de-a treia magistrale.
În schimb, dacă ATTR_DIGWAVEFORM_EXPAND_BUSES este setat FALSE
adică nu este validată descompunerea magistralelor pe toată axa Y va fi afişată
eticheta determinată de ATTR_DIGWAVEFORM_BUS_LABEL adică eticheta
reprezentând şirul de caractere introdus prin Bus Label
• X – axis – deschide o fereastră Edit Axis Settings (vezi fig. 3.84) prin intermediu
căreia se fac setări ale abscisei (axa X);
• Y – axis – deschide o fereastră Edit Axis Settings (vezi fig. 3.84) prin intermediu
căreia se fac setări ale ordonatei (axa Y);

59
3.5.3.10. Control Picture
Controlul Picture este utilizat pentru plasarea pe panoul interfeţei utilizator de imagini
care pot să reprezinte de exemplu simboluri sau
scheme. Poate fi de exemplu utilizat un astfel de
control într-un proces de instruire a modului de
conectare a elementelor într-o schemă pentru
testare cum este prezentat în fig.3.92
Un astfel de control este utilizat numai în
modul Indicator, astfel că asupra lui nu se pot
efectua operaţii cu tastatura sau mouse – ul.
Pentru setarea atributelor acestui control
se deschide fereastra Edit Digital Graph cu
dublu clic pe control sau prin comanda Edit
Control şi se obţine fereastra prezentată în
Fig.3.92. Control Picture
fig.3.93.

Fig.3.93. Fereastra Edit Control


pentru un control Picture

Atributele specifice acestui control sunt:


• Fit Mode – specifică modul de aşezare şi dimensionare a imaginii în limitele
controlului;
• Load Image – prin care se deschide calea de alegere şi selectare a imaginii;
• Paste Image – prin care se ataşează controlului o imagine aflată în clipboard;
• Unload Image – prin care se anulează o imagine ataşată anterior controlului pentru a
fi încărcată eventual o altă imagine.
• Show Frame – validează afişarea conturului controlului (cadru).

3.5.3.11. Control Timer


Controlul Timer este utilizat pentru declanşarea de acţiuni la intervale specifice de
timp. Aceste acţiuni sunt ordonate în funcţie de cerinţele
utilizatorului şi nu sunt vizibile pentru utilizator pe interfaţă.
Deoarece acesta nu este vizibil nici nu poate fi operat în timpul
execuţiei programului prin intermediul tastaturii sau al mouse –
ului. Controlul Timer este prezentat în fig.3.94.
Fig.3.94. Control Timer Pentru setarea atributelor acestui control se deschide
fereastra Edit Timer cu dublu clic pe control sau prin comanda Edit Control şi se obţine
fereastra prezentată în fig.3.95.

60
Fig.3.95. Fereastra Edit
Control pentru un control
Timer

Se observă că singurul atribut specific acestui control este:


• Interval (seconds) – specifică intervalul de timp exprimat în secunde după care este
apelată funcţia de control a timer – ului. Dacă acest atribut este 0 determină producerea de
evenimente cât mai rapid posibil. Dacă este setat mai mic decât clock – ul sistemului
evenimentele se vor produce la intervale date de rezoluţia clock – ului sistemului.

3.5.3.12. Controale de tip Splitter


Controalele de tip Splitter, fig.3.96, sunt utilizate pentru redimensionarea sau
repoziţionarea elementelor în arhitectura interfeţei utilizator
cu ajutorul tastaturii sau a mouse – ului prin mutarea acestor
controale.
Această funcţie poate fi îndeplinită de control dacă
acesta este setat în orice alt mod decât cel de Indicator. De
asemenea aceste elemente trebuie ataşate controlului de tip
Splitter, ataşarea făcându-se în stânga sau în dreapta
respectiv deasupra sau sub controlul de tip Splitter, fig.3.97.
acest control poate opera şi cu panouri dar în acest caz aceste
panouri trebuie să fie de tip subpanou (child panels).
Atunci când trece deasupra unui control Splitter
cursorul poate lua diferite forme alese prin intermediul
atributelor acestuia. Mutarea se face prin clic şi tragere cu
Fig.3.96. Controale de tip
mouse – ul. Această acţiune determină apariţia unei linii
Splitter
paralelă cu controlul şi având aceeaşi lungime cu acesta care
indică punctul de plecare.

b
a
Fig.3.97. Utilizarea controlalelor de tip Splitter
a – control Splitter orizontal
b - control Splitter vertical

61
Dacă este setată acţiunea de redimensionare a controlul îşi modifică dimensiunea, prin
creştere sau scădere depinzând de aşezarea controlului şi de mişcarea Splitter – ului, astfel
încât se păstrează distanţa iniţială între acesta şi Splitter. Dimensiunea nu poate scădea sub
valoarea minimă implicită a controlului.
Dacă este setată acţiunea de repoziţionare controalele ataşate se vor muta prin
intermediul Splitter – ului de asemenea cu păstrarea constantă a distanţei faţă de Splitter. Nu
poate fi mutat Splitter – ul astfel încât să se depăşească marginile panoului.
Operarea acestui control prin intermediul tastaturi se poate face cu ajutorul tastelor
direcţionale. Şi în acest caz şi în cazul operării prin intermediul mouse – ului cu ajutorul tastei
< Shift > mişcarea Splitter – ului se poate face la nivel de pixel.
Pentru setarea atributelor acestui control se deschide fereastra Edit Timer cu dublu
clic pe control sau prin comanda Edit Control şi se obţine fereastra prezentată în fig.3.98.

Fig.3.98. Fereastra Edit Control


pentru un control Splitter

Atributele specifice acestui control sunt:


• Show Contents While Dragging – validează redimensionarea şi repoziţionarea
continuă a controalelor ataşate Splitter – ului. Dacă opţiune este dezactivată se obţine
numai rezultatul mişcării Splitter – ului la sfârşitul acesteia;
• Left Side Range – este unul dintre cele 4 atribute ce definesc domeniul de mişcare al
Splitter – ului, în acest caz în partea stângă;
• Left Side Auto Range - Setarea automată de către LabWindows/CVI a marginii
stângi a domeniului a domeniul de mişcare al Splitter – ului;
• Right Side Range – defineşte domeniul de mişcare al Splitter – ului, în acest caz în
partea dreaptă;
• Left Side Auto Range - Setarea automată de către LabWindows/CVI a marginii
dreapta a domeniului a domeniul de mişcare al Splitter – ului;
OBS: regula implicită pentru stabilirea domeniului este aceea că Splitteru – ul poate fi mutat
până în punctul cel mai îndepărtat al oricărui control ataşat sau până în marginea panoului ce
defineşte interfaţa utilizator. Dacă sunt specificate valorile prin atributele Left Side Range
şi/sau Right Side Range aceste valori vor fi relative la colţul din stânga sus al panoului ce
defineşte interfaţa utilizator.
• Attach/Detach Controls – deschide o fereastră, fig.3.99, prin intermediul căreia se
pot ataşa controale Splitter – ului. În partea stânga această ferestră conţine4

62
controalele care nu au fost
ataşate astfel că acestea pot
fi ataşate în partea stângă a
Splitter – ului Attach
Control(s) on Left sau în
partea dreaptă a Splitter –
ului Attach Control(s) on
Right. Concomitent cu
ataşarea este activă şi
setarea Splitter moves
control prin care se
validează repoziţionarea
cursorului sau Splitter
sizes control prin care se
validează redimensionarea
controlului. Prin selecţia
Fig.3.99. Fereastra Attach/Detach Controls
unui control deja ataşat se
activează opţiunea Remove Control(s) prin care se poate detaşa de Splitter un
control.
• Frame Trickness – setează lăţimea Splitter – ului
• Move Cursor – setează diverse forme ale cursorului ce pot fi selectate dintr-o listă
• Span Panel – opţiune prin care Splitter – ul ia înălţimea panoului ce defineşte
interfaţa utilizator.

3.6. Meniul Arrange


Opţiunile meniului Arrange
sunt prezentate în fig.3.100 şi acestea
sunt utilizate pentru aranjarea
controalelor în interfaţa utilizator.

3.6.1. Comanda Alignment


Comanda Alignment,
fig.3.101. permite utilizatorului să
alinieze controalele pe panoul
reprezentând interfaţa utilizator.
Fig.3.100. Meniul Create Pentru selecţia acestora se poate
utiliza mouse – ul prin tragere sau
combinaţia < Shift – Clic > pentru adăugarea de noi
elemente grupului. Odată realizat grupul asupra
căruia se efectuează operaţia de aliniere se alege
una din următoarele criterii de aliniere disponibile,
conform tabelului 3.2
Fig.3.101. Comanda Alignment
Tabel 3.2
Icon criteriu Denumire criteriu Descriere criteriu
Left Edges Aliniază vertical marginea stânga a controalelor
selectate după marginea celui mai din stânga control
Horizontal Centers Aliniază vertical după centrul orizontal al controalelor
selectate
Aliniază vertical marginea dreapta a controalelor
Right Edges selectate după marginea celui mai din dreapta control

63
Aliniază orizontal marginea de sus a controalelor
Top Edges selectate după marginea celui mai sus control
Aliniază orizontal după centrul vertical al controalelor
Vertical Centers selectate
Aliniază orizontal marginea de jos a controalelor
Bottom Edges selectate după marginea celui mai jos control

3.6.2. Comanda Align Left Edges


Comanda Align Left Edges are acelaşi efect ca şi comanda Alignment >> Left Edges
după utilizarea unuia dintre criteriile de aliniere de mai sus.

3.6.3. Comanda Distribution


Comanda Distribution, fig.3.102
permite utilizatorului să distribuie controalele
pe panoul reprezentând interfaţa utilizator.
Pentru selecţia acestora se poate utiliza
mouse – ul prin tragere sau combinaţia <
Shift – Clic > pentru adăugarea de noi
elemente grupului. Odată realizat grupul
Fig.3.102. Comanda Distribution asupra căruia se efectuează operaţia de
distribuire se alege una din următoarele
criterii de distribuire disponibile, conform tabelului 3.3
Tabel 3.3
Icon Denumire
Descriere criteriu
criteriu criteriu
Setează o distanţă egală în plan vertical între marginea de sus a
Top Edges
controalelor. Cel mai de sus şi cel mai de jos formează referinţa
Vertical Setează o distanţă egală în plan vertical între centrele
Centers controalelor. Cel mai de sus şi cel mai de jos formează referinţa
Bottom Setează o distanţă egală în plan vertical între marginea de jos a
Edges controalelor. Cel mai de sus şi cel mai de jos formează referinţa
Setează un spaţiu egală în plan vertical între controale. Cel mai
Vertical Gap
de sus şi cel mai de jos formează referinţa
Vertical Elimină spaţiul în plan vertical dintre controale
Compress
Setează o distanţă egală în plan orizontal între marginea din
Left Edges stânga a controalelor. Cel mai din stânga şi cel mai din dreapta
formează referinţa
Setează o distanţă egală în plan orizontal între centrele
Horizontal
controalelor. Cel mai din stânga şi cel mai din dreapta formează
Centers
referinţa
Setează o distanţă egală în plan orizontal între marginea din
Right Edges dreapta a controalelor. Cel mai din stânga şi cel mai din dreapta
formează referinţa
Horizontal Setează un spaţiu egală în plan spaţiu între controale. Cel mai
Gap din stânga şi cel mai din dreapta formează referinţa
Horizontal Elimină spaţiul în plan orizontal dintre controale
Compress

64
3.6.4. Comanda Distribute Top Edges
Comanda Distribute Top Edges are acelaşi efect ca şi comanda Distribution >> Top
Edges după utilizarea unuia dintre criteriile distribuire de mai sus.

3.6.5. Comanda Control ZPlane Order


Comanda Control ZPlane Order,
fig.3.103, permite utilizatorului să aranjeze
controalele din punct de vedere al suprapunerii
acestora. În mod normal controalele sunt
aranjate din spate către în faţă pe măsura
dispunerii acestora pe panou. Cu următoarele
opţiuni se pot face modificări ale acestei
Fig.3.103. Comanda Control ZPlane aranjări implicite:
• Move to Front – mută controlul în faţă;
• Move to Back – mută controlul în spate;
• Move Forward – mută controlul în faţă cu o poziţie, în cazul aşezării suprapuse a mai
multor controale;
• Move Backward – mută controlul în faţă cu o poziţie, în cazul aşezării suprapuse a mai
multor controale;

3.6.6. Comanda Center Label


Comanda Center Label centrează etichetele controalelor de pe panou

3.6.7. Comanda Control


Coordinates
Comanda Control Coordinates
deschide o fereastră de dialog Control
Coordinates and Dimensions,
fig.3.104, prin care în mod interactiv,
utilizatorul poate să seteze lăţimea,
înălţimea, marginea sus şi marginea jos a
controalelor selectate.
Fig.3.104. Fereastra Control Coordinates
and Dimensions

3.7. Meniul Code


Opţiunile meniului Code sunt prezentate în
fig.3.105 şi acestea sunt utilizate pentru crearea sau
editarea, în mod automat, a codului în baza fişierului
Fig.3.105. Meniul Code (.uir).

3.7.1. Comanda Set Target File


Cu ajutorul comenzii Set Target File se
alege fişierul LabWindows/CVI pe baza căruia se
va genera codul. Prin selecţia acestei comenzi se
deschide fereastra Set Target File, fig.3.106, cu o
listă a fişierelor dintre care se alege fişierul sursă
pe baza căruia se va genera codul.
Implicit LabWindows/CVI plasează codul
generat într-o fereastră nouă doar dacă un fişier
cod sursă (.c) nu este deschis. În acest caz fişierul
Fig.3.106. Fereastra Set Target File sursă este implicit fişierul creat sau editat.

65
Generarea codului este realizată de Code Builder şi acesta utilizează acelaşi fişier cu cel
corespunzător panoului reprezentând interfaţa utilizator cu excepţia cazului în care acesta este
de tipul Interactive Execution. Pentru selecţia unui anume fişier se alege acesta din listă şi se
validează alegerea cu clic pe butonul OK.

3.7.2. Comanda Generate


Comanda Generate, fig.3.107, este comanda prin care utilizatorul are acces la
caracteristicile funcţionale ale generatorului Code Builder din LabWindows/CVI. Este
comanda ce realizează generarea efectivă a codului pe
baza fişierului .uir.
Se utilizează comanda All Code pentru
generarea codului care să însoţească fişierul .uir.
Prin selecţia opţiunii Code » Generate » All Code se
deschide fereastra de dialog Generate All Code,
fig.3.108, prin intermediul căreia se pot efectua
următoarele acţiuni:
Fig.3.107. Comanda Generate • se alege posibilitatea de a crea un nou
proiect sau de a adăuga codul generat la
proiectul curent;
• se alege tipul fişierului ţintă a operaţiei de
generarea a codului acesta putând fii de tip
executabil (.exe) sau de tip bibliotecă
dinamică (.dll);
• se alege sau se stabileşte numele fişierului
reprezentând proiectul;
• se alege sau se stabileşte numele fişierului
sursă;
• se alege panoul sau panourile care se
încarcă şi se afişează în timpul rulării
funcţiei main. LabWindows/CVI atribuie
în mod automat o variabilă implicită
reprezentând numele fiecărui panou în
fişierul .uir şi această variabilă poate fi
schimbată de către utilizator
• se selectează funcţiile de tip callback sau
funcţiile pentru terminarea programului.
Fig.3.108. Fereastra Generate All Code Este necesară plasarea pe panoul frontal a
unui buton prin intermediul căruia să
apeleze o funcţie de tipul QuitUserInterface şi care poate fi Quit sau ShutDown.
De asemenea este necesară selecţia acestei comenzi în fereastra Generate All Code.
Prin alegerea comenzii Code » Generate » All Code, LabWindows/CVI produce
declaraţiile #include, declararea variabilelor, structura funcţiilor, funcţia main şi le
plasează pe toate în fişierul generat. Funcţiile
selectate pentru terminarea programului includ o linie
de program specifică în funcţia
QuitUserInterface.
Dacă nu este selectată opţiunea Code »
Preferences » Always Append Code to End
(fig.3.109) LabWindows/CVI va plasa secvenţa de
Fig.3.109. Opţiunea Always cod pentru fiecare funcţie callback în locul dat de
Append Code to End poziţia cursorului în fişierul generat. Dacă cursorul
este în interiorul unei funcţii existente
66
LabWindows/CVI îl va repoziţiona, pentru inserarea noii funcţii, la sfârşitul funcţiei existente.
Toate funcţiile de acelaşi tip (panel callback, control callback, or menu callback) sunt plasate
împreună în fişierul sursă în ordinea panel callback → control callback → menu callback.
Acestea sunt setări implicite şi pot fi alese prin opţiunea Code » Preferences
Secvenţele de cod pentru panel callback şi control callback au toate elementele
necesare cum ar fi sintaxa adecvată, valorile returnate. De exemplu o construcţie de comutator
(switch) conţine structuri de tip case pentru fiecare eveniment pe care poate să-l genereze un
control sau un panou.
Prin selecţia comenzii Code » Generate » Main Function se poate înlocui funcţia
main astfel încât să fie posibilă adăugarea sau
modificarea de elemente ale interfeţei care vor fi
încărcate la o nouă rulare a programului. Dacă
anterior a fost selectată comanda Code »
Generate » All Code nu mai poate fi selectată şi
comanda Code » Generate » Main Function.
Prin selecţia acestei comenzi de deschide
fereastra de dialog Generate Main Function,
fig.3.110, prin intermediul căreia se pot efectua
următoarele acţiuni:
• se alege panoul sau panourile care se încarcă şi
Fig.3.110. Fereastra
se afişează în timpul rulării funcţiei main.
Generate Main Function
LabWindows/CVI atribuie în mod automat o
variabilă implicită reprezentând numele fiecărui panou în fişierul .uir şi această
variabilă poate fi schimbată de către utilizator
• se poate selecta opţiunea Generate WinMain( ) Instead of main( ) prin intermediul
căreia se utilizează ca program principal WinMain în loc de main. O astfel de opţiune
este de preferat a se utiliza atunci când asamblarea programului se face cu un alt
compilator decât cel din LabWindows/CVI.
Ca şi în cazul comenzii Code » Generate » All Code şi prin alegerea comenzii Code
» Generate » All Code, LabWindows/CVI produce declaraţiile #include, declararea
variabilelor, structura funcţiilor, funcţia main şi le plasează pe toate în fişierul generat.
Dacă fişierul sursă conţine numai funcţia main şi declaraţiile #include şi nu au fost create
funcţiile callback corespunzătoare nu se poate realiza rularea proiectului. Dacă funcţia main
apelează LoadPanel va fi generată câte o eroare (non-fatal error) pentru fiecare funcţie de
apelare a controalelor ce nu va fi găsită.
Dacă destinaţia proiectului este crearea unui fişier .dll nu for fi generate nici una din
funcţiile WinMain sau main. În locul acestora LabWindows/CVI prin CodeBuilder va
genera funcţia DLLMain şi va plasa funcţia User Interface astfel încât aceasta să fie apelabilă
prin intermediul unei funcţii denumită InitUIForDLL. Funcţia InitUIForDLL va fi
apelabilă în structura fişierului .dll dintr-un punct din care se doreşte încărcarea şi afişarea
panourilor interfeţei utilizator.
La asamblarea unui fişier .exe sau.dll cu un compilator extern este necesară
includerea unei apelări către InitCVIRTE în funcţii de tip WinMain, main, sau DLLMain
(sau DLLEntryPoint pentru Borland C/C++). Într-un fişier .dll este necesară de
asemenea includerea unei apelări către CloseCVIRTE. LabWindows/CVI prin
CodeBuilder va genera apelările necesare către InitCVIRTE sau CloseCVIRTE în
funcţiile de tip WinMain, main, sau DLLMain şi de asemenea va genera declaraţiile
#include pentru fişierul cvirte.h
Prin alegerea comenzii Code » Generate » All Callbacks LabWindows/CVI va
produce declaraţiile #include şi funcţiile de apelare (callback functions) şi le va plasa în
fişierul destinaţie.
67
Prin alegerea comenzii Code » Generate » Panel Callback LabWindows/CVI va
produce declaraţiile #include şi funcţiile pentru panourile active şi le va plasa în fişierul
destinaţie. O astfel de comandă poate fi apelată numai dacă este selectat un panou în fişierul
.uir
Prin alegerea comenzii Code » Generate » Control Callbacks LabWindows/CVI va
produce declaraţiile #include şi funcţiile pentru fiecare control selectat şi le va plasa în
fişierul destinaţie. O astfel de comandă poate fi apelată numai dacă este selectat cel puţin un
control. Acelaşi lucru se poate face şi cu clic – dreapta pe control în fişierul .uir şi alegerea
opţiunii Generate Control Callback din meniul contextual.
Prin alegerea comenzii Code » Generate » Menu Callbacks se deschide fereastra de
dialog Select Menu Bar Objects, fig.3.110, prin intermediul căreia se pot selecta obiectele de
tip bară de meniuri pentru care se generează funcţii de apelare care de exemplu pentru
Configurare » Setarea 1 din fig.3.111 este:

#include <userint.h>
#include "menus.h"

void CVICALLBACK ConfigTestCallback (int menuBar, int menuItem, void


*callbackData,
int panel)
{
}

Fig.3.111. Fereastra Select Menu Bar Objects

LabWindows/CVI va produce declaraţiile #include şi funcţiile prototip precum şi


parantezele de început şi sfârşit. Nu va genera structuri de genul case deoarece în mod uzual
nu se folosesc astfel de structuri în barele de meniuri. Este necesară adăugarea de secvenţe de
cod prin intermediul cărora să se implementeze acţiuni ce vor fi generate atunci când
utilizatorul selectează bara de meniuri.

3.7.3. Comanda View


Comanda View, fig.3.112, este utilizată
pentru vizualizarea codului pentru funcţiile de
apelare date.
Pentru a vedea codul unei funcţii din
fişierul .uir se selectează panoul sau controlul
Fig.3.112. Comanda View al cărei funcţii se caută şi se selectează View »
Panel Callback sau View » Control Callback,

68
Fig.3.113. Utilizarea opţiunii
View » Control Callback

fig.3.113. În fişierul sursă redat funcţia apelată apare marcată. Codul pentru funcţia apelată de
un control poate de asemenea vi redat şi cu clic – dreapta pe respectivul control şi selecţia
opţiunii View Control Callback din meniul pop – up ce apare ca urmare a acestei acţiuni.
La alegerea comenzii View pentru o funcţie apelată LabWindows/CVI caută această
funcţie în toate ferestrele deschise, în toate fişierele proiectului şi în orice alte fişiere deschise.
Dacă funcţia este găsită într-un proiect care nu este deschis acesta va fi deschis automat. Din
aceste motive utilizarea acestei comenzi este folositoare permiţând găsirea acestei funcţii fără
a răsfoi diferite fişiere sau a căuta în acestea.
La sfârşitul verificării codului reîntoarcerea în fişierul .uir se poate face şi prin
plasarea cursorului pe numele funcţiei sau numele constantei unui obiect din interfaţa
utilizator şi selecţia opţiunii Find UI Object din meniul View al ferestrei fişierului sursă.
Acelaşi rezultat se poate obţine şi prin alegerea aceleiaşi opţiuni din meniul pop – up ce apare
ca efect al acţiunii clic – dreapta pe numele funcţiei sau numele constantei, fig.3.114

Fig.3.114. Opţiunea Find UI Object

69
3.7.4. Comanda Preference
Comanda Preference, fig.3.115, este utilizată pentru schimbarea setărilor implicite ale
structurilor case generate de funcţiile apelate de
controale sau panouri sau pentru specificarea locaţie
fişierului destinaţie al codului generat.
Se utilizează comenzile Default Panel Events
sau Default Control Events pentru selecţia
evenimentelor plasate în structura de comutaţie a
Fig.3.115. Comanda Preference cazurilor de către funcţiile apelate de un control sau un
panou. Aceste evenimente se aleg dintr-o listă,
fig.3.116 dar pot fi şi adăugate altele prin opţiunea Add
‘Default:’ Switch Case.
Alegând comanda Code»Preferences»Default Panel
Events se deschide fereastra Panel Callback Events iar prin
alegerea comenzii Code»Preferences»Default Control Events
se deschide fereastra Control Callback Events (fig.3.115). Din
listele cuprinse în aceste ferestre se selectează evenimente care
se includ în cod ca şi structuri case. Pentru fiecare opţiune
LabWindows/CVI include în codul sursă o structură case ce
corespunde fiecărei opţiuni.
Evenimentele implicite sunt ignorate de funcţiile apelate
de controlul de tip Timer pentru care singurele evenimente sunt
EVENT_TIMER_TICK şi EVENT_DISCARD
Atunci când este selectată comanda Always Append
Code to End, LabWindows/CVI va plasa codul funcţiei apelate
Fig.3.116. Fereastra la sfârşitul fişierului destinaţie. Dacă nu este selectată comanda
Control Callback Events noul cod generat este plasat în poziţia curentă a cursorului în
fişierul destinaţie.

3.8. Meniul Build


Opţiunile meniului Build sunt prezentate în
fig.3.117 şi acestea sunt utilizate pentru realizarea
interfeţei utilizator pe baza compilării fişierelor şi legării
acestora într-un proiect.

3.8.1. Comanda Configuration


Comanda Configuration, fig.3.118, este utilizată
pentru alegerea configuraţiei proiectului între Release sau
Debug.
Configuraţia Release se alege atunci când se
Fig.3.117. Meniul Build urmăreşte crearea unui proiect de tip executabil sau .dll
şi care va fi transmis către utilizatori. Alegerea acestei
comenzi determină o execuţie rapidă a
modulelor dar nu există posibilitatea de
inserarea de puncte de depanare (breakpoints)
şi de utilizare a ferestrelor pentru variabile,
Fig.3.118. Comanda Configuration altfel spus o astfel de variantă nu va da
posibilitatea efectuării de depanări a
proiectului.
Configuraţia Debug se alege atunci când se urmăreşte crearea unui proiect de tip
executabil sau .dll dar asupra care să poată fi supus unor operaţii de depanare

70
3.8.2. Comanda Create Debuggable Executable
Comanda Create Debuggable Executable,
fig.3.119, este posibilă dacă sunt selectate comenzile
Buid»Configuration»Debug şi Buid»Target
Type»Executable. Utilizând o astfel de comandă este
posibilă compilarea şi construirea unui executabil ce va
conţine însă şi informaţii despre o posibilă depanare sau
Fig.3.119. Comanda punere la punct. Alegerea gradului de depanarea se
Create Debuggable Executable poate face prin intermediul opţiunii Debugging level
iar posibilitatea depanării şi/adaptării proiectului la noi
cerinţe se poate face prin comanda Run»Debug în Workspace.

3.8.3. Comanda Mark File for Compilation


Când LabWindows/CVI marchează un fişier
sursă pentru compilare în coloana Status a structurii
arborescente a proiectului (Project Tree) în fereastra
Workspace apare extensia .c. LabWindows/CVI
recompilează la următoarea construcţie a proiectului
fişierele marcate. La modificarea unui fişier sursă
Fig.3.120. Comanda
LabWindows/CVI va marca automat acest fişier pentru
Mark File for Compilation compilare. De asemenea poate fi forţat
LabWindows/CVI pentru a efectua compilarea unui fişier, la următoarea construcţie a
proiectului, ptin marcarea acestuia ca urmare a selecţiei comenzii Mark File for
Compilation, fig.3.120.

3.8.4. Comanda Batch Build


Comanda Batch Build, fig.3.121.a deschide fereastra Batch Build, fig.3.120.b, prin
intermediul căreia pot fi asamblate mai multe proiecte, şi care are următoarele opţiuni:

a.)

b.)

Fig.3.121. Comanda şi fereastra Batch Build

• Configurations – care afişează toate configuraţiile valide pentru a pute fi utilizate în


proiect;
• Check All Debug – selectează toate item – urile din listă pentru a realiza o configuraţie
Debug;
• Check All Release - selectează toate item – urile din listă pentru a realiza o configuraţie
Release;
• Check None - deselectează toate item – urile din listă;
• Build – activează şi construieşte fiecare configuraţie selectată a fiecărui proiect;
• Rebuild – forţează LabWindows/CVI să recompileze toate fişierele sursă în fiecare
configuraţie selectată a fiecărui proiect;
• Cancel – abandonează operaţia şi închide fereastra Batch Build.

71
3.8.5. Comanda Target Type
Comanda Target Type, fig.3.122,
deschide un submeniu în care se poate
selecta tipul destinaţiei proiectului, şi acesta
determină ce tip de fişier va fi creat când se
execută comanda Build » Create. Se pot
selecta următoarele tipuri de destinaţie:
• Executabil (.exe);
Fig.3.122. Comanda Target Type • Dynamic Link Library (.dll);
• Static Library.
La alegerea opţiunii Static Library comanda Debug Project în meniu Run este
inactivă şi este inactivă de asemenea comanda Configuration » Debug.
Dacă se alege opţiunea Dynamic Link Library poate fi utilizată comanda Run »
Specify External Process pentru a specifica un program extern care va utiliza fişierul .dll.
pentru această opţiune comanda Debug Project se va schimba în Debug xxx.exe unde
xxx.exe reprezintă numele programului specificat

3.8.6. Comanda Target Settings


Comanda Target Settings, fig.3.123.a, deschide fereastra Target Settings, fig.3.123.b
prin intermediul căreia se fac setări asupra destinaţiei, setări care sunt funcţie şi de tipul
destinaţiei

a).
b).

Fig.3.123. Comanda şi fereastra


Target Settings

Dacă Target Type a fost selectat ca Executable şi de asemenea a fost făcută selecţia
Build » Target Settings în fereastra Target Settings există următoarele opţiuni:
• Application File – prin care se specifică numele fişierului executabil pentru versiunile
de program Debug sau Release. Se poate utiliza şi butonul Browse pentru a selecta un
fişier existent;
• Application Title – prin care se specifică un titlu al programului, titlu care va apărea
în meniu Start precum şi în fereastra Add/Remove Programs din Windows dacă se
crează un kit de instalare;
• Application Icon File – fişier ce conţine o descriere grafică prin icon a programului.
Poate fi utilizat butonul Browse pentru a selecta un icon existent. sau poate fi utilizat
programul samples\apps\iconedit\iconedit.exe din LabWindows/CVI pentru crearea
unui icon propriu;
• Icon – reprezentarea grafică pentru Application Icon File. Se poate căuta un icon prin
dublu – clic pe Icon sau poate fi utilizat programul

72
samples\apps\iconedit\iconedit.exe din LabWindows/CVI pentru crearea unui icon
propriu;
• Run-Time Support – suportul run-time pentru fişierul executabil. Dacă este selectat
item – ul Instrument Driver Only proiectul nu va reuni întregul set de biblioteci ale
LabWindows/CVI şi va reuni cel mai mic set de funcţii necesare. Executabilul creat cu
Full Run-Time Engine utilizează fişierul cvirte.dll adică LabWindows/CVI
Run-Time Engine DLL. Executabilul creat cu Instrument Driver Only utilizează în
locul fişierului cvirte.dll, fişierul instrsup.dll;
• Embed Project .UIRs – înglobează fişiere .uir în executabil. Validând această
opţiune este necesară includerea tuturor fişierelor .uir în executabil prin intermediul
comenzilor LoadPanel sau LoadPanelEx;
• Generate Map File – opţiune prin care se creează o hartă a memoriei pentru
executabile. Această hartă cuprinde numele tuturor funcţiilor şi variabilelor precum şi
adresele acestora şi reprezintă un ajutor atunci când apar căderi în rularea programului
prin furnizarea adresei generatoare unde a apărut eroarea. Prin vizualizarea întregii
hărţi se poate găsii funcţia sau variabila generatoare a erorii;
• Create Console Application – opţiune prin dezactivarea căreia LabWindows/CVI
creează executabilul ca o aplicaţie de tip GUI în Windows. Dacă este activată opţiunea
LabWindows/CVI creează executabilul ca o aplicaţie de tip pupitru de comandă. O
astfel de aplicaţie creează o fereastră în Windows (Command Prompt sau MS-DOS
Prompt) şi adaugă porturi de intrare – ieşire (I/O) standard la acest pupitru de comandă
virtual. O astfel de aplicaţie este utilă atunci când se urmăreşte redirecţionarea
porturilor de intrare – ieşire prin program;
• Register ActiveX Server After Build – această opţiune este posibilă numai la
realizarea proiectelor de tip ActiveX şi este opţiune prin care LabWindows/CVI
înregistrează în fişierele destinaţie orice modificare făcută în procesul de construire a
proiectului;
• Version Info – deschide fereastra
Version Info, fig.3.124, prin intermediul
căreia se introduc în executabil informaţii
referitoare la acesta;
• LoadExternalModule Options –
opţiune ce permite încărcarea de module
externe
9 Enable LoadExternalModule –
validarea utilizării comenzii
LoadExternalModule care
determină creşterea dimensiunii
executabilului dar dacă nu este
validată opţiunea şi se utilizează
comanda LoadExternalModule
este necesară reconstruirea
proiectului după fiecare schimbare
efectuată.
Fig.3.124. Fereastra Version Info 9 Add Files to Executable – permite
selectarea de module adiţionale ce
vor fi adăugate în fişierul Application File.
• OK – acceptarea modificărilor curente şi închiderea ferestrei

73
CAP. 4

Proiectarea interfeţelor utilizator în LABWINDOWS/CVI

4.1. Utilizarea ferestrei User Interface Editor pentru crearea GUI


Fereastra User Interface Editor este utilizată în special pentru crearea unei interfeţe
utilizator de tip grafic (GUI – Graphical User Interface) specifică aplicaţiei. Elementele unei
astfel de interfeţe ce constau în bare de meniu, controale, meniuri de tip pop – up au fost
prezentate detaliat în cap.3.
Fereastra User Interface Editor este un editor interactiv de tipul drag – and – drop
special destinat proiectării de interfeţe GUI personalizate pe aplicaţie prin selectarea a diferite
tipuri de controale din meniul Create şi poziţionarea acestora pe panourile de asemeni create
de utilizator. Fiecare din aceste controale poate fi adaptat specificului aplicaţiei prin
intermediul a unei serii de ferestre de dialog prin intermediul cărora se pot face setările
necesare .
Odată realizată interfaţa utilizator este necesară scrierea codului de control al acesteia
care este un cod sursă scris în limbajul de programare C. Pentru evidenţierea elementelor
interfeţei este necesară de asemenea atribuirea de nume fiecărui panou, meniu sau control.
Aceste nume sunt utilizate în codul sursă pentru diferenţierea elementelor de acelaşi tip ale
interfeţei utilizator. De asemenea trebuie atribuit un nume de funcţie pentru fiecare control
astfel încât la operarea acestuia în timpul rulării programului să poată fi apelată această
funcţie. După cum a fost prezentat în cap. 3 atribuirea unui nume controlului reprezentând o
constantă în program precum şi o funcţie apelată la operarea acestuia numită funcţie callback
se face în User Interface Editor prin intermediul ferestre Edit pentru fiecare tip de control.
După ce s-au completat toate elementele interfeţei şi s-a salvat, aceasta devine un
fişier interfaţă (.uir – user interface resource file) astfel că LabWindows/CVI va putea să
genereze un fişier de tip include prin intermediul căruia se vor defini toate constantele şi
funcţiile callback asociate elementelor interfeţei
După ce este completat f işierul .uir este folosit, în continuare utilitarul
CodeBuilder din LabWindows/CVI pentru a crea fişierul sursă complet. Prin intermediul
acestui utilitar sunt incluse, în mod automat, în fişierul sursă funcţiile callback specificate prin
fişierul .uir.

4.2. Relaţia dintre eveniment şi funcţia apelată


Ieşirile reprezentând rezultatele rulării unui program realizat în LabWindows/CVI sunt
generate de evenimente care au loc pe interfaţa utilizator sau care sunt efect ale unor
evenimente asupra controalelor de pe panoul reprezentând interfaţa utilizator. Ca urmare a
apariţiei unui eveniment este apelată o funcţie de tip callback.
La apariţia unui eveniment în primă fază trebuie să se stabilească „unde” s-a produs
evenimentul adică este detectat panoul sau controlul de pe panou asupra căruia s-a produs un
eveniment. Urmează să se verifice dacă există o procedură denumită în LabWindows/CVI
funcţie callback asociată evenimentului.
Dacă nu există o astfel de funcţie evenimentul va fi ignorat şi fie se continuă execuţia
programului fie acesta intră în starea de aşteptare a unui alt eveniment.
Dacă este identificată o astfel de funcţie asociată panoului sau controlului se caută
informaţii despre această funcţie şi se transferă execuţia tratării evenimentului prin
intermediul acestei funcţii şi se revine în programul de bază sau se aşteaptă un nou eveniment.
În general, funcţionarea programului constă în execuţia acestor funcţii callback. Aceste funcţii
au structura specifică funcţiilor utilizate în limbajul C adică au o declaraţie a funcţiei, un
header şi conţinutul efectiv sau corpul funcţiei acesta determinând ceea ce trebuie făcut în
cazul evenimentului ce a generat apelarea acestei funcţii. Prin intermediul funcţiilor callback
sunt procesate numai evenimentele valide

74
Structura din fig.4.1 prezintă modul de administrare şi de tratare a unui eveniment
generat de către utilizator.
În mod simplist orice eveniment ce
Administrare are ataşată o funcţie callback este considerat
eveniment eveniment valid. Deoarece există un număr
Eveniment ? NU foarte de posibilităţi de generare a
evenimentelor de către utilizator şi de aici un
DA număr foarte mare de combinaţii pentru
Caută eticheta panoului simplificare se restricţionează evenimentele
sau controlului obiect al valide la cele care denumite generic
evenimentului evenimente „îndeplinite” ("COMMIT"
events).
Se consideră astfel de evenimente
Există funcţie NU doar cele produse de un clic – stânga cu
callback mouse – ul sau prin apăsarea tastei
DA <ENTER>. Altfel spus din mulţimea de
evenimente ce ar putea fi administrate de
Tratare LabWindows/CVI se consideră valide doar
eveniment evenimentele COMMIT reprezentate de un
Eveniment NU
clic – stânga cu mouse – ul sau prin apăsarea
valid ? tastei <ENTER> deoarece acestea sunt
DA suficiente şi adecvate pentru marea
Execută codul funcţiei majoritate a funcţionării interfeţelor
utilizator
Având definit evenimentul valid pe
baza schemei prezentată în fig 4.1. se pot
Fig.4.1. Administrarea şi tratarea descrie algoritmic etapele declanşate de
evenimentelor generarea unui eveniment, astfel:

• La sesizarea unui eveniment declasat de utilizator în primă fază LabWindows/CVI


determină panoul sau controlul ţintă al evenimentului;
• În pasul următor LabWindows/CVI verifică dacă panoul sau controlul au asociate funcţii
callback pentru tratarea evenimentului. Dacă nu există astfel de funcţii asociate
evenimentul va fi ignorat;
• Dacă există o funcţie callback asociată LabWindows/CVI declanşează tratarea
evenimentului pe baza acestei funcţii asociate;
• În faza de tratare a evenimentului se verifică iniţial dacă evenimentul este valid adică este
unul din evenimentele de categoria EVENT_COMMIT. Dacă evenimentul nu este din
această categorie va fi ignorat;
• În ultima etapă toate codurile adiţionale funcţiei callback asociată vor fi executate şi după
aceasta LabWindows/CVI se reîntoarce în aşteptarea unui nou eveniment.

4.3. Iniţializarea construirii interfeţei utilizator


Iniţializarea construirii unei noi interfeţe utilizator
începe cu crearea unui fişier nou .uir şi pentru aceasta se
parcurg etapele:
1. Se selectează File » New » User Interface (*.uir) sau
se selectează butonul corespunzător din bara de unelte
a ferestrei User Interface Editor (fig.4.2) ceea ce
determină apariţia în fereastră a unui panou gol
reprezentând un fişier corespunzător unei noi interfeţe
Fig.4.2. Creare fişier .uir utilizator

75
2. Cu dublu – clic pe fereastra nou apărută reprezentând panoul interfeţei se deschide
fereastra de dialog Edit Panel unde se poate stabili titlul acestuia în căsuţa Panel
Title. Fiecare panou trebuie de asemenea să aibă un nume reprezentând o constantă
asociată acestuia astfel că această constantă reprezentând numele sau eticheta
interfeţei se introduce în căsuţa Constant Name. LabWindows/CVI sugerează în mod
automat un nume implicit şi de multe ori este suficientă alegerea acestuia. Este de
menţionat că prin convenţie în limbajul C constantele se scriu cu litere mari
3. Se apasă butonul OK

4.4. Adăugarea elementelor de bază ale interfeţei


Orice interfaţă creată în LabWindows/CVI are nevoie de o metodă de închidere la
terminarea sesiunii de lucru. Dacă este neglijat acest aspect al funcţionării modalitatea de
închidere îi revine sistemului de operare prin oprirea task – ului din Windows Task Manager
dar o astfel de soluţie nu este cea mai potrivită si de aceea se impune un buton de oprire, ca un
prim element de bază ce trebuie adăugat interfeţei.
Dacă se urmăreşte un anumit design al interfeţei ce constă în delimitarea de zone ale
acesteia în conformitate cu anumite funcţii ale controalelor sau cu dorinţa realizatorului este
necesară adăugarea de elemente grafice de decorare Decoration. Acestea trebuie adăugate
panoului înaintea oricărui alt control deoarece numai în acest fel controlul poate fi suprapus
peste un astfel de element grafic. Dacă în această fază a proiectării interfeţei utilizator încă nu
este stabilită configuraţia finală este de preferat să se adauge într-un colţ câteva astfel de
elemente grafice, chiar dacă nu vor fi poziţionate conform configuraţiei finale a interfeţei.
Pentru adăugarea unui control de terminare a lucrului se parcurg etapele:
1. Se selectează Create » Command Button »
Square Command Button sau cu clic –
dreapta pe panou se alege Command Button
» Square Command Button (fig.4.3.) şi
controlul selectat se poziţionează
Fig.4.3. Adăugare buton oprire corespunzător pe interfaţă .
2. Se stabilesc atributele acestui control
prin modalităţile prezentate în subcap.
3.5.3.3. prin intermediul ferestrei de
dialog Edit Command Button. Aici se
stabileşte numele constantei controlului
fie prin alegerea celui implicit generat
de LabWindows/CVI
COMMANDBUTTON (de preferat, în
general) fie prin stabilirea unui alt
nume. Tot aici se stabileşte şi funcţia
callback apelată la apariţia unui
eveniment asupra acestui control, având
un nume care să sugereze acţiunea
evenimentului asupra controlului
(TERMINARE), fig.4.4.
Fig.4.4. Utilizarea ferestrei 3. O altă modalitate de adăugare a
Edit Command Button controlului de terminare este utilizarea
unuia dedicat acestei funcţii Quit Button
selectat cu clic – dreapta pe panou şi alegere
Custom Control » Quit Button (fig.4.5.).
Acest control dedicat operaţiei de ieşire din
program are asociată funcţia callback
Fig.4.5. Alegere Quit Button specifică QuitCallback.

76
Considerând în această
primă fază ambele controale
pentru terminarea programului
interfaţa are forma din fig.4.6
Se poate genera codul
schelet (skeleton code)
reprezentând codul sursă al
interfeţei după ce această formă a
Fig.4.6. Interfaţa utilizator – faza I ei este salvată în fişier .uir.
Pentru generarea codului se alege Code
» Generate » All Code ..., acţiune care
va deschide fereastra de dialog (fig.4.7.)
pentru setările necesare generării codului
prezentate în subcap.3.7.2. Se observă că
pentru terminarea programului au fost
generate două posibilităţi reprezentate de
fie numai a butonului INCHIDE fie
numai a butonului QUIT fie a oricăruia
dintre acestea prin marcajele
corespunzătoare în cutia de dialog
SelectQuitUserInterface Callbacks
Pentru aplicaţia curentă se
consideră utilizarea numai a butonului
INCHIDE astfel că prin lansarea
comenzii de generare se obţine codul
sursă al interfeţei utilizator, fig.4.8., cod
care de fapt este scheletul pe care se
adaugă alte controale şi funcţii aferente
funcţionării interfeţei conform cerinţelor
Fig.4.7. Utilizarea ferestrei Generate All Code impuse pentru proiectarea acesteia.

Fig.4.8. Codul sursă obţinut prin comanda Code » Generate » All Code

77
Înainte de a adăuga alte elemente interfeţei se fac câteva precizări referitoare la codul
sursă obţinut, astfel încât chiar dacă nu este necesară înţelegerea fiecărei linii de comandă să
rezulte o idee generală privind funcţionarea acestuia. Pentru analiza codului acesta se va
împărţii în trei segmente.
Primul segment având următoarele linii de cod:

conţine fişierele "include" necesare mediului LabWindows/CVI precum declararea


variabilelor globale. Doar unul din cele trei fişiere "include" este particularizat aplicaţiei
denumită basic1 şi acesta conţine informaţii despre interfaţa utilizator a aplicaţiei curente
referitoare la eticheta panoului, culori şi poziţii ale acestuia pe display şi ale controalelor pe
suprafaţa acestuia.
Prin ultima linie din acest segment de cod se realizează declararea variabilei globale
"panou1". Această variabilă este de tip static şi are o valoare de tip numeric atribuită de
sistemul de operare Windows panoului reprezentând interfaţa în LabWindows/CVI.
Cel de-al doilea segment de cod având următoarele linii:

reprezintă funcţia de bază (main-function) a codului sursă în limbajul C. Ignorând în această


fază a analizei codului argumentele acestei funcţii, despre următoarele 5 linii de cod se pot
specifica următoarele:
• funcţia LabWindows/CVI “LoadPanel” încarcă fişierul .uir în editorul interfeţei
utilizator User Interface Editor. Dacă în faza de creare a interfeţei a fost preluată
valoarea implicită a constantei reprezentând numele panoului (Panel) în secventa de cod
va apărea denumirea acestei constante sub forma panelHandle. În cazul curent însă a
fost schimbată denumirea astfel că numele acestei constante va fi în acest caz panou1
stabilit prin setările panoului:
• funcţia LabWindows/CVI “DisplayPanel” realizează afişarea interfeţei pe desktop;
• funcţia LabWindows/CVI “RunUserInterface” este probabil cea mai importantă
deoarece aceasta este funcţia care apelează funcţiile callback corespunzătoare
evenimentelor ce au loc pe panoul interfeţei utilizator. Funcţia
RunUserInterface()va fi executată până când va fi apelată funcţia callback
QuitUserInterface();
• dacă apelarea QuitUserInterface()a fost recepţionată prin linia de cod “return
0” se execută ieşirea din program.
Cel de-al treilea segment de cod având următoarele linii:

78
reprezintă funcţia callback , “TERMINARE“ care a fost apelată prin intermediul funcţiei
RunUserInterface() atunci când a apărut evenimentul asociat cu acţionarea butonului
INCHIDE pe panoul frontal. Prin argumentele acestei funcţii se observă această funcţie
recepţionează informaţii despre panou şi tipul de eveniment generat de utilizator.
Segment 1
START

Declarare:
• fişiere include
• variabile globale

Segment 2
Încărcare panou
Afişare panou

Rulare interfaţă
NU utilizator
Închidere interfaţă ?
DA NU
Eveniment utilizator ?
DA
Stabileşte etichetă panou

NU
Există funcţie callback
DA
Segment 3
Funcţie callback
Eveniment valid ?
DA
Execută codul:
QuitUserInterface

END

Fig.4.9. Algoritmul acţiunilor generate de codul sursă


Această funcţie conţine o structură “case – switch” cu ajutorul căreia filtrează
evenimentele. Astfel sunt valide doar acele evenimente EVENT_COMMIT stabilite de
79
utilizator cum ar fi de exemplu clic – stânga cu mouse – ul sau apăsarea tastei < ENTER >.
Orice alt eveniment va fi ignorat şi controlul se reîntoarce la funcţia RunUserInterface.
Dacă se petrece un eveniment EVENT_COMMIT se va executa codul dintre instrucţiunea
case şi acolada dreapta, în acest caz se va funcţia QuitUserInterface având ca efect
terminarea execuţiei funcţiei RunUserInterface şi închiderea programului.
Dacă nu este ataşată o funcţie callback, la generarea codului între instrucţiunea case
pentru alegerea evenimentului şi acolada dreapta se inserează o linie goală prin care se
aminteşte realizatorului interfeţei că aici trebuie adăugat codul corespunzător apariţiei
evenimentului EVENT_COMMIT asupra controlului. În cazul codului analizat
LabWindows/CVI a inserat funcţia QuitUserInterface(). Aceasta deoarece în
fereastra de dialog Generate All Code (fig.4.7) a fost efectuate settările corespunzătoare.
În fig.4.9. este prezentat algoritmul acţiunilor efectuate de codul sursă generat de
interfaţa utilizator din fig.4.6.
În concluzie sunt de urmat trei paşi în proiectarea şi realizarea unei interfeţe utilizator
în mediul LabWindows/CVI, astfel:
1. Utilizarea ferestrei User Interface Editor pentru alegerea şi dispunerea pe panoul
reprezentând interfaţa utilizator a tuturor elementelor necesare;
2. generarea codului sursă utilizând compilatorul intern (de preferat) sau un alt
compilator extern;
3. completarea codului sursă obţinut prin adăugarea de linii de cod suplimentare sau
funcţii callback.

4.5. Adăugarea elementelor funcţionale ale interfeţei


Pentru ca interfaţa utilizator să fie funcţională aceasta trebuie să conţină
9 elemente de intrare reprezentând elementele prin intermediul cărora utilizatorul să
poată introduce date sau parametrii şi care reprezintă controale setate în unul din
modurile: Normal, Hot sau Validate;
9 elemente de ieşire reprezentând elementele prin intermediul cărora utilizatorul să
poată citi rezultate ale execuţiei programului şi care reprezintă controale setate în unul
din modurile: Normal, Hot sau Validate;

4.5.1. Adăugarea elementelor de intrare


Aşa cum a fost prezentat în cap.3
LabWindows/CVI oferă o varietate mare
de elemente de intrare numite controale
pentru introducerea de date şi/sau
parametrii cele mai utilizate dintre acestea
fiind cele de tip: Command Button,
Toggle Button, Binary Switch dintre cele
cu funcţii simple respectiv cele de tip:
Numeric, Ring, List Box dintre cele cu
funcţii complexe.
Pentru exemplificarea modului de
adăugare a acestor controale se consideră
cazul adăugării unui control de tip Binary
Switch prin intermediul căruia să se
genereze impulsuri ce ulterior vor fi
numărate şi afişate.
Pentru adăugarea acestui control se
utilizează meniul Create sau se alege din
meniul pull – down obţinut prin clic –
Fig.4.10. Setare control Binary Switch dreapta pe panou şi pentru setarea

80
atributelor acestuia se procedează conform subcap.3.5.3.5 adăugându-se funcţia callback
Incrementare şi eticheta Variabila binara, fig.4.10.
După salvarea interfeţei cu numele basic2.uir se generează scheletul codului
sursă prin comanda Code » Generate » All Code rezultând secvenţa de cod prezentată în
fig.4.11.

definire variabilă

inserare cod utilizator

Fig.4.11. Codul sursă obţinut după adăugarea controlului Binary Switch

Comparând această secvenţă de cod cu cea obţinută iniţial şi prezentată în fig.4.8. se


observă diferenţa dată de adăugarea funcţiei callback Incrementare. În timpul rulării
programului de câte ori se efectuează clic – dreapta pe acest control această funcţie callback
va fi apelată de către funcţia RunUserInterface. De asemenea vor fi executate toate
liniile de cod cuprinse între “case EVENT_COMMIT” şi “brake”. Se observă, în această
fază, că în scheletul codului sursă compilatorul a inserat o linie goală unde se pot adăuga de
către utilizator linii corespunzătoare anumitor acţiuni.
Pe baza propunerii iniţiale ca prin intermediul acestui control să se genereze acţiuni ce
constau în incrementarea unui număr este necesară adăugarea de linii de cod care să realizeze
această acţiune. Se consideră o variabilă x a cărei valoare va fi incrementată după fiecare
acţiune (eveniment valid) asupra controlului. Pentru aceasta se efectuează următoarele
operaţii:
9 se defineşte variabila x de tip întreg:
static int x;
9 se scriu liniile ce incrementează şi afişează valorile incrementate ale variabilei (codul
utilizator)
x=x+1; sau x++;
printf("%d\n",x);

81
9 compilatorul introduce linia;
#include <ansi_c.h>
După salvare prin rularea interfeţei se obţine
efectul execuţiei programului adică o
fereastră DOS care afişează valori
crescătoare ale variabilei x generate de
eveniment valid asupra controlului, fig.4.12
Adăugarea unui control prin intermediul
căruia se comandă incrementarea valorilor
unei variabile aleasă de utilizator si efectul
operării acestuia este descris de algoritmul
prezentat în fig.4.13.

Fig.4.12. Efectul execuţiei programului

START

Încărcare panou
Afişare panou

NU
Închidere interfaţă ?
DA Funcţie callback TERMINARE

Rulare interfaţă Inchide interfaţa


utilizator

Funcţie callback Incrementare

Incrementează x
END Afişează x

Fig.4.13. Algoritmul acţiunilor generate de controlul Binary Switch

4.5.2. Adăugarea elementelor de ieşire


Pentru vizualizarea rezultatelor există în bibliotecile LabWindows/CVI multe
elemente care pot fi utilizate în acest scop. De altfel aproape oricare dintre controale poate fi
utilizat şi ca element de afişare dacă are setat atributul Indicator. Acestor elemente nu li se
ataşează funcţii callback ele fiind de fapt destinaţia funcţiilor callback activate de evenimente
ce apar asupra controalelor. Dintre cele aceste elemente cu rol de afişare cele mai utilizate
sunt cele de tipul: LED, Numeric, String, Message şi Graphs.
Pentru aplicaţia iniţializată este nevoie de un element de afişare de tip Numeric care
va afişa rezultatul incrementării variabilei x. Deoarece un control de tip Numeric setat în
modul Indicator nu necesită o funcţie callback nu va fi necesară generarea unui nou cod.
Teoretic programul apdatat prin adăugarea acestui element poate să ruleze imediat dat
deoarece nu este stabilită o legătură între variabila x şi elementul de afişare acesta nu va afişa
82
nimic. Este necesară o funcţie care să scrie valorile variabile x pe elementul de afişare
echivalentă funcţiei "printf". Aceasta este furnizată de LabWindows/CVI prin intermediul
funcţiilor SetCtrlVal( )şi GetCtrlVal( ) acestea constituind principalul mijloc de
comunicare între elementele panoului şi/sau între panouri.
Utilizarea acestor două funcţii este calea cea mai directă şi totodată cea mai facilă de
realizare a comunicării între elementele panoului, aceste funcţii având numai trei argumente şi
pentru stabilirea acestora există varianta utilizării panoului funcţiei. Un astfel de panou
conţine căsuţe corespunzătoare tuturor argumentelor funcţiei. În bibliotecile
LabWindows/CVI există sute de funcţii unele dintre acestea având cinci sau chiar mai multe
argumente. Utilizarea celor două funcţii din bibliotecile de funcţii LabWindows/CVI în
procesul de generare a codului sursă corespunzător are loc în două etape:
1. se selectează funcţia şi se completează căsuţele de pe panoul funcţiei, pe măsură ce
se execută aceasta LabWindows/CVI scrie codul sursă corespunzător într-un fişier
temporar. Este posibilă crearea de noi variabile şi dacă se cere LabWindows/CVI
va declara aceste variabile direct în codul sursă;
2. după ce sunt stabilite toate argumentele funcţiei se ataşează codul sursă al funcţie
la codul sursă al aplicaţiei.

4.5.3. Utilizarea funcţiei SetCtrlVal( )


Funcţia SetCtrlVal( )este
utilizată pentru afişate unei valorii pe un
element indicator.
Pentru aplicaţia curentă se selectează
funcţia SetCtrlVal( )prin comanda:
Library » User Interface » All Code »
Controls/Graphs/Charts... » General
Functions » SetCtrlVal şi se obţine panoul
acestei funcţii prezentat în fig.4.14.a. Pentru
a) completarea căsuţei PanelHandle se
fixează cursorul în această căsuţă şi se alege
numele panoului reprezentând interfaţa
utilizator din fereastra Select Variable or

b)

Fig.4.14. Fereastra Set Control Value


Expresion (fig.4.15) obţinută prin intermediul
comenzii Code » Select Variable... Fig.4.15. Fereastra Select Variable
Pentru completarea căsuţei Control ID
se fixează cursorul în această căsuţă şi se alege numele controlului de pe interfaţa utilizator
din fereastra Select UIR Constant (fig.4.16) obţinută prin intermediul comenzii Code »
Select UIR Constant...
Pentru completarea căsuţei Value se fixează cursorul în această căsuţă şi se alege
numele variabilei din fereastra Select Variable or Expresion obţinută prin intermediul
83
comenzii Code » Select Variable... (fig.4.17) sau se tastează numele variabilei în această
căsuţă.

Fig.4.16. Fereastra Select UIR Constant Fig.4.17. Fereastra Select Variable

Pe măsură ce sunt stabiliţi parametrii funcţiei este generată forma funcţiei în fereastra
temporară aflată în partea inferioară a ferestrei Set Control Value, fig.4.14.b.
Este posibilă generarea acum a codului şi inserarea acestuia în scheletul codului sursă
obţinut în etapele anterioare. Pentru a fi utilizat de funcţia callback este necesară poziţionarea
corespunzătoare a acestuia şi având în vedere că are rolul de afişare a valorii, similar funcţiei
"printf" utilizată anterior se va poziţiona în locul acesteia eventual după aceasta dacă se
doreşte şi păstrarea vechii ferestre DOS de afişare.
Poziţionarea codului în locul corespunzător se face prin poziţionarea cursorului în
codul sursă în locul în care se va insera codul funcţiei.

locul unde se va insera codul funcţiei


de afişare

Pentru generarea şi inserarea codului se alege comanda Code » Insert Function Call
şi se va obţine noua formă funcţiei callback Incrementare având inserat şi codul funcţiei
de afişare

84
Prin execuţia programului apar
modificări semnificative astfel că
afişarea incrementării se va face atât
în fereastra DOS cât şi pe elementul
Afişare Numerică, fig.4.18.

Fig.4.18. Efectul execuţiei programului


4.5.4. Utilizarea funcţiei GetCtrlVal( )
Funcţia GetCtrlVal( )este utilizată pentru generarea valorii de către un element
control. Pentru exemplificarea acestei funcţii
se modifică efectul unui eveniment valid
asupra controlului Binary Switch astfel
încât generarea unei valori să se facă numai
atunci când acesta este pe poziţia On nu şi
pe poziţia Off cum s-a întâmplat şi până
acum în timpul rulării programului. Nu sunt
necesare modificări ale atributelor acestui
control, acestea rămânând cele stabilite
anterior cu observaţia că este necesară
a) setarea tipului de date astfel încât acestea să
fie întregi, adică de tip int.
Este necesară utilizarea unei variabile
prin intermediul căreia să se specifice
funcţiei Incrementare că incrementarea se
va face doar pentru poziţia On a controlului
Binary Switch.
Inserarea codului corespunzător al
funcţiei GetCtrlVal()se va face ca şi în
cazul funcţiei SetCtrlVal()prin
intermediul panoului acestei funcţii
(fig.4.19.a) obţinut pe aceiaşi cale cu
comanda Library » User Interface » All
b) Code » Controls/Graphs/Charts... »
General Functions » GetCtrlVal
Pentru completarea căsuţei
PanelHandle se fixează cursorul în această
Fig.4.19. Fereastra Get Control Value
căsuţă şi se alege numele panoului

85
reprezentând interfaţa utilizator din fereastra Select Variable or Expresion (fig.4.20)
obţinută prin intermediul comenzii Code » Select Variable...

Fig.4.20. Fereastra Select Variable Fig.4.21. Fereastra Select UIR Constant


Pentru completarea căsuţei Control ID se fixează cursorul în această căsuţă şi se alege
numele controlului de pe interfaţa utilizator din fereastra Select UIR Constant (fig.4.21)
obţinută prin intermediul comenzii Code » Select UIR Constant...
Pentru completarea căsuţei Value se stabileşte numele unei variabile prin intermediul
căreia să se specifice funcţiei Incrementare că incrementarea se va face doar pentru poziţia
On şi numele ales este On_Off.
Este necesară declararea acestei
variabile şi pentru aceasta se
deschide fereastra Declare
Variable cu comanda Code »
Declare Variable (fig. 4.22)
plecând din fereastra User
Interface Library – Get Control
Fig.4.22. Fereastra Declare Variable Value. Pentru declararea variabilei
şi inserarea corectă a acesteia în
codul sursă este necesară validarea opţiunii Add declaration on top of target din fereastra
Declare Variable.
Se fixează locul de inserare a funcţiei GetCtrlVal()şi acesta va trebui să fie în
corpul funcţiei callback prin intermediul căreia este apelată, în acest caz în corpul funcţiei
Incrementare. Se adaugă în codul sursă o linie care să impună faptul că numai dacă este
îndeplinită condiţia if (On_Off) este realizată şi incrementarea variabilei x. După
inserarea acestei funcţii structura codului sursă este prezentată în fig.4.23 şi prin rularea
programului se va observa că incrementarea variabilei x se face numai pentru poziţia On a
controlului Binary Switch căreia îi este atribuită valoarea binară 1 în fereastra setării
atributelor acestui control. Se observă de asemenea că in fereastra de afişare DOS fiecare
valoare corespunzătoare incrementării variabilei x este afişată de două ori, pentru fiecare din
poziţiile On şi Off ale controlului Binary Switch spre deosebire de modul de afişare pe
indicatorul numeric

86
Fig.4.23. Codul sursă obţinut după inserarea funcţiei GetCtrlVal( )

Fig.4.24. Efectul execuţiei programului

87
Pentru semnalizarea operaţiei de incrementare se adaugă un control de tip LED setat,
în mod obişnuit, ca indicator astfel încât acesta să semnalizeze poziţia ON a controlului
Binary Switch. Pentru aceasta acestui element de semnalizare i se atribuie prin funcţia
SetCtrlVal( )variabila binară On_OFF declarată anterior.
Fereastra cu setarea atributelor controlului LED, panoul funcţiei precum şi secvenţa de
cod corespunzătoare funcţionării acestuia sunt prezentate respectiv în fig.4.25.a, fig.4.25.b
respectiv fig.4.25.c

a).

a).

c).

Fig.4.25. Setările elementului LED


Pentru alegerea unui sens de modificare a valorilor controlului Afişare numerică
adică conţinutul acestuia să fie incrementat (up) sau decrementat (down) este necesară
alegerea unui control corespunzător, control de tip Ring, şi a unei variabile prin înscrierea şi
citirea căreia să se stabilească acest sens. Fereastra pentru setarea atributelor acestui control

b).
a).

Fig.4.26. Setările controlului Ring pentru


selecţie sens

88
de tip ring precum şi fereastra reprezentând panoul funcţiei callback Selecţie_sens sunt
prezentate în fig.4.26.a respectiv fig.4.26.b
Variabila up_down ale cărei valori sunt setate de controlul Ring prin intermediul
funcţiei GetCtrlVal( )sunt utilizate pentru stabilirea sensului prin incrementarea x=x+1
sau decrementarea x=x-1, variabilei x şi secvenţele de cod corespunzătoare realizării
acestora sunt prezentate în fig.4.27.

Fig.4.27. Secvenţa de cod pentru utilizarea controlului Ring


După adăugarea acestor elemente prin rularea programului se obţine forma interfeţei
utilizator prezentată în fig.4.28.

4.5.5. Adăugarea
controlului Timer
În execuţia aplicaţiei de
până acum a fost utilizat
evenimentul EVENT_COMMIT
şi în completarea aplicaţiei se
introduce un alt tip de eveniment
valid, legat de timp şi denumit
EVENT_TIMER_TICK.
Pentru adăugarea unui
Fig.4.28. Efectul execuţiei programului astfel de eveniment se adaugă pe
panoul reprezentând interfaţa
utilizator un control denumit Timer, prezentat în subcap. 3.5.3.11. odată adăugat acest control

89
se apelează funcţia callback corespunzătoare prin intermediul căreia se setează intervale de
timp la care se execută acţiuni generate de liniile de cod cuprinse în corpul funcţiei callback.
În cazul acestei aplicaţii prin implementarea controlului şi funcţiilor corespunzătoare
incrementarea variabilei x se va face la intervalele de timp setate atâta timp cât controlul
Binary Switch este pe poziţia On. Acest control poate fi poziţionat oriunde pe panou
deoarece acesta nu va apărea pe interfaţă în timpul execuţiei programului. Controlul Timer
este vizibil numai în fereastra User Interface Editor pentru a informa utilizator că în timpul
execuţiei programului acţiunea controlului se va desfăşura în background.
Pentru adăugarea controlului
Timer se selectează Create » Timer sau
controlul acesta poate fi selectat şi prin
clic – dreapta pe panou. Acestui control i
se va adăuga şi o funcţie callback
Intarziere precum şi setarea
intervalului la 1 secundă conform
ferestrei de setare a atributelor prezentată
în fig.4.29.
Prin generarea codului funcţiei
callback Intarziere care se poate
realiza şi prin clic – dreapta pe controlul
Timer şi selecţia opţiunii Generate
Fig.4.29. Setarea atributelor controlului Timer Control Callback se obţine următoarea
secvenţă:
int CVICALLBACK Intarziere (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_TIMER_TICK:
- se inserează cod -
break;
}
return 0;
}
şi se observă că evenimentul EVENT_COMMIT este înlocuit cu evenimentul
EVENT_TIMER_TICK.
În spaţiul liber introdus automat la inserarea codului funcţiei se vor insera linii de cod
care se vor executa sub controlul funcţiei Intarziere care în acest caz sunt linii de cod
corespunzătoare incrementării sau decrementării controlului numeric Afişare numerică
după cum este prezentat în fig.4.27.
Prin adăugarea acestor noi elemente şi funcţii ataşate acestora, algoritmul acţiunilor
generate prezentate în fig.4.13 se completează cu noi acţiuni corespunzătoare acestora astfel
că noul algoritm capătă forma prezentată în fig.4.30

4.5.6. Controlul prin interfaţă al Timer - ului


Este de preferat utilizarea unui nou control prin intermediul căruia să fie posibilă
setarea şi modificarea de către utilizator, prin intermediul interfeţei a intervalului fără să fie
nevoie pentru aceasta de apelarea ferestrei de setare a atributelor controlului Timer şi de
generarea codului de câte ori se doreşte modificarea acestui interval.
Pentru aceasta pe panou se va dispune un control de tip numeric şi se poate alege din
această categorie un control de tip Knob. Prin adăugarea acestui control şi a elementelor
Decoration se obţine panoul final prezentat în fig.4.31.

90
START

Încărcare panou
Afişare panou

NU
Închidere interfaţă ?
DA Funcţie callback TERMINARE

Rulare interfaţă Închide interfaţa


utilizator
Funcţie callback Incrementare

Stabileşte poziţie Switch

Funcţie callback Intarziere

NU
Switch On ?
DA
Up/Down
Down Up
Decrementare Incrementare
x x

Afişare
END x

Fig.4.30. Algoritmul acţiunilor generate după introducerea controalelor


Ring şi Timer

Fig.4.31. Configuraţia finală a panoului

91
Pentru adăugarea controlului se selectează Create » Numeric » Knob sau se poate
selecta prin clic – dreapta. Controlului i se va adăuga o funcţie callback Timp_generare şi
se va genera codul corespunzător controlului şi funcţiei callback asociate. Fereastra pentru
setarea atributelor acestui control de tip Knob precum şi fereastra reprezentând panoul
funcţiei callback Timp_generare sunt prezentate în fig.4.32.a respectiv fig.4.32.b

b)

a)

Fig.4.32. Setările controlului Knob


pentru selecţie interval de timp

Pentru controlul de tip Knob având în vedere că acesta va fi utilizat ca element de


setare a intervalelor de timp între două incrementări sau decrementări succesive este de
preferat la limita minimă a acestor intervale să fie interval > 0 deoarece altfel una din
aceste operaţii ar ocupa aproape în totalitate timpul de lucru al procesorului şi evident fiind
vorba de intervale de timp acestea nu pot avea valori negative.
Pentru citirea de către Timer a valorilor variabilei interval setate prin controlul Knob
nu poate fi utilizată funcţia SetCtrlVal( )deoarece aceste valori sunt considerate a fi
atribute ale controlului astfel că în locul acestei funcţii va fi utilizată funcţia
SetCtrlAttribute( ). Pentru setarea acestor atribute se selectează Library » User
Interface... » Control/Graph/Strip Charts … » General Functions » SetCtrlAttribute
rezultând panoul funcţiei conform fig.4.33.

Fig.4.33. Panoul funcţiei SetCtrlAttribute()


Căsuţele PanelHandle respectiv
ControlID se completează conform
cazurilor anterioare prin selectarea
corespunzătoare a variabilei şi constantei
UIR din meniul Code.
Pentru completarea căsuţei
ControlAttribute se stabilesc atributele Fig.4.34. Fereastra Select Attribute Constant

92
prin intermediul ferestrei Select Attribute Constant (fig.4.34) ce se deschide prin butonul
asociat acestei căsuţe. Se alege tipul de control Timer din lista pull – down Control type iar
odată selectat acesta în căsuţa Attributes se selectează atributul Control Settings » Timer
Interval. Căsuţa Attribute Value se completează cu numele variabilei ale cărei valori sunt
setate prin controlul Knob, prin selecţia Code » Select Variable ...
După setarea acestor parametrii se inserează în codul sursă al programului funcţia
SetCtrlAttribute( )cu parametrii specificaţi, rezultând forma finală a programului
interfeţei utilizator cu configuraţia prezentată în fig.4.31. Listing – ul acestui program denumit
basic6 este prezentat în continuare:

#include "basic6.h"
#include <cvirte.h>
#include <userint.h>
#include "basic4.h"

static double interval;


static int up_down;
static int x;
static int On_Off;
static int panou1;

int main (int argc, char *argv[])


{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panou1 = LoadPanel (0, "basic6.uir", PANOU_1)) < 0)
return -1;
DisplayPanel (panou1);
RunUserInterface ();
DiscardPanel (panou1);
return 0;
}

int CVICALLBACK Incrementare (int panel, int control, int event,


void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panou1, PANOU_1_BINARYSWITCH, &On_Off);
SetCtrlVal (panou1, PANOU_1_LED, On_Off);
break;
}
return 0;
}

int CVICALLBACK TERMINARE (int panel, int control, int event,


void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
break;
}
return 0;
}

93
int CVICALLBACK Intarziere (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_TIMER_TICK:
if (On_Off==1)
{
if(up_down==0)
x=x-1;
if(up_down==1)
x=x+1;
}
SetCtrlVal (panou1, PANOU_1_NUMERIC, x);
break;
}
return 0;
}

int CVICALLBACK Selectie_sens (int panel, int control, int event,


void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panou1, PANOU_1_SENS, &up_down);
break;
}
return 0;
}

int CVICALLBACK Timp_generare (int panel, int control, int event,


void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panou1, PANOU_1_Interval, &interval);
SetCtrlAttribute (panou1, PANOU_1_TIMER, ATTR_INTERVAL,
interval);
break;
}
return 0;
}

Prin adăugarea acestor noi elemente şi funcţii ataşate acestora, algoritmul acţiunilor
generate prezentate în fig.4.30 se completează cu noi acţiuni corespunzătoare acestora astfel
că noul algoritm capătă forma prezentată în fig.4.35

94
START

Încărcare panou
Afişare panou

NU
Închidere interfaţă ?
DA Funcţie callback TERMINARE

Rulare interfaţă Închide interfaţa


utilizator
Funcţie callback Incrementare

Stabileşte poziţie Switch

Funcţie callback Intarziere

NU
Switch On ?
DA
Up/Down
Down Up
Decrementare Incrementare
x x

Afişare
x

Funcţie callback Timp_generare

Stabileşte interval timp


Stabileşte atribute Timer
END

Fig.4.30. Algoritmul acţiunilor generate după introducerea controalelor


Ring, Timer şi Knob

95
PARTEA II

LabVIEW

Cap.5
Introducere în LabVIEW

LabVIEW reprezintă un limbaj grafic de programare (denumit şi limbaj G) şi conţine


unelte necesare pentru achiziţia, citirea, prelucrarea, stocarea şi afişarea datelor. Cu
LabVIEW, programatorul proiectează virtual foarte repede interfaţa cu utilizatorul (GUI) şi
asamblează grafic soluţia, după propriile necesităţi. LabVIEW accelerează obţinerea soluţiei
cu un factor de cel puţin 4 sau 10 ori, fata de mediile tradiţionale de programare. Limbajul
grafic de programare a evoluat de la o alternativa în programare la un standard industrial.
Avantajele utilizării instrumentaţiei virtuale sunt reducerea considerabila a costurilor capitale
şi cu dezvoltarea sistemului, şi a timpului de realizare a măsurătorilor
Se prezintă în continuare conceptul de instrumentaţie virtuală, caracteristicile mediului
de programare LabVIEW şi structura unui instrument virtual.
LabVIEW este un mediu de programare utilizat mai ales pentru realizarea
măsurătorilor şi monitorizarea unor procese automatizate. Pentru scrierea programelor în
LabVIEW, se utilizează limbajul grafic G, limbaj de programare de generaţia a 5-a, mediul
LabVIEW conţinând mai multe biblioteci de funcţii predefinite pentru achiziţia, prelucrarea,
afişarea şi transmiterea datelor.
Programele realizate în LabVIEW se numesc instrumente virtuale (Virtual Instruments
- VI), la baza acestora stând conceptele de modularizare şi ierarhie arborescentă (fig.5.1).
Când se proiectează şi se implementează un VI, trebuie să se ţină cont de natura modulară a
acestuia, să poată fi utilizat atât ca program principal cât şi ca subrutină în componenţa unui
alt VI. Un VI folosit la realizarea unui alt VI se numeşte subVI, având rolul unei subrutine.
Prin crearea şi utilizarea de subVI la realizarea altor VI, utilizatorul defineşte ierarhii de VI.

Fig.5.1. Structura unui program LabVIEW


Programele realizate în mediul LabVIEW se numesc, după cum este precizat mai sus,
instrumente virtuale (VI). Un VI are trei părţi componente (fig.5.2.):
• Panoul frontal;
• Diagrama bloc;
• Pictograma şi conectorul
Panoul Frontal defineşte interfaţa grafică cu utilizatorul sau ceea ce va vedea
utilizatorul pe ecranul calculatorului. Obiectele grafice de interfaţă disponibile pentru
realizarea panoului frontal se împart în controale şi indicatoare. Prin intermediul controalelor,
utilizatorul introduce sau actualizează valorile datelor de intrare iar indicatoarele sunt folosite
pentru a se afişa rezultatele prelucrărilor. Dacă VI se priveşte ca subVI (deci ca subrutină),

96
Pictograma
Conectorul Diagrama

Panou frontal

Fig.5.2. Elementele unui VI


atunci controalele corespund parametrilor formali de intrare, iar indicatoarele sunt parametrii
formali de ieşire.
Mediul LabVIEW oferă dezvoltatorului de aplicaţii o colecţie de obiecte predefinite
pentru proiectarea panoului frontal : butoane, comutatoare, cursoare, obiecte pentru
reprezentări grafice, rezervoare, ş.a.
Părţii din interfaţa grafică cu utilizatorul, dată de panoul frontal, îi corespunde
diagrama bloc, care reţine codul programului şi defineşte funcţionalitatea VI.
Elementele de execuţie din cadrul diagramei bloc al VI definesc nodurile
programului; operatori, funcţii predefinite, proceduri utilizator (realizate de programator ).
Realizarea diagramei bloc a VI se face utilizând
limbajul grafic G: pentru definirea fluxurilor datelor
în diagrama bloc, corespondentele se leagă intre ele
terminale prin “fire”(sau conductoare).
A treia componenta unui VI este
pictograma şi conectorul, fig.5.3. Prin pictograma
icon connector este reprezentat un VI în cadrul altei diagrame bloc
Prin intermediul conectorului se permite conectarea
Fig.5.3. Pictograma (icon) /Conectorul VI-ului iniţial ca “subVI” în cadrul unui nou VI
Prin stabilirea pictogramei şi conectorului,
acel instrument virtual va putea fi folosit ca şi subrutină în diagrama bloc a altui VI, fig.5.4.

SubVI

Fig.5.4. Utilizarea unui subVI

97
Odată cu lansarea
programului din Start » Programs
» National Instruments »
LabVIEW, pe ecranul
calculatorului apare meniul
prezentat în fig.5.5 prin intermediul
căruia se poate crea un instrument
nou plecând fie de o pagină albă fie
de la de la o pagină de ajutor sau se
poate
Prin lansare în execuţie a
programului şi prin alegerea
opţiunii New VI, se observă că
pentru crearea unui nou VI s-au
deschis două ferestre. Prima este
fereastra Panoului frontal iar cea
de-a doua este fereastra Diagramei
bloc, după cum se observă şi în
Fig.5.5. Meniul LabVIEW
exemplele prezentate mai sus.
Ferestrele
Panoului frontal
a b c d e f g h şi ale Diagramei
bloc din VI
posedă fiecare
câte o bară
Indicator de Enter i j k l orizontală cu
atenţionare
unelte. Aceste
Butoanele suplimentare care apar în bara de unelte în cadrul diagramei
bare cu unelte
Fig.5.6. Bara de unelte sunt
implementate
prin intermediul unor butoane, liste derulante sau indicatoare de stare, utilizate pentru
editarea, trasarea şi execuţia unui VI (fig.5.6.). O parte din opţiunile celor două bare cu unelte
sunt comune şi anume cele dispuse în partea dreapta a barei.
Semnificaţia butoanelor din bara de meniuri este următoarea :
• a – rulare VI
• b – rulare continua a unui VI
• c – oprirea rulării unui VI
• d – pauza în rularea unui VI
• e – font control
• f ÷ h – butoane utilizate pentru ordonarea şi configurarea panoului frontal
• i – regim de rulare cu afişarea fluxurilor
• j ÷ l – trasare interactiva (programul aşteaptă ca utilizatorul sa indice execuţia următoarei
instrucţiuni)
Bara orizontală de
meniuri conţine opţiuni
Fig.5.7. Bara de meniuri Windows pentru realizarea unor
acţiuni obişnuite
(gestiune fişiere, editare), implementate în majoritatea aplicaţiilor Windows (fig.5.7.), a căror
semnificaţie şi utilizare va fi prezentată ulterior. Mai există de asemenea o serie de opţiuni
noi, specifice acestui mediu de programare, care de asemenea vor fi prezentate ulterior.
O altă componentă importantă a interfeţei acestui program este caseta de unelte
generale, fig.5.8. Aceasta cuprinde instrumente la îndemâna utilizatorului pentru crearea,

98
editarea sau trasarea execuţiei instrumentelor virtuale. Afişarea
/ ascunderea casetei cu unelte generale se face prin
opţiunea View » Show Tool Palette . O altă modalitate de
afişare a acestei casete se face prin poziţionarea cursorului
mouse – ului în interiorul ferestrei Panoului frontal sau
Diagramei bloc şi se apasă simultan tasta « SHIFT » şi
butonul din dreapta al mouse - ului.
Semnificaţia elementelor casetei cu unelte generale este:

Fig.5.8. Caseta de unelte

• unealta de operare – se manevrează mai ales valorile din


elementele panoului frontal

• unealta de editare – selectare, mutare, redimensionare obiect

• unealta de etichetare – permite introducerea de la tastatură a


textului

• unealta de interconectare – realizează legăturile între noduri


(elemente de execuţie) în fereastra Diagrama Bloc

• unealta de defilare

• unealta care permite inserarea în cadrul diagramei bloc a unui


punct de întrerupere a execuţiei unui VI

• unealta sondă – se deschide o fereastra în care se afişează valoarea


transmisă pe un fir de legătură

• unealta de colorare

Mediul LabVIEW oferă


dezvoltatorilor de programe două metode
de asistenţă, care pot fi utilizate pe
parcursul dezvoltării unui VI : fereastra
(Help Windows) şi utilitarul de asistenţă
(Online Help) (fig.5.9.). Afişarea /
ascunderea ferestrei de asistenţă se poate
face prin două metode: se alege opţiunea
Help » Show Help din bara cu meniuri sau
apăsând concomitent < Ctrl + H >.
Fig.10.11. Fereastra Online Help Fereastra de asistenţă se utilizează în
cazurile următoare :
• la afişarea descrierii pentru obiectele din panoul frontal şi diagrama bloc;
• la consultarea casetei cu funcţii, se prezintă semnătura şi o descriere de utilizare;
• în diagrama bloc, terminalul conductorului VI, asupra căruia se foloseşte unealta de
interconectare, este evidenţiat prin afişare intermitenta în fereastra de asistenţă ;

99
metoda de asistare este utilizată frecvent în realizarea conexiunilor la nodurile dotate
cu mai multe terminale, pentru selectarea exactă a parametrilor;
• în diagrama bloc se permite afişarea structurii de date, folosită pentru valoarea care se
transferă între acele noduri, pe o legătura existentă;
• se opreşte unealta de interconectare deasupra legături ;
• se reaminteşte faptul, ca nodul reprezintă elementul de execuţie din limbajul G.

100
Cap.6
Controale şi indicatoare

6.1. Prezentare
Se prezintă o parte din elementele disponibile pentru realizarea panoului frontal al
unui VI. Panoul frontal al unui VI reprezintă interfaţa cu utilizatorul. Operatorul indică de la
tastatura sau mouse datele de intrare ale programului, prin interacţiune asupra elementelor
grafice de interfaţă, numite controale. In urma prelucrării datelor de intrare, rezultatele sunt
afişate spre consultare prin intermediul indicatoarelor.
Sunt disponibile controale şi indicatoare pentru majoritatea tipurilor de date: numeric,
şir de caractere, boolean, tabel, tablou, grupare de date, grafic, s.a. Pentru un anumit tip de
date sunt disponibile mai multe variante de controale şi
indicatoare, utilizatorul putând să opteze pentru cea mai
sugestiva realizare.
În etapa construirii panoului frontal, utilizatorul
alege pe rând elementele de interfaţă necesare din
bibliotecile de controale şi indicatoare şi le aşează în
interiorul panoului frontal.
Controalele şi indicatoarele utilizate pentru
crearea panoului frontal al instrumentului virtual, panou
ce va reprezenta interfaţa utilizator se găsesc în
bibliotecile Controls, fig.6.1. Acestea se pot activa cu
comanda View » Controls Palette, caz în care fereastra
ce conţine aceste elemente rămâne permanent în spaţiul
de lucru sau cu clic – dreapta, caz în care fereastra
rămâne în spaţiul până la selecţia unui control sau
indicator.
Dacă cursorul mouse – ului este „purtat” peste
caseta cu controale, se afişează automat denumirea
grupului de componente în titlul ferestrei gazdă. Afişarea
conţinutului unui anumit grup este declanşată la
Fig.6.1. Controale şi indicatoare realizarea unui click – stânga al mouse – ului pe
pictograma corespunzătoare.
Semnificaţiile elementelor din caseta cu controale şi indicatoare sunt:
• Componente numerice
• Componente booleene
• Componente şir de caractere şi tabel
• Lista cu opţiuni: lista circulara / inel, meniuri derulante, cutie lista
• Tablou şi grupare de date
• Reprezentări grafice
• Cale de fişier
• Elemente decorative
• Componente utilizator
• Componente pentru suport ActiveX
• Opţiuni pentru selectarea unui control stocat intr-un fişier
Fiecare control şi indicator plasat în panoul frontal primeşte automat un număr de
ordine. Primul element are numărul de ordine 0, al doilea are asociată valoarea 1 s.a.m.d. iar
parcurgerea controalelor în ordine crescătoare a numărului de ordine din panoul frontal se
face prin apăsarea tastei < Tab >; revenirea pe un control anterior se face prin apăsarea
simultana a tastelor < Shift >şi < Tab >
Controalele şi indicatoarele de pe panoul frontal pot utilizate în stilurile: modern,
clasic sau sistem. Diferenţele dintre stilurile modern şi clasic de reprezentare a controalelor şi
101
indicatoarelor nu este una de tip
funcţional şi este numai de
reprezentare reprezentare grafică a acestor
în stil clasic elemente. Un exemplu este
prezentat în fig.6.2. şi diferenţa
reprezentare este dată de faptul că pentru
în stil modern reprezentarea în stil clasic sunt
utilizate 256 culori pe când
pentru reprezentarea în stil
Fig.6.2. Explicativă pentru diferenţa de reprezentare modern este utilizată rezoluţia
pe 16 biţi a reprezentărilor
grafice.
Controalele şi indicatoarele cu reprezentarea sistem includ funcţii similare celor cu
reprezentarea modern sau clasic şi sunt proiectate în special pentru a fi utilizate în ferestre de
dialog. Prin intermediul acestora se afişează, în raport cu desfăşurarea programului, mesaje
sau informaţii, de exemplu, de alertă sau pot fi de asemenea utilizate ca elemente de tip
prompt prin intermediul cărora utilizatorul poate introduce mesaje sau informaţii, de exemplu,
utilizator şi/sau parola. Aceste controale şi indicatoare sunt create cu culorile implicite ale
platformei, astfel că la rularea programului pe o altă platformă culori şi modul de reprezentare
se vor adapta la noua platformă.
Este posibilă găsirea aceluiaşi control sau indicator în diferite biblioteci astfel, de
exemplu, butonul Cancel din biblioteca System este similar butonului Cancel din biblioteca
Boolean.
Ca formă de apariţie în structura interfeţei utilizator controalele şi indicatoarele de pe
panoul frontal al unui instrument virtual creat în LabVIEW sunt similare aceloraşi elemente
de pe panoul unei aplicaţii create în LabWindows/CVI.

6.2. Controale şi indicatoare de tip Numeric


Transmiterea valorilor numerice spre program sau afişarea rezultatelor numerice se
face prin intermediul controalelor şi indicatoarelor numerice. Există mai mute reprezentări
ale componentelor de interfaţă, corespunzătoare tipului de dată numeric. Din caseta cu
controale se selectează grupul „Numeric”, (fig.6.3)
care va afişa colecţia cu variantele de realizare a
elementelor de interfaţă corespunzătoare tipului
numeric.
Colecţia de controale şi indicatoare
numerice conţine următoarele variante de realizare:
• Digitale
• Cursor orientat vertical sau orizontal
• Rezervor (tank)
• Termometru
• Buton rotitor (knob)
• Buton disc de telefon (dial)
• Cadran aparat de masura (meter)
• Kilometraj (gauge)
Controalele numerice sunt preferate pentru
simplitatea realizării grafice, prevenind eventualele
Fig.6.3. Controale şi indicatoare de tip confuzii de folosire a aplicaţiei de către operatorul
Numeric uman în ceea ce priveşte preluarea valorii indicate.
Pentru controlul numeric aflat în panoul frontal, se
pot stabili unele proprietăţi prin meniul contextual asociat (fig.6.4.)

102
•Valoarea curentă afişată este stabilită implicit (Data
operation Make Curent Value Default)
• Asocierea de taste funcţionale (Key navigation)
• Format de reprezentare (Reprezentation): se pot
alege unul din cele 12 tipuri disponibile;
• Domeniul valorilor posibile (Data Range);
• Stabilirea formatului de afisare (Format &
Precision...)
Numărul de zecimale stabilite pentru un control
numeric este folosit la afişarea valorii numerice şi nu
influenţează precizia cu care se operează; precizia depinde
numai de formatul de reprezentare selectat.
Fig 6.4 Meniul contextual al Componenta de interfaţă poate fi schimbată din
controalelor de tip numeric indicator în control şi invers, prin intermediul opţiunii
„Change to Indicator”, respectiv „Change to Indicator”,
din meniul contextual.
Pentru aceste obiecte se pot seta următorii parametrii:
reprezentare, domeniu de valori, format şi precizie. Setarea unui
astfel de parametru se poate face prin clic – dreapta pe obiect şi
selecţia opţiunii corespunzătoare
Reprezentare, fig.6.5., prin care se poate alege modul de
reprezentare a valorilor numerice.
Alegerea modului de reprezentare se va face în
concordanţă cu tipul de dată ce urmează să fie afişată sau
Fig.6.5. Reprezentarea introdusă cu ajutorul respectivului obiect, conform tabelului 6.1:
valorilor numerice
Tabel 6.1
Terminal Tip dată Biţi Număr
Domeniu de reprezentare
reprezentare cifre
Virgulă mobilă, precizie
128 15 ÷ 20 ± 6,48 ⋅ 10 –4966 ... ± 1,19 ⋅ 104932
extinsă
Virgulă mobilă, dublă
64 15 ± 4,94 ⋅ 10 –324 ... ± 1,79 ⋅ 10304
precizie
Virgulă mobilă, simplă
32 6 ± 1,44 ⋅ 10 –45 ... ± 3,4 ⋅ 1038
precizie
Întreg pe 64 biţi 64 18 − 1019 ... + 1019
Întreg pe 32 biţi 32 10 – 2.147 ⋅ 106 ... + 2,147 ⋅ 106
Întreg pe 16 biţi 16 5 – 32.768 ... + 32.767
Întreg pe 8 biţi 8 3 – 128 ... + 127
Întreg fără semn pe 64 biţi 64 19 0 ... 2 ⋅ 1019
Întreg fără semn pe 32 biţi 32 10 0 ... 4.294.967.295
Întreg fără semn pe 16 biţi 16 5 0 ... 65.535
Întreg fără semn pe 16 biţi 8 3 0 ... 255
Complex, virgulă mobilă, La fel ca EXT pentru partea
256 15 ÷ 20
precizie extinsă reală şi imaginară
Complex, virgulă mobilă, La fel ca DBL pentru partea
128 15
dublă precizie reală şi imaginară
Complex, virgulă mobilă, La fel ca SGL pentru partea
64 6
simplă precizie reală şi imaginară
Timp, 128 biţi Timp minim: 5,421 ⋅ 10−20 sec.
<64.64> 15
Timp maxim: ≈ 9.22 ⋅ 10+15 sec

103
Rezultatul operaţiei de împărţire sau al aplicării unor funcţii cum este de exemplu
sinus sau cosinus este cel mai frecvent într-o reprezentare în virgulă mobilă şi în astfel de
cazuri dacă indicatorul este setat pentru afişarea datelor de tip întreg acesta va trunchia
rezultatul la valori întregi.
Domeniul de valori, fig.6.6., permite alegerea unor valori pentru controlul sau
indicatorul de tip numeric reprezentând:
• Default value – valoarea implicită o
obiectului în momentul lansării în
execuţie a programului;
• Minimum – valoarea minimă a
domeniului de valori al obiectului;
• Maximum – valoarea maximă a
domeniului de valori al obiectului;
• Increment – rata de modificare a
valorilor controlului pentru cazul în care
acestea se fixează cu mouse – ul prin
intermediul elementelor asociate;
• Out of range action – setarea modului
de încadrare în domeniu şi care poate fi:
• Coerce – limitare la valorile
Minimum şi Maximum;
• Ignore – ignorarea valorilor
Fig.6.6. Setarea domeniului de valori limită dar numai pentru obiecte
indicator
Format şi precizie, fig.6.7., permite setări în funcţie de tipul de dată cu care operează
respectivul control sau indicator, astfel:

a) b)
Fig.6.7. Setare format şi precizie
• Value – se alege forma de reprezentare a valorilor:
9 Scientific (reprezentare cu exponent), Automation formatting
(reprezentare uzuală), SI notation (reprezentare cu notare multiplii şi
submultiplii). Pentru a înţelege diferenţa dintre aceste moduri de
reprezentare se consideră valorile 3.000 şi respectiv 0.003 şi pentru aceste
valori reprezentările în cele 3 forme sunt, conform tabelului 6.2:

104
Tabel 6.2.
Valoare Scientific Automation formatting SI notation

3.000

0,003

9 Hexadecimal, Octal, Binary – se alege baza de numeraţie pentru


reprezentarea valorilor
• Absolute time, Relative time –
fig.6.8. se alege modul de
exprimare al timpului, în valori
absolute calculat faţă de 1 ianuarie
1904, ora 12:00 a.m. sau în valori
relative faţă de un moment
considerat de origine astfel de
Fig.6.8. Exprimarea valorilor numerice de tip timp exemplu valoarea 100 exprimată
în unităţi de timp relativ va avea
valoarea 00:01:40 adică o oră şi 40 minute. Când se alege opţiunea de reprezentare a
valorilor în unităţi de timp fie absolut fie relativ există posibilitatea de a afişa aceste valori
în format 12 (AM/PM) sau 24 ore, în format oră:minut (HH:MM) sau oră:minut:secundă
(HH:MM:SS). Există de asemenea posibilitatea de a alege formatul de reprezentare a
datei astfel: lună/zi/an (M/D/Y), zi/lună/an (D/M/Y) sau an/lună/zi (Y/M/D). Anul poate
fi afişat cu ultimele două cifre (2 – digit year), cu patru cifre (4 – digit year) sau nu se
afişează.
• Digits – număr de cifre utilizate pentru reprezentare valorilor întregi (Significat
digits) sau pentru reprezentarea valorilor cu virgulă (Digits of precision)
Ca şi la realizarea interfeţelor utilizator în LabWindows/CVI şi în mediul de
programare grafică LabVIEW sunt utilizate controale şi indicatoare numerice, având diverse
forme de reprezentare şi de utilizare, de tipul:

• Controale şi indicatoare
numerice

• Controale şi indicatoare
slide

• Controale şi indicatoare
rotative

• Controale şi indicatoare
rezervor, termometru, scroll

105
La acestea se adaugă controale şi indicatoare
corespunzătoarele variabilei independente timp şi anume:
• Time Stamp - marca de timp (fig.6.9.) care conţine Time
Stamp Control şi Time Stamp Indicator prin
Fig.6.9. Marca de timp
intermediul cărora se pot trimite sau primi
informaţii despre intervale de timp către şi de
la diagrama bloc. Pentru obiectul de tip
control setarea valorii timpului şi datei se
poate face prin selecţia controlului şi cu clic –
dreapta alegerea opţiunii Format & Precision
sau prin utilizarea butonului Time/Date
Browse situat în dreapta controlului care
deschide o fereastră de selecţie a timpului real
al calculatorului, fig.6.10. Aceiaşi fereastră se
deschide şi prin selecţia controlului, clic –
dreapta şi alegerea opţiunii Data Operations
» Set Time and Date din meniul pull - down.
Dacă se alege opţiunea Data Operations »
Fig.6.10. Utilizarea butonului Set Time to Now este preluat automat timpul
real al calculatorului.
Pe lângă parametrii menţionaţi se pot seta şi atribute specifice componentei de
interfaţă a controlalelor şi indicatoarelor de tip numeric ce pot să difere în funcţie de tipul
controlului sau indicatorului, prin intermediul clasei de atribute Appearance, conform
fig.6.11.
• Label – validarea afişării etichetei
controlului;
• Caption – validarea afişării numelui
controlului numai pe panoul frontal;
• Enable State – vadidarea apariţiei
controlui pe panoul frontal (Enabled),
atribute comune invalidarea funcţionării controlului
(Disabled), invalidarea funcţionării şi
estomparea conturului controlului.
• Slider – selecţia cursorului curent în cazul
în care prin opţiunea Add au fost adăugate
cursoare suplimentare;
atribute specifice obiectelor grafice
• Colors – selecţie culoare pentru cursor
(Slider) şi pentru traseul acestuia pe
control (Fill);
• Show digital display(s) – ataşarea unui
Fig.6.11. Fereastră setare atribute obiect numeric prin intermediul căruia se
poate afişa baza de numeraţie a valorii
controlului (Show radix) şi/sau se poate adăuga un buton pentru
incrementare/decrementare (Show increment/decrement butons);
• Show value tip strip – afişarea valorii numerice a controlului în timpul mişcării
cursorului;
• Fill style – selecţie a modalităţilor de indicare a poziţiei cursorului pe control.

6.3 Funcţii de tip numeric


Funcţiile asociate tipului de date numeric se găsesc în caseta cu funcţii reunite în
grupul denumit “Numeric” (Numeric) (fig.6.12.).
Semnificaţia elementelor grupului „Funcţii numerice” sunt după cum urmează:

106
• operaţii aritmetice cu operanzi
scalari şi elemente de tablou;
• constante aritmetice definite de
utilizator;
• subgrupul „Funcţii de conversie”
(Conversion);
• subgrupul „Manipulare date”
(Data Manipulation);
• subgrupul „Funcţii pentru numere
complexe” (Complex);
• subgrupul „Scalare” (Scaling);
• subgrupul „Constante matematice
şi ştiinţifice” (Math & Scientific
Constants);
Cele 20 de operaţii aritmetice
disponibile în caseta cu funcţii
Fig.6.12. Funcţiile de tip numeric
numerice, sunt prezentate în
continuare:
• adunare(Add)
• scădere (Substract)
• înmulţire (Multiply)
• împărţire (Divide)
• cât şi restul împătririi (Quotient & Remainder)
• incrementare cu 1 (Increment)
• decrementare cu 1 (Decrement)
• suma elementelor unui tablou (Add Array Elements)
• produsul elementelor unui tablou (Multiply Array Elements)
• combinare aritmetica (Compound Arithmetic)
• valoare absolută (Absolute Value)
• rotunjire la cel mai apropiat întreg (Round to Nearest)
• rotunjire în jos la cel mai apropiat întreg (Round to -Infinity)
• rotunjire în sus la cel mai apropiat întreg (Round to +Infinity)
• generarea unui număr aleator intre 0 şi 1 (Random Number 0-1)
• rădăcina pătrată (Square Root)
• schimbare de semn (Negate)
• multiplicarea printr-o putere a lui 2 (Scale by Power of 2)
• semnul valorii x (Sign)
• inversa (Reciprocal)
Subgrupul „Funcţii
de conversie”, fig.6.13.
cuprinde funcţii care
realizează conversia
diferitelor tipuri de date. La
utilizarea acestor funcţii
trebuie să se ţină seama că o
conversie în întreg a unei
date în virgulă mobilă se
face prin rotunjire la cel mai
apropiat întreg sau la
Fig.6.13. Subgrupul funcţiilor de conversie (Conversion) valoarea impară dacă partea
fracţionară este 0,5. Dacă
107
rezultatul conversiei este în afara domeniului valorilor pentru întreg, utilizarea acestor funcţii
va determina trunchierea la valoarea minimă sau maximă a domeniului pentru valoarea
întreagă
Subgrupul „Manipulare date” conţine funcţii utilizate pentru modificarea tipurilor de
date utilizate în LabVIEW.
Operarea cu numere complexe este facilitată de componentele grupului „Funcţii
pentru numere complexe” care conţine funcţii prin intermediul cărora se pot crea numere
complexe pe baza a două valori date în format rectangular (real/imaginar) sau în format polar
(modul/argument) sau plecând de la aceste două forme de exprimare a numerelor complexe se
pot extrage cele două componente.
Subgrupul „Scalare” conţine funcţii utilizate pentru conversia valorilor citite de la
senzori de temperatură (termorezistenţă, termocuplu, termistor) în tensiune electrică
Utilizarea unor constante universale se face folosind elementele subgrupului
„Constante matematice şi ştiinţifice”.

6.4. Controale şi indicatoare de tip Boolean


Aceste obiecte, fig.6.14. sunt utilizate pentru
afişarea sau introducerea de date sau informaţii de tip
numeric şi se găsesc atât sub forma de reprezentare
modern cât şi clasic.
Componentele de interfaţa, ale panoului frontal,
aparţinând tipului boolean, au două valori posibile,
corespunzând stării de adevărat (True) sau fals (False).
Valoarea logică fals este valoare iniţială şi
corespunde cazului în care componenta booleană a fost
preluată din caseta de controale şi indicatoare şi plasata pe
suprafaţa panoului frontal.
Există mai multe reprezentări grafice de controale
de tip boolean: butoane care pot fi apăsate, comutatoare,
întrerupătoare, butoane radio. Indicatoarele booleene sunt
reprezentări vizuale ale valorii logice şi simulează LED –
uri, realizate sub diferite forme.
Fig.6.14. Controale şi În etapa construirii panoului frontal, se poate
indicatoare de tip Boolean verifică comportarea unui control sau indicator boolean, la
fiecare apăsare a mouse – ului, componenta de
interfaţa de tip boolean va trece în starea
complementară.
Prin intermediul opţiunilor meniului
contextual, asociat obiectului de tip boolean,
(fig.6.15.) se stabilesc valorile unor proprietăţi
suplimentare ale elementelor sau aceste elemente
realizează acţiuni specifice cum ar fi cele prezentate
mai jos:
• Schimbarea în control/indicator
• Afişarea/ascunderea etichetei proprii
• Schimbarea valorii implicite
• Crearea unui nod proprietate în
diagrama bloc
• Stabilirea comportării mecanice
Unele componente de interfaţă sunt capabile
Fig 6.15. Meniul contextual al
prin selecţia opţiunii Visible Items » Boolean text
controalelor de tip boolean
să afişeze unul din cuvintele următoare:

108
• închide (OFF), anulează (CANCEL), sau opreşte (STOP), pentru starea logică
fals;
• deschide (ON) sau în-regula (OK), pentru starea logică adevărat.
Semnificaţia opţiunilor din meniul contextual asociat unei componente booleene se
reprezintă în continuare:
• se vizualizează informaţii suplimentare
• submeniul „acţiuni asupra datei”(Data Operation)
• se stabileşte comportamentului mecanic al controlului boolean:
9 comportare mecanică „comută la apăsare”
9 comportare mecanică „comuta la eliberare”
9 comportare mecanică „comuta înainte de eliberare”
9 comportare mecanică „zăvorăşte la apăsare”
9 comportare mecanică „zăvorăşte la eliberare”
9 comportare mecanică „zăvorăşte înainte de eliberare”
Pe lângă parametrii menţionaţi se pot seta şi atribute specifice componentei de
interfaţă a controlalelor şi indicatoarelor de tip boolean ce pot să difere în funcţie de tipul
controlului sau indicatorului, prin intermediul clasei de atribute Appearance, conform
fig.6.16.

• Colors – setare culori


pentru cele două stări;
• Show Boolean Text –
atribute comune adăugare de text pentru cele
două stări (On şi Off) care
poate fi poziţionat în centrul
controlului (Lock text in
center) şi avea mai multe
caractere (Multiple strings).
atribute specifice booleene Se poate introduce textul
corespunzător celor două
stări şi seta culoarea acestui
Fig.6.16. Fereastra setare atribute text.

6.5. Funcţii de tipul boolean


Pentru tipul de date boolean sunt disponibile funcţiile grupului „Funcţii logice”
(Boolean), fig.6.17. Elementele acestui grup sunt:
• ŞI logic (AND);
• SAU logic (OR);
• SAU exclusiv (EXCLUSVIE
OR);
• NEGARE logică (NOT);
• COMBINARE aritmetice
(COMPOUND ARITHMETIC);
• ŞI-NU (NOT AND);
• SAU-NU (NOT OR);
• SAU exclusiv negat (NOT
EXCLUSVIE OR);
• Implica (IMPLIES);
Fig. 6.17. Funcţii de tipul boolean • ŞI logic pentru elementele unui
tablou (AND ARRAY

109
ELEMENTS);
• SAU pentru elementele unui tablou (OR ARRAY ELEMENTS);
• Conversia unui număr la tablou cu elemente booleene (NUMBER TO BOOLEAN
ARRAY);
• Conversia unui tablou cu elemente booleene la valoare numerică (BOOLEAN
ARRAY TO NUMBER);
• Conversia unei valori booleene la valoare numerică (BOOLEAN TO 0,1);
• Constanta booleana (BOOLEAN CONSTANT);
Toate funcţiile grupului „Funcţii logice” îndeplinesc proprietatea de polimorfism:
• Parametrul de intrare poate fi de tipul boolean sau numeric, caz în care se
realizează funcţia pe biţii reprezentării binare;
• Structura de date a valorii de intrare poate sa fie scalară, tablou cu elemente de tip
scalar, grupare de date cu elemente de tip scalar, etc.

6.6. Controale şi indicatoare de tip şir de caractere


Componentele de interfaţă tip şir de caractere, fig.6.18., permit citirea/afişarea
mărimilor aparţinând acestui tip de dată. În etapa construirii panoului frontal, se introduce o
valoare pentru un control şir de caractere prin unealta de etichetare sau de operare; valoarea
actualizată este asociată componentei în urma apăsării tastei < Enter >, a butonului < Enter >,
afişat în bara orizontală cu meniuri sau printr-un clic –
dreapta în afara controlului.
Dacă valoarea unui control/indicator se întinde
pe mai multe linii, este posibilă afişarea barei de defilare
(scroll bar) a conţinutului, prin alegerea opţiunii
„Afişarea/Bara de derulare” (Show/ Scrollbar) din
meniuli contextual. Opţiunea este disponibilă atât pentru
controale cât şi pentru indicatoare.
Fig.6.18. Controale şi indicatoare Valoarea componentei se poate declara valoare –
de tip şir de caractere implicită, dacă se selectează din meniul contextual
opţiunea „Acţiunea asupra datei/Stabileşte valoarea
curentă implicită” (Data Operations / Make current
value default).
Meniul contextual, asociat unui control tip şir de
caractere (etichetat ”parolă”) este prezentat în fig. 6.19,
prin care utilizatorului aplicaţiei i se cere introducerea
unei parole de acces. Caracterele introduse în controlul
„Parola” sunt protejate, fiind afişate prin caractere ”*” .
Conţinutul controlului nu este restricţionat la o singură
linie, după cum se observă din aceeaşi figură nefiind
bifată opţiunea „limitează la o singura linie” (Limit to
Single Line).
O alta componentă de interfaţă care facilitează
introducerea/afişarea datelor tip şir de caractere este
controlul Combo Box, fig.6.20, prin intermediul căruia
se poate crea o listă de şiruri de caractere.
Funcţionalitatea acestui control este similară unui control
de tip Ring şi un şir de caractere poate fi ales de
utilizator, din această listă, printr-un buton ataşat
Fig 6.19 Meniul contextual al controlului .
controalelor de tip şir de
caractere

110
Crearea acestei liste se face prin
opţiunea Edit Items şi item – urilor
reprezentând şiruri de caractere ale
listei li se pot ataşa valori numerice
dacă este selectată opţiune Values
meci Items. Dacă este selectată
opţiunea Allow Undefined Strings în
timpul rulării programului utilizatorul
poate introduce în căsuţă şi alte
caractere decât cele definite la
construirea listei, acestea însă nu vor fi
rezidente în memorie, ele se pierd
automat atunci când se selectează alt şir
de caractere din listă.
În aceeaşi categorie a
controalelor de tip şir de caractere sunt
şi File Path Control respectiv File
Fig.6.20. Utilizarea controlului Combo Box
Path Indicator prin intermediul cărora
se poate indica respectiv se poate citi calea unui fişier aflat pe hard – discul calculatorului sau
pe un suport de memorie ataşat calculatorului.

6.7. Controale şi indicatoare de tip tablou, matrice şi grupare de date


Prin utilizarea acestor controale şi indicatoare se pot crea structuri de tip tablou,
matrice şi grupare de date (Array, Matrix & Cluster) pentru date de tip numeric sau şir de
caractere dar se pot crea şi structuri de tip tablou, matrice sau grupare de date pentru alte
controale sau indicatoare.

6.7.1. Tablou (Array)


Este o structură de date compusă, cu elemente aparţinând aceluiaşi tip şi anume:
numeric, boolean, şir de caractere, cale de fişier (path), identificator unic (refnum) grupare de
date (cluster). Se spune ca tabloul este o structură omogene de date. Elementele deţin în
cadrul structurii compuse o poziţie bine determinată iar accesul la o celulă se face prin
indexare.
Pentru un tablou cu N elemente, primul element se găseşte la poziţia 0, iar ultimul
element din tablou la poziţia N-1. Un tablou poate avea una sau mai multe dimensiuni iar
numărul maxim de elemente/dimensiuni este 231 – 1. În limbajul G, elementele unui tablou pot
fi la rândul lor tablouri. Elementele unui tablou pot fi de tip grupare de date, care sa conţină
elemente de tip tablou, cu elemente de tip grupare de date s.a.) este o structură de date
compusă, cu elemente aparţinând aceluiaşi tip şi anume: numeric, boolean, şir de caractere,
cale de fişier (path), identificator unic (refnum) grupare de date (cluster). Se spune ca tabloul

1,5 index
1
0 1 2 3 4 5 6 7 8 9
0,5
04 09 14 08 0 1 0 03 02 0
0 Tablou (array) cu 10 elemente
1 2 3 4 5 6 7 8 9 10

-0,5

-1

Fig.6.21. Explicativă pentru tablou unidimensional

111
este o structură omogene de date. Elementele deţin în cadrul structurii compuse o poziţie bine
determinată iar accesul la o celulă se face prin indexare.
Pentru exemplificare se consideră rezultatele a 10 măsurători care se aranjează într-un
tablou unidimensional conform fig.6.21 şi care se reprezintă pe panoul frontal printr-un obiect
1D Array). Dacă de exemplu se consideră două variabile x şi y perechi de valori ale acestora
se vor reprezenta printr-un tablou bidimensional conform fig.6.22. şi care se reprezintă pe
panoul frontal printr-un obiect 2D Array.
3

2,5
index coordonate x

2
0 1 2 3 4 5 6
1,5 0,4 2,2 3,3 3,2 2,4 1,8 1,9
0,2 0,5 1,3 2,3 2,6 1,9 1,2
1

0,5

0
coordonate y
0 0,5 1 1,5 2 2,5 3 3,5

Fig.6.22. Explicativă pentru tablou bidimensional


Pentru crearea în panoul frontal a unui control sau indicator de tip tablou, se selectează
din căsuţa cu controale (Array, Matrix & Cluster), un obiect Array (tablou), fig.6.20., şi un
indicator numeric, care se va trage cu mouse – ul în fereastra obiectului Array, obţinând

⇒ ⇒

a)

b)

Fig.6.23. Creare tablou


astfel un indicator de tip tablou unidimensional 1D Array (fig.6.23.a). Dacă este necesară
adăugarea a încă unei dimensiuni se selectează Add Dimension din meniul contextual

a)

b)

Fig.6.24. Reprezentarea tablourilor 1D Array şi 2D Array pe panoul frontal

112
rezultând un indicator de tip tablou bidimensional 2D Array (fig.6.23.a). Pentru cazurile
seturilor de valori prezentate în fig.6.21. respectiv fig.6.22. se obţine reprezentarea acestor
tablouri pe panoul frontal corespunzător fig.6.24.
Se defineşte astfel o variabilă de tip tablou, pentru care urmează să se indice tipul
elementelor. Numai variabila de tip tablou singură nu poate fi folosită, neavând asociată vreo
semnificaţie de control sau indicator şi se poate spune despre o variabilă de tip tablou ca este
indicator sau control după tipul elementelor ce le conţine. Construirea unei variabile de tip
tablou care să conţină elemente de tip control se realizează în mod similar cu deosebirea că
este selectat din bibliotecile LabVIEW elementul control şi acesta care se va trage cu mouse –
ul în fereastra obiectului Array. Este logic să se deducă concluzia prin care elementele unui
tablou sunt toate controale sau toate indicatoare. Definirea tipului elementelor tabloului se
poate modifica printr-un click – stânga cu mouse – ul pe elementul tabloului şi schimbarea
acestui element din indicator în control sau invers.
Pentru componenta tablou sunt afişate două căsuţe şi anume căsuţa indicelui, din
partea stângă şi căsuţa valoare din partea dreapta. Intre acestea este relaţia prin care într-o
căsuţă valoare se afişează valoarea elementului tabloului corespunzătoare poziţiei prezentată
în căsuţa indice. Cu unealta de editare se poate mari dimensiunea căsuţei valoare. Dacă se
măreşte dimensiunea căsuţei valoare, se afişează simultan mai multe elemente ale tabloului şi
dispunerea acestor element este pe orizontală
sau pe verticală.
Reducerea dimensiunilor unui tablou se
realizează în mod asemănător. Pentru un tablou
cu mai multe dimensiuni (matrice), se poate
mări zona valorilor atât pe orizontală cât şi pe
verticală: se obţine o afişare matricială a
elementelor.
Acestor elemente de pe panoul frontal le
sunt asociate funcţii corespunzătoare tipului de
date tablou şi acestea sunt grupate în caseta cu
funcţii Array, redat în fig.6.25. La majoritatea
funcţiilor, care operează cu tablouri, se
Fig.6.25. Grupul de funcţii Array întâlneşte proprietatea de polimorfism, fig.6.26.
având următoarele caracteristici:
- tabloul, ca parametru de intrare, poate să aibă una sau mai multe dimensiuni;
- tipul elementului de tablou poate să fie de orice tip de dată acceptat.

Fig.6.26. Explicativă a
proprietăţii de polimorfism

113
Câteva dinte cele mai uzuale funcţii ale grupului „Tablou” (Array), prezentate în
fig.6.23. sunt:
• Funcţia „Dimensiune Tabloul” (Array
Size), returnează numărul de elemente
ale fiecărei dimensiuni ale tabloului de
intrare, fig.6.27. Fig. 6.27. Array Size
• Funcţia de „Indexare” (Index Array) returnează elementul tabloului, de la poziţia
indicată, prin numărul liniei (row) şi cel al coloanei (col), fig.6.28.

Extragere element

Extragere subtablou
(o linie)
Fig. 6.28. Funcţia Index Array
• Funcţia „Iniţializează tablou” (Initialize Array), realizează iniţializarea elementelor
unui tablou cu N dimensiuni cu o valoare indicată. În fig.6.29. este prezentat un
exemplu de iniţializarea a unui tablou care va avea 6 elemente (2 linii x 3 coloane) cu
valoarea 4.

Fig. 6.29. Funcţia Initialize Array


• Funcţia „Subtablou” (Array Subset), returnează un număr specificat din elementele
unui tablou, începând de la un indice. În fig.6.30. este prezentat un exemplu de
extragere a unui subtablou cu lungimea de 4 elemente începând cu elementul cu
indexul 2.

Fig 6.30. Funcţia Array Subset

• Funcţia „Construieşte Tablou” (Build Array) returnează un tablou, ale cărui elemente
sunt date de valorile parametrilor de intrare. Dacă este setată opţiunea Concatenate
Inputs din meniul contextual al funcţiei Build Array, tabloul se va construi prin
alăturarea elementelor de intrare a funcţiei, fig.6.31. dacă însă nu este setată această
opţiune tabloul se va construi prin adăugarea de dimensiuni, ceea ce înseamnă
adăugarea de linii, lungimea fiecăreia fiind dată de lungimea celei mai mici dintre

Fig. 6.31. Funcţia Build Array cu o dimensiune


114
acestea, fig.6.32.

Fig. 6.32. Funcţia Build Array cu mai multe dimensiuni


• Funcţia “Maximul şi Minimul Tabloului” (Array Max & Min) returnează valorile
maxim şi respective minim ale elementelor tabloului împreună cu împreună cu indexul
acestor valori, fig.6.33.

Fig.6.33. Funcţia Array Max & Min


• Funcţia “Transpunere Tablou” (Transpose Array) rearanjează elementele unui tablou
2D astfel prin înlocuirea liniilor cu coloanele încât elementul cu indexul [i,j] devine
elementul cu indexul [j,i], fig.6.34.

Fig.6.34. Funcţia Array Max & Min


• Funcţia “Căutare în tablou 1D (Search 1D Array) returnează indexul elementului
căutat începând cu indexul stabilit prin „start index(0)” care poate fi zero, fig.6.35.,
sau diferit de zero

Fig.6.35. Funcţia Search 1D Array


Elementele unei variabile de tip tablou pot fi convertite în elemente de acelaşi tip ale
unei variabile de tip matrice
prin utilizarea funcţiei Array
a) to Matrix, fig.6.36.a iar
elementele unei variabile de tip
matrice pot fi convertite în
elemente de acelaşi tip ale unei
b)
variabile de tip tablou prin
utilizarea funcţiei Matrix to
Fig.6.36. Conversii tablou – matrice şi invers Array, fig.6.36.b

115
6.7.2. Grupare de date (Cluster)
O grupare de date (Cluster) este o structură compusă de date (fig.10.42.). În acest caz
nu este obligatoriu ca elementele componente să aparţină aceluiaşi tip, spre deosebire de
limitarea apartenenţei unice a tipului la elementele unui tablou (Array). Se spune că gruparea
de date este o structură eterogenă. Elementele componente ale unei grupări de date pot
aparţine oricărui tip valid de date din limbajul grafic G.
Prin gruparea mai multor elemente într-un cluster sunt eliminate o mulţime de fire de
conexiune din diagrama bloc şi de asemenea sunt reduse punctele de conexiune ale
conectoarelor pentru subVI – uri reducându-se astfel aglomerarea de elemente în diagrama
bloc. De reţinut că un conector are cel mult 28 de terminale astfel că se pot conecta maxim 28
de controale şi indicatoare la un subVI dar acest număr poate creşte foarte mult dacă aceste
elementele de pe panoul frontal sunt grupate un cluster – e.
Gruparea elementelor într-un cluster se face prin selecţia din căsuţa cu controale
(Array, Matrix & Cluster) un obiect Cluster (grupare de date), fig.6.37. după care din
căsuţele cu controale corespunzătoare se aleg elementele ce se vor grupa. Gruparea se face
prin tragerea acestora cu mouse – ul în fereastra obiectului Cluster. De menţionat că acelaşi
cluster nu poate conţine decât fie controale fie indicatoare, indiferent însă de tipul acestora.

Fig.6.37. Construirea unei grupări


(Cluster) de elemente de tip control

Pentru a observa diferenţa dată de utilizarea cluster – erelor în fig.6.38 este prezentată
diagrama bloc a controalelor grupate în cluster – ul Cluster Controale din fig.6.37 la care au
fost ataşate elemente indicatoare independente respectiv conectate şi acestea în cluster – ul
Cluster Indicatoare şi se poate observa că 5 linii de conexiune între controale şi indicatoare
sunt grupate în una singură prin intermediul căreia sunt vehiculate diferite tipuri de date.

a) b)

Fig.6.38. Explicativă privind utilizarea cluster - erelor

116
Pentru realizarea operaţiilor de grupare şi degrupare a elementelor sau tablourilor în
obiecte de tip cluster sunt utilizate funcţiile din caseta Cluster & Variant, fig.6.39.
Cele mai uzuale funcţii, specifice acestui tip de date
sunt prezentate mai jos:
• Funcţiile de grupare Bundle (fig.6.40.) şi
Bundle by Name– permit realizarea a doua
operaţii:
9 Din elementele de intrare se formează o
grupare de date, fig.6.40.a, când toate
elementele de intrare grupate au un
corespondent cluster – ul de ieşire
9 Actualizarea valorilor elementelor unei
grupări de date existente, fig.6.40.b,
când unul sau mai multe elemente de
intrare sunt înlocuite, în acest caz
Fig.6.39. Grupul de funcţii Cluster valoarea controlului numeric este
preluată de la controlul Slide care ocupă
aceiaşi poziţie în gruparea de date

a)

Fig.6.40. Utilizarea
funcţiei Bundle

b)

• Funcţiile de degrupare
Unbundle şi Unbundle by
Name (fig.6.41.) returnează
valoarea elementelor specifice,
dintr-o grupare de date iar
pentru funcţia Unbundle by
Name este returnat şi numele
controlului ce generează
Fig.6.41. Funcţiile Unbundle şi Unbundle by respectiva dată şi pentru aceasta
se recomandă ca fiecare element
din gruparea de date sa aibă eticheta proprie;
Prin operaţia de degrupare programatorul are acces simultan la toate elementele
conţinute intr-o varianta de tip grup, spre deosebire de tablouri unde prin indexare se obţine
accesul la un singur element. Fiecare element dintr-o structura de tip grupare de date are

117
asociat un număr de ordine şi acesta reprezintă al câtelea element a fost adăugat mulţimii;
numărătoarea începe de la valoarea zero. Numărul de ordine asociat elementelor grupului este
actualizat automat în momentul realizării operaţiilor de adăugare sau eliminare de elemente.
Există funcţii predefinite, asociate tipului de date grupare de date, care folosesc numărul de
ordine ale elementelor în cadrul grupului, pentru accesarea părţilor componente.
Există posibilitatea de a transforma o grupare de date
într-un tablou şi invers prin utilizarea funcţiilor Cluster to
Array şi respectiv Array to Cluster cu observaţia că pentru
utilizarea acestor funcţii este necesar gruparea să conţină date
de acelaşi tip.
Pentru o grupare de date existentă se poate modifica
ordinea elementelor obţinute. Pentru aceasta din meniul
contextual se alege opţiunea Reorder Controls In Cluster şi
elementelor grupului li se vor ataşa numere de ordine
elementelelor mulţimii pe care utilizatorul le poate modifica
stabilind o noua ordine (fig.6.42). O componentă tip grupare
de date poate fi redimensionată folosind unealta de editare
astfel: se modifică dimensiunea chenarului exterior.
Fig.6.42. Modificarea ordinii Elementele grupului pot fi mutate în poziţia dorită, fără să se
elementelor unui Cluster depăşească perimetrul structurii. Un element se elimină din
grup prin selecţie cu mouse – ul, şi ştergere cu tasta <Delete>.

6.8. Controale şi indicatoare de tip listă, structură arborescentă şi tabel


Prin utilizarea acestor controale
şi indicatoare se pot crea şi utiliza
structuri de tip listă (Listbox),
arborescentă (Tree Control) şi tabel
(Table) pentru date de tip numeric sau
şir de caractere. Aceste elemente se
Fig.6.43. Controale şi indicatoare List & Table găsesc în caseta List & Table,
fig.6.43.

6.8.1. Lista
Este un control care permite introducerea de acţiuni generate de alegerea elementelor
dintr-o listă şi poate fi cu o singură coloană (Listbox) sau multicoloană (Multicolumn
Listbox). Modul de reprezentare al elementelor în listă poate fi alfanumeric.
Variabila de ieşire a cestui control este de tip numeric dacă din meniul contextual este
aleasă una din opţiunile Selection Mode » 0 or 1 Item sau Selection Mode » 1 Item sau de
tip tablou dacă este aleasă una din opţiunile Selection Mode » 0 or More Item sau Selection
Mode » 1 or More Item. Valorile acestora reprezintă numărul de ordine al elementului din
listă, fig.6.44., începând cu valoarea 0 pentru primul element. Dacă nu este selectat niciun
element valoarea variabilei de ieşire va fi -1.

Fig.6.44. Utilizarea controlului şi indicatorului listă (Listbox)


Elementul ales din listă poate fi utilizat şi pentru selecţia unuia dintre cazurile posibile
cuprinse într-o structură de tip Case, fig.6.44. selecţia se realizează după numărul de ordine al

118
elementului din listă deci variabila de ieşire a controlului Listbox trebuie să fie de tip
numeric, aleasă după cum este prezentat mai sus.
Funcţionarea controlului de tip multicoloană (Multicolumn Listbox) este similară cu
cea controlului de tip coloană singura deosebire fiind dată de faptul că elementele listei,
reprezentând linii ale listei, sunt desfăşurate pe două sau mai multe coloane, dar selecţia se
face numai după linie adică după fiecare element

6.8.2. Tabel
Este un control prin intermediul căruia se pot introduce elemente ale unui tabel de tip
numeric sau de tip şir de caractere şi aceste elemente pot fi citite pot fi citite numai cu un
indicator de tip tabel, fig.6.45. deoarece formatul datelor de ieşire ale unui astfel de control
sunt de tip şir de caractere (string) organizate într-un tablou 2D.

Fig.6.45. Utilizarea controlului şi indicatorului tabel (Table)

6.8.3. Structură arborescentă


Utilizarea controlului de tip structură arborescentă generează o listă ierarhizată din
care utilizatorul poate selecta un item. Item – urile utilizate într-o structură arborescentă pot fi
organizate în grupuri de item – uri sau noduri. Pentru ca item – urile unui nod să poată fi
afişate se face un clic pe simbolul de expandare al acestuia iar printr-un nou clic se realizează
ascunderea acestora. Variabila de ieşire a unui control de tip structură arborescentă este de tip
string astfel că item – ul selectat în control poate fi afişat şi prin intermediul unui indicator de
tip şir de caractere, fig.6.46.

Fig.6.46. Utilizarea controlului şi indicatorului structură arborescentă (Tree Control)


Realizarea structurii arborescente se face pornind de la o listă a tuturor item – urilor
scrisă în ordinea aşezării acestora în care vor apărea în lista ierarhizată, fig.6.47.a. Itend – area
(aranjarea pe niveluri corespunzătoare
ierarhic) acestora se face selectând item –
ul şi alegerea opţiunii Ident Item din
meniul contextual al controlului de câte ori
este nevoie până la aşezarea item – ului pe
nivelul corespunzător, prin deplasare la
stânga. Revenirea pe un alt nivel ierarhic al
unui item se face prin selecţia item – ului şi
alegerea opţiunii Outdent Item din meniul
a) b) contextual al controlului de câte ori este
Fig.6.47. Construirea structurii arborescente nevoie.

119
6.8.3. Tabel asociat unui semnal (Express Table)
Este o structură de tip tabel care are asociată funcţia Build Table prin intermediul
căreia un semnal reprezentând variabila de intrare a funcţiei este convertit într-un tabel de
valori reprezentând valori ale amplitudinii semnalului la momente de timp definite de
utilizator. Aceste valori sunt afişate în tabelul asociat semnalului. Împreună cu aceste valori
pot şi afişate şi ora şi data culegerii acestora dacă este intrarea booleană Include time data a
funcţiei Build Table este setată “adevărat” (True).
În fig.6.48. este prezentat un exemplu de utilizare a structurii Express Table având
asociată funcţia Build Table pentru a afişa 20 de valori ale perioadei unui semnal sinusoidal
ai cărui parametrii (amplitudine, frecvenţă, fază) sunt stabiliţi prin intermediul Cluster – ului.
Semnalul este generat pe baza acestor parametrii prin utilizarea funcţiei Sine Waveform.vi
iar forma acestuia poate fi afişată grafic prin intermediul indicator de tipul Waveform Chart
sau Waveform Grah. Tot această structură conţine şi controalele prin care se setează
includerea în tabel a orei şi datei precum şi eşantionarea semnalului (extragerea celor 20 de
valori ale amplitudinii acestuia)

semnal

Fig.6.48. Utilizarea structurii Express Table

6.9. Indicatoare grafice


Prin intermediul acestor componente de interfaţă plasate pe panoul frontal, este
posibilă vizualizarea reprezentărilor grafice. Indicatoarele primesc valori numerice necesare
pentru realizarea unei reprezentării grafice, în urma prelucrării datelor în diagrama bloc.
Controalele se utilizează în locul indicatoarelor dacă valorile necesare realizării reprezentării
grafice sunt primite ca parametri de intrare pentru VI curent, folosit drept subrutina (subVI).
Nu este posibilă obţinerea unei reprezentări grafice interacţionând direct asupra unui control.
LabVIEW include în bibliotecile de
controale şi indicatoare şi caseta Graph, fig.6.49.
ce conţine următoarele tipuri de indicatoare pentru
reprezentări grafice:
• Indicatoare de tip grafic şi diagramă
(Waveform Graphs and Charts) prin
intermediul cărora sunt afişate, cu rată
constantă, date preluate de la diverse
variabile;
• Indicatoare grafice XY (XY Graphs) prin
care sunt afişate date preluate, cu rată
variabilă, de la funcţii multivariabile;
Fig.6.49. Caseta de indicatoare Graph • Indicatoare de tip grafic şi diagramă în
intensitate (Intensity Graphs and Charts)

120
prin care sunt afişate tablouri 3D utilizând reprezentări 2D şi culori pentru
reprezentarea valorilor corespunzătoare celei de-a treia dimensiuni;
• Indicatoare grafice digitale (Digital Waveform Graphs) prin care sunt afişate date de
tip puls sau grup de pulsuri preluate de la variabile digitale;
• Indicatoare grafice pentru semnal (Mixed Signal Graphs) prin intermediul cărora se
pot afişa date acceptate de indicatoarele de tip grafic, XY sau digital. De asemenea
aceste indicatoare acceptă şi grupuri de date (cluster – e) formate din orice combinaţie
a acestor tipuri;
• Ferestre grafice 3D (Windows 3D Graphs) prin care sunt afişate tablouri de date 3D
în reprezentare grafică 3D prin intermediul unui obiect ActiveX pe panoul frontal.

6.9.1. Indicator de tip grafic (Waveform Graphs)


Aşa cum s-a menţionat mai sus permit reprezentarea grafică a valorilor uneia sau mai
multor funcţii simultan cu specificarea că fiecare dintre acestea este o funcţie de o singură
variabilă de tipul y = f(x) cu puncte uniform distribuite de-a lungul axei x.

Fig.6.50. Indicator de tip grafic (Waveform Graphs)


Un astfel de indicator acceptă la intrare diverse tipuri de date pentru a le afişa sub
forma unor curbe. Tipul uzual de date este reprezentarea acestora sub forma unui tablou 2D în
care fiecare linie a tabloului reprezintă o curbă. În fig.6.50. este prezentat un exemplu de
utilizare a acestui indicator pentru a reprezenta funcţia sinus pe o perioadă (2π) prin 100 de
puncte (Y) Single Plot respectiv pentru a reprezenta simultan funcţiile sinus şi cosinus pe
aceiaşi perioadă şi prin acelaşi număr de puncte
Indicatorul de tip grafic interpretează fiecare valoare a variabilei y din tablou ca
ordonata unui punct al curbei. Variabila x reprezentând abscisa punctului este incrementată
după fiecare valoare cu Δx = 1 începând de la. Acestea sunt valori implicite dar pot fi
specificate şi de către utilizator prin adăugare la gruparea de date reprezentând tabloul y = f(x)
a parametrilor x0 şi respectiv Δx, astfel în fig.6.51. sunt modificaţi aceşti parametrii (x0 = 25,
Δx = 2) şi se observă efectul asupra reprezentării grafice.

Fig.6.51. Explicativă privind modificarea parametrilor x0 şi Δx


Indicatorul de tip grafic acceptă la intrare şi date de tip formă de undă, acestea
conţinând atât setul de date cât şi parametrii x0 şi Δx, în fig.6.52. este prezentat un exemplu de
utilizare a indicatorului de tip grafic în acest caz. Este preluată forma de undă a semnalului
cosinus şi acestuia îi sunt adăugaţi parametrii x0 şi Δx care în acest caz valori ale variabilei
timp şi vor fi x0 = t0 şi Δx = dt prin intermediul funcţiei Build Waveform

121
Fig.6.52. Utilizarea indicatorului de tip grafic pentru date de tip formă de undă
Un alt tip de date acceptate de acest indicator sunt date de tip dinamic (dynamic data
type) care reprezintă de fapt tot o formă de undă generată însă prin utilizarea funcţiilor
Express (Express » Input » Simulate Signal), fig.6.53. Un astfel de semnal pe lângă datele
propriu-zise ce reprezintă coordonatele punctelor ce se for reprezenta grafic conţine şi
informaţii asociate semnalului cum ar fi numele acestuia, data şi ora când a fost achiziţionat.

Fig.6.53. Utilizarea indicatorului de


tip grafic pentru date dinamice
(dynamic data type)

Unui indicator de tip grafic i se pot seta atribute prin intermediul opţiunii Properties
din meniul contextual prin selecţia căreia se deschide o fereastră ce permite setări pentru:
• Mod de afişare (Appearance), fig.6.54.a prin care se setează afişarea următoarelor:
9 Unelte pentru grafic (Show graph palette) prin
intermediul cărora:
¾ se poate activa utilizarea cursoarelor
¾ se poate realiza un zoom în grafic după abscisă, după ordonată
sau după ambele coordonate
¾ se poate deplasa graficul în fereastră
9 Atribute ale graficului (Show plot legend) prin
intermediul căruia se pot stabili, prin meniu contextual
activat cu clic – dreapta, atribute ale liniilor

122
Fig.6.54. Setarea atributelor
unui indicator de tip grafic

reprezentând graficul (tip, grosime, culoare, mod de interpolare a punctelor


pentru obţinerea liniilor, etc);
9 Număr de curbe afişate simultan (Plots shown);
9 Bară de scroll pe abscisă (Show x scoll bar);
9 Atribute pentru scale (Show scale legend) prin
intermediul căreia se pot face setări ale modului
de reprezentare a axelor atât pe abscisă cât şi pe
ordonată în ceea ce priveşte formatul valorilor
celor două variabile afişate pe abscisă şi ordonată, numărul de cifre al
acestora, formatul caroiajului;
9 Atribute pentru cursor (Show cursor
legend) dacă este activat unul sau mai
multe cursoare şi aceste atribute valori în
coordonate (x,y) ale poziţiei fiecăruia
dintre cursoarele utilizate
• Format şi precizie (Format and Precision) prin care se setează atribute ale modului
de reprezentare a valorilor numerice corespunzătoare coordonatelor punctelor ce
formează reprezentarea grafică. Aceste atribute sunt comune atributelor controalelor şi
indicatoarelor numerice prezentate în subcap. 6.2;
• Reprezentare grafică (Plot) prin care se setează atribute ale reprezentării grafice
propriu-zise, printre care:
9 Numele curbei (Name) şi denumirea variabilelor de pe cele două axe
(Amplitudine (Y - Axis)) respectiv (Time (X - Axis));
9 Formă, grosime şi culoare a liniei reprezentării grafice;
9 Mod de interpolare a punctelor reprezentând valori ale celor două variabile
pentru a obţine curba;
• Scalele reprezentării grafice (Scales) prin care se setează atribute ale ferestrei grafice a
indicatorului:

123
9 Denumirea variabilelor de pe cele două axe (Amplitudine (Y - Axis))
respectiv (Time (X - Axis));
9 Setări pentru axe:
¾ Vizualizarea denumirii axelor (Show scale label);
¾ Vizualizarea scalei pentru fiecare axă (Show scale);
¾ Scală logaritmică pentru fiecare axă (log);
¾ Scală inversă pentru fiecare axă (Inverted)
9 Autoscalare (Autoscale) sau setarea factorilor de scală (Scaling Factors)
pentru fiecare axă;
9 Stil şi culoare pentru scale de pe fiecare axă (Scale Style and Colors);
9 Stil şi culoare pentru caroiaj (Grid Style and Colors).
• Cursoare (Cursors), acestea fiind repere reticulare ce permit citirea coordonatelor
punctelor ce formează reprezentarea grafică la cerea utilizatorului. Pentru aceste
elemente suplimentare ale indicatorului de tip grafic se pot seta atribute pentru fiecare
cursor, printre care:
9 Numele cursorului;
9 Formă, grosime şi culoare a liniei cursorului;
9 Formă a elementului reticular;
9 Setarea posibilităţilor de deplasare a cursorului.
Ţinând seama
de setările pentru un
indicator de tip grafic
prezentate în fig.6.54
se obţine indicatorul
de tip grafic prezentat
în fig.6.55.
Toate setările
de atribute
menţionate mai sus se
pot realiza şi din
meniul contextual al
indicatorului obţinut
prin clic – dreapta pe
Fig.6.55. Indicator de tip grafic fereastra
indicatorului.

6.9.2. Indicator de tip diagramă (Waveform Chart)


Ca şi indicatorul de tip grafic este un indicator numeric utilizat pentru reprezentarea
grafică a perechilor de puncte reprezentând valori ale unei variabile dependente y şi a unei
variabile independente x acestea fiind reprezentate de o funcţie y = f(x). Spre deosebire însă
de indicatorul de tip grafic la indicatorul de tip diagramă reprezentarea grafică se face punct
cu punct după cum perechile de valori (x,y) sunt generate, nu este nevoie deci să se aştepte
generarea unui tablou al acestor perechi după care acestea să fie reprezentate. Se spune că
actualizarea (update – ul) graficului se face după fiecare pereche de valori obţinută.
Modalitatea de funcţionare este similară unui înregistrator grafic cu hârtie.
În ceea ce priveşte modalitatea de actualizare (update) există următoarele forme,
fig.6.56:
• Chart prin care modul de dispunere a punctelor ce formează graficul este similar
indicatorului de tip grafic astfel că un set de valori pereche (x,y) sunt depuse într-un
buffer a cărui lungime poate fi stabilită, dar valoarea implicită este de 1024 de perechi
după care acestea sunt reprezentate în fereastra grafică;

124
• Scope prin care se respectă principiul actualizării punct cu punct a graficului pe
măsură ce sunt generate coordonatele acestor puncte;
• Sweep prin care datele conţinute în buffer sunt citite prin baleiaj (sweep) adică
pereche cu pereche şi actualizarea acestora în fereastra grafică se face prin înlocuire.

Fig.6.56. Indicator grafic de


tip Chart

Selecţia unuia dintre aceste moduri de actualizare se poate face prin alegerea din
meniul contextual a opţiunii Advanced » Update Mode.
Ca şi în cazul indicatorului de tip grafic se pot reprezenta în aceiaşi fereastră grafică
una sau mai multe curbe adică unul sau mai multe seturi de valori (x,y) generate de una sau
mai multe funcţii. În fig.6.56. în aceiaşi fereastră grafică sunt reprezentate simultan funcţiile
sinus şi cosinus şi valorile asupra cărora sunt aplicate cele două funcţii sunt preluate de la
variabila contor i a unei bucle While a cărei valoare creşte cu fiecare ciclare a buclei.
Faţă de indicatorul de tip grafic la indicatorul de tip diagramă în cazul reprezentării a
două sau mai multe curbe acestea pot fi trasate în aceiaşi fereastră grafică (Overlay Plots) sau
în subferestre grafice diferite (Stack Plots). Alegerea uneia sau alteia dintre cele două opţiuni
se poate face din meniul contextual.
În ceea ce priveşte setarea atributelor indicatorului de tip diagramă această setare se
realizează în mod similar celor de tip grafic prezentate anterior.

6.9.3. Indicator de tip XY (XY Graph)


Indicatorul de tip XY permite reprezentarea grafică a unei funcţii y = f(x), în care atât
x cât şi y sunt tablouri de valori. Astfel în locul variabilei independente timp pe abscisă se vor
fixa valorile variabilei x iar pe ordonată valorile variabile y, obţinându-se astfel o reprezentare
în coordonate y = f(x). Cele două variabile reprezentate prin tablouri de valori 1D sunt grupate
prin intermediul unei funcţii Bundle astfel încât indicatorului grafic i se vor transmite pentru
afişare tablouri de valori 2D.

125
În fig.6.57 se prezintă un exemplu de utilizare a indicatorului de tip XY (XY Graph)
la care atât pe abscisă cât şi pe ordonată sunt repartizate valori ale funcţiei sinus obţinând
astfel figuri Lissajous.

Fig.6.57. Utilizarea indicatorului de tip XY pentru reprezentarea figurilor Lissajouss

Fig.6.58. Utilizarea indicatorului Express XY Graph


Funcţia Bundle de grupare a celor două variabile poate fi înlocuită dacă se utilizează
indicatorul căruia îi este ataşată funcţia Build XY care are rolul de a formata datele pentru a
fi afişate pe indicatorul XY. În acest caz, fig.6.58, pe abscisa cât şi pe ordonata indicatorului
sunt repartizate valori ale funcţiei sinus obţinute prin simularea acestei funcţii, simulare
realizată prin intermediul funcţiei Simulate Signal şi datele în acest caz fiind de tip dinamic.
Şi în acest caz este exemplificată utilizarea indicatorului Express XY Graph pentu generarea
de figuri Lissajous
În ceea ce priveşte setarea atributelor indicatorului XY această setare se realizează în
mod similar celor de tip grafic prezentate anterior.

126
6.9.3. Indicatoare grafice digitale (Digital Waveform Graphs)
Indicatoarele grafice digitale (Digital Waveform Graphs) sunt utilizate reprezentarea
grafică a codurilor numerice, fiecare valoare din aceste coduri fiind reprezentate prin cele
două cifre binare 0 şi 1. Aceste indicatoare sunt utilizate în cazul preluării semnalelor de pe o
magistrală de date sau de la un convertor analog – numeric.
Pentru exemplificarea utilizării se consideră la intrarea unui astfel de indicator grafic
un generator de coduri binare realizat prin intermediul unuia dintre controalele Digital
Waveform sau Digital Data.

a)

b)

Fig.6.59. Utilizarea indicatorului grafic digital cu generatoare de coduri


În cazul utilizării controlului Digital Waveform, fig.6.59.a. sunt generate 4 coduri
binare reprezentate de liniile 0 ... 3 în tabelul de valori Digital Waveform, fiecare cod binar
fiind exprimat prin 5 biţi (coloanele 0 ... 4 în tabelul de valori Digital Waveform), valorile
binare ale acestor biţi fiind reprezentate prin liniile Plot 0 ... Plot 4.
În cazul utilizării controlului Digital Data, fig.6.59.a. sunt generate 6 coduri binare
reprezentate de liniile 0 ... 5 în tabelul de valori Digital Data, fiecare cod binar fiind exprimat
prin 8 biţi (coloanele 0 ... 7 în tabelul de valori Digital Data), valorile binare ale acestor biţi
fiind reprezentate prin liniile Plot 0 ... Plot 7.

Fig.6.60. Utilizarea indicatorului grafic digital cu convertor analog - numeric


127
Indicatorul grafic digital Digital Waveform poate fi utilizat şi pentru reprezentarea
rezultatului conversiei analog – numerice, fig.6.60, prin care un semnal analogic sinusoidal
este convertit într-un cod binar care poate fi
reprezentat pe un număr de biţi în funcţie de
rezoluţia convertorului. În fig.6.60 sunt alese
două moduri de reprezentare, cu rezoluţie de 8
biţi (pe indicatorul grafic digital liniile Plot 0 ...
Plot 7) respectiv cu rezoluţie pe 12 biţi (pe
indicatorul grafic digital liniile Plot 0 ... Plot
11). Cele două coduri binare sunt coduri
bipolare în format complementul lui 2.
Diagrama bloc corespunzătoare
Fig.6.61. Diagrama bloc a utilizării grafic funcţionării indicatorului grafic digital în
digital cu convertor analog - numeric această aplicaţie este prezentată în fig.6.61

128
Cap.7
Elemente de programare grafică LabVIEW

7.1. Crearea, editarea şi corectarea unui VI


Se prezintă etapele realizării (implementării) unui VI şi metodele de tratare a execuţiei
unui program.
Etapele realizării unui VI se realizează respectând paşii de lucru, după cum urmează:
• crearea panoului frontal
• realizarea diagramei bloc utilizând limbajul G
• realizarea semnăturii VI reprezentată de pictograma şi conectorul
• salvarea VI intr-un fişier fizic “.vi”
• testarea funcţionării VI: se validează programul.
Pentru fiecare pas din realizarea VI se recomandă respectarea unor indicaţii, reguli şi
recomandări, care sunt prezentate în continuare.

7.1.1. Crearea panoului frontal


Se reaminteşte că panoul frontal reprezintă interfaţa grafică cu utilizatorul
(operatorul) al VI; elementele din panoul frontal se împart în controale şi indicatoare, care
sunt reprezentări vizuale ale datelor de intrare (controalele), respectiv ale datelor de ieşire sau
rezultatelor (indicatoarele).
După alegerea celor mai potrivite variante de componente în funcţie de cerinţele
aplicaţiei şi amplasarea lor pe panoul frontal, se recomandă introducerea etichetei proprii a
fiecărui element de pe panoul frontal. Se afişează în partea superioară a elementului un
dreptunghi de culoare gri, prin care se indică faptul că mediul LabVIEW aşteaptă introducerea
de către utilizator a indicatorului. După introducerea acestuia, pentru validare se apasă
<Enter>. Dacă nu se specifică un indicator imediat după plasarea acestuia în panoul frontal, se
selectează din meniul contextual opţiunea ”Show/ Label”, sau se realizează eticheta cu
unealta de editare.
Pentru fiecare element din panoul frontal se recomandă să se specifice o scurtă
descriere, care să indice scopul utilizării componentei. Pentru aceasta se alege din meniul
Control
Indicator
boolean
digital
etichete Indicator
boolean
Buton Control
incrementare digital
Fig.7.1. Elemente ale panoului frontal
contextual Properties » Documentation.
Conţinutul descrierii se afişează în fereastra de
Click-dreapta asistenţă, când cursorul mouse – ului se plasează
pe etichetă deasupra componentei de interfaţă (fig.7.1.).
Este posibilă asocierea unei taste
Click-dreapta accelerator pentru selectarea controalelor astfel
pe indicatorul digital încât operatorul să poată interacţiona cu aplicaţia
fără folosirea mouse – ului. De asemenea la
realizarea panoului frontal nu se recomandă
utilizarea unui număr mare de culori, pentru a nu
distrage atenţia operatorului sau a îngreuna rularea
Fig.7.2. Meniuri contextuale programului.
Modificarea caracteristicilor indicatoarelor

129
sau controalelor sau etichetelor se poate face şi din meniurile contextuale, după cum se
observă şi în fig.7.2. În acest mod se poate modifica dimensiunea, aliniamentul etichetei, cât
şi tipul, aranjarea, formatul, domeniul de date, ş.a. atât în cazul indicatoarelor şi al
controalelor.

7.1.2. Crearea diagramei bloc


Diagrama bloc reprezintă codul sursă al VI. Modul în care se realizează diagrama
bloc defineşte stilul de programare. Aranjarea instrucţiunilor şi comentarea operaţiilor face
codul sursă al VI sa fie lizibil, mai uşor de depanat şi de întreţinut. Se recomandă ca în
diagrama bloc să nu se suprapună elementele. Este bine ca firele să nu fie prea apropiate
unele de altele, pentru a nu se îngreuna urmărirea vizibilă a căilor de flux ale datelor. De
asemenea este recomandat ca eticheta să nu acopere firul şi să se stabilească proprietatea de
transparenţă a fundalului comentariului.
În diagrama bloc se întâlnesc două tipuri de etichete :
- etichete proprii (identificatori) asociate terminalelor nodurilor;
- etichete libere (comentarii).
Pentru recunoaşterea unui
panoul frontal comentariu, se recomandă că textul
sa fie încadrat de textul (*); textul
unor comentarii se scrie cu litere
Indicatoare
îngroşate şi eventual cu o culoare
distinctivă, pentru a se scoate în
evidenţă importanţa operaţiilor
realizate intr-o anumită zonă din
diagrama bloc.
Controale
Programatorul începe să
realizeze diagrama bloc din stânga
sus a ferestrei şi se întinde spre
dreapta şi jos, pe măsură ce se
Conexiuni Noduri implementează funcţionalitatea VI.
Terminalele modelului functiei diagrama bloc În cazul în care programul devine
de adunare (trei terminale). foarte mare se recomandă
Fig.7.3. Crearea diagramei bloc împărţirea pe subVI. Divizarea în
subVI este susţinută de toate
avantajele ce decurg din utilizarea modularizării aplicaţiilor. Calitatea esenţială a mediului de
programare LabVIEW este posibilitatea utilizării subVI-urilor în scheme ierarhice astfel
orice VI creat poate fi utilizat ca un subVI într-o astfel de schemă ierarhică a unui nou VI
fără a exista o limitare a numărului de nivele în schema ierarhică.
Legăturile din diagrama bloc se realizează între terminalele nodurilor; se recomandă
să se înceapă realizarea legăturilor de la terminalele destinaţie spre terminalele sursă, în cazul
nodurilor din aval care posedă mai mulţi parametri de intrare. Pentru realizarea unei legături
se urmăresc următoarele etape:
• se alege unealta de interconectare;
• se selectează terminalul destinaţie;
• se eliberează butonul stâng al mouse – ului şi deplasează cursorul spre nodul sursă;
• se selectează terminalul sursa.
Fiecare tip de dată este codificat şi cu ajutorul culorilor după cum se observă şi în
fig.7.4.
Se poate realiza legătura şi de la nodul sursă spre nodul destinaţie. După selectarea
unuia dintre terminale, dacă se apasă tasta < Spacebar >, se schimbă direcţia firului. Dacă pe
parcursul deplasării cursorului mouse – ului spre celălalt nod se realizează un click cu butonul

130
stâng pe suprafaţa diagramei bloc, atunci în acel loc se inserează un punct de ancorare al
firului de la care se schimbă orientarea legăturii.

Scalar Tablou1D Tablou 2D


Orange (virgulă mobilă)
Numeric
Albastru (întreg)
Boolean Verde
Şir de Mov
caractere
Unealta de
interconectare

Fig.7.4.Codificarea legăturilor (conexiunilor)


După realizarea diagramei
bloc, aceasta se salvează,
alegându-se comanda Save din
meniul File.
Exemple simple de
diagrame bloc sunt prezentate în
fig.7.5.

Fig.7.5. Exemple de diagrame bloc

7.1.3 Testarea execuţiei unui VI şi corectarea erorilor


Programatorul trebuie să se asigure de funcţionarea consistentă a VI şi pentru aceasta
se parcurg următorii paţi sau etape:
• se aleg un minim de 3 seturi de date de intrare.
• Pentru fiecare set de date de intrare se trasează prelucrările. Programatorul
parcurge fiecare instrucţiune din codul sursă şi operează pe hârtie prelucrările
datelor curente.
• Se rulează VI pentru cele 3 seturi de data de intrare şi se notează valorile
rezultatelor obţinute.
• Se compară valorile rezultatelor returnate de VI cu valorile obţinute din
trasarea operaţiilor de prelucrare. Dacă pentru toate seturile de date de intrare
se obţin aceleaşi rezultate prin ambele metode folosite, atunci s-ar putea afirma
ca « VI funcţionează corect »; se recomandă să se aleagă alte 3 seturi de date
de intrare pentru care sa se verifice corectitudinea prelucrărilor.
Daca există diferenţe ale valorilor rezultatelor, returnate de rularea VI şi cele obţinute
prin trasarea operaţiilor de prelucrare, atunci programatorul trebuie să localizeze şi să elimine
eroarea. Programatorul atribuie datele de intrare controalelor şi realizează trasarea execuţiei
VI:
• Se trece în fereastra diagramei bloc
• Se optează pentru regimul de rulare a VI cu afişarea fluxului de date. Butonul afişează
starea unui bec care emite lumină.
• Se urmăresc valorile rezultatelor în urma execuţiei fiecărui nod.
• Se realizează trasare interactiva pas – cu – pas combinată cu trasare pas – cu – pas pe
blocuri.
Valoarea transmisă pe fir se inspectează într-o fereastră « sonda » (Probe), în timpul
trasării execuţiei VI.
131
¾ Găsirea erorilor
Apăsaţi butonul - RUN
Apare o fereastra de erori
¾ Executare cu evidenţierea fluxurilor
Apăsarea butonului de afişare a fluxurilor; fluxurile de date sunt
evidenţiate în diagrama bloc. Valorile sunt afişate pe fire.
¾ Sonda (Probe)
Clic dreapta pe fir se afişează o fereastră cu datele din segmentul
respectiv

De asemenea se poate utiliza unealta Probe din caseta de unelte

¾ Oprirea execuţiei

¾ Rularea programului pas-cu-pas

a b c
Fig.7.6. Butoane de ajutor în verificarea programului
Trasarea interactiva a programului se realizează utilizând butoanele prezentate în
fig.7.6. Prin apăsare butonului a se execută instrucţiunea următoarea a VI, după care se
aşteaptă o nouă instrucţiune din partea utilizatorului; în cazul în care instrucţiunea curentă
corespunde apelului unui subVI atunci se execută prima procedură din VI – ul apelat. Pentru
o trasare a execuţiei unui VI pe paşi\blocuri de instrucţiuni (toate instrucţiunile aparţinând
unui bloc se vor executa simultan), se va utiliza butonul b ; dacă instrucţiunea următoare este
apel de subrutină se va executa întreg programul apelat. Revenirea din blocul apelat în cel
apelant se face la apăsarea butonului ilustrat în figura c.
Mediul de programare LabVIEW acceptă şi numeroase shortcut-uri dintre care cele mai
utilizate sunt prezentate mai jos:

< Ctrl-R > Rularea unui VI


< Ctrl-F > Caută obiect
< Ctrl-H > Activează fereastra de asistenţă (Help)
< Ctrl-B > Elimină toate firele întrerupte
< Ctrl-W > Închide toate ferestrele
< Ctrl-E > Trecere între diagrama bloc/panoul frontal
< Shift + click dreapta > Afişarea rapidă a căsuţei de unelte
< Tab > Modificarea rapidă a uneltelor de lucru

7.2. SubVI - uri


În acest subcapitol se prezintă etapele realizării a unui subVI, a conectorului şi
pictogramei, precum şi modul de utilizare a unui astfel de program în cadrul unui alt
instrument virtual.

7.2.1 Realizarea semnăturii VI


În capitolul anterior a fost prezentat modul de realizare, modificare şi corectare a unui
panou frontal şi a unei diagrame bloc. Se presupune ca s-a terminat realizarea panoului
frontal: pentru toate controalele şi indicatoarele s-au specificat etichete proprii.

132
Programatorul trebuie sa realizeze în continuare pictograma care reprezintă identificatorul
grafic al VI - ului şi conectorul care specifică parametrii formali ai VI – ului.

7.2.1.1 Pictograma
Pictograma VI se afişează în
colţul superior din dreapta al ferestrei
panoului frontal şi diagramei bloc.
Mediul LabVIEW oferă automat o
pictogramă pentru VI nou creat, formată
din simbolul grafic ce defineşte logo-ul
produsului LabVIEW şi o valoare
numerică prin care se indică câte acţiuni
de creare de VI s-au declanşat de la
pornirea mediului.
Programatorul poate să creeze
pentru fiecare VI o pictogramă.
Actualizarea pictogramei se face cu
ajutorul unui editor grafic specializat.
Fig 7.7 Meniul contextual asociat pictogramei VI Lansarea editorului se face prin una din
metodele:
• Metoda 1: se selectează opţiunea “editorului de pictograme” (Edit Icon) din
meniul contextual (fig.7.7), asociat pictogramei VI; apelarea editorului se
poate face din fereastra panoului frontal sau din fereastra diagramei bloc.
• Metoda 2: se realizează dublu click cu mouse – ul direct pe suprafaţa
pictogramei.
Indiferent de metoda aleasă se deschide fereastra editorului pictogramei, fig.7.8 şi
elementele editorului de pictograme sunt
elementele clasice ale unui program de editare
grafică, bara de unelte conţinând:
• Unealta creion permite scrierea unui pixel;
• Unealta pentru trasarea unei linii;
• Unealta pentru prelucrarea culorii de
desenat;
• Unealta de umplere a unei arii închise cu o
culoare;
• Unealta de trasarea chenarului unui
Fig.7.8. Editorul pictogramei
dreptunghi;
• Unealta pentru desenarea unui dreptunghi plin;
• Unealta de selectare;
• Unealta de scriere text;
• Unealta de colorare;
Pe lângă acestea apare şi o zona de desenare, iar în partea dreaptă o serie de unelte
specifice :
• Pictograma VI pentru modul grafic de lucru “alb-negru” (B&W)
• Pictograma VI pentru modul grafic de lucru “16 culori” (16 Colors)
• Pictograma VI pentru modul grafic de lucru “ 256 culori” (256 Colors)
• Butoane prin care se permite copierea variantei pictogramei realizate în alt mod grafic
• Se pune în evidenta zona ocupata de fiecare terminal al VI, prin afisarea unor linii de
delimitare
• Se renunţă la modificările efectuate asupra pictogramei

133
• Se reţin modificările efectuate asupra pictogramei VI şi se revine la fereastra panoului
frontal sau diagramei bloc.
Pictograma trebuie să fie sugestivă pentru funcţia implementată în VI; pentru
realizarea acesteia, se pot folosi simbolurile grafice, combinate cu caractere alfanumerice sau
se poate adapta pictograma unui alt VI.

7.2.1.2 Conectorul VI
Conectorul cuprinde terminalele de intrare şi de ieşire ale VI. Prin crearea terminalelor
de intrare şi de ieşire, VI – ul curent va putea fi apelat din diagrama bloc al altui instrument:
valorile datelor de intrare se vor transmite terminalelor de intrare ale conectorului.
Poziţia terminalelor se recomandă să respecte convenţia “curgerii datelor” (data flow)
din LabVIEW, conform căruia fluxul datelor în diagrama bloc este de la stânga la dreapta şi
de sus în jos:
• Intrările sa fie plasate în jumătatea stânga (pe direcţie orizontală) a conectorului;
• Ieşirile sa ocupe jumătatea dreapta a conectorului.
Pentru crearea conectorului se alege
opţiunea Afişează Conectorul (Show
Clic stânga Connector) din meniul contextual asociat
pictogramei VI (fig. 7.7); conectorul înlocuieşte
pictograma. Mediul LabVIEW selectează din
galeria cu modele predefinite un conector care
să conţină un număr de locaţii în partea stânga
(dreapta) cât mai apropiat de numărul total de
controale (indicatoare) din panoul frontal
(fig.7.9). Fiecare locaţie dreptunghiulară de pe
suprafaţa conectorului poate să reţină un
parametru formal (nu este obligatoriu să se
folosească toate locaţiile).
Fig.7.9. Realizarea conexiunilor Programatorul poate selecta un alt model
conectorului pentru controale de conector pentru a obţine un alt număr de
locaţii sau pentru o altă dispunere a acestora şi
pentru aceasta se selectează opţiunea “ Modele” (Patterns) din meniul contextual asociat
pictogramei.
Numărul maxim de locaţii pentru un conector este de 28. Se menţionează că mai mulţi
parametri ar putea fi grupaţi pe o singura locaţie a conectorului folosind pentru aceasta
funcţiile de grupare/degrupare (Bundle/Unbundle).
Programatorul trebuie să indice corespondentele între elemente din panoul frontal şi
locaţiile conectorului, astfel:
• O asociere cu un control indică faptul că locaţia reprezintă un parametru de
intrare;
• O asociere cu un indicator determină ca locaţia să reprezinte un parametru de
ieşire.
Fluxul datelor în momentul apelului VI din diagrama bloc a altui instrument, este
următorul:
• valorile curente (parametrii actuali) se transmit terminalelor de intrare ale
conectorului VI;
• datele primite de terminalele de intrare se atribuie controalelor la care se face
referire din panoul frontal;
• valorile din controale se transmit în diagrama bloc pentru prelucrare, prin
terminalele (din diagrama bloc) asociate controalelor (din panoul frontal);

134
• rezultatele prelucrărilor din diagrama bloc se transmit (în final) indicatoarelor
din panoul frontal, prin terminalele (din diagrama bloc) asociate
indicatoarelor din panoul frontal;
• valorile rezultatelor din indicatoare se transfera terminalelor (asociate) de
ieşire ale conectorului VI. În acest mod se transfera valorile prelucrărilor în
exteriorul VI;
• datele terminalelor de ieşire ale conectorului VI apelat se transmit în diagrama
bloc a VI apelant.
Şi la asocierea indicatorului cu
terminalele de ieşire ale conectorului (fig.7.10.)
se foloseşte unealta de interconectare (wiring
tool). Locaţiile conectorului preiau culoarea
tipului de data, asociată indicatorului sau
controlului referit; locaţiile al căror conţinut
este de culoare albă indică faptul că nu se
folosesc, adică nu se primeşte şi nu se
returnează nimic prin acea locaţie.
În ceea ce priveşte asocierea
indicatorului cu terminalele de ieşire ale
conectorului se fac următoarele observaţii:
• Asocierile realizate nu se afişează prin
Fig 7.10 Realizarea conexiunilor fire de legătură. În fereastra de asistenţă
conectorului pentru indicatoare se indică pe terminale numele
indicatorului obiectului asociat din
panoul frontal; de aceea este foarte important ca toate elementele să aibă precizate
etichetele. Singura metodă prin care programatorul modifică numele terminalelor
conectorului este actualizarea denumirii etichetelor proprii ale controalelor şi
indicatoarelor asociate.
• Este bine să se opteze încă de la început pentru un conector cu mai multe locaţii
decât este necesar, aceasta în primul rând pentru a se permite conectarea altor
elemente în cazul în care se prevăd dezvoltări ulterioare ale VI.
Programatorul selectează în final afişarea pictogramei, după realizarea conectorului: din
meniul contextual asociat pictogramei / conectorului VI se alege opţiunea “afişează
pictograma” (Show Connector). În acest moment s-a terminat realizarea părţii de interfaţă
programată (pictograma şi conectorul) care, aşa cum s-a văzut anterior, se bazează pe interfaţa
grafică interactivă (panoul frontal).

7.2.3. Crearea unui subVI


La baza realizării programelor în LabVIEW stă conceptul de modularizare şi
ierarhizare arborescentă. Când se proiectează şi implementează un VI, trebuie să se ţină cont
de natura modulară a acestuia: poate fi utilizat atât ca program principal cât şi ca subrutină în
cadrul altui VI. Un VI folosit în cadrul unui alt VI se numeşte subVI. Un astfel de program
corespunde subrutinelor din limbajele de programare bazate pe text, iar apelarea acestuia se
face la fel ca şi în cazul subrutinelor. Un nod din diagrama bloc nu este un subVI ci o
apelare a acestuia, la fel ca în cazul unui subrutine. Controalele şi indicatoarele subVI – ului
primesc şi returnează datele diagramei bloc apelante.
După ce s-a construit un instrument virtual şi s-a creat pictograma şi conectorul, acesta
poate fi utilizate ca subVI.
Selectarea unor instrumente virtuale se poate face prin doua metode:
• din paleta de funcţii Function » Select a VI ... şi se plasează în diagrama bloc
creându-se astfel un subVI.

135
• alta metoda este de a tine apăsat butonul mouse – ului pe pictograma şi a o
trage î n diagrama bloc a noului VI. (fig.7.11.).
Este important ca înainte de a folosi un
VI ca un subVI este necesară crearea şi
configurarea conectorului şi pictogramei,
descrise ceva mai sus, în cadrul acestui
subcapitol.
Un subVI poate fi editat utilizând caseta
cu unelte generale de operare şi poziţionare, la
fel ca şi în cazul unui VI normal. Deschiderea
panoului frontal al unui subVI se poate cu un
dublu – clic pe pictograma acestuia din diagrama
Fig.7.11. Posibilitate de adăugare a unui bloc a instrumentului virtual.
subVI ATENTIE! Este foarte important de
reţinut că atunci când se salvează un subVI,
modificările afectează toate apelurile acestuia nu doar cele modificate.

7.2.4 Conversia unei zone din diagrama bloc în subVI


Simplificarea structurii unei diagrame bloc existente, numită sursă, se poate realiza
prin înlocuirea instrucţiunilor dintr-o regiune de formă dreptunghiulară printr-un subVI, care
realizează aceleaşi operaţii (fig.7.12.).

Fig 7.12 Conversia unei porţiuni din diagrama bloc în subVI


Crearea unui subVI din regiunea selectată a diagrama bloc şi înlocuirea automată a
acestuia prin apelul noului modul presupune parcurgerea următoarelor etape:
• Cu unealta de editare se selectează regiunea din diagrama bloc care se înlocuieşte
prin apelul unui subVI; se descrie cu mouse – ul o zonă de formă dreptunghiulară care
să cuprindă regiunea;
• Se selecteaza optiunea “Crează subVI” (Create SubVI) din meniul “Editare” (Edit »
Create SubVI)
În urma alegerii opţiunii “editare/ creează subVI”, mediul LabVIEW realizează
următoarele acţiuni:
• Creează un nou subVI cu controale şi indicatoare necesare transferului datelor
de intrare şi de ieşire în diagrama bloc sursă;
• Copiază subdiagrama în diagrama bloc a noului VI;
• Înlocuieşte subdiagrama din diagrama bloc sursa cu apelul noului subVI; se
realizează automat legăturile la terminalele conectorului subVI, pentru a se
asigura transferul datelor între diagrama bloc sursă şi noul modul.
Este necesară luarea în considerare a următoarelor observaţii:

136
1. în subdiagrama care se înlocuieşte prin apelul unui subVI se consideră
că fluxul datelor este din partea stânga spre dreapta (conform
convenţiei data flow)
2. Nu se poate realiza conversia unei subdiagrame într-un subVI cu mai
mult de 28 de terminale. În cazul depăşirii numărului maxim de 28
terminale, se realizează gruparea şi degruparea datelor la începutul
subdiagramei respective gruparea rezultatelor, după ieşirea din
subdiagrama în subVI.

7.3.5 Opţiuni pentru execuţia subVI


Programatorul controlează modul în care se realizează apelul unui subVI, prin
intermediul opţiunilor care se pot asocia din meniul contextual asociat pictogramei modulului,
plasat în diagrama bloc apelantă: se alege opţiunea “stabilirea opţiunilor nodului subVI”
(SubVI node Setup), fig.7.13. Fereastra de dialog conţine următoarele opţiuni:
• Afişează panoul frontal la încărcare (Show front
Panel When Loaded);
• Afişează panoul frontal la apelare (Show front
Panel When Called);
• Închide panoul frontal după execuţie (Close
Afterwards if Originally Closed);
• Suspendă execuţia la apelare (Suspend When
Fig.7.13. Stabilirea Called).
opţiunilor nodului subVI
Dacă în diagrama bloc apelantă se află mai multe apeluri
(în locuri diferite) ale aceluiaşi subVI, atunci pentru fiecare apel se pot specifica condiţii
diferite de apelare.
De asemenea pentru uşurinţă în folosirea ulterioara a unui subVI, pot fi introduse o
serie de descrieri şi recomandări (fig.7.14.) alegând opţiunea Documentation din meniul File
>> VI Properties sau introducând textul ajutător în fereastra Description and Tip accesibilă
din meniul contextual al subVI - ului.

Fig.7.14. Ferestre de ajutor

7.4. Structuri pentru controlul execuţiei programelor


După realizarea panoului frontal al VI este necesară implementarea funcţionalităţii
programului şi pentru aceasta se construieşte diagrama bloc, care, după cum se ştie
reprezintă codul sursă al instrumentului. Sunt prezentate, în continuare, o parte a celor mai
importante elemente ale limbajului G, care trebuiesc cunoscute pentru a realiza un VI.
Pentru realizarea codului sursă al VI nu se scriu linii de text reprezentând instrucţiuni
(modalitate care reprezentă o sintaxa rigidă şi de multe ori anevoioasă) ci se aleg elemente de
execuţie, care se plasează în diagrama bloc şi se realizează legături între acestea, prin
definirea fluxului datelor.

137
Elementele utilizate la realizarea diagramei bloc sunt clasificate în trei grupe generale:
1. noduri
2. terminale
3. fire

7.4.1 Noduri, terminale, fire


Nodurile sunt elemente de execuţie din limbajul G, ale unui VI. Nodurile din limbajul
G corespund operatorilor, funcţiilor predefinite, instrucţiunilor, subrutinelor realizate de
utilizator – din limbajele convenţionale de programare structurată.
În realizarea diagramei bloc a unui VI pot fi utilizate şapte tipuri de noduri,
reprezentând:
• Funcţii predefinite;
• Subrutine;
• Structuri pentru controlul execuţiei programelor;
• Formule de calcul;
• Noduri proprietate;
• Variabile locale şi globale;
Un nod se execută doar în momentul, în care există valori disponibile pentru toţi
parametrii de intrare, datele – rezultat obţinute din funcţionalitatea nodului sunt furnizate
simultan în exterior, doar după ce s-au realizat toate operaţiile din corpul nodului.
Terminalele sunt echivalente unor „porţi” prin intermediul cărora se realizează
transferul datelor:
- între panoul frontal şi diagrama bloc (bidirecţional);
- între nodurile diagramei bloc (unidirecţional).
Terminalele se regăsesc în diagrama VI şi au asociată o reprezentare grafica sugestivă,
existând patru tipuri de terminale, şi anume:
- asociate controalelor şi indicatoarelor din panoul frontal;
- asociate nodurilor;
- constante;
- particulare instrucţiunilor pentru controlul execuţiei programelor.
Aceste patru tipuri de terminale se grupează în :
- terminale sursă;
- terminale destinaţie.
Firele, definesc şi reprezintă grafic fluxul datelor în diagrama bloc prin care se
realizează schimbul de informaţii între noduri. Fluxul datelor este orientat de la terminalele
sursă spre terminalele destinaţie. Firele codifică prin culoare şi stilul liniei tipul datelor
transmise. Pentru a cunoaşte tipului de data care se transmite pe o cale se poziţionează
unealta de interconectare deasupra unui fir, care realizează o legătură validă şi se obţine astfel
o descrierea a acestei căi într-o fereastră de asistenţă.
Structurile pentru controlul execuţiei programelor îmbunătăţesc posibilitatea de
realizare a funcţionalităţii VI, existând patru structuri pentru controlul execuţiei programelor,
şi anume:
• structura repetitivă (For Loop);
• structura repetitiva Do – While (While Loop);
• structura de selecţie (Case);
• structura secvenţială (Sequence);
• structura eveniment (Event);
• structura sincronizare (Timed)
• structuri de calcul (Formula Node, MathScript).
Fiecărei dintre aceste structuri de control îi este asociată o reprezentare grafică
distinctivă, pe baza căreia poate fi recunoscută vizual în diagrama bloc a VI. Blocul

138
operaţiilor care definesc corpul structurii constituie subdiagrama. Elementele prin care se
defineşte o subdiagrama sunt: noduri, terminale şi fire. Rezultă astfel posibilitatea imbricării
structurilor de control.
Structurile de control sunt disponibile prin intermediul casetei de funcţii ale VI
reprezentată de grupul „Structuri” (Structures), redat
în fig. 7.15.
Plasarea unei structuri de control în diagrama
bloc presupune realizarea următoarei secvenţe de paşi:
• se selectează instrucţiunea dorită din caseta
cu funcţii ale VI;
• se deplasează cursorul mouse – ului
deasupra suprafeţei diagramei bloc. Se
observă modificarea cursorului care a luat
forma pictogramei structurii de control
selectate;
• se face click cu butonul din stânga al mouse
– ului, pentru a indica poziţia punctului
superior stânga al corpului structurii;
• se eliberează butonul şi se deplasează
mouse – ul în direcţia dreapta – jos, până se
obţine dimensiunea dorită pentru realizarea
Fig. 7.15. Structuri de programare subdiagramei structurii.
Corpul structurii de control este delimitat
vizual de celelalte elemente din diagrama bloc printr-un contur. Conturul structurii este
redimensionabil şi pentru a modifica dimensiunea acestui contur se selectează instrucţiunea cu
unealta de editare, se poziţionează cursorul mouse – ului deasupra uneia din cele 4 colţuri, se
selectează cu butonul stânga al mouse – ului colţul dorit, se ţine apăsat butonul mouse – ului
şi se deplasează pe direcţia şi sensul redimensionării, iar în final se eliberează butonul mouse
– ului.
Ca orice nod dintr-o diagramă bloc şi structurile pentru controlul execuţiei
programului are terminale pentru conectarea cu celelalte noduri. Terminalele prin care datele
sunt transmise către structură la intrare şi recepţionate de aceasta la ieşire se numesc tuneluri
şi acestea reprezintă conexiunile structurii şi grafic sunt aşezate pe conturul structurii
În ceea ce priveşte o structură de control este necesară observaţia că modul de execuţie
al unei structuri de control este cel al nodului:
• Structura de control se execută doar când toate datele de intrare sunt
disponibile;
• Datele de ieşire sunt furnizate simultan în exterior, doar când toate operaţiile
subdiagramei structurii s-au executat.

7.4.2. Structura repetitivă For


Structura repetitivă For (fig.7.16.) asigură reluarea funcţiilor, care alcătuiesc corpul
ciclului de un număr de ori. Stabilirea valorii numărului de iteraţii se poate face prin două
metode:
• se furnizează o valoare printr-o legătura la terminalul N;
• dimensiunea tabloului transferat structurii For printr-un tunel de intrare (care
permite auto-indexarea) corespunde numărului de ciclări.

139
Logica structurii For este redată în limbajul
Pascal astfel:
Count terminal
(Intrare de tip For contor := To N-1 Do
numeric) Variabila <instructiune>;
contor
Valoarea iteraţiei curente este dată
de terminalul contor. Terminalul contor de
ciclu poate fi aşezat de programator oriunde
Fig. 7.16. Structura repetitiva For în interiorul subdiagramei. După prima
iteraţie valoarea terminalului este 0, după a
doua iteraţie este 1,... pentru iteraţia N valoarea este N-1.
Transferul elementelor unui tablou (aflat în exteriorul structurii repetitive) în interiorul
subdiagramei structurii For se face printr-un tunel de intrare, situat pe chenarul buclei.
Tunelul de intrare permite implicit şi auto-indexarea în cazul structurii For astfel
elementele subdiagramei sunt furnizate pe rând acesteia, câte unul la fiecare iteraţie, începând
cu primul element (de indice 0) iar dimensiunea tabloului dă valoarea numărului de cicluri.
Întregul tablou este furnizat diagramei la fiecare buclă, dacă pentru acel tunel de intrare este
dezactivata opţiunea auto-indexare. Auto-indexarea se întâlneşte şi la nivelul tunelurilor de
ieşire caz în care valoarea furnizată, la fiecare iteraţie, tunelului de ieşire este reţinută într-un
tablou, a cărui dimensiune creşte automat la fiecare buclare şi acest tabloul este furnizat în
exteriorul structurii For doar după finalizarea execuţiei nodului (fig.7.17.).

Fig. 7.17. Exemplul de utilizare a structurii repetitive For


Activarea/inactivarea auto-indexării pentru un terminal tunel se face selectând
optiunea „Activează Indexarea/ Inactivează Indexarea” (Enable Indexing/Disable Indexing)
din meniul contextual asociat tunelului.
Pentru verificarea vizuală a aplicării auto-indexării la nivelul unui tunel de pe chenarul
structurii For, programatorul se bazează pe codificarea complexităţii structurii datei în
reprezentarea grafica a legăturii: firul (legătura) prin care se transfera în întregime un tablou
este mai gros decât cel asociat furnizării unei valori singulare (element de tablou).
Este posibilă transferarea rezultatelor între iteraţii succesive şi pentru aceasta se
declară nişte variabile locale ale structurii For, numite registre de transfer (Shift Register).
Crearea unui registru de transfer se face prin opţiunea „ Adaugă Un Registru De Transfer”
(Add Shift Register), din meniul contextual asociat chenarului structurii „For”.
Un registru de transfer este alcătuit dintr-o pereche de terminale dispuse pe aceeaşi
orizontală, unul în partea stângă şi altul în partea dreaptă a chenarului structurii. Ambele
terminale pereche se deplasează simultan, la mutarea unuia dintre ele. Valoarea este furnizată
terminalului drept după încheierea ciclului iar la începutul ciclului următor, valoarea stocată
(în iteraţia anterioară) în terminalul drept este transferată terminalului stâng. La ultima
iteraţie, valoarea atribuită terminalului din dreapta este furnizată în exteriorul structurii, dacă
există o astfel de legătură (fig.7.18).

140
Fig. 7.18. Exemplul de utilizare a structurii repetitive For cu Shift Register
Se recomanda iniţializarea registrului de transfer înaintea primei iteraţii a structurii
For adică se furnizează din exteriorul structurii o valoare terminalului stâng. Dacă
instrucţiunea For se află la iteraţia cu numărul k, atunci un rezultat din iteraţia anterioară cu
numărul k-1 este disponibil prin terminalul stâng al registrului de transfer. Accesul la
rezultatul din iteraţia k-i, cu i>=2, se face prin adăugarea unui terminal stâng pentru acelaşi
registru de transfer, astfel:
• se redimensionează terminalul stâng (în jos);
• se alege opţiunea „Adaugă un Element” (Add Element) din meniul contextual
asociat terminalului stâng, până se obţine numărul dorit de terminale.
Pentru un registru de transfer pot exista unul sau mai multe terminale stângi şi doar
unul drept. Terminalele stângi pentru un registru de transfer sunt dispuse pe verticală unul sub
celălalt şi semnificaţia terminalelor de sus în jos este următoarea: primul oferă accesul la
rezultatul din iteraţia i-1, al doilea la iteraţia i-2, al treilea la iteraţia i-3 s.a.m.d. Eliminarea
terminalelor stângi nedorite se poate face astfel:
• se redimensionează terminalul stâng (în sus);
• se alege opţiunea „Elimină un Element” (Remove Elements), din meniul
contextual asociat, terminalului stâng.
Pentru iniţializarea registrului de transfer, trebuiesc furnizate valori pentru toate
terminalele stângi.

7.4.3. Structura repetitivă While Loop


Structura repetitive While Loop (fig.7.19) realizează reluarea execuţiei funcţiilor
conţinute în corpul acesteia reprezentând o subdiagramă şi această reluare este condiţionată de
valoarea logică a expresiei de oprire astfel pentru valorare logică „Adevărat” (True) se reia
execuţia subdiagramei structurii iar valoarea logică „Fals” (False) determinând încheierea
efectuării structurii.
Terminal
condiţional la care
Variabila
se leagă condiţia
contor
sau butonul de
oprire

Stop if True Continue if True

Fig.7.19. Structura repetitivă While Loop


Instrucţiunea While Loop din limbajul G este echivalentă cu instrucţiunea “do-while”
din limbajul C, având sintaxa:

Do
<instrucţiune>
while ( <expresie logică>);

141
Structura While Loop este o structură repetitivă, cu test final astfel corpul structurii se
execută cel puţin o dată şi se repetă, cât timp valoarea <expresie logică> este „Adevărat”
(True) . În exemplul prezentat în fig.7.20. sunt prevăzute două condiţii de oprire a buclei:
• dacă numărul obţinut este cuprins în intervalul [8, 8,5];
• dacă este activat butonul STOP
Îndeplinirea oricăreia dintre acestea va determina oprirea execuţiei funcţiilor din
interiorul structurii

Trasarea
conturului
structurii

Fig. 7.20. Realizarea şi utilizarea


structurii While Loop

Instrucţiunea „While Loop” se foloseşte frecvent pentru realizarea diagramei bloc a VI


principal al aplicaţiei şi modul în care se
analizează execuţia prelucrărilor este indicat de
utilizator prin intermediul unor controale de
interfaţă.
Prin intermediul registrelor de transfer
(Shift Register) , fig.7.21, se permite furnizarea
rezultatelor între iteraţii succesive ale structurii
repetitive, astfel indicatorul Numeric ce preia
informaţia de la registrul de transfer stânga
afişează valoarea obţinută în iteraţia anterioară.
Fig.7.21. Utilizarea registrului de transfer Pentru un tunel care reprezintă o intrare
sau o ieşire de pe structura While Loop nu se

Fig.7.22. Utilizarea autoindexării

142
aplică implicit Auto-indexarea şi pentru aceasta programatorul trebuie să indice explicit
pentru fiecare tunel, dacă se doreşte utilizarea auto-indexării, fig.7.22.
Numărul de repetări ale corpului nodului While Loop este controlat, în primul rând de
valoarea logica („Adevărat”) a expresiei de oprire şi mai puţin de dimensiunea unui tablou
furnizat diagramei printr-un tunel de intrare, care foloseşte auto-indexarea. După parcurgerea
tuturor elementelor tabloului, valoarea implicită asociată tipului elementului de tablou se va
transfera corpului buclei, în toate iteraţiile următoare, astfel:
• Dacă tipul elementului de tablou este real, atunci valoarea implicită este
0.00E+0;
• Dacă tipul elementului de tablou este un număr întreg sau natural, valoarea
implicită este 0.

7.4.4. Structura de selecţie CASE


Structura condiţională sau de selecţie multiplă permite executarea unei structuri (poate
fi compusă) din mai multe alternative, pe baza valorii unei singure expresii, numită expresie
selector. Instrucţiunea cuprinde două sau mai multe subdiagrame şi fiecare subdiagramă
corespunde unei anumite alternative sau unui anumit caz.
Structurile condiţionala şi de selecţie multiplă sunt realizate în limbajul G prin
instrucţiunea CASE. Este vorba de două structuri reunite într-una singură, selecţia făcându-se
după tipul expresiei selector, astfel:
1. tipul boolean selectează instrucţiunea condiţionala (echivalentă cu IF – THEN -
ELSE din limbajele de programare bazate pe text);
2. tipul numeric sau şir de caractere selectează instrucţiunea de selecţie multiplă
(echivalentă cu Case sau Swich din limbajele de programare bazate pe text)
Ca particularitate a limbajului G se evidenţiază faptul că din mulţimea subdiagramelor
reunite în instrucţiunea CASE se execută întotdeauna unul din cazuri (subdiagrame), spre
deosebire de alte limbaje de programare bazate pe text (Pascal, C) în care este posibil să nu se
execute nici una dintre alternative.
Se prezintă în continuare sintaxa structurilor din limbajul Pascal echivalente structurii
de selecţie din limbajul G. Sintaxa structurii condiţionale în limbajul Pascal este:

IF <expresie logica>
THEN <instrucţiune 1>
ELSE <instrucţiune 2>; (alternativa opţională)

Sintaxa structurii de selecţie multipla în limbajul Pascal este:

CASE <expresie selector> OF


CASE <val 1>:<instrucţiune 1>;
CASE <val 2>:<instrucţiune 2>;
.................
CASE <val n>:<instrucţiune n>;
ELSE <instrucţiune implicită>(alternativa opţională)
END;

unde:
<expresie selector> - este expresia selector de tip ordinal utilizată pentru a se obţine o
mulţime numărabilă de valori, după care să se realizeze selecţia structurii.;
<val i> - este eticheta CASE, de acelaşi tip cu tipul expresiei selector;
<instrucţiune i> - reprezintă instrucţiunea care se execută dacă valoarea expresiei
selector coincide cu valoarea <val i> a etichetei CASE;

143
<instrucţiune implicită> - este instrucţiunea, care dacă este prezentă, se execută dacă
valoarea expresiei selector nu este egală cu nici o eticheta CASE;
În figura 7.23. se prezintă diagrama bloc asociată panoului frontal al VI denumit
„Ring.vi”. Terminalul selector se află întotdeauna pe partea stânga pe chenarul structurii şi
poate fi mutat de utilizator şi este obligatoriu să se realizeze o legătura la acesta. După
prelucrarea structurii de selecţie din caseta cu funcţii şi plasarea acesteia în diagrama bloc, se
observă că etichetele CASE sunt: „Adevărat” şi „Fals” (TRUE şi FALSE). În acest caz
instrucţiunea de selecţie este echivalentă structurii condiţionale IF – THEN – ELSE. Dacă
sursa pentru terminalul selector este tip numeric întreg, se observă schimbarea etichetelor
CASE din FALSE în 0, respectiv din TRUE în 1.

Fig. 7.23. Exemple de utilizare a instrucţiunii de selecţie CASE


Semnificaţia elementelor din figura 7.23, este prezentată în continuare:
1. eticheta CASE de tip lista pentru structura „IF”;
2. eticheta CASE de tip boolean;
3. terminalul de intrare de tip tunel pentru structura „IF”
4. terminalul de ieşire tip tunel pentru structura „IF”.
Valoarea etichetelor CASE se poate modifica cu unealta de etichetare şi aceasta poate
fi de tip numeric întreg, boolean sau şir de caractere (fig.7.24.). Nu se permit valori reale
pentru etichetele selectoare. Valoarea etichetei CASE trebuie să aparţină tipului expresiei
selector; în caz contrar se semnalează eroare şi valoarea etichetei CASE este afişată în culoare
roşie.
În cazul în care expresia selector este de tip numeric întreg, atunci pentru etichetele
CASE se pot indica următoarele valori:
1. lista de valori scalare: -11, 0, 2, 4, 6;
2. interval -10..10;
3. interval limita superior: ..1;
4. interval limita inferior: 10..;
5. o combinaţie celor anterioare.
Dacă expresia selector este de tip şir de caractere:
6. valorile etichetelor CASE sunt afişate intre ghilimele („VAL 1”);

144
7. introducerea valorilor etichetelor nu este obligatorie să se facă intre ghilimele
(doar daca eticheta conţine caracterele virgulă sau expresie „..”);

Fig.7.24. Instrucţiunea de selecţie CASE


Programatorul trebuie să se preocupe ca întotdeauna să existe o alternativă care să se
execute altfel neexecutarea nici uneia dintre cazuri echivalează cu neexecutarea structurii
(nodului) de selecţie, ceea ce determină oprirea derulării programului. Pentru indicarea
subdiagramei care să se execute în cazul în care valoarea expresiei selector nu este egală cu
nici o eticheta CASE, se realizează următorii paşi:
1. se afişează subdiagrama alternativă dorită;
2. se poziţionează cursorul mouse – ului deasupra chenarului structurii;
3. se apelează meniul contextual asociat chenarului;
4. se selectează opţiunea „Declara Aceasta Cazul Lipsă” (Make This The Default
Case).
Pentru alternativa care se execută în cazul valorii etichetei selectoare lipsa, se afişează
în căsuţă valoare a etichetei CASE cuvântul „Lipsă” (Default).
Prin intermediul unui terminal de intrare de tip tunel, toate subdiagramele structurii de
selecţie multiplă au acces la acea dată cu alte cuvinte valoarea este disponibilă tuturor
cazurilor, dar utilizarea ei nu este obligatorie.
Transferul unei valori din una dintre subdiagramele alternative în exteriorul structurii
de selecţie se face printr-un terminal de ieşire de tip tunel plasat în cadrul structurii, în locul
intersectat de legătura cu structura. În aceasta situaţie din toate celelalte alternative trebuie să
se furnizeze o valoare a acelui terminal comun, de ieşire, de tip tunel. Terminalul comun, de
ieşire, de tip tunel este afişat în culoare albă şi este semnalată eroare atâta timp cât există cel
puţin o subdiagrama alternativă, care nu utilizează acest terminal. Terminalul este afişat
automat în culoare neagră, în momentul în care din toate cazurile structurii de selecţie, se
furnizează o valoare către tunelul comun de ieşire.

7.4.5. Structura secvenţială SEQUENCE


Structura secvenţială permite programatorului sa stabilească ordinea de execuţie a
anumitor subdiagrame, între care nu există dependenţă a datelor, de exemplu înaintea
subdiagramei de prelucrare a datelor este necesar sa se execute subdiagrama, care realizează
iniţializarea/salvarea mediului curent de lucru.
După modul de aranjare a secvenţelor există două tipuri ale acestei structuri:
1. Stacked Sequence (structură secvenţială stratificată), fig.7.25, prin care secvenţele
sunt aranjate unul sub celălalt (asemănător cadrelor unui film foto), la un moment
dat fiind afişat conţinutul unui singur cadru;

145
Secvenţa 0 Secvenţa 1

Secvenţa 2

Fig.7.25. Utilizarea structurii Stacked Sequence


2. Flat Sequence (structură secvenţială plană), fig.7.26, prin care secvenţele sunt
aranjate unul după celălalt (de asemenea asemănător cadrelor unui film foto), fiind
afişate conţinutul tuturor cadrelor. Spre deosebire de structură secvenţială
stratificată în cazul acestei structuri execuţia secvenţelor se face de la stânga la
dreapta atunci când toate valorile datelor conectate la secvenţă sunt disponibile.
Rezultatele execuţiei unei secvenţe sunt disponibile după de toate funcţiile din
respectiva secvenţă au fost efectuate.

Fig.7.26. Utilizarea structurii Flat Sequence


Indiferent de modul de aranjare a secvenţelor corpul structurii secvenţiale este format
din una sau mai multe subdiagrame (secvenţe); fiecare subdiagrama este reţinută de un cadru.
Ordinea de execuţie a subdiagramelor reţinute de instrucţiunea secvenţială este dată de
numărul de ordine al cadrului astfel primul cadru are valoarea 0, al doilea are valoarea 1, al
treilea cadru are valoarea 2 şi aşa mai departe. Numărul de ordine al subdiagramei curente
este afişat în partea superioară a chenarului structurii. În fig. 7.57. şi 7.58 se prezintă exemple
în care se utilizează instrucţiunea secvenţială.
Semnificaţia elementelor din diagrama bloc a acestui VI este prezentată în continuare:
1. numărul subdiagramei curente;
2. control pentru trecerea la subdiagrama anterioara;
3. lista derulantă conţinând numerele cadrelor;
4. terminalul tip tunel de intrare;
5. terminalul de ieşire local al secvenţei;
6. terminalul de intrare local al secvenţei;
Trecerea de la o subdiagramă la alta se face prin elementele de control aflate în partea
superioară centru a cadrului structurii. Afişarea subdiagramei anterioare se face apăsând

146
săgeata orizontală – stânga şi conţinutul subdiagramei următoare se prezintă la apăsarea
săgeţii orizontale – dreapta.
Este posibilă o metodă mai simplă de trecere de la o subdiagramă la alta prin
efectuarea următorilor paşi:
1. se selectează cu butonul stânga al mouse – ului căsuţa valoare;
2. în urma selectării este afişată automat o listă derulantă, conţinând numerele
cadrelor existente;
3. se selectează numărul asociat subdiagramei căutate din lista acestor numere.
Datele de intrare, furnizate structurii secvenţiale printr-un terminal tip tunel sunt
disponibile tuturor subdiagramelor.
Rezultatele obţinute dintr-o subdiagramă sunt făcute disponibile subdiagramelor
următoare printr-un terminal local al secvenţei şi pentru setarea acestei opţiuni din meniul
contextual, asociat chenarului structurii secvenţiale, se alege opţiunea „Adaugă un Terminal
Local Secvenţei” (Add Sequence Local). Un terminal local al secvenţei poate fi mutat de
programator cu unealta de editare oriunde, pe cadrul structurii.
Terminalul local al secvenţei (definit
pentru subdiagrama curentă) se afişează pe
cadrul structurii printr-un dreptunghi plin de
culoare galben deschis şi în urma realizării
legăturii la un terminal sursă, terminalul local
al secvenţei va afişa o săgeată orientată înspre
exteriorul cadrului structurii indicând faptul
că „următoarele subdiagrame pot accesa
valoarea furnizată”. Un terminal local al
secvenţei, definit la nivelul subdiagramei cu
numărul de ordine i, este disponibil tuturor
subdiagramelor având numărul de ordine j,
astfel încât j > i, dar nu este disponibil
subdiagramelor anterioare, cu numărul de
ordine k < i.
Se recomandă adăugarea unor etichete
descriptive firelor conectate la terminale de
Fig. 7.27 Meniul contextual la intrare/ieşire locale ale secvenţei, cu scopul
instrucţiunii secvenţiale uşurării înţelegerii, depanării sau întreţinerii
subdiagramelor.
Semnificaţiile opţiunilor submeniului contextul asociat structurii secvenţiale este
prezentat în fig.7.27. şi pentru care:
1. se deschide utilitarul de asistenta la pagina structurii secvenţiale;
2. utilizatorul poate introduce o descriere referitoare la utilizarea structurii;
3. se afişează eticheta proprie structuri;
4. se deschide caseta cu funcţii pentru a se indica o componentă, care să înlocuiască
instrucţiunea secvenţială;
5. se elimina instrucţiunea din subdiagrama din care face parte;
6. se adaugă un terminal de ieşire local secvenţei;
7. se adaugă o subdiagramă vidă în instrucţiunea secvenţială după subdiagrama
curentă;
8. se inserează o subdiagramă vidă în instrucţiunea secvenţiala înainte de
subdiagrama curentă;
9. se adaugă o subdiagramă cu conţinutul celei curente;
10. se elimină subdiagrama curenta;
11. se trece la altă subdiagramă;
12. se permite reordonarea subdiagramelor.

147
7.4.6. Structura eveniment EVENT

Structura eveniment, fig.7.28, conţine una sau mai multe


subdiagrame reprezentate de cazuri eveniment astfel încât
doar una dintre acestea este executată la un moment dat.
Această structură aşteaptă până când în interfaţa utilizator
(panoul frontal) se petrece un eveniment setat după care
va executa subdiagrama corespunzătoare acestui
eveniment. Adăugarea unui nou eveniment se face cu clic
– dreapta pe contur, acţiune urmată de configurarea
Fig.7.28. Structura EVENT acestui eveniment. Timpul de aşteptarea a unui eveniment
se poate seta prin conectarea
unei constante sau control
numeric la terminalul din
colţul stânga – sus al structurii
prin care se specifică acest
timp în milisecunde. Valoarea
implicită -1 indică un timp de
aşteptare nedefinit.
În figurile următoare
sunt prezentate detaliat
evenimente generate într-un
Fig. 7.29. Instrument virtual cu utilizarea structurii EVENT VI principal (Main.vi) de
acţiuni asupra butoanelor
reprezentând controale ale acestuia.

Fig.7.30. Subdiagrama Acquire Data

148
Panoul frontal şi diagrama bloc a acestui VI sunt prezentate în fig.7.29. şi prima
subdiagramă a structurii este de aşteptare a apariţiei unui eveniment pe panoul frontal,
eveniment reprezentat de o acţiune asupra unuia dintre cele 3 butoane.
La o acţiune asupra butonului Acquire data este pusă în execuţie subdiagrama
specifică acesteia şi reprezentată în fig.7.30. Această subdiagramă conţine subVI – ul Acquire
data astfel că odată selectată aceasta se deschide panoul frontal al acestui subVI care
simulează generarea unui semnal sinusoidal de frecvenţă şi amplitudine reglabile prin
controale de tip Slide corespunzătoare, semnal peste care se suprapune un zgomot (semnal
aleator) de asemenea cu amplitudine reglabilă. Acest subVI simulează o achiziţie de semnal
şi această achiziţie se încheie prin activarea butonului Continue care cedează controlul
programului principal Main.vi.
Un alt eveniment poate fi declanşat prin acţiune asupra butonului Analyse & Present
Data care va deschide subdiagrama prin care se face analiza semnalului achiziţionat, fig.7.31
precum şi afişarea câtorva date importante stabilite de utilizator privind semnalul achiziţionat.

Fig.7.31. Subdiagrama Analyse & Present Data


La acţionarea butonuluji STOP va fi oprit din execuţie programul principal, fig.7.32.
Cu clic – dreapta pe conturul
structurii din meniul contextual se alege
opţiunea Edit Events Handled by This
Case ... şi se deschide o fereastră în care
sunt editate toate evenimentele specifice
subdiagramei (cazului respectiv). Alegând
această opţiune pentru subdiagrama Acquire
se obţine fereastra cu atributele acesteia
prezentată în fig.7.33

Fig.7.32. Subdiagrama STOP

149
7.4.7. Structuri de calcul
În acest subcapitol se continuă prezentarea
elementele de bază ale diagramei bloc, cu formule de
calcul, urmată de principalele funcţii pentru tipul
numeric, boolean, şir de caractere şi funcţii pentru
tipul tablou şi grupare de date.

7.4.7.1. Formula de calcul Formula Node


Structura formulă de calcul, fig.7.34,
facilitează scrierea (se utilizează pentru scrierea
relaţiei de calcul un limbaj bazat pe text) în corpul
său, a formulelor matematice de calcul. Se
recomandă utilizarea formulei de calcul prin
implementarea formulelor complexe.

Fig.7.33. Fereastra Edit Events


Avantajele utilizării formulei de
calcul sunt următoarele: Fig.7.34. Structura Formula Node
• Se uşurează scrierea, depanarea şi înţelegerea formulelor matematice;
• Se elimină erorile care pot să apară la transcrierea formulelor matematice complexe în
limbajul G, care foloseşte noduri şi fire;
• Se simplifică diagrama bloc faţă de cazul în care formulele matematice, sunt
implementate prin noduri şi fire.
Formula de calcul este disponibilă în caseta cu funcţii, grupul „Structuri” (Functions
» Structures » Formula Node), sau “Matematică” (Functions » MathematicsScripts &
Formulas » Formula Node ) aşa cum se indică în figura 7.35.

Fig. 7.35. Apelarea structurii


de calcul
Formula Node

Structurile de prelucrare din interiorul nodului se scriu într-o sintaxă asemănătoare


limbajelor de programare, bazate pe text. Nodul formula de calcul, defineşte operaţiile prin
una sau mai multe structuri de atribuire, fiecare terminându-se prin caracterul punct şi virgula
(;). Se precizează că o instrucţiune se poate întinde pe mai multe linii text; numărul maxim de
caractere, care încap pe o linie, este dat de dimensiunea tipului de caractere folosit şi de
dimensiunea orizontală a nodului formula de calcul.
150
Mărimea dimensiunii orizontale a nodului se face cu unealta de editare, astfel încât să
se poată afişa cât mai multe caractere pe o linie. Pentru a se uşura munca programatorului în
sensul posibilităţii de verificare a formulelor introduse, în general, se urmăreşte afişarea a câte
unei structuri de atribuire pe fiecare linie.
În cadrul unei structuri de atribuire, se recomandă să se insereze unul sau mai multe
caractere spaţiu, pentru evidenţierea unor expresii şi se facilitează astfel editarea şi depanarea
formulelor.
Editarea structurilor de atribuire se face cu unealta de etichetare sau de operare şi
finalizarea operaţiei este determinată de:
• selectarea cu mouse – ul a butonului, care afişează textul „ENTER”;
• apăsarea tastei < ENTER > din regiunea butoanelor numerice (din partea
dreapta a tastaturii).
În etapa de editare a corpului structurii formula de calcul prin apăsarea tastei
< ENTER > se determină trecerea la un rând nou, ca şi în cazul unui editor de text obişnuit.
Prelucrările realizate de instrucţiunea de atribuire din interiorul nodului se bazează (în
general) pe datele furnizate din exteriorul formulei de calcul, prin intermediul variabilelor de
intrare. Rezultatele operaţiilor efectuate de nodul formula de calcul sunt transferate în exterior
prin variabilele de ieşire (fig.7.36.) unde este prezentată şi o analogie între reprezentarea unei
expresii matematice prin diagramă bloc şi prin structura Formula Node.
Variabilele de intrare se definesc pe
chenarul reprezentării grafice a nodului şi pentru
aceasta din meniul contextual asociat chenarului se
alege optiunea „Adaugă o Intrare”/”Adaugă o
Ieşire” (Add Input/ Add Output), după care se
specifică indicatorul variabilei. Terminalul asociat
variabilei este plasat, după crearea variabilei pe
chenarul nodului formula de calcul, şi poate fi
deplasat de programator oriunde pe perimetrul
acestuia. Se încearcă respectarea convenţiei prin
Fig. 7.36. Reprezentare în diagrama
care variabilele de intrare se plasează în partea
bloc pentru Formula Node
stângă, iar variabilele de ieşire se plasează în partea
dreapta a chenarului structurii formula de calcul. Variabila este utilizată în structurile de
atribuire prin numele asociat de programator cu observaţia că în interiorul nodului formula de
calcul se face diferenţa intre litere mari şi litere mici.
O variabila declarată de intrare se poate modifica în variabilă de ieşire (şi invers) şi
pentru aceasta se selectează terminalul variabilei şi din meniul contextual asociat şi se alege
opţiunea “Modifică în Variabilă de Iesire/Modifică în Variabilă de intrare” (Change to
Output/Change to Input).
Diferenţierea vizuală între o variabilă de intrare şi una de ieşire se realizează prin
afişarea terminalului variabilelor de ieşire intr-un dreptunghi având linia conturului mai
groasă. Numărul variabilelor utilizate intr-un nod tip formula de calcul nu este limitat, tipul de
date asociat unei variabile, este cel real. Tuturor variabilelor de intrare este obligatoriu să li se
furnizeze din exterior o valoare. Toate variabilele folosite într-un nod formulă de calcul
trebuiesc declarate ca variabile de intrare sau de ieşire. Se recomandă utilizarea doar a
variabilelor esenţiale în expresia membrului drept al unei structuri de atribuire astfel o
variabila de ieşire va apare prima dată în partea stângă a unei structuri de atribuire deci
variabila de ieşire poate fi folosită ulterior în membrul drept al altei structuri de atribuire.
Mediul LabVIEW execută structurile de atribuire dintr-un nod formulă de calcul, în
ordine secvenţiala, de sus în jos şi la evaluarea unei expresii în care apar variabile neesenţiale,
nu se indică eroare, dar valoarea rezultatelor nu poate fi anticipată.
O parte din variabilele de ieşire sunt folosite pentru stocarea calculelor intermediare,
uşurând redactarea scrierilor complexe şi acestea se numesc variabile auxiliare de ieşire.

151
Valoarea variabilelor auxiliare de ieşire nu se transfera în exteriorul nodului. Pentru stocarea
unor calcule intermediare se poate folosi o variabila de intrare, caz în care însă se pierde
valoarea anterioara.
Toate variabilele de ieşire (care transferă valoarea în exteriorul nodului) trebuie să fie
esenţiale adică să apară cel puţin o dată în partea stângă a unei instrucţiuni de atribuire.
Acelaşi indicator nu poate fi folosit pentru două variabile de intrare sau de ieşire.
Numele acordat unui indicator trebuie sa înceapă cu o literă, urmat de combinaţii de una sau
mai multe litere, şi/sau cifre şi nu poate conţine caractere speciale cum ar fi spaţiu, delimitare,
etc). Se recomandă comentarea operaţiilor astfel un comentariu începe cu caracterele „/*” şi
se termina cu secvenţa ”*/” (utilizarea asemănătoare ca şi în limbajul C).
Intr-un nod de tip Formula Node se pot utiliza următorii operatori în ordinea
crescătoare a nivelului de execuţie:
• ?: evaluare condiţională;
• || OR logic (pentru cuvânt binar);
• && AND logic (pentru cuvânt binar);
• | OR logic (pentru bit);
• ^ XOR logic (pentru bit);
• & AND logic (pentru bit);
• != şi == inegalitate, egalitate;
• >, <, >=, şi <= mai mare, mai mic, mai mare sau egal, mai mic sau egal;
• >> şi << deplasare spre dreapta, deplasare spre stânga;
• + şi - adunare, scădere;
• * şi / înmulţire, împărţire;
• ** ridicare la putere
De asemenea într-un nod de tip Formula Node se pot utiliza următoarele funcţii
matematice:
• abs(x) valoarea absolută pentru x;
• acos(x) valoarea arccosinus pentru x exprimat în radiani;
• acosh(x) valoarea arccosinus hiperbolic pentru x exprimat în grade
• asin(x) valoarea arcsinus pentru x exprimat în radiani;
• asinh(x) valoarea arcsinus hiperbolic pentru x exprimat în grade
• atan(x) valoarea tangentei pentru x exprimat în radiani;
• atanh(x) valoarea arctangentă hiperbolică pentru x exprimat în grade
• ceil(x) rotunjire la următorul întreg
• cos(x) valoarea cosinus pentru x exprimat în radiani;
• cosh(x) valoarea cosinus hiperbolic pentru x exprimat în grade.
• cot(x) valoarea cotangentei pentru x exprimat în radiani (1/tan(x)).
• csc(x) valoarea cosecantei pentru x exprimat în radiani (1/sin(x)).
• exp(x) valoarea puterii x pentru numărul e, e^x;
• expm1(x) valoarea puterii (x – 1)pentru numărul, e (e^(x-1)).
• floor(x) trunchiere la întregul imediat inferior
• getexp(x) Mantisa & Exponent returnează valoarea exponentului x.
• getman(x) Mantisa & Exponent returnează valoarea mantisei x.
• int(x) rotunjire la următorul întreg.
• intrz(x) rotunjire la următorul întreg între x şi zero.
• ln(x) valoarea logaritm natural din x;
• lnp1(x) valoarea logaritm natural din (x + 1);
• log(x) valoarea logaritm în bază 10 din x.
• log2(x) valoarea logaritm în bază 2 din x
• max(x,y) compară x şi y şi determină maximul.

152
• min(x,y) compară x şi y şi determină minimul.
• mod(x,y) valoarea restului împărţirii x/y, când împărţitorul este rotunjit la
următorul întreg
• pow(x,y) valoarea puterii y a lui x.
• rand( ) generează numere cu distribuţie uniformă în virgulă mobilă
între 0 şi 1.
• rem(x,y) valoarea restului împărţirii x/y, când împărţitorul este rotunjit la
următorul întreg
• sec(x) valoarea secantei pentru x, în radiani, (1/cos(x)).
• sign(x) valoare 1 dacă x>0, valoare 0 dacă x=0, valoare – 1dacă x<0;
• sin(x) valoarea sinusului pentru x, în radiani.
• sinc(x) valoarea sin(x)/x pentru x în radiani;
• sinh(x) valoarea sinus hiperbolic pentru x exprimat în grade.
• sqrt(x) valoarea rădăcinii pătrate din x.
• tan(x) valoarea sinusului pentru x, în radiani.
• tanh(x) valoarea tangentei hiperbolice pentru x exprimat în grade.
Se exemplifică în fig.7.37
utilizarea nodului de tip formula
pentru trasarea grafică a funcţiilor:
în care m şi b reprezintă parametrii
y1 = x 3 − x 2 + 5 pentru funcţia y2 şi valorile acestora
y2 = m ⋅ x + b reprezintă variabile de intrare şi au
valorile introduse prin elementele
de control m şi b de pe panoul
frontal. Variabila x ia valori în
intre 0 şi 10 şi acestea sunt date de
bucla din diagrama VI ce realizează
această reprezentare grafică.
Se prezintă în continuare
sintaxa instrucţiunilor utilizate la
realizarea corpului unui nod
formulă de calcul, folosind notaţia
BNF (Backus-Naur-Form).
Fig.7.37 Exemplu de utilizare a nodului Formula Node Notatia BNF defineşte sintaxa
pentru elementul de limbaj din partea stângă a expresiei „::=” (având semnificaţia de : „se
defineste ca fiind”) şi definiţia urmează expresiei „::=” şi poate indica variantele, delimitate
prin caracterul „I” după cum se prezintă în continuare.

<instrucţiune _de_atribuire>::=<variabile_iesire>=<formula>;
[<instructiune_de_atribuire>]

<formula>::=<expresie>I<variabila_iesire>=<formul>

<expresie>::=<expresie><operator_binar><expresie>
I<operator_unar><expresie>
I<expresie logica>?<rez1>:<rez2>
I(<expresie>)
I<variabila_intrare>
I<variabila_iesire>
I<constanta_numerica>
I<functie_predefinita>(lista_parametri>)

153
<operator_binar>:: = + I – I * I / I ^
I != I = = I < I<= I > I >=
I && I II
<operator_unar> ::= + I –
I!
<constanta_numerica> ::= pi I <numar>
<lista_parametri> ::= <formula> [,<lista_parametri>]
Conditional Operator False

Condition True Condition


Fig. 7.38 Sintaxa instrucţiunii de tip „condiţie”
Pentru afişarea descrierii fiecărei funcţii se urmează paşii:
• din fereastra de asistenţă pentru subiectul „formula de calcul” se lansează utilitarul de
asistenţă;
• din pagina de asistenţă se alege subiectul „Funcţiile şi Operatorii Formulei de Calcul”
(Formula Node Functions And Operators).

7.4.7.2. Structurile MathScript şi Script MATLAB

Structurile de tip script sunt utilizate pentru calcule matematice inginereşti sau atunci
când se impune utilizarea funcţiilor matematice avansate. O astfel de structură de tip nod este
o fereastră grafică redimensionabilă şi va fi reprezentată în diagramă prin apelarea funcţiilor
corespunzătoare în paleta de funcţii din LabVIEW.
Structura
MathScript, fig.7.38,
este utilizată pentru
evaluarea script – urilor
create în LabVIEW cu
utilizarea sintaxei
Fig.7.38. Structura MathScript
specifice MATLAB.
Câteva din regulile necesar a fi respectate la realizarea unei structuri MathScript sunt
prezentate în continuare:
¾ numele de variabilă trebuie să înceapă cu o literă;
¾ variabilele MathScript se adaptează la tipul de dată cu care operează;
¾ se pot utiliza atât litera i cât şi j pentru partea imaginară a unui număr complex;
¾ se utilizează spaţiu sau virgulă ca separator între elementele de pe linia unei
matrice şi punct şi virgulă (;) ca separator între liniile unei matrice;
¾ se utilizează forma a == b pentru testarea unei egalităţi şi forma a ~= b pentru
testarea unei inegalităţi;
¾ indexul elementelor unui vector în MathScript începe de la 1 şi nu de la 0 ca într-o
funcţie LabVIEW;
¾ nu pot fi utilizaţi vectorii n – dimensionali;
¾ dacă o linie de comandă se încheie cu punct şi virgulă (;) fereastra LabVIEW
MathScript Window nu va afişa rezultatul execuţiei acelei linii de comandă;
¾ etc.

154
Dimensionarea şi elementele legate de stabilirea intrărilor şi ieşirilor unei structuri
MathScript sunt similare celor prezentate pentru structura Formula Node. Sintaxa acestui
script respectă regulile de sintaxă din MATLAB.
În fig.7.39. este prezentat un exemplu în care structura MathScript este utilizată pentru
efectuarea de operaţii elementare (adunare – SUM, scădere – DIF, înmulţire – PROD,
împărţire - RAP) cu matrice. Aceste operaţii sunt exemplificate pentru cazul a două matrice A
şi B cu dimensiunea 2x2 dintre care matricea B este o matrice de constante iar pentru matricea
A elementele acesteia se introduc interactiv de pe panoul frontal prin intermediul controalelor
de tip numeric. Rezultatele acestor operaţii sunt afişate pe panoul frontal prin intermediul

Fig.7.39. Exemplu de utilizarea structurii


MathScript pentru operaţii cu matrice

indicatoarelor de tip Real Matrix pentru a păstra forma matricială a acestor rezultate. Pentru a
fi posibilă această afişare este necesară alegerea tipului de dată necesar şi această alegere se
face prin opţiunea Choose Data Type » Matrix din meniul contextual al portului de ieşire al
structurii la care se conectează un indicator de tip Real Matrix. Pentru ieşirea SUM este
prezentată şi posibilitatea de afişare a rezultatului printr-un indicator de tip 2D Array prin
transformarea tipului de dată din matricial în dată de tip tablou. O reprezentare similară se
poate obţine şi dacă se alege tipul de dată tablou din meniul contextual al ieşirii prin opţiunea
Choose Data Type » 2D Array » DBL 2D (tablou 2D în format dublă precizie)
În fig.7.40 este prezentat un exemplu în care structura MathScript este utilizată pentru
trasarea graficelor funcţiilor:
y = 1 − e − t ⋅ sin(10 ⋅ t ); y1 = 1 − e − t ; y1 = 1 + e − t
în acelaşi sistem de axe.

Fig.7.40. Exemplu de utilizarea


structurii MathScript
pentru trasarea unui grafic
Valorile variabilei independente t a acestor funcţii sunt definite pe baza unui
parametru tf a cărui valoare este furnizată către script de la un control numeric. La execuţia
155
programului se deschide fereastra grafică Plot în care se obţine reprezentarea grafică. Această
fereastră grafică are o bară de meniuri prin intermediul căreia se pot stabili atribute specifice
indicatoarelor grafice din LabVIEW. Elementele din bara de meniuri sunt prezentate în
fig.7.41.

• Posibilităţi de salvare • Unelte pentru ştergere sau


a graficului introducere de adnotări

• Atribute specifice indicatoarelor


grafice LabVIEW
Fig.7.41. Bara de meniuri a ferestrei grafice Plot
Structura MATLAB Script Node, fig.7.42, este utilizat pentru evaluarea scrip – urilor
de tip MATLAB şi pentru a utiliza această
structură este necesară instalarea pe
calculator a mediului de programare
MATLAB. O secvenţă de comenzi scrise în
MATLAB poate fi importată sub forma
unui fişier de tip MATLAB dacă acesta are
Fig.7.42. Structura MATLAB Script Node
extensia .m şi executată într-o buclă scrip
MATLAB Script Node. Dacă nu există un astfel de fişier secvenţa de program poate fi scrisă
direct în fereastra reprezentând nodul în format text cu respectarea regulilor de sintaxă ale
liniilor de comandă MATLAB
Pentru a trece variabile între MATLAB şi LabVIEW se stabilesc pentru nod terminale
reprezentate prin intrări şi ieşiri corespunzător variabilelor din secvenţa de program supusă
rulării. Se poate stabili funcţia terminalului după modul cum este scrisă ecuaţia respectivă în
secvenţă. Dacă de exemplu în program apare comanda x = i + 3 este evident că variabila i va
fi o variabilă terminală de tip intrare prin care se controlează valoarea variabilei x care va fi o
variabilă terminală de tip ieşire prin care se extrage rezultatul controlului exercitat de variabila
de intrare i.
Datorită naturii limbajului MATLAB care este un limbaj de programare de tip text nu
se poate determina tipul şi formatul datelor care se vor vehicula prin legăturile terminale astfel
că este necesară definirea de către utilizator a tipului de date. În tabelul următor este
prezentată corespondenţa dintre tipurile de date corespunzătoare mediului LabVIEW şi
respectiv MATLAB:

Date în LabVIEW Date în MATLAB


-
Real
-
-
Vector real

156
-
Matrice reală
Complex
Vector complex
Matrice complexă

Pentru a crea o structură MATLAB Script Node se urmăresc următoarele etape:


1. În fereastra corespunzătoare diagramei se alege Functions » Mathematics » Scrip &
Formulas » Script Node » MATLAB Script Node şi se plasează acest nod în
structura diagramei după care se redimensionează astfel încât să cuprindă întreg textul
reprezentând programul MATLAB. Scriptul MATLAB apare ca în fig.7.43
2. Programul MATLAB se poate importa sau se poate redacta direct în fereastră. De
exemplu următoarea secvenţă de program creează o matrice de elemente cu valori
aleatoare reprezintă grafic informaţia şi afişează
matricea în MATLAB:

a = rand(10)

Fig.7.43. Script MATLAB surf(a)

În fig.7.44 sunt reprezentate panoul frontal pentru acest VI (a), diagrama bloc (b) şi
rezultatul (c) în fereastră MATLAB a rulării programului

a).

b). c).

Fig.7.44. Exemplu de utilizare a structurii MATLAB Scrip Node

3. Pentru a ataşa terminale pentru variabilele de intrare şi de ieşire se foloseşte meniul


pull – up şi se selectează Add Input pentru variabile de intrare şi/sau Add Output
pentru variabile de ieşire. Implicit nodul este prevăzut cu o intrare şi o ieşire dar
acestea sunt utilizate numai pentru transferul parametrilor de eroare.
4. Se verifică tipul datelor corespunzătoare intrărilor şi ieşirilor. Tipul implicit al acestora
pentru orice nouă intrare şi ieşire este Real. Utilizând meniul pull – up selectând
Choose Type din meniul care apare se alege tipul corespunzător dintre cele
disponibile Real, Complex, Real Vector, Complex Vector, Real Matrix, sau Complex
Matrix. În exemplul considerat pentru variabila de intrare X se alege Real iar pentru
variabila de ieşire A se alege Real Matrix.

157
5. Pentru fiecare intrare şi ieşire se creează elementul de control şi respectiv indicatorul
corespunzător, aceasta se poate realiza prin clic – dreapta pe terminalul respectiv şi
selectarea Create Control pentru intrare şi Create Indicator pentru ieşire şi aceste
elemente vor apare pe panoul frontal.
m Prin utilizarea acestei structuri este
h = y1 − y2 posibilă realizarea de interfeţe utilizator cu
aplicare în simularea sistemelor dinamice şi în
y1 acest context se prezintă simularea unui sistem
cf k1 de suspensie (pneu + telescop) a unui automobil
a cărui structură este prezentată în fig.7.45
Prin procedee de modelare matematică se
obţine modelul matematic de tip intrare – ieşire,
în care mărimea de intrare este reprezentată de o
deformare w (alungire sau comprimare), care
k2 y2 este de fapt perturbaţia ce apare în sistem, a
resortului k2 (modelează pneul automobilului)
iar mărimea de ieşire este reprezentată de
deplasarea h a masei m (masa automobilului).
Fig.7.45. Structura sistemului de Forma dată de ecuaţia diferenţială a acestui
suspensie mecanică model matematic este:
d 3h d2h dh du
m ⋅ cf 3
+ m ⋅ (k1 + k 2 ) ⋅ 2
+ cf ⋅ k 2 ⋅ + k1 ⋅ k 2 ⋅ h = cf ⋅ k 2 ⋅ + k 2 ⋅ (k1 + 2 ⋅ k 2 ) ⋅ u
dt dt dt dt
din care rezultă funcţia de transfer a acestui sistem dinamic:
H (s ) cf ⋅ k 2 ⋅ s + k 2 (k1 + 2 ⋅ k 2 )
G (s ) = =
U (s ) m ⋅ cf ⋅ s + m ⋅ (k1 + k 2 ) ⋅ s2 + cf ⋅ k 2 ⋅ s + k1 ⋅ k 2
3

Utilizând această funcţie de


transfer se construieşte programul de
simulare în MATLAB, program ce va fi
importat după aceea în fereastra
structurii MATLAB Script Node.
Mărimile m – masa sistemului, k1 –
constanta de elasticitate a elementului
elastic reprezentând resortul din
telescop, k2 - constanta de elasticitate a
elementului elastic reprezentând pneul
automobilului, cf – coeficientul de
frecare din cilindrul telescopului, tfinal
– timpul de simulare sunt mărimi de tip
parametru si valorile acestora s vor
putea modifica interactiv prin controale
de tip numeric aflate pe panoul frontal.
În fig.7.46. este prezentat
instrumentul virtual prin elementele de
pe panoul frontal (controalele m, k1,
k2, cf, tfinal) şi prin structura
MATLAB Script Node din diagrama
bloc pentru simularea acestui sistem
dinamic. Sunt prezentate de asemenea
şi rezultate ale simulării prin
Fig.7.46. Instrument virtual pentru simulare intermediul fereastrei grafice Figure
sistemului dinamic şi rezultatul simulării deschisă în MATLAB.

158
LABORATOR

Noţiuni teoretice

LabVIEW oferă posibilitatea generarii unei multitudini de semnale prin


intermediul elementului Simulate Signals (fig. 1).
Simulate Signal Express VI poate genera semnale de tipul următor: Sine,
Square, Triangle, Sawtooth DC, Noise.

Fig. 1 Elementul Simulate Signals în LabVIEW

Atunci când se plasează elementul Simulate Signal Express VI pe diagrama


bloc, utilizatorul are posibilitatea de a configura tipul de semnal dorit (fig. 2).
Fig. 2. Particularizarea elementului Simulate Signals în LabVIEW

Probleme rezolvate

1. Să se realizeze o aplicaţie în LabVIEW care să genereze un semnal


sinusoidal de frecvenţă industrială, amplitudine 220 V şi să se reprezinte grafic.
Pentru realizarea aplicaţiei se vor parcurge următorii paşi:
- se inserează elemental Simulate signal (fig.3);
Fig.3. Introducerea unui generator de semnale

- în fereastra de opţiuni a semnalului se aleg forma, amplitudinea şi frecvenţa;


- se creează controale numerice pentru introducerea în panoul frontal a valorilor
corespunzătoare frecvenţei, amplitudinii şi fazei;
- se obţine soluţia din figura 4.
Fig. 4. Soluţia aplicaţiei 1

2. Să se realizeze o aplicaţie în LabVIEW care să afişeze grafic simultan 2 semnale


(sinusoidal şi triunghiular).
Pentru rezolvarea aplicaţiei se vor parcurge următorii paşi:
- se inserează 2 elemente Generate signal pentru generarea semnalelor;
- se inserează un element pentru îmbinarea celor 2 semnale (fig. 5);
Fig. 5. Introducerea elementului Merge Signals

- se inserează un element pentru colectarea celor 2 semnale (fig. 6);

Fig. 6. Introducerea elementului Collector

- se creează un indicator grafic pentru vizualizarea semnalelor;


- se obţine soluţia aplicaţiei 2.
Fig. 7. Soluţia aplicaţiei 2 – Diagrama bloc

Fig. 8. Soluţia aplicaţiei 2 – Panoul frontal


Probleme propuse spre rezolvare

1. Să se construiască o aplicaţie în LabVIEW care să genereze un semnal


sinusoidal şi să se realizeze o analiză de frecvenţă.
Indicaţii
Pentru rezolvarea aplicaţiei se vor parcurge următorii paşi:
- Se inserează o buclă While;
- Se inserează un element Simulate signals;
- Se inserează un element Spectral measurements;
- Se realizează legătura între cele 2 elemente;
- Se inserează indicatoare grafice pentru vizualizarea semnalului generat şi a
frecvenţei (valoarea de vârf – peak) analizate.

2. Să se realizeze o aplicaţie cu ajutorul căreia să se filtreze un semnal


sinusoidal de amplitudine 220 V, frecvenţă 50 Hz.
Indicaţii
- Se va utiliza un filtru tip Trece sus, cu frecvenţa de tăiere (Cutoff frequency) de
40 Hz.
- Se va modifica frecvenţa de tăiere între limitele 40-100 Hz şi se vor nota
observaţiile constatate.
- Se vor crea elemente de control tip cursoare pentru modificarea amplitudinii,
frecvenţei şi fazei semnalului sinusoidal.
- Se vor particulariza cursoarele astfel:
- cursor frecvenţă tip Vertical pointer slide de culoare galbenă;
- cursor amplitudine cursor frecvenţă tip Vertical pointer slide de culoare albastră;

S-ar putea să vă placă și