Documente Academic
Documente Profesional
Documente Cultură
INTERFEŢE UTILIZATOR
NOTE DE CURS
PETROŞANI
2006 - 2007
Cap.1.
Introducere
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.
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
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.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
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
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)
7
PARTEA I
LABWINDOWS/CVI
Cap.2
Introducere în LABWINDOWS/CVI
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
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
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.
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
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.
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
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.
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.
20
Fereastra de dialog Edit Workspace afişează toate fişierele de tip proiect (.prj)
existente în Workspace şi are următoarele opţiuni
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.
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.
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.
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)
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;
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.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
a) b)
b)
a) c)
d)
33
Pentru editarea controlului se face clic – dreapta pe acesta şi rezultă fereastra de
editare a controlului prezentată în fig.3.34
Î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).
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
Î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
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.
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)
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.
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.
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.
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.
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
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.
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.
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.
46
Fig.3.65. Fereastra Edit
Control pentru un control
Picture Ring
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)
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;
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
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.
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.
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.
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.
58
Fig.3.91. Fereastra Edit Control
pentru un control Digital Graph
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.
60
Fig.3.95. Fereastra Edit
Control pentru un control
Timer
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.
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.
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
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.
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.
#include <userint.h>
#include "menus.h"
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
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.
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.
a.)
b.)
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
a).
b).
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
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:
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
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:
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
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ă
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.
START
Încărcare panou
Afişare panou
NU
Închidere interfaţă ?
DA Funcţie callback TERMINARE
Incrementează x
END Afişează x
b)
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.
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.
85
reprezentând interfaţa utilizator din fereastra Select Variable or Expresion (fig.4.20)
obţinută prin intermediul comenzii Code » Select Variable...
86
Fig.4.23. Codul sursă obţinut după inserarea funcţiei GetCtrlVal( )
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).
b).
a).
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.
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
90
START
Încărcare panou
Afişare panou
NU
Închidere interfaţă ?
DA Funcţie callback TERMINARE
NU
Switch On ?
DA
Up/Down
Down Up
Decrementare Incrementare
x x
Afişare
END x
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)
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"
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;
}
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
NU
Switch On ?
DA
Up/Down
Down Up
Decrementare Incrementare
x x
Afişare
x
95
PARTEA II
LabVIEW
Cap.5
Introducere în LabVIEW
96
Pictograma
Conectorul Diagrama
Panou frontal
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:
• unealta de defilare
• unealta de colorare
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.
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
• 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.
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”.
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.
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.
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.
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
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
⇒ ⇒
a)
b)
a)
b)
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.
• 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
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.
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)
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.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.
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.
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
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.
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.
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
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.
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.
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.
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.
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)
128
Cap.7
Elemente de programare grafică LabVIEW
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.
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.
¾ Oprirea execuţiei
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:
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).
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.
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.
137
Elementele utilizate la realizarea diagramei bloc sunt clasificate în trei grupe generale:
1. noduri
2. terminale
3. fire
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.
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.).
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.
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
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.
IF <expresie logica>
THEN <instrucţiune 1>
ELSE <instrucţiune 2>; (alternativa opţională)
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.
144
7. introducerea valorilor etichetelor nu este obligatorie să se facă intre ghilimele
(doar daca eticheta conţine caracterele virgulă sau expresie „..”);
145
Secvenţa 0 Secvenţa 1
Secvenţa 2
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
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.
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.
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
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
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.
156
-
Matrice reală
Complex
Vector complex
Matrice complexă
a = rand(10)
Î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).
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
158
LABORATOR
Noţiuni teoretice
Probleme rezolvate