material suport pentru stagii de practica in domeniul ... · automatizari mediu de dezvoltare...

141
Pag. 1/140 Material suport pentru stagii de practica in domeniul dezvoltarii software pentru automatizari MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI

Upload: others

Post on 13-Sep-2019

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

Pag. 1/140

 

Material suport pentru stagii de practica in domeniul dezvoltarii software pentru

automatizari MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI

Page 2: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 2/140  

 

CUPRINS

1.  Prezentarea mediului de dezvoltare aplicație LabWindows CVI 4.01 al firmei National Instruments ...........4 1.1.  Introducere ..............................................................................................................................................4 1.2. Fereastra proiect ......................................................................................................................................5 

1.2.1. Meniul ferestrei proiect File ..........................................................................................................6 1.2.2. Meniul ferestrei proiect Edit..........................................................................................................7 1.2.3. Meniul ferestrei proiect View ........................................................................................................7 1.2.4. Meniul ferestrei proiect Build ........................................................................................................8 1.2.5. Meniul ferestrei proiect Run .........................................................................................................9 1.2.6. Meniul ferestrei proiect Instrument ..............................................................................................9 1.2.7. Meniul ferestrei proiect Library .....................................................................................................9 1.2.8. Meniul ferestrei proiect Window ............................................................................................... 10 1.2.9. Meniul ferestrei proiect Options ................................................................................................ 11 1.2.10. Meniul ferestrei proiect Help ................................................................................................... 14 

1.3.  Fereastra program sursa ...................................................................................................................... 16 1.3.1. Meniul ferestrei program sursa File ........................................................................................... 16 1.3.2. Meniul ferestrei program sursa Edit ........................................................................................... 17 1.3.3. Meniul ferestrei program sursa View ......................................................................................... 20 1.3.4. Meniul ferestrei program sursa Build ......................................................................................... 20 1.3.5. Meniul ferestrei program sursa Run ........................................................................................... 21 1.3.6. Meniul ferestrei program sursa Options .................................................................................... 22 

1.4. Conceptul de interfata utilizator ........................................................................................................... 23 1.5. Elementele componente ale interfețelor grafice utilizator .................................................................. 24 1.6. Editorul de interfețe grafice utilizator ................................................................................................... 26 

1.6.1. Optiunea File din fereastra de editare UIR ................................................................................. 27 1.6.2. Optiunea Create a editorului de interfete .................................................................................. 27 1.6.3. Crearea si editarea Panelurilor ................................................................................................... 30 1.6.4. Crearea si editarea Barei de meniuri .......................................................................................... 31 1.6.5. Optiunea Edit a editorului de interfete ...................................................................................... 31 1.6.6. Atributele de editare ale diferitelor categorii de controale ....................................................... 32 1.6.7. Optiunea Arrange a editorului de interfete ................................................................................ 38 1.6.8. Optiunea Code a editorului de interfete .................................................................................... 39 1.6.9. Optiunea Options a editorului de interfete ................................................................................ 40 

2. Mediul de dezvoltare aplicație LabWindows CVI. Interfete si controale ...................................................... 41 2.1. Generararea programului de aplicație utilizând funcțiile specifice interfețelor utilizator ................... 43 

2.1.1. Functii atasate panelurilor .......................................................................................................... 43 2.1.2. Functii pop‐up panel ................................................................................................................... 45 

2.2. Controlarea interfeței prin evenimente şi rutine de întrerupere ......................................................... 46 2.3. Generararea programului de aplicație utilizând funcțiile specifice controalelor ................................. 50 

2.3.1. Functii de control utilizate pentru toate controalele ................................................................. 50 2.3.2. Functii de control utilizate pentru controalele de tip lista ......................................................... 59 2.3.3. Functii de control utilizate pentru controalele de tip casuta text .............................................. 59 2.3.4. Functii de control utilizate pentru controalele de tip grafic ....................................................... 60 2.3.5. Functii de control utilizate pentru controalele de tip canvas ..................................................... 62 2.3.6. Functii de control utilizate pentru barele de meniu ................................................................... 63 

2.4. Utilizarea atributelor de sistem ‐ timere ............................................................................................... 63 2.5. Utilizarea funcțiilor speciale ale interfețelor în controlul procesului .................................................... 64 

Page 3: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 3/140  

 

3. Prezentarea generală a bibliotecilor de subprograme CVI ............................................................................ 66 3.1. Bibliotecile LabWindows/CVI ................................................................................................................ 66 

3.1.1. Lista functiilor bibliotecii USER INTERFACE LIBRARY .................................................................. 68 3.1.2. Lista functiilor bibliotecii ANALYSIS LIBRARY .............................................................................. 73 3.1.3. Lista functiilor bibliotecii EASY I/O FOR DAQ LIBRARY ............................................................... 74 3.1.4. Lista functiilor bibliotecii GPIB/GPIB 488.2 LIBRARY .................................................................. 75 3.1.5. Lista functiilor bibliotecii RS 232 LIBRARY .................................................................................. 77 3.1.6. Lista functiilor bibliotecii TCP SUPPORT LIBRARY ....................................................................... 77 3.1.7. Lista functiilor bibliotecii DDE SUPPORT LIBRARY ...................................................................... 78 3.1.8. Lista functiilor bibliotecii FORMATING AND I/O LIBRARY ........................................................... 78 3.1.9. Lista functiilor bibliotecii UTILITY LIBRARY ................................................................................. 79 3.1.10. Clasele de functii ANSI C STANDARD LIBRARY .......................................................................... 81 

3.2. Biblioteca TCP (Transmission Control Protocol) .................................................................................... 81 3.2.1. Functiile server ........................................................................................................................... 83 3.2.2. Functii client ............................................................................................................................... 86 3.2.3. Functii tratare eroare.................................................................................................................. 88 

3.3. Bibiloteca DDE (Dynamic Data Exchange) ............................................................................................. 89 3.3.1. Functii server .............................................................................................................................. 91 3.3.2. Functii client ............................................................................................................................... 95 3.3.3. Functii tratare eroare................................................................................................................ 100 

3.4. Biblioteca Formatting and  I/O ............................................................................................................ 102 3.4.1. Intrari/isesiri fisiere................................................................................................................... 102 3.4.2. Lucrul cu siruri .......................................................................................................................... 103 3.4.3. Formatarea datelor ................................................................................................................... 104 3.4.4. Detectarea erorilor I/O ............................................................................................................. 104 

3.5. Biblioteca RS‐232 ................................................................................................................................. 105 3.5.1. Functii de initializare ‐ Clasa Open/Close ................................................................................. 106 3.5.2. Functii pentru trasferul datelor ‐ Input/Output ....................................................................... 107 3.5.3. Functii pentru transferul de fisiere ‐ XModem ......................................................................... 108 3.5.4. Functii de setare a modului de lucru ‐ Control ......................................................................... 109 3.5.5. Functii de interogare a starii ‐ Status ........................................................................................ 110 3.5.6. Functii de asociere a rutinelor de intreruperi ‐ Callbacks ......................................................... 111 3.5.7. Tratarea comunicației seriale pe magistrală industrială locală sau la distanță ........................ 112 

4. Legatura CVI cu alte medii de programare. Instrumente ............................................................................ 126 4.1. Legatura CVI cu alte medii de programare .......................................................................................... 126 

4.1.1. Utilizarea liniei de comanda pentru transferul parametrilor ................................................... 126 4.1.2. Compatibilitatea cu alte medii de programare ........................................................................ 127 4.1.3. Lansarea in executie a unui alt program, in timpul rularii programului ................................... 127 4.1.4. Stabilirea atributelor de executie a programului curent .......................................................... 129 

4.2. Crearea si exploatarea unui instrument .............................................................................................. 131 4.2.1. Crearea unui instrument........................................................................................................... 132 4.2.2. Exploatarea unui driver de instrumentatie .............................................................................. 139 

Bibliografie ....................................................................................................................................................... 140  

 

Page 4: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 4/140  

 

1. Prezentarea mediului de dezvoltare aplicaţie LabWindows CVI 4.01 al firmei National Instruments

11..11.. IInnttrroodduucceerree  

           

LabWindows/CVI este un mediu programare pentru dezvoltarea: • instrumentelor de control, • testelor automate si • aplicatiilor de achizitie.

Firma americana, sediu in Austin (Texas) Logo “Software is the instrument” 

Mediu de programare este bazat pe instrumentul virtual realizat in limbajul C si are in componenta biblioteci standard si generatoare de interfete interactive. Componentele principale:

• Interfata utilizator (imaginea ecran pusa la dispozitia utilizatorului) • Mediu de programare (o varianta de limbaj C orientat spre lucru in interfete

utilizator) • Biblioteci care ajuta la crearea interfetelor si/sau la dezvoltarea programelor • Mediu de dezvoltare aplicatie

- editor pentru interfete grafice utilizator - generator de cod si program de depanare - generator de programe executabile sub Runtime

• Se poate utiliza pentru crearea de Drivere de instrumente

Mediu de programare LabWindows/CVI are in componenta urmatoarele ferestre fiecare cu meniul sau propriu: 

• Fereastra proiect apare la lansarea meniului. Este utilizata pentru deschiderea (open), editarea (edit), construirea (build), rularea (run) si salvarea (save) fisierelor proiect (.prj)

• Ferestrele sursa sunt utlizate pentru crearea, editarea, rularea, depanarea si salvarea codului sursa in fisiere cu extensia .c. Aceasta fereastra include optional si o bara de functii (toolbar) pentru un acces rapid la comenzile utilizate frecvent.

• Ferestrele panou de functie (Function Panel) sunt utilizate pentru executia interactiva a functiilor de biblioteca si introducerea codului in ferestrele sursa. Aceasta fereastra include optional si o bara de functii pentru un acces rapid la comenzile utilizate frecvent.

• Fereastra de executie interactiva este utilizata pentru executia unor portiuni de coduri sursa fara a avea un program intreg

• Ferestre de afisare variabile, matrici, siruri ss de tip watch sunt unelte utile in depanare

Page 5: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 5/140  

 

               Mediu de dezvoltare aplicatie (concluzie) - se lanseaza cu numele CVI din Programs sau de la pictograma aferenta; - in caz de lansare corecta apare denumirea LabWindows si programul intra in ultima

fereastra proiect incarcata in sesiunea anterioara - usureaza crearea aplicatiilor bazate pe functiile din bibliotecile LabWindows CVI - o combinatie de editor, compilator si debugger care verifica si posibilitatea de Run-time.   

 Mediul LabWindows/CVI are urmatoarele ferestre principale: - fereastra de proiect - fereastra program sursa - fereastra de editare interfete.

11..22.. FFeerreeaassttrraa pprrooiieecctt - Apare la pornirea mediului de programare - Este utilizata pentru generarea, editarea, lansarea in executie si salvarea fisierelor proiect

(.prj)

- o facilitate oferita de sistem sunt functiile panel (function panel) - interfete predefinite pentru functiile de biblioteca care ajuta in generarea interactiva a codului precizand parametri si domeniul de existenta al acestora; - mai contin informatii de Help (pentru descrierea functiei indeplinite si a fiecarui parametru)

• Ferestre de editare interfata utilizator (User Interface) sunt utilizate pentru contruirea barelor de comenzi grafice, a meniurilor imbricate, a casutelor de dialog, a controlalor, a graficelor si pentru salvarea in fisiere .uir

• Ferestrele de editare arborescente de functii (Function Tree) sunt utilizate pentru contruirea structurii arborescente a fisierelor panou de functii

• Ferestrele de editare panou de functii includ optional si o bara de functii pentru un acces rapid la comenzile utilizate frecvent

• Ferestrele de editare help pentru Function Tree si pentru Function Panel utile pentru constructia unui help online pentru panourile de functii.

• Fereastra de intrari/iesiri standard este utilizata pentru tiparirea de mesaje si receptioarea de date de la tastatura

Cele mai importante ferestre: - fereastra de proiect - fereastra program sursa - fereastra de editare interfete

Page 6: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 6/140  

 

Un fisier proiect este o lista a fisierelor utilizate de o aplicatie. Anumite fisiere sunt obligatorii in aceasta lista, altele sunt optionale

 Tipurile de fisere ce apar in proiect sunt: - module de program sursa cu extensia .c (obligatorii) - interfete grafice utilizator cu extensia .uir - fisiere header cu extensia .h - fisiere de tip instrument cu extensia .fp In fereastra proiect exista informatiile: Name - Numele modulului C S I - Indicatori ai starii actuale a modulului (C – necompilat, S – editat dar nesalvat, I A U– se refera la instrument) Date – Data si ora ultimei actualizari

1.2.1. Meniul ferestrei proiect File

 

Sunt functii cu caracter general utilizate de obicei in orice sistem de operare.  

Crearea sau deschiderea unui fisier  

Fisiere anterior deschise –  

Proiecte anterior deschise

Salvari si listari

Iesire din mediu de dezvoltare

Page 7: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 7/140  

 

1.2.2. Meniul ferestrei proiect Edit  Cuprinde functii care ajuta la crearea si actualizarea unui proiect.             Observatii: - Un proiect trebuie sa contina un modul “.c” ce contine functia Main. - La crearea unui proiect nou fiecare modul trebuie adaugat. - Nu se pot compila module in afara unui proiect. - Modulele incluse in proiect se linkediteaza impreuna (exceptie cele cu optiunea Exclude

File From Build) - Nu se pot trece la linkeditare daca exista eori de compilare - Nu se trece la executie daca exista esrori de linkeditare.

1.2.3. Meniul ferestrei proiect View              In zona Name sunt prezentate modulele componente cu numele din subdirectorul aferent proiectului (varianta scurta) sau cu intreaga cale prezentata (Full Path Names). In zona Date sunt prezentate elementele constitutive ale proiectului cu ultima data a actualizarii fiecarui modul in forma extinsa sau prescurtata. Pentru un modul care nu este gasit in subdirectorul aferent in zona Date apare mesajul No Date Available. Modalitatile de sortare (dupa data, dupa nume, dupa director, dupa extensie) sunt posibilitati de a vizualiza fisierele dupa preferinte.

Modalitati de vizualizare a proiectului 

Modalitatea de actualizare a unui proiect, prin: Adaugare Modul ce nu se linchediteaza cu celelalte

- nu mai apare bolduit in proiect - pentru un fisier exclus exista Include File in Build

Stergere din proiect

Mutare de pozitie in sus si in jos 

Page 8: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 8/140  

 

 

1.2.4. Meniul ferestrei proiect Build Zona pricipala de lucru pentru crearea unui program executabil (compilare module, linkeditare proiect).                              Observatii: - Rezultatul unui program creat ce urmeaza a se lansa in executie este un program “.exe”. - In mod uzual se utilizeaza Target – Standalone executable. In situaltia cand utilizatorul

doreste sa-si creeze propriile biblioteci statice utilizeaza optiunea Target – Static Library, iar pentru biblioteci dinamice optiunea Target – Dynamic Link Library. In cazul ultimelor doua optiuni dupa executie comanda Run devine inoperanta.

- Un program Standalone executable nu functioneaza in regim Debug (compilarea fiecarui modul se realizeaza fara componentele de depanare). Un astfel de program se poate lansa in executie.

‐ Kitul de distributie se foloseste pentru a putea rula programe executabile fara a fi instalat mediul LabWindows/CVI. Se creaza pe un calculator avand CVI un astfel de kit, care se lanseaza pe alt calculator. Pentru ca pe noul program sa se poate interpreta functiile CVI kitul include si un Runtime Engine (amanunte in 5.3).  

  

Compilare fisier, Creare proiect nelansat in executie (Compilare toate fisierele + linkeditare) Numai linkeditare intre module

Actualizeaza fisierele de pe disc Marcheaza un fisier sau toate pentru

compilare oligatorie

Interfete distincte pentru compilatoare 

Crearea kitului de distributie al unui proiect

Page 9: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 9/140  

 

1.2.5. Meniul ferestrei proiect Run          Observatii: - Dupa o linkeditare corecta se apeleaza Run Project. Se pot stabili breakpoit-uri in codul

sursa sau generic la prima instructiune din program sau dintr-un modul. - Dupa un breakpoit se poate continua programul cu F5 (Continue) sau se poate termina

executia cu Ctrl+F12 (Terminate execution) - Execute hidro.exe lanseaza in executie programul fara a-l mai recompila si relinkedita.

Atentie e vorba de exe-le creat anterior (utilizarea optiunii in cazul in care se efectueaza operatii “in mers” trebuie utilizata cu precautie (altfel lucram cu versiuni anterioare ale programului).

 

1.2.6. Meniul ferestrei proiect Instrument

Se poate incarca, descarca sau edita un Instrument. In cursul 4.5. se va reveni pe larg cu aceasta modalitate de lucru a mediului de dezvoltare.

1.2.7. Meniul ferestrei proiect Library                 

Acces catre functiile de biblioteca specifce instrumentatiei virtuale si configuratiilor de achizitie pentru care a fost creat mediul – se vor detalia in continuare

Executia unui proiect (build + run)

Modalitati de stabilire a breakpointurilor

Lansarea in executie a unui .exe

Page 10: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 10/140  

 

Mediul de dezvoltare pune la dispozitie o colectie de functii grupate in biblioteci. Aceste functii permit atat crearea si actualizarea interfetelor utilizator cat si controlul programului. Cursurile 2, 3 si partial 4 vor reveni cu detalii ce includ si o parte din multimea de functii descrise in aceste biblioteci.

1.2.8. Meniul ferestrei proiect Window Grupeaza, pe tipuri, ferestrele deschise simultan, permitand accesul mai rapid la acestea.                                       

Stabilire a modului de asezare in ecran a ferestrelor deschise

Stabilirea ferestrelor deschise la un moment dat: ♦ Fereastra proiect, ♦ Fereastra erori de compilare, ♦ Fereastra cu erori de rulare, ♦ Fereastra variabile, ♦ Fereastra cu puncte de

urmarire

Deschiderea a doua ferestre speciale: ♦ Fereastra de executie

interactiva utilizata pentru executia unor portiuni de coduri sursa fara a avea un program intreg

♦ Fereastra de intrari/iesiri standard utilizata pentru tiparirea de mesaje si receptioarea de date de la tastatura

 

Observatii: - Ferestrele de executie interactiva si de

intrari/iesiri standard au aceasi structura ca si o fereastra sursa

- Intre Watch si Interactive execution apar in lista si ferestrele utulizator “.uir” deschide

- Sub Standard Input/Output apar in lista ferestrele sursa “.c” si header “.h”deschise in ordinea paritiei lor (pana la inchidere ele pot fi accesate si cu Ctrl+nr.ordine deschidere

Page 11: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 11/140  

 

Functiile Minimize All si Close All au o influenta globala asupra ferestrelor deschise, minimizandu-le (bara de jos a wndows-ului) sau inchizandu-le pe toate.  

1.2.9. Meniul ferestrei proiect Options Grupeaza optiuni de tot felul ale mediului de dezvoltare.                 a) Optiuni de compilare                        b) Definitii compilator 

Se pot folosi urmatorii calificatori de conventii de apel in declararea functiilor:

cdecl (implicit) _cdecl __cdecl (recomandat) _stdcall __stdcall (recomandat) In conventia cdecl funtia apelanta este raspunzatoare pentru golirea stivei si functiile pot avea un namar variabil de parametrii In conventia stdcall funtia apelata este raspunzatoare pentru golirea stivei si functiile cu un namar variabil de parametrii nu lucreaza = restul optiunilor sunt exprimate prin text

Optiuni ale: Compilatorului De rulare Ale mediului Ale proiectului * Respecta criteriile ale mediilor de programare de nivel inalt

Definitiile compilator au sintaxa: /Dx sau /Dx=y unde: - variabila x este un identificator c valid x poate fi folosit de directivele preprocesor #if si #ifdef pentru compilari conditionate sau ca macrouri predefinite in codul sursa - daca y contine spatii imbricate el trebuie inconjurat de ghilimele

Page 12: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 12/140  

 

        

Cateva din macrourile predefinite de LabWindows/CVI pentru a reduce dependenta de platforma utilizata: • _CVI e 1 in versiunile 3.0, 301 in version 3.0.1, and 310 in version 3.1. • _CVI e 401 in v4.01 • _NI_mswin e definit daca se compileaza Windows 3.x, Windows 95, or Windows NT • _NI_mswin16_e definit la compilarea cu Windows 3.x. • _NI_mswin32_ e definit la compilarea cu Windows 95, 98, NT • _NI_i386 e definit daca se face compilarea pe PC • _NI_unix e definit daca se face compilarea sun UNIX • _CVI_DEBUG e definit daca se compileaza pe nivel debug standard sau extins. Valoarea

macroului e 1   c) Căi incluse

  LabWindows/CVI cauta fisierele incluse in urmatoarele locatii si in urmatoarea ordine: - in lista Project - in proiectul specific in lista de mai sus partea de sus - in proiectul nespecific in lista de mai sus partea de jos - in caile specificate in casuta de dialog a directorul de instrumente - in directorul cvi\include - in directorul cvi\include\ansi - in directorul VXIplug&play - in directorul cvi\sdk\include      d) Cai de cautare instrument

Comanda de cai incluse specifica directorul in care se cauta fisierele incluse. In casuta de dialog alaturata exista doua liste: - una pentru calea catre fisierele incluse in proiect, si - alta nespecifica proiectului Exista optiuni de actualizare a celor doua liste

‐ reprezinta un set de directoare in care se cauta fisierele de tip instrument ce incarca alte fisiere de tip instrument - aceste fisiere sunt cautate dupa lista alaturata apoi in

Page 13: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 13/140  

 

          e) optiuni de rulare                    Exista trei nivele de debug: None – modulele sursa sunt executate mai rapid fara depanare – nu se pot vizualiza variabilele si nu exista protectie utilizator pentru a verifica poiterii eronati, depasirile de eindecsi, dimensiuni depasite de zone etc. Standard – se pot seta breakpoits, afisa variabilele si exista protectie utilizator Extended - un standard cu verificari in plus a fiecarui apel catre o memorie libera alocata dimamic prin verificarea ca adresa transferata este in acel moment inceputul unui bloc alocat. f) optiunea linie de comanda  

  g) optiunea mediu

Se pot introduce parametri, separati prin spatiu, ce au ca efect optiuni de lansare ale

programului.

- valoarea maxima a stivei in octeti - nivelul de debug - optiune de salvare sursa inainte de

executie cu celel trei posibilitati - cele 4 optiuni (da marcat sau nu)

o programul se opreste la o eroare de biblioteca

o se ascund ferestre o se verifica daca nu au aparut

actualizari in fisere o se descarca bibliotecile DLL dupa

fiecare rulare

Se pot compila modulele sursa cu informatii de depanare pentru a putea utiliza puncte de oprire si vizualiza si modifica variabile si explresii cand programul este in rulare.

Optiuni diverse de rulare: - ce face programul cand nu ruleaza - nr. de linii in fereastra standard I/O - modul de afisare a ferestrei I/O - cate ferestre function panel sunt utilizate

Page 14: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 14/140  

 

       h) optiunea biblioteci                i) optiunea de fixare a fisierelor in directoare la mutarea proiectului

 k) optiuni de particularizare a aspectului ferestrei proiect (Font si Colors)              

Se recomanda lucrul in fiecare director distict.

Se specifica bibliotecile care se incarca automat la lansarea programului. Ele pot fi ale sistemului de programe sau utilizator. Pentru bibliotecile standard se incarca automat fisierele (corespunzator de sus in jos):

analysis.lib dataacq.lib easyio.lib nivxi.lib gpib.lib

Biblioteci ale LabWindows CVI

Biblioteci utilizator

Tipul de caractele, dimensiunea si optiunea de ingrosare pentru

fereastra proiect

Meniu comun cu fereastra sursa si alte ferestre pt.

particularizarea culorilor diferitelor linii de program. 

Page 15: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 15/140  

 

1.2.10. Meniul ferestrei proiect Help                            

Un ajutor consistent pt. ghidarea in aplicatie

In engleza explicatii despre instalare, modul de

operare, diferite functii de biblioteca si unele principii

de programare

Meniul principal Help 

Se pot efectua cautari dupa diferite concepte tastand numai primele litere in casuta 1, apoi selectand in casuta 2 linia dorita, Un dublu click pe stanga cu mouse-ul produce incarcarea altui ecran cu detalierea dorita. Daca exista concepte colorate (verde) se poate cauta in continuare cu dublu click.

Page 16: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 16/140  

 

11..33.. FFeerreeaassttrraa pprrooggrraamm ssuurrssaa  

     - Se utilizeaza pentru crearea, editarea, executia, depanarea si salvarea programelor sursa C. - Interfata se comporta ca un editor de texte standard care genereaza un fisier ASCII. - Instructiunile pot fi inserate si direct facand uz de Function panels. - Sursa poate contine pana la 1 milion de linii cu maxim 254 caractere fiecare (Tab=1

caracter) - Aceasta fereastra include un meniu in partea de sus, optional o bara de functii (toolbar)

pentru un acces rapid la comenzile utilizate frecvent, textul sursa si o bara cu informatii (jos).

           Breakpoit-urile sunt folosite in depanare. Tag-urile sunt marcaje in textul sursa. Utilizatorul poate naviga rapid intre liniile astfel marcate. Desi bara de meniu este aparent acceasi ea prezinta specificitatea unui editor/depanator de programe scrise in limbaj inalt.

1.3.1. Meniul ferestrei program sursa File                

Se incarca cand se apasa dublu click in fereastra proiect pe un fisier .c sau din optiunea File >> New se alege Source (*.c)

Nr. liniei sursa

Breakpoint (romb) sau Tag (patrat)

Nr. liniei crt. / nr. total de linii

Nr. col. curente

C – compilare S – salvare Ins/Ovr – modul de editare - mod linie /coloana / linie si coloana

Optiuni obisnuite pentru fisiere: New, Open, Save, Close, Print Open Quated Text – daca este un text selectat ce reprezinta un fisier, o interfata utilizator sau un control prin Ctrl+U se incarca automat acel fisier, acea interfata sau interfata ce contine acel control. Ultimele fisiere sursa incarcate

Ultimele proiecte incarcate

Iesirea din mediu

Page 17: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 17/140  

 

1.3.2. Meniul ferestrei program sursa Edit  

O linie exclusa poate fi: -reintrodusa, -facuta comentariu, -inclusa in if…endif, -stearsa, -se poate sari pe urmatoarea excludere, -se poate anula rezolvarea excluderilor

(*) linie exclusa la apasare linia va fi reintrodusa

Refacerea unei zone dupa actiunea de stergere 

Optiunile de editare consacrate: decupare, copiere, transpunere, stergere 

Optiune de editare ce permite excluderea/reintroducerea unor linii program in executie in faza de testare (*) – vezi mai jos

Page 18: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 18/140  

 

  Exista constructii predefinite care se pot introduce automat in textul sursa prin Insert Construct

#include <cvirte.h> /* numai pt. Compilator extern */ int main (int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) == 0) /* numai pt. Compilator extern */ return -1 return 0; }

Insereaza constructii fixe: Creaza o functie Main 

#include <cvirte.h /* numai pt. Compilator extern */ int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { if (InitCVIRTE (hInstance, 0, 0) == 0) /* numai pt. Compilator extern */ return -1; /* out of memory */ return 0; }

Forma programului principal pt creare Dll

Crearea la comanda a structurilor de mai sus, fiecare cu parametri sai.

Se creaza doar structura cu conditiile aferente, urmand ca in sursa programatorul sa introduca blocul de instructiuni  

Balance = verifica imperecherea parantezelor; la pozitionarea pe o paranteza  { sau } se marcheaza textul sursa pana la paranteza pereche (utila pentru verificarea structurilor imbricate  

Diff = permite evidentierea diferentelor intre doua texte sursa 

if (a==0) { }

if (a<0) { } else { }

switch (pp) { case 0: break; case 5: break; case 10:     break;   default:        break;} 

for (i=0; i<10; i++) {                                                   } 

while (a<10) {                                                               } 

do {                                                        } while (i<10);

Page 19: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 19/140  

 

                          Daca in textul sursa se apasa click dreapta apare un meniu suplimentar:                 

Daca in momentul apasarii, mouse-ul era in zona Breakpoint si Tag meniul ce apare este

cel din stanga si se permite, selectia si deselectia breakpoint-urilor si a tag-urilor

precum si navigarea intre tag-uri

Daca in momentul apasarii, mouse-ul era in zona textului sursa meniul ce apare e prezentat in stanga si este o combinatie de: - apel direct catre functii

panel, obiecte din interfata utilizator si fisiere selectate

- o vizualizare a functiilor si a variabilelor

- excluderea linie curecte - suprimarea, copierea liniei

- In cazul unei functii pe care se afla cursorul prin actionarea Go To Definition (sau Ctrl+I) programul transporta programatorul in modulul si pe locul unde se defineste functia. - Pentru o variabila programul se muta la definitia variabilei respective

Daca s-au selectat Multiple Files in meniul Find sau Replace prin aceasta optiune sw face trecerea la

urmatorul fisier de cautare din lista 

Page 20: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 20/140  

 

1.3.3. Meniul ferestrei program sursa View La orice meniu zonele separate grupeaza functii din aceeasi categorie. La View meniul se refera (de sus in jos) la: - vizualizarea sau nu in ecranul sursa a coloanei cu numarul liniei curente, a zonei de

breakpoint-uri si tag-uri, a zonei de butoane - acces mai rapid la o linie sau la o zona selectata - inserarea, navigarea si stergerea tag-urilor (Obs: Tag Scope se refera la locul unde are

efect tag-ul) - apelul functiilor de biblioteca grupate in panoul de functii (vom reveni) - apelul catre obiecte din interfata utilizator.                    

1.3.4. Meniul ferestrei program sursa Build Din programul sursa meniul Build se refera la: - compilarea fisierului curent si crearea intregului proiect (fara lansare in executie) ‐ un fisier se compileaza daca au aparut modificari in el. ‐              

Salt direct la linia sursa cu numarul precizat Salt intre inceputul si sfarsitul unei zone selectate

Lucru cu Tag-uri

Lucru cu Function Panel

Tranfer direct al programatorului in editorul de interfete utilizator unde este utilizata functia sau controlul al carui nume a fost selectat

Compileaza fisierul selectat Creaza proiectul Linkediteaza proiectul

Marcheaza fisierul pentru compilare obligatorie

Ajuta la inserarea headerelor pentru bibliotecile functiilor 

Creaza prototipuri cu functiile declarate in modul si cu resursele globale pentru eventuala utilizare in alte module

Navigheaga intre erorile de constructie

Page 21: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 21/140  

 

  ‐ textul sursa trebuie sa contina si legaturi cu alte fisiere prin headere; pentru fisierele ce sunt 

incluse in textul sursa cu Insert Include Statemets apare o casuta mesaj cu toate fisierele de inclus si utila pentru verificarea apartenentei la textul sursa curent 

               

1.3.5. Meniul ferestrei program sursa Run Un fisier compilat si linkeditat cu restul fisierelor poate fi lansat in executie.                        

Optiuni de depanare program

Lucru cu breakpoint-uri

Optiune de activare sau nu a panelurilor la reluarea unei activitati de debugging

Permit vizualizarea stivei in timpul depanarii

Vizualizarea variabilelor in timpul depanarii

Vizulaizarea memoriei dinamice alocata cu instructiuni speciale

Page 22: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 22/140  

 

Prin acest meniu se urmareste: - prin Run Project se lanseaza in executie programul - prin Continue din locul curent programul continua pana la urmatoarea oprire (breakpoint) - prin Step Over se sare peste rutina curenta - prin Step Into se intra in executia pas cu pas a instructiunilor rutinei - Finish Function sare pe sfarsitul functiei curente - prin Terminate Execution se forteaza terminarea executiei - Close Libraries inchide bibliotecile curente deschise - in cazul lucrului cu breakpont-uri un meniu suplimentar de contol al acestora apare la

apasarea barei Breakpoints..

 

‐ la View Variable Value, fiind cu cursorul amplasat pe o variabila, se incarca suplimentar doua ecrane: unul cu variabilele (cel de mai sus) indicand denumire variabila, tip, adresa acesteia si dimensiunea) si unul explicit indicand valoarea curenta a variabilei selectate. 

      ‐ la Up Call Stack si Down Call Stack programul indica succsesiunea ascendenta/descendenta a apelurilor succesive din stiva.    

Observatie: Meniurile Instrument, Library si Windows din fereastra sursa au aceeasi structura cu cea din fereastra proiect permitand accesul catre aceleasi resurse.

- la Stack Trace se incarca un ecran cu rutinele apelate si incarcate (de jos in sus) pe stiva

Page 23: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 23/140  

 

1.3.6. Meniul ferestrei program sursa Options  

Optiuni pentru editorul textului sursa

Editeaza bara de unelte (toolbar) printr-un editor specific

Optiune de selectare a modului de scriere a parantezelor pentru structurile procedurilor si ale constructorilor inserati (if, do,…) ‐ se alege din selectorul Function Brackets respectiv Statement Brackets una din optiuni si rezultatul se vede in exemplul corespunzator

Options Bracket Styles 

Configuratia curenta a butoanelor din toolbar Meniul editorului Butoane disponibile

Page 24: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 24/140  

 

Font – permite alegerea unui set de caractere pentru textul sursa Color – permite alegerea culorilor dorite pentru diferite secvente de program (dupa cum urmeaza)                        Sintax coloring – optiune de colorare (dupa culorile selectate sau nu) a sintaxei, Translate DOS LW Program – asigura preluarea aplicatiilor generate sub varianta DOS a mediului in scopul rularii sub varianta Windows Create Object File – precizeaza compatibilitatea obiectelor

 Observatie: Programul LabWindows CVI se poate instala in una din variantele: BORLAND, MicroSoft Visual C, Watcom, Symantec.  11..44.. CCoonncceeppttuull ddee iinntteerrffaattaa uuttiilliizzaattoorr  Interfata utilizator este ecranul pus la dispozitia operatorului de programul de aplicatie. Acest ecran poate contine paneluri, butoane de comanda, meniuri, grafice si diverse tipuri de controale si indicatoare. Elementele constitutive ale unei interfete utilizator pot avea functii de vizualizare sau sunt elemente dinamice (de actionare). In cazul ultimei categorii aceste elmente au asociate functii in care le este descrisa comportarea.

Page 25: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 25/140  

 

Interfata utilizator se salveaza intr-un fisier denumit resursa interfata utilizator cu extensia .uir. Aceste fisiere sunt generate folosind un editor specific care permite inserarea elementelor constituente intr-un format predefinit, redimensionarea acestor elemente, pozitionarea lor in ecran cu precizia dorita, asocierea ordinei de aparitie, asocierea functiilor specifice elementelor dinamice. Proprietatile stabilite pentru elementele constituente ale interfetelor utilizator in proiectarea interfetei pot fi modificate in timpul rularii programului in functie de cerintele specifice ale acestuia.             In conjunctie cu fisierele de tip .uir editorul de interfete grafice genereaza pentru fiecare interfata utilizator si cate un fisier header ce contine: -

11..55.. EElleemmeenntteellee ccoommppoonneennttee aallee iinntteerrffeeţţeelloorr ggrraaffiiccee uuttiilliizzaattoorr O interfata grafica utilizator este constituita din trei tipuri de componente principale (nefiind necesar sa existe toate concomitent): - paneluri - meniuri - controale.

O sectiune cu denumirile si numarul asociat panelurilor si controalelor precum si denumirea functiei asociate fiecarui element ecran (daca aceasta exista)

o sectiune cu meniurile asociate interfetei utilizator

o sectiune cu prototipurile rutinelor asociate elementelor ecran

Exemplu de interfata utilizator cu diferite tipuri de controale

Page 26: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 26/140  

 

Panelul este un panou care grupeaza elemente ce trebuie sa apara simultan in ecran si intre care exista o dependenta functionala. Este un element dinamic care poate avea asociata o functie. Meniul de tip pull-down este o insiruire de comenzi orizontale; fiecare comanda poate sa determine, la apasarea cu mouse-ul, aparitia unui meniu suplimentar (vertical) sau sa genereze o actiune. Fiecare comanda din meniul orizontal respecta in continuare aceleasi principii ca si cele verticale (genereaza alte meniuri sau sunt terminale).

Controalele sunt obiecte predefinite utilizate in realizarea interfetelor de tip instrumentatie virtuala. Fiecare control are o anumita dimensiune, culoare si pozitionare. In functie de tipul fiecaruia exista si parametrii suplimentari. Ele sunt de numeroase categorii: Numeric – controale ce contin valori numerice String – controale de tip siruri de caractere Text Message – controale de tip mesaje Text Box – controale cu mesaje pe mai multe randuri Command Button – butoane de comanda (cu o pozitie) Toggle Button – butoane ce se apasa cu doua pozitii (on-off) LED – controale de tip LED Binary Switch – controale de tip comutator (on-off) Ring – selectoare de optiuni multiple List Box – o lista cu mai multe linii cu indexi Decoration – controale de decor Graph – contoale de tip grafic Picture – controale in care pot fi incluse imagini Timer – controale ce au asociate intervale de timp Canvas – o suprafata de desenare in care pot fi afisate texte, forme si imagini bitmap

Dimensiunile si pozitia panelului

Titlul panelului

Page 27: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 27/140  

 

Un program poate sa realizeze dinamic aparitia/disparitia, redimensionarea, miscarea, schimbarea infatisarii acestor controale. Descierea detaliata a categoriilor de controale si proprietatilor asociate se va face in paragrafele urmatoare: cel vizand editorul de interfete si in capitolele de descriere a bibliotecilor mediului.

11..66.. EEddiittoorruull ddee iinntteerrffeeţţee ggrraaffiiccee uuttiilliizzaattoorr Acest editor de interfete utilizator este activat din fereastra proiect daca se alege la optiunea New sau Open din File varianta User Interface (.uir)

Buton pentru operarea obiectelor editate in ecran. Cu acest buton apasat in partea dreapta a barei sunt indicate evenimentele care apar la manipularea controlului

Butonul apasat indica modul de lucru editare

Butonul apasat per-mite modificarea etichetelor obiectelor

Butonul apasat permite colora-rea obiectelor

Page 28: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 28/140  

 

1.6.1. Optiunea File din fereastra de editare UIR

1.6.2. Optiunea Create a editorului de interfete In figurile urmatoare sunt prezentate diferitele tipuri de instrumente asociate controalelor mediului de dezvoltare aplicatie.

Creare paneluri

Creare bara de 

Creare diferite tipuri de controale

Numeric – controale ce contin valori numerice String – controale de tip siruri de caractere Text Message – controale de tip mesaje Text Box – controale cu mesaje pe mai multe randuri Command Button – butoane de comanda (cu o pozitie) Toggle Button – butoane ce se apasa cu doua pozitii (on-off) LED – controale de tip LED Binary Switch – controale de tip comutator (on-off) Ring – selectoare de otiuni multiple List Box – o lista cu mai multe linii cu indexi Decoration – controale de decor Graph – contoale de tip grafic Picture – controale in care pot fi incluse imagini Timer – controale ce au asociate intervale de timp Canvas – o suprafata de desenare in care pot fi afisate texte, forme si imagini bitmap

Acces la functiile de creare, deschidere, salvare, salvare sub alt nume, inchidere, adaugare la proiect, tiparire sau modificare a atributelor (Read Only) a fisierelor de tip UIR.

Elementele principale ale unei interfete utilizator sunt: Panelul – o fereastra, amplasata in ecran Controlul – un obiect functional amplasat in panel Bara de meniu – o bara ce contine chei de acces catre ecranele utilizator ale aplicatiei

Page 29: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 29/140  

 

Page 30: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 30/140  

 

Page 31: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 31/140  

 

1.6.3. Crearea si editarea Panelurilor

Page 32: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 32/140  

 

1.6.4. Crearea si editarea Barei de meniuri

1.6.5. Optiunea Edit a editorului de interfete

Introduce un nou element in meniu cu numele precizat la Item (ex. File) Optiune meniu principala sau subordonata - se face prin butoanele >>> <<< Separatorul dintre zonele de submenuiri (pentru grupare pe categorii)       Butoane care     asigura facilitatile    de editare 

Optiuni de tip editare de tip Windows pentru controale

Copierea sau stergerea unui panel

Undo/Redo ultima operatie facuta asupra unui control sau l

Optiunile de editare ale barei de meniu sau ale unui panel sau control

Page 33: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 33/140  

 

1.6.6. Atributele de editare ale diferitelor categorii de controale

CCoonnttrrooll NNuummeerriicc

Page 34: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 34/140  

 

Command button 

String

Text message

Text box

Page 35: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 35/140  

 

Ring

Toggle button

LED

Binary switch

Page 36: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 36/140  

 

Picture

Graph-Strip chart

Decoration

List box

Page 37: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 37/140  

 

Timer

Canvas

Stabileste ordinea controalelor din ecran – ordine in care ele sunt activate la apasarea tastei Tab sau Shift Tab

Page 38: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 38/140  

 

1.6.7. Optiunea View a editorului de interfete

Modificarea tipului unui control cu unul din aceeasi categorie

Cauta un obiect intr-o interfata UIR

Ascunde sau face vizibile interfete 

Aduce panelul deasupra Trece in panelul urmator Aduce panelul precedent 

Page 39: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 39/140  

 

1.6.7. Optiunea Arrange a editorului de interfete Realizeaza: - alinierea controalelor din ecran, - distribuirea lor - pozitionarea si dimensionarea lor conform criteriilor precizate

Alinierea

Distribuirea

Pozitionarea

Dimensionarea

Page 40: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 40/140  

 

1.6.8. Optiunea Code a editorului de interfete Realizeaza: - Generarea directa a codului cu pozitionarea acestuia in rutina dorita

Pregateste tinta unde se va instala rutina ce se va genera

Page 41: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 41/140  

 

Optiunile Run, Library si Windows asigura aceleasi conexiuni cu cele cu nume similar din ferestrele proiect sau sursa.

1.6.9. Optiunea Options a editorului de interfete

 Operate Visible Panels asigura manevrarea in panelul incarcat – genereaza succesiunea de evenimente prin actionarea controalelor dinamice din ecran. Next Tool transfera accesul pe unealta urmatoare (operare – editare – suprasciere – colorare)

Assign Missing Constants denumeste automat constantele nedeclarate din interfata. Save in Text Format asigura un format condensat de tip text (cu extensia .tui) care stocheaza toate informatiile despre interfata Load From Text Format permite refacerea unei interfete salvate in format text.

Preferences – diferite optiuni de editare a interfetelor conform denumirii

Page 42: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 42/140  

 

2. Mediul de dezvoltare aplicaţie LabWindows CVI. Interfete si controale Pe scurt despre implementarea limbajul C in Labwindows/CVI # include <rs232.h> # include <stdlib.h> introducerea apelului care functiile de biblioteca # include <utility.h> # include "panel.h" - introducerea apelului care uir-ul panel //un comentariu poate fi inceput cu // pe randul in curs sau o secventa intre /* si */ //spatiile pot fi introduse oriunde intre denumiri //variabilele trebuie declarate int ceas; // variabilele pot fi de tip unsigned char, char, unsigned short int, short int, // unsigned int, int, long int, float, doubles // variabilele pot fi globale ( nu se scrie nimic in fata), pot fi statice la nivel de modul (caz in care se pune static int ceas;) pot fi locale (daca sunt declarate intr-o subrutina) // pot exista bufere char buff[100]; // structura unei subrutine care returneaza un parametru de tip int si are doi parametrii de intrare int nume (int par1, char par2) { …. instructiuni…. return valoare_int; } // structura unei subrutine care nu returneaza nimic si are un parametru void nume (float par3) { …. instructiuni…. } // structura unei subrutine care nu returneaza nimic si nu are parametrii void nume (void) { …. instructiuni…. } // o subrutina se apeleaza prin valoare_retur=nume_rutina(par1,…parn);//daca are n parametrii de intrare si unul de retur nume_rutina(); // daca nu are parametrii de intrare si nici de retur // o instructiune se termina cu ; // instructiuni de atribuire i = 10; // variabila i preia valoarea 10; i = i+2; // varabila i ia valoarea anterioara a variabilei I +2 // instructiuni de calcul i = alfa+beta*2/gama-5; // i se calculeaza din varabilele alfa si beta si gama

Page 43: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 43/140  

 

// evaluarea conditiilor if (i = =3) … // daca i este 3 if (alfa = = 5 && beta < 7) // daca alfa este 5 si beta este mai mic ca 7 if (gama > 9 | | (alfa <= 7 && beta >= 10) // sau gama este mai mare ca 9 sau // alfa e mai mic sau egal cu 7 si in acelasi timp beta este mai mare sau egal cu 10 // conditionari pe biti if ( octet1 & octet 2 = = 0x55) // octet1 si 2 sunt unsigned char, se face si pe bit si // se compara cu numarul hexa 55 if ( octet1 | octet 2 = = 0x01) // octet1 si 2 sunt unsigned char, se face sau pe bit si // se compara cu numarul hexa 01 if ( octet1 ^ octet 2 = = 0xff) // octet1 si 2 sunt unsigned char, se face sau exclusiv pe bit // si se compara cu numarul hexa ff

Conceptul Function Panel (panou de functie) - Exista intefete special contruite denumite Function Panel ce descriu fiecare functie. - in interiorul unei interfete apelate prin Function Panel:

Zona de butoane (prin copac se poate naviga catre alte functii)

- Zona unde se prezinta parametri functiei. - Operatorul poate opera direct in casute. - Cand sunt mai multe variabile posibile prin click stanga pe mouse in casuta se deschide o lista cu optiunile posibile. - tastand Shift+F1 se face descrierea functiei Tastand F1cand cursorul este pe un parametru se

obtin informatii despre parametrul respectiv

In partea de jos programul completeaza automat sintaxa functiei

Inserare functie

Declarare variabile

Page 44: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 44/140  

 

- In programul sursa pe un rand ce contine o functie de biblioteca se intra direct in Function Panel prin comanda Ctrl +P - dupa completarea unei functii pe la meniu prin Code -> Set Target File (Ctrl + F) se poate pregati modulul din program unde se doreste a se introduce functia - se pozitioneaza mouse-un in program pe pozitia unde se vrea inserare - pe la meniu prin Code -> Insert Function Call (Ctrl + I) se poate introduce direct functia pregatita in program - daca se pleaca din program de la o functie cu (Ctrl+P) comanda de inserare cere intai o precizare se inlocuieste functia anterioara (replace) sau se insereaza in plus noua functie (in randul urmator instructiunii de la care s-a plecat).

22..11.. GGeenneerraarraarreeaa pprrooggrraammuulluuii ddee aapplliiccaaţţiiee uuttiilliizzâânndd ffuunnccţţiiiillee ssppeecciiffiiccee iinntteerrffeeţţeelloorr uuttiilliizzaattoorr 2.1.1. Functii atasate panelurilor  Un panel poate fi creat utilizand editorul de interfete utilizator. Rezultatul este fisierul de tip .uir care pentru utilizare in programul de aplicatie trebuie incarcat. Exista cateva functii principale utilizate in lucrul cu panelurile: • Cu functia Load Panel un panel creat cu editorul de resurse se incarca in memorie. Aceasta

instructiune refera panelul creat prin numele panelulul (constant name). In urma incarcarii Load Panel returneaza un handle pe care ulterior utilizatorul il foloseste in program cand se refera la panelul in cauza. Primul parametru al functiei Load Panel specifica daca acest panel este in fereastra de cel mai inalt nivel sau este un “copil” al altui panel incarcat. Observatie: Incarcarea unui panel nu duce si la afisarea sa.

• Utilizand functia New Panel se poate crea un nou panel direct in timpul executiei. Acelasi mecanism cu handle si cu panel parinte-fiu.

• Duplicate Panel creaza un nou panel care este duplicat al unui panel incaracat cu Load Panel sau creat cu New Panel

• Display Panel este functia care afiseaza un panel incarcat anterior si activeaza optiunile de operare din acesta.

• Hide Panel ascunde un panou (il face invizibil). Cand un panel este ascuns el poate fi actualizat (de exemplu completat un grafic in interiorul sau) dar el nu poate genera evenimente.

Trebuie precizat numele panelului, pozitia si dimensiunea in parametrii functiei.

Panelul nu se afiseaza automat.

Page 45: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 45/140  

 

• Default Panel restaureaza toate controalele din panel la valoarea lor implicita. • GetActivePanel returneaza handle-ul panelului activ • SetActivePanel seteaza un panel activ intre panelurile vizibile • GetPanelAttribute este utilizata pentru obtinerea atributelor curente ale unui panel • SetPanelAttribute este utilizata pentru setarea unui atribut al unui panel • SetPanelPos modifica pozitia panelurilor pe ecran. Daca panelul e vizibil el este redesenat

pe o noua positie • SavePanelState salveaza starea unui panel intr-un fisier pe disc. Instructiunea salveaza

sytarea fiecrul control din panel • RecallPanelState restaureaza starea salvata din fisier in memorie • DiscardPanel sterge un panel din memorie> Daca panelul e vizibil ele este scos de pe

ecran. Una din functiile importante este acea de setare de atribute. Practic prin multimea de

atribute posibile se efectueaza toate operatiile de constructie, dimensionare, culoare.

Atributele de panel se pot grupa in patru

Page 46: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 46/140  

 

2.1.2. Functii pop-up panel Un panou pop-up este un panel incarcat deasupra tuturor celorlalte paneluri in

momentul instalarii si care are atributele de panel activ. Se utilizeaza in special pentru afisarea de mesaje interactive (eventual confirmate de utilizator). Un panou se poate crea cu LoadPanel sau NewPanel. Dar utilizand functia InstallPopup pentru a afisa si activa un panel ca o casuta de dialog. Dupa ce un pop-up panel este instalat utilizatorul poate opera doar in panelul pop-up. Se utilizeaza callback functions (paragraful 2.2.) pentru a procesa orice fel de eveniment sau GetUserEvent pentru procesarea evenimentelor de tip commit. Functia GetUserEvent returneaza indicatorul controlului care a produs evenimentul. Aceasta functie poate lucra in doua moduri: - sa astepte dupa utilizator sa genereze evenimetul inainte de revenirea din program - sa returneze imediat indiferent daca evenimetul s-a produs sau nu. Functia RemovePopup sterge panelul pop-up activ sau toate panelurile pop-up (depinzand de parametrii de apel) Functiile SetSystemPopupAttributes si GetSystemPopupAttribute seteaza sau returneaza valorile atributelor care afecteaza toate panelurile pop-up. Exista cateva paneluri pop-up predefinite ce se pot incarca utilizand functiile: ConfirmPopup – afiseaza un mesaj e selectie asteptand din partea operatorului confirmarea sau infirmarea acestuia DirSelectPopup - afiseaza o cutie de selectie fisiere si asteapta ca operatorul sa selecteze un directorul dorit FileSelectPopup – afiseaza o cutie de selectie fisiere si asteapta ca operatorul sa selecteze un fisierul dorit GenericMessagePopup - afiseaza intr-o cutie de dialog un mesaj predefinit al operatorului si accepta un raspuns sub forma unui sir MessagePopup - afiseaza intr-o cutie de dialog un mesaj predefinit al operatorului si asteapta ca operatorul sa-l confirma MultifileSelectPopup – afiseaza o cutie de dialog cu mai multe fisiere si astapta din partea operatorului sa selecteze un set de fisiere PromptPopup – afiseaza un mesaj de solicitare asteptand raspunsul opeartorului SetFontPopupDefaults – stabileste setul de fonturi predefinite pentru functiile pop-up WaveformGraphPopup – tipareste o forma de unda intr-o cutie de dialog XGraphPopup – tipareste un sir de valori pe axa x-ilor indicii fiind ordonatele punctelor YGraphPopup– tipareste un sir de valori pe axa y-ilor indicii fiind abscisele punctelor XYGraphPopup – tipareste perechi de valori x,y intr-o cutie de valori.

Un exeplu de apel pentru File Select Popup 

Page 47: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 47/140  

 

22..22.. CCoonnttrroollaarreeaa iinntteerrffeeţţeeii pprriinn eevveenniimmeennttee şşii rruuttiinnee ddee îînnttrreerruuppeerree Functiile Callback raspund la evenimentele generate. Aceste functii au prototipuri (definte in userint.h) pentru: ♦ paneluri, ♦ meniuri, ♦ controale sau ♦ functia principala (main callback).

Cand utilizatorul genereaza un eveniment actionand asupra unui obiect dintr-o interfata particulara, rutina callback corespunzatoare se executa. Evenimentele de tip idle si cele de sfarsit de task sunt singurele care sunt pasate numai la functia main callback. Detectarea unui eveniment produce transferul executiei catre secventa de program atasata. Ca un dezvoltator de programe utilizator poate face ce doreste cu informatia provenita ca raspuns la un eveniment.

In continuare se prezinta prototipurile functiilor callback pentru diferite elemente componente ale aplicatiei CVI:

Callback Function pentru un Panel int CVICALLBACK PanelResponse (int handle, int event, void *callbackdata, int eventdata1, int eventdata2) { switch (event) { case EVENT_PANEL_SIZE : …. /* ce se intampla cand se redimensioneaza panelul */ break; case EVENT_PANEL_MOVE : …. /* ce se intampla cand se muta panelul */ break; case EVENT_KEYPRESS : …. /* ce se intampla la keypress */ /* eventdata1 si eventdata2 contine informatiile keycode */ break; } return(0); }

Callback Function pentru un Control int CVICALLBACK ControlResponse (int handle, int control, int event, void *callbackdata, int eventdata1, int eventdata2) { if (control == PANEL_CONTROL1) { switch (event) {case EVENT_RIGHT_CLICK : …. /* Ce se executa cand se face click dreapta pe CONTROL1 */ break; case EVENT_VAL_CHANGED : …. /* Ce se executa cand se modifica o valoare din CONTROL1*/ break; case EVENT_COMMIT : …. /* Ce se executa cand se comite un eveniment in CONTROL1 */ break; } } if (control == PANEL_CONTROL2)

Page 48: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 48/140  

 

{ switch (event) {case EVENT_RIGHT_CLICK : …. /* Ce se executa cand se face click dreapta pe CONTROL2 */ break; case EVENT_COMMIT : …. /* Ce se executa cand se comite un eveniment in CONTROL2 */ break; } } return(0); }

Callback Function pentru un Meniu int CVICALLBACK MenuBarResponse (int menubar, int menuitem, void *callbackdata, int panel) { switch (menuitem) { case MENUBAR_MENU1_ITEM1: …. /* Ce se intampla la ITEM1 din MENU1 */ break; case MENUBAR_MENU1_ITEM2: …. /* Ce se intampla la ITEM1 din MENU2 */ break; } return(0); }

rutina main cu instalarea rutinei main callback void main(void) { … instructiuni… xxx = InstallMainCallback (rutina_distribuitor, NULL, 1); ver = SetIdleEventRate (150); RunUserInterface (); }

rutina main callback int rutina_distribuitor(int pan,int ctrl,int event,void *cbD,int e1,int e2) { if (event == EVENT_IDLE) { … instructiuni } return(0); } In cazul producerii unui eveniment rutinele callback sunt apelate in urmatoarea ordine: Pentru evenimentele asociate controalelor 1. Control callback 2. Panel callback (keypress and mouse events only) 3. Main callback Pentru evenimentele asociate panelurilo 1. Panel callback 2. Main callback

Page 49: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 49/140  

 

Pentru evenimentele asociate meniurilor 1. Menu item callback 2. Main callback Pentru evenimenteke asiociate timer-elor 1. Control callback Pentru evenimentul de expirare a idle rate-ului la main callback

1. Main Callback Lista de evenimente reprezentata sub forma:

Tip eveniment Denumire de apel Carui element i se adreseaza

Page 50: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 50/140  

 

Functiile callback pot apare drept functii predefinite la nivelul aplicatiei fiind editate prin editorul de interfete la generarea controlului (casuta Callback function).

 Exista  posibilitatea alocarii dinamice a acestor  functii callback prin urmatoarele functii (din denumire se vede apartenta): 

Modul in care evenimentele influenteaza apelurile functiilor callback

Page 51: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 51/140  

 

22..33.. GGeenneerraarraarreeaa pprrooggrraammuulluuii ddee aapplliiccaaţţiiee uuttiilliizzâânndd ffuunnccţţiiiillee ssppeecciiffiiccee ccoonnttrrooaalleelloorr 2.3.1. Functii de control utilizate pentru toate controalele Controalele asociate unui panel se incarca in memorie la incarcarea panelului. Fiecarul control ii este asociat un identificator (constant name). Controlul poate fi referit in program prin numele de identificare al panelului + liniuta jos + identificatorul controlului. Setul de functii cuprinse in categoria mai sus numita permite: • NewCtrl crearea unui nou control trebuind a se specifica numele, tipul controlului si

pozitia pe ecan. In imaginea urmatoare se prezinta toate tipurile de controale ce se pot apela prin aceasta functie

Page 52: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 52/140  

 

• DuplicateCtrl creaza un nou control duplicat dupa unul existent dar in alt panel (ce

trebuie precizat) • Prin SetCtrlVal se atribuie o valoare particulara controlului. Pentru Graph si Strip

Chart nu este valabil 9acolo e ceva mai complicat) • Prin GetCtrlVal se preia valoarea curenta din control. Pentru Graph si Strip Chart nu

este valabil 9acolo e ceva mai complicat) • GetActiveCtrl lucreaza pentru a obtine valori de evenimente de la tastatura daca

panelul in cauza este activ • SetActiveCtrl stabilestec controlul activ • DefaultCtrl restaureaza un control la valorile sale implicite date in interfata utilizator • GetCtrlBoundingRect este utilizata pentru a obtine marginile sus, stanga, inaltine si

latimea controlului considerat un dreptunghi precum si eticheta acestuia • Prin GetCtrlAttribute se obtin atribute particulare ale controlalelor • Prin SetCtrlAttribute se atribuie un anumit atribut controlului • DiscardCtrl este functia ce scoate controlul din memorie. Daca panelul este vizibil

acest control este sters de pe ecran. Lista atributelor aferente controalelor este deosebit de vasta (este poate cea mai mare ramura a bibliotecii User Interface Library). Se prezinta in continuare un apel catre aceasta biblioteca si apoi lista atributelor in functie de toate tipurile de controale.

Page 53: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 53/140  

 

Denumire Tipul

returnat Descriere

Pentru toate controalele ATTR_CALLBACK_DATA void* Un pointer la datele utilzatorului care ii este transmis

functiei callback pentru panel ATTR_CALLBACK_FUNCTION_POINTER

void* Un pointer la functia callback a controlului

ATTR_CALLBACK_NAME char* Numele functiei callback asociata controlului (doar GetCtrlAttribute)

ATTR_CALLBACK_NAME_LENGTH

int Numarul de caractere din numele functiei callback asociata controlului (doar GetCtrlAttribute)

ATTR_CONSTANT_NAME char * Numele constant asociat controlului in fisierul .uir creat cu User Interface Editor ( doar GetCtrlAttribute ).

ATTR_CONSTANT_NAME_LENGTH

int Numarul de caractere din numele constant asociat controlului (doar GetCtrlAttribute)

ATTR_CTRL_STYLE int Stilul controlului (vezi tabelul 3-10) ATTR_DIMMED int 1=control dezactivat

0=control activat ATTR_LEFT int De la -32768 la 32767 ATTR_NEXT_CTRL int Urmatorul control din interfata ( doar GetCtrlAttribute

). ATTR_OVERLAPPED int Indica daca controlul este acoperit de alt control ATTR_TOP int De la -32768 la 32767 ATTR_VISIBLE int 1=controlul e vizibil

0=controlul e invizibil ATTR_WIDTH int De la 0 la 32767 ATTR_ZPLANE_POSITION int Ordinea controalelor in planul z. cele pt care valoarea

e 0 sunt in fata. Se aplica tuturor controalelor cu exceptia stringurilor simple, controalelor numerice simple si ringurilor simple. ATTR_HEIGHT int De la 0 la 32767 - oentru toate controalelor cu

exceptia celor de tip indicator (decoratii, grafice, mesaje text, timere si imagini)

ATTR_CTRL_MODE int VAL_HOT sau VAL_NORMAL sau VAL_VALIDATE sau VAL_INDICATOR

ATTR_CTRL_TAB_POSITION int Ordinea la tab a controalelor pentru toate controalele cu exceptia decoratiilor, canvasurilor, graficelor si “strip-charts” ATTR_CTRL_VAL Aceeasi ca

si tipul controlului

Aceeasi functionalitate ca si GetCtrlVal si SetCtrlVal

ATTR_FRAME_COLOR int Valoarea RGB Pentru toate controalele cu etichete cu exceptia decoratiilor si mesajelor text ATTR_LABEL_BOLD int 1 =eticheta boldata

0=eticheta neboldata ATTR_LABEL_COLOR int Valoarea RGB ATTR_LABEL_FONT char* Fontul etichetei controlului ATTR_LABEL_FONT_NAME_LENGTH

int Numarul de caractere din numele fontului etichetei (doar GetCtrlAttribute)

ATTR_LABEL_ITALIC int 1= eticheta e italic 0=eticheta nu e italic

ATTR_LABEL_POINT_SIZE int Marimea in puncte a etichetei. Domeniul de la 1 la

Page 54: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 54/140  

 

Denumire Tipul returnat

Descriere

32767 ATTR_LABEL_STRIKEOUT int 1=eticheta e strikeout

0=eticheta nu e strikeout ATTR_LABEL_TEXT char* Eticheta controlului ATTR_LABEL_TEXT_LENGTH int Numarul de caractere al etichetei controlului (doar

GetCtrlAttribute) ATTR_LABEL_UNDERLINE int 1=eticheta e subliniata

0=eticheta nu e subliniata ATTR_LABEL_VISIBLE int 1=eticheta e vizibila

0=eticheta nu e vizibila

Pentru toate controalele care au etichete cu exceptia butoanelor de comanda “non-picture” ATTR_LABEL_BGCOLOR int Culoarea fondului etichetei, data ca valoare RGB ATTR_LABEL_HEIGHT int Inaltimea etichetei, in intervalul 0 .. 32767.

ATTR_LABEL_JUSTIFY

int VAL_LEFT_JUSTIFIED VAL_RIGHT_JUSTIFIED VAL_CENTER_JUSTIFIED

ATTR_LABEL_LEFT int Pozitia la stanga a etichetei, in domeniul -32768..32767 sau se foloseste valoarea VAL_AUTO_CENTER.

ATTR_LABEL_RAISED

int 1=eticheta e dimensionata 0=eticheta nu e dimensionata

ATTR_LABEL_SIZE_TO_TEXT int 1=marginea etichetei e restrictionata de marimea textului 0=marginea etichetei nu e restrictionata de marimea textului

ATTR_LABEL_TOP int Pozitia fata de top a etichetei, in intervalul -32768 .. 32767 sau se foloseste una din valorile VAL_AUTO_CENTER sau VAL_RIGHT_ANCHOR sau VAL_LEFT_ANCHOR

ATTR_LABEL_WIDTH int int Latimea etichetei, in domeniul 0..32767. Pentru toate controalele cu text cu exceptia graficelor si graficelor curgatoare (strip chart) ATTR_TEXT_BOLD

int 1= textul e bold 0=textul nu e bold

ATTR_TEXT_COLOR

int Valoarea RGB

ATTR_TEXT_FONT

char* Fontul textului

Pentru toate controalele cu text cu exceptia graficelor si graficelor curgatoare (strip chart) ATTR_TEXT_FONT_NAME_LENGTH

int Numarul de caractere din numele fontului aplicat textului (doar GetCtrlAttribute)

ATTR_TEXT_ITALIC

int 1=textul e italic 0=textul nu e italic

ATTR_TEXT_POINT_SIZE int Pozitia textului in intervalul 1..32767 ATTR_TEXT_STRIKEOUT

int 1= textul e strikeout 0= textul nu e strikeout

ATTR_TEXT_UNDERLINE int 1=textul e subliniat 0=textul nu e subliniat

Page 55: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 55/140  

 

Denumire Tipul returnat

Descriere

Pentru toate controalele cu text cu exceptia graficelor, charturilor fasie, ringurilor, comutatoarelor si butoanelor text. ATTR_TEXT_BGCOLOR int Valoare RGB.

Pentru toate controalele cu text cu exceptia graficelor, charturilor fasie, ringurilor glisante, ringurilor pop-up, comutatoarelor si butoanelor text. ATTR_TEXT_JUSTIFY

int VAL_LEFT_JUSTIFIED sau VAL_RIGHT_JUSTIFIED sau VAL_CENTER_JUSTIFIED

ATTR_DATA_TYPE

int Vezi tabelul 3-11

Pentru controalele cu valoare/eticheta (sliduri, ringuri, comutatoare, listbox-uri) ATTR_CTRL_INDEX int 0..32767 ATTR_DFLT_INDEX int 0..32767 ATTR_CHECK_RANGE int VAL_COERCE sau VAL_IGNORE sau VAL_NOTIFY ATTR_DFLT_VALUE

La fel ca si tipul controlului

Valoarea implicita a controlului

ATTR_FORMAT

int Lista tipurilor de date ale controalelor care corespund atributului ATTR_DATA_TYPE : VAL_CHAR VAL_INTEGER VAL_SHORT_INTEGER VAL_FLOAT VAL_DOUBLE VAL_STRING VAL_UNSIGNED_SHORT_INTEGER VAL_UNSIGNED_INTEGER VAL_UNSIGNED_CHAR Intai se seteaza atributul ATTR_DATA_TYPE inainte de a seta orice valoare a atributelor ATTR_CTRL_VAL, ATTR_MAX_VALUE, ATTR_MIN_VALUE, etc.

ATTR_INCR_VALUE

La fel ca si tipul controlului

Incrementeaza valorile pentru sagetile INC/DEC ale controlului.

. ATTR_MAX_VALUE

La fel ca si tipul controlului

Valoarea maxima a controlului

ATTR_MIN_VALUE

La fel ca si tipul controlului

Valoarea minima a controlului

ATTR_PRECISION int Precizia numerica ( de la 0 la 15)

Page 56: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 56/140  

 

Denumire Tipul returnat

Descriere

ATTR_NSCROLL_OFFSET_MAX

int Maximul offsetului pentru bara de defilare orizontala in pixeli, in intervalul 0..32767.

ATTR_SHOW_RADIX int 1=se arata raza 0=nu se arata raza

Pentru picture-uri si ringuri glisante si numerice ATTR_SHOW_INCDEC_ ARROWS

int 1=sagetile INC/DEC sunt vizibile 0=sagetile INC/DEC nu sunt vizibile

Pentru stringuri si textboxuri ATTR_MAX_ENTRY_ LENGTH

int Maximul caracterelor #; -1 inseamna nici o limitare

ATTR_TEXT_SELECTION_ LENGTH

int De la 0 la 32767

ATTR_TEXT_SELECTION_ START

int De la 0 la 32767

Pentru mesaje text, stringuri si textboxuri ATTR_STRING_TEXT_ LENGTH

int De la 0 la 32767 (doar GetCtrlAttribute).

ATTR_ENTER_IS_NEWLINE

int Tasta <Enter> genereaza o noua linie, altfel se foloseste <Ctrl-End>. 1=<Enter> pentru linie noue 0=<Ctrl-Enter> pentru linie noua

ATTR_EXTRA_LINES

int Numarul de linii retinute off-screen (0..32767) -1=numar nelimitat de linii retinute off-screen

ATTR_HSCROLL_OFFSET int Offsetul pentru bara de defilare orizontala; domeniul=0..32767 pixeli

ATTR_TOTAL_LINES

int Numarul de linii folosite (doar GetCtrlAttribute).

ATTR_WRAP_MODE int VAL_CHAR_WRAP sau VAL_LINE_WRAP sau VAL_WORD_WRAP

Pentru textboxuri si listboxuri ATTR_FIRST_VISIBLE_LINE

int Indexul primei linii vizibile, incepand de la 0.

ATTR_SCROLL_BAR_ COLOR

int Orice valoare valida pentru RGB

ATTR_SCROLL_BAR_SIZE

int VAL_SMALL_SCROLL_BARS sau VAL_LARGE_SCROLL_BARS

ATTR_SCROLL_BARS

int VAL_NO_SCROLL_BARS sau VAL_HORIZ_SCROLL_BAR sau VAL_VERT_SCROLL_BAR sau VAL_BOTH_SCROLL_BARS (Barele de defilare orizontale nu sunt valide pentru listboxuri)

ATTR_VISIBLE_LINES

int Numarul liniilor vizibile (0..32767)

ATTR_TEXT_CLICK_ TOGGLES_CHECK

int 1=efectuarea unui click pe zona text pozitioneaza marcajul 1=efectuarea unui click pe zona text nu pozitioneaza

Page 57: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 57/140  

 

Denumire Tipul returnat

Descriere

marcajul Pentru listboxuri ATTR_ALLOW_ROOM_FOR_IMAGES

int Specifica daca la calcularea inaltimii unui listbox se considera ca eticheta uneia sau mai multor listbox ar putea contine o imagine. In mod normal, calculul inaltimii unui listbox ia in considerare inaltimea imaginii doar daca in lista curenat se afla o imagine. Pentru a va asigura ca inaltimea listei ia in considerare inaltimea unei imagini, se seteaza acest atribut la TRUE(1).

ATTR_CHECK_MODE

int 1=activeaza bifarea 0=dezactiveaza bifarea

ATTR_CHECK_STYLE

int VAL_CHECK_MARK sau VAL_CHECK_BOX

ATTR_HILITE_CURRENT_ ITEM

int Specifica daca se evidentiaza itemul selectat dintr-un listbox. (evidentierea se face folosind culori complementare cand lista e activa, intrerupt cand e inactiva)

ATTR_TEXT_CLICK_ TOGGLES_CHECK

int 1=efectuarea unui click pe zona de text marcheaza bifajul 0=efectuarea unui click pe zona de text nu marcheaza bifajul

Pentru stringuri, contraole numerice si textboxuri ATTR_NO_EDIT_TEXT int 1=permite editarea textului

0=nu permite editarea textului Pentru mesaje text ATTR_TEXT_RAISED int 1=textul e dimensionat

0=textul nu e dimensionat ATTR_SIZE_TO_TEXT int

int 1=conturul mesajului e restrictionat la dimensiunea textului 0=conturul mesajului nu e restrictionat la dimensiunea textului

Pentru butoane de comanda ATTR_CMD_BUTTON_COLOR int Valoarea RGB. ATTR_SHORTCUT_KEY

int VAL_SHIFT_MODIFIER | VAL_F1_VKEY produce o prescurtare pentru <Shift-F1>, iar VAL_MENUKEY_MODIFIER | 'D' produce o scurtatura pentru <Ctrl-D>.

Pentru comutatoare ATTR_BINARY_SWITCH_COLOR .

int Valoarea RGB.

ATTR_OFF_VALUE La fel ca si tipul controlului

Valoarea controlului cand e in starea OFF.

ATTR_OFF_VALUE_LENGTH

int Doar daca e valoare de tip string (doar GetCtrlAttribute)

ATTR_ON_VALUE

La fel ca si tipul controlului

Valoarea controlului cand e ON.

ATTR_ON_VALUE_LENGTH int Doar daca e valoare de tip string (doar

Page 58: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 58/140  

 

Denumire Tipul returnat

Descriere

GetCtrlAttribute) Pentru LED-uri si butoane, cu exceptia butoanelor de comanda ATTR_OFF_COLOR int Valoarea RGB ATTR_ON_COLOR int Valoarea RGB Pentru butoane text si comutatoare ATTR_OFF_TEXT

char* Text afisat in pozitia OFF.

ATTR_OFF_TEXT_LENGTH int Numarul de caractere din textul AFISAT IN POZITIA OFF (doar GetCtrlAttribute)

ATTR_ON_TEXT

char * Text afisat in pozitia ON

ATTR_ON_TEXT_LENGTH

int Numarul de caractere al textului afisat in pozitia ON (doar GetCtrlAttribute)

Pentru controale numerice cu afisari digitale (sliduri, metre, noduri, cadrane, bare) ATTR_DIG_DISP_LEFT

int Pozitia stanga a afisajului digital , domeniul -32768 .. 32767.

ATTR_DIG_DISP_TOP

int Pozitia fata de top a afisajului digital, domeniul -32768 .. 32767.

ATTR_DIG_DISP_HEIGHT

int Inaltimea afisajului digital, domeniul 0.. 32767.

ATTR_DIG_DISP_WIDTH int Latimea afisajului digital, domeniul 0.. 32767. ATTR_SHOW_DIG_DISP int 1=se afiseaza afisajul digital

0=se ascunde afisajul digital

Pentru ringuri glisante si controale numerice, noduri, metre,cadrane, bare. ATTR_FILL_COLOR

int Valoare RGB.

ATTR_MARKER_STYLE

int VAL_NO_MARKERS sau VAL_NO_INNER_MARKERS sau VAL_FULL_MARKERS

ATTR_NEEDLE_COLOR int Valoarea RGB. ATTR_SLIDER_COLOR int Valoarea RGB. ATTR_TICK_STYLE int VAL_NO_TICKS sau VAL_NO_MINOR_TICKS sau

VAL_FULL_TICKS

Pentru controale numerice si ringuri glisante. ATTR_FILL_HOUSING_COLOR int Valoarea RGB. ATTR_FILL_OPTION

int VAL_NO_FILL, VAL_TOP_FILL, VAL_BOTTOM_FILL, VAL_RIGHT_FILL, sau VAL_LEFT_FILL

ATTR_SLIDER_HEIGHT

int 0 .. 32767

ATTR_SLIDER_WIDTH int 0 .. 32767 Pentru controale numerice si ringuri, bare, noduri, cadrane ATTR_MARKER_END_ANGLE

int 0..359

ATTR_MARKER_START_ANGLE

int 0..359

ATTR_SHOW_MORE_BUTTON

int 1/0=afiseaza/nu afiseaza butonul MORE in pop-up-ul numeric color

ATTR_SHOW_ TRANSPARENT

int 1/0=afiseaza/nu afiseaza iconul transparent in pop-up-ul numeric color

Page 59: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 59/140  

 

Denumire Tipul returnat

Descriere

Pentru ringuri meniu. ATTR_MENU_ARROW_COLOR int Valoarea RGB. Pentru timere. ATTR_INTERVAL

double Intervalul la care functia callback va fi apelata.(in secunde)

ATTR_ENABLED

int 0= callback-ul pt timer e dezactivat 1= callback-ul pt timer e activat

Pentru controale picture, ringuri si butoane ATTR_FIT_MODE

int VAL_SIZE_TO_IMAGE sau VAL_SIZE_TO_PICTURE sau VAL_PICT_CORNER sau VAL_PICT_CENTER sau VAL_PICT_TILE

Pentru picture-uri si ringuri ATTR_FRAME_VISIBLE

int 1=arata cadranul picture-ului 0=ascunde cadranul picture-ului

Pentru picture, ring, canvas ATTR_PICT_BGCOLOR int Valoarea RGB Pentru butoane picture (comanda si toggle) ATTR_IMAGE_FILE char * Numele fisierului cu imaginea care se incarca in

control. Valoarea NULL inseamna lipsa imaginii. ATTR_IMAGE_FILE_ LENGTH

int Lungimea fisiserului imaginii.

ATTR_SUBIMAGE_HEIGHT int Inaltimea in pixeli a subimaginii. ATTR_SUBIMAGE_TOP int Coordonata top in pixeli a subimaginii. ATTR_SUBIMAGE_LEFT Coordonata in pixeli din stanga a subimaginii. ATTR_SUBIMAGE_WIDTH int Latimea subimaginii in pixeli. ATTR_USE_SUBIMAGE

int 1= activeaza afisarea subimaginilor 0=dezactiveaza afisarea subimaginilor

ATTR_USE_SUBIMAGE

Permite butonului picture sa afiseze o submultime ale imaginilor incarcate. Submultimea de imagini e dimensionata conform butonului folosind urmatoarele atribute:

ATTR_SUBIMAGE_TOP ATTR_SUBIMAGE_LEFT ATTR_SUBIMAGE_WIDTH ATTR_SUBIMAGE_HEIGHT ATTR_SUBIMAGE_TOP si ATTR_SUBIMAGE_LEFT

Definesc offseturile verticale si orizontale in pixeli a imaginilor de pe butonul picture care vor fi afisate relativ la originea bitmapului. Originea subimaginii bitmap (0, 0) este coltul stanga sus al bitmapului.

ATTR_SUBIMAGE_WIDTH si ATTR_SUBIMAGE_HEIGHT

Definesc inaltimea si latimea in pixeli pentru subimaginea afisata.

ATTR_USE_SUBIMAGE

Nu lucreaza cu imagini incarcate din metafisiere Windows (.WMF)

Page 60: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 60/140  

 

2.3.2. Functii de control utilizate pentru controalele de tip lista Listele sunt controale unice deoarece contin un set indexat de perechi eticheta-valoare. Etichetele sunt siruri care apar in ringuri (inele) iar valorile pot fi de orice tip. Functiile aferente listelor sub forma de casute si inele sunt: • Functia InsertListItem adauga un element la lista • DeleteListItem sterge unul sau mai multe elemente din lista • ReplaceListItem inlocuieste intr-o lista data un element • Se utilizeaza GetCtrlVal pentru a obtine valoarea curenta activa dintr-o lista • Se utilizeaza SetCtrlVal pentru a seta o anumita valoare curenta pentru controlul lista • GetCtrlIndex se utilizeaza pentru a determina indexul elementului curent • SetCtrlIndex seteaza lista activa pe un anumit index • Utilizati GetValueFromIndex pentru a obtine valoarea corespunzatoare unui anumit index • GetValueLengthFromIndex pentru a obtine lungimea unui sir dintr-o lista de la un

anumit index • GetIndexFromValue returneaza indexul corespunzator unei anumite valori • GetNumListItems se foloseste pentru a obtine numarul de componente dintr-o lista • GetLabelFromIndex returneaza eticheta corespunzatoare unui anumit index • GetLabelLengthFromIndex returneaza lungimea etichetei corespunzatoare unui anumit

index • ClearListCtrl sterge tot continutul uinei liste Functiile aferente doar listelor sub forma de casute sunt: • SetListItemImage se utilizeaza pentru setarea imaginii asociate unei anumite liste • GetListItemImage se foloseste pentru obtinerea imaginii asociate la o anumita lista • Utilizand IsListItemChecked se determina daca o anumita lista e validata • CheckListItem vaideaza o anumta lista • GetNumCheckedItems determina numarul elementelor valodate dintr-o lista

2.3.3. Functii de control utilizate pentru controalele de tip casuta text Casutele text pot contine un numar finit de linii. Daca numarul de linii inmultit cu naltimea in pixeli a fonturilor depaseste 32767 casuta text namai afiseaza. Pentru caractere de genul NIDialogMetaFont sau NIEditorMetaFont nu se pot inscrie mai mult de 2500 de linii.

Page 61: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 61/140  

 

Functii utile pentru casutele text: • GetCtrlVal se utilizeaza pentru obtinerea textului din casuta • SetCtrlVal se foloseste pentru introducerea unui text intr-o casuta text • InsertTextBoxLine adauga tun text in casuta pe o anumita linie

• DeleteTextBoxLine sterge una sau mai multe linii dint-un text • ReplaceTextBoxLine inlocuieste o linie anumita cu un alt text • GetNumTextBoxLines se utilizeaza pentru a determina numarul de linii din casuta text • GetTextBoxLineLength lungimea unei anumte linii din casuta • GetTextBoxLine obtin parametrii unei linii particulare dintr-un text • ResetTextBox inlocuieste continutul unei anumite linii text.

2.3.4. Functii de control utilizate pentru controalele de tip grafic Se pot crea controlale de tip grafic si grafic curgator prin interfata .uir sau prin intrunctiunea NewCtrl, prin functiile GetCtrlAttribute si SetCtrlAttribute se controleaza atributele graficelor

Page 62: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 62/140  

 

Se mai pot identifica functiile comune pentru grafice si grafice curgatoare • GetAxisRange pentru a obtine scala axelor x si y • SetAxisRange pentru a seta scala controalelor Functii utilizate doar pentru grafice: • PlotArc reprezinta grafic un arc • PlotBitmap reprezinta grafic o imagine de tip bitmap • PlotIntensity sau PlotScaledIntensity pentru trasarea intensitatii culorii unui grafic • PlotLine reprezinta o singura linie • PlotOval traseaza un oval • PlotPoint reprezinta un punct • PlotPolygon reprezinta grafic un dreptunghi • PlotText traseaza un text • PlotWaveform reprezinta o forma de unda stocata intr-o matrice • PlotX reprezinta perechea X si indicele reprezentat pe ordonata • PlotXY reprezinta grupe de puncte XY • PlotY reprezinta perechea Y si indicele reprezentat pe abscisa Daca graficul este vizibil program reprezinta desenul imediat. Alte functii: • DeleteGraphPlot se utilizeaza pentru a sterge o trasare dintr-un graf • GetPlotAttribute preia atributele particulare dintr-un grafic • SetPlotAttribute seteaza atributele particulare dintr-un grafic

Functiile de plotare in general au parametrii multi si destul de diversi. In exemplul prezentat se vad parametrii si optiunile puse la dispozitia utilizatorului pentru selectia - functia PlotXY

Page 63: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 63/140  

 

Pentru controlul cursorului unui grafic: • GetGraphCursor returneaza pozitia curenta a cursorului • SetGraphCursor seteaza pozitia cursorului • GetGraphCursorIndex determina handle-ul graficului trasat (a plot-ului) si matricea

indexata corespunzatoare trasarii pe care se afla cursorul • SetGraphCursorIndex ataseaza cursorul unui anumit punct din grafic • GetActiveGraphCursor obtine cursorul grafic activ curent • SetActiveGraphCursor seteaza cursorul pe un grafic • GetCursorAttribute pentru a obtine atributele unui anumit cirsor • SetCursorAttribute seteaza atributele unui cursor Functi utilizate doar graficele curgatoare • PlotStripChart adauga unul sau mai multe puncte graficelor curgatoare • PlotStripChartPoint adauga un punct unui grafic curgator ce contine exact o trasare

(trace) • ClearStripChart sterge toate punctele dintr-un grafic curgator • GetTraceAttribute obtine atributele unui grafic curgator • SetTraceAttribute seteaza atributele unui grafic curgator.

2.3.5. Functii de control utilizate pentru controalele de tip canvas Canvas-ul se utilizeaza pentru a desena o suprafata arbitrara la proiect. Se pot desena texte, forme si imagini bitmap. Functii pentru desenare in canvas • CanvasDrawPoint deseneaza un punct • CanvasDrawLine deseneaza o linie • CanvasDrawLineTo deseneaza o linie incepand cu pozitia curenta • CanvasDrawRect deseneaza un dreptunghi • CanvasDrawRoundedRect deseneaza un dreptunghi rotunjit la colturi • CanvasDrawOval deseneaza un oval • CanvasDrawArc deseneaza un arc de cerc • CanvasDrawPoly deseneaza un poligon

Page 64: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 64/140  

 

• CanvasDrawText deseneaza un text intr-o arie dreptunghiulara • CanvasDrawTextAtAPoint deseneaza un text intr-un punct ancora • CanvasDrawBitmap deseneaza o imagine bitmap

• CanvasScroll creaza un scroll la o portiune rectangulara • CanvasInvertRect inverseaza culorile intr-o zona rectangulara • CanvasClear restaureaza o zona rectangurala la culoarea de background

2.3.6. Functii de control utilizate pentru barele de meniu Un meniu creat cu editorul de interfete se poate incarca prin functia LoadMenuBar si afisa in panel. La incarcare bara de meniu se refera printr-un nume de constanta data in iterfata. Functia anterior mentionata returneaza un handle care se utilizeaza in functiile de apel ale meniului. Dupa ce un meniu a fost ibcarcat el genereaza un eveniment utilizator atunci cand operatorul acceseaza o anumita comanda din acest meniu. Utilizand prin program NewMenuBar se creaza un meniu dinamic generand un handle. Prin aceasta functie trebuie precizat si carul panel I se adreseaza. Cu functiile NewMenu, NewSubMenu, si NewMenuItem se construieste sistemul de pull down al meniului. Alte functii utilizate: • SetPanelMenuBar pentru asignarea unei bare de meniu unui panel. La un moment dat un

panel poate avea un singur meniu. Mai multe oaneluiri pot avea acelasi meniu. • GetPanelMenuBar determina handle-ul meniului asociat panelului curent • GetSharedMenuBarEventPanel determina handle-ul meniului asociat la mai multe

paneluri • GetMenuBarAttribute obtin atributele un meniu anume • SetMenuBarAttribute seteaza atributele unui meniu • InsertSeparator se utilizeaza pentru a programa o linie de separara intre elementele

meniului • Use NewMenu / DiscardMenu, NewMenuItem / DiscardMenuItem, si NewSubMenu

/ DiscardSubMenu pentru programarea unui meniu sistem • EmptyMenu sterge continutul unui meniu sau submeniu • EmptyMenuBar sterge o bara de meniu de pe ecran si din memorie, dar handle-ul sau

este pastrat • DiscardMenuBar sterge o bara de meniu de pe ecran si o elibereaza din memorie fara a

pastra handle-ul

Page 65: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 65/140  

 

22..44.. UUttiilliizzaarreeaa aattrriibbuutteelloorr ddee ssiisstteemm -- ttiimmeerree Activitatea unui timer este aceea ca atunci cand expira timpul din timer sa se transfere executia rutinei callback asociate. Se pot crea controale de tip timer cu editorul de interfete utilzator sau prin functia NewCtrl. Nu exista o limitare a numarului de timere ce pot fi utilizate, dar functiile callback din timere sunt apelate secvential. Daca doua sau mai multe timere au intervale de timp egale functiile lor vor fi apelate intr-o ordine neprecizata dar consistenta. Functia SuspendTimerCallbacks se utilizeaza pentru a suspenda toate transferurile catre functiile callback pana cand prin functia ResumeTimerCallbacks se restaureaza activitatea acestora. Aceste functii nu afecteaza intervalul stabilit sau setarea starilor activare/dezactivare pentru controalele individuale, dar asigura o suspendare a actiunii timerelor callback. Functia ResetTimer se foloseste pentru resetarea intervalelor de timp de start pentru controale individuale sau pentru toate controalele dintr-un panel. Exemplul urmator descrie afisarea unui grafic curgator efectuata pe timer a carui actiune nu este stanjenita de afisarea casutei suprapuse Timer Control Information la apasarea butonului popup

22..55.. UUttiilliizzaarreeaa ffuunnccţţiiiilloorr ssppeecciiaallee aallee iinntteerrffeeţţeelloorr îînn ccoonnttrroolluull pprroocceessuulluuii Exista functii speciale importante pentru controlul proceselor. Iata cateva dintre ele. a) RunUserInterface – este rutina a carei lipsa din main face ca nici o actune utilizator sa nu poata fi luata in considerare. Apeland aceasta functie se activeaza sistemul de intreruperi prin evenimente. Cat timp este activa ea, orice control va face legatura cu propria functie callback la un eveniment precizat. Aceasta functie este activa pana la apelul functiei QuitUserInterface (functiei de inchidere a sesiunii). Valoarea de retur a functiei RunUserInterface este transferata functiei de inchidere a sesiunii. b) ProcessDrawEvents

Page 66: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 66/140  

 

Atata timp cat in interiorul unei functii callback sau in program nu este apelata RunUserInterface sau GetUserEvent interfata utilizator nu este actualizata. Daca o functie in particular consuma peste timpul alocat este necesar sa se “inchida” actualizarea interfetei utilizator. Pentru a fosta ca aceasta sa se actualizeze se apeleaza functia ProcessDrawEvents pentru o actualizare fortata a interfetei. c) ProcessSystemEvents Atata timp cat in interiorul unei functii callback sau in program nu este apelata RunUserInterface sau GetUserEvent interfata utilzator si evenimentele sistem nu sunt procesate. Aceste functii stopeaza actualizarea interfetei utilizator si tratarea evenimentelor sistem. Functia ProcessSystemEvents permite fortarea procesarii evenimentelor mai sus mentionate in timpul rularii unei functii consumatoare de timp. Prin apelarea acestei functii pot fi apelate alte fucntii callback care pot produce distorsiuni in sistem. De aceea utilizarea functiei ProcessSystemEvents trebuie facuta cu multa grija. Dintre evenimentele sistem procesate amintim: preluarea caracterelor de la tastatura, tratarea evenimentelor mouse, actualizarea ecranelor. Sunt luate in considerare si evenimente generate de alte aplicatii (de exemplu mesaje Windows rezultate din functii RegisterWinMsgCallback.

Page 67: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 67/140  

 

3. Prezentarea generală a bibliotecilor de subprograme CVI - Se vizualizeaza prin din orice meniu prin Library

- Exista intefete special contruite denumite Function Panel ce descriu fiecare functie - In programul sursa pe un rand ce contine o functie de biblioteca se intra direct in Function

Panel prin comanda Ctrl +P - in interiorul unei interfete apelate prin Function Panel:

33..11.. BBiibblliiootteecciillee LLaabbWWiinnddoowwss//CCVVII Exista mai multe biblioteci LabWindows/CVI implementate. Intr-o ordine alfabetica si prezentand pe scurt functia fiecareia acestea sunt: - Analysis Library: include functii pentru manipularea vectorilor si tablourilor (one-

dimensional (1D) and two-dimensional (2D) array) a matricilor si operatii statistice. - Advanced Analysis Library: completeaza functiile precedente cu generarea de

semnale pentru structurile mai sus enumerate. - ANSI C Library: legatura catre functiile “C” standard de: • manipulare a caracterelor, • a datei si timpului, • localizare, • functiile matematice, • gestiunea salturilor, • manipularea semnalelor, • gestiunea resurselor de intrare/iesire, • utilitare generale (expresii aritmetice pe siruri, gestiunea memoriei, cautari, sortari etc) • manipularea sirurilor de caractere. - Data Acquisition Library and Easy I/O for DAQ Library : contine functii de nivel

inalt care permit controlul placilor de achizitie plug-in ale firmei. Aceste functii fac uz de driverele placilor de achizitie instalate.

Page 68: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 68/140  

 

- DDE Library : sunt incluse functiile LabWindows/CVI care asigura schimbul de date

dinamic (DDE - Dynamic Data Exchange). - Formatting and I/O Library: sunt incluse functiile LabWindows/CVI de formatare

a datelor si functiile de intrare / iesire catre operator. Sunt incluse functiile scan de conversie intre diversele tipuri de variabile.

- GPIB and GPIB-488.2 Library: sunt incluse functiile LabWindows/CVI ce lucreaza

cu standardul GPIB - Instrument Library: este un set de drivere de instrumente continand functii C

pentru controlul unui instrument de tip GPIB, RS232 sau VXI - RS-232 Library contine informatii despre functiile biblioteca ce lucreaza cu interfata

RS232; functiile RS232 pot fi utilizate si pe suport RS485 - TCP Library contine informatii despre functiile bibliotecii TCP si protocolul de

comunicatie in retea; functiile de biblioteca furnizeaza interfata unei platforme independente, orientata conexiune

- Utility Library contine grupuri de functii utilitare ce permit manevrarea: • duratelor si intarzierilor • a datei si a timpului • a tastaturii • fisierelor • directoarelor in care sunt rezidente fisierele • incarcarea modulelor externe • porturilor de intrare/iesire • ferestrei standard de intrare/iesire • raportarea erorilor de rulare • gestionarea intreruperilor sistem • accesul fizic la memorie • comutarea intre task-uri • incarcarea executabilelor - User Interface Library contine grupuri de functii ce permit crearea, incarcarea,

modificarea, descarcarea urmatoarelor entitati ale interfetelor: • panel • meniu • controale, grafuri, strip charturi • paneluri pop-up • functii callback • imprimanta, mouse, cursor, clipboard - VISA Library (Virtual Instruments Software Architecture) prezinta driverele pentru

dezvoltarea software GPIB si VXI - VXI Library permite controlul instrumentelor cu contoller VXI sau interfatate PC

prin controller MXI - X Property Library (numai sub UNIX) functii de citire/scriere a proprietatilor din

XWimdows

Page 69: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 69/140  

 

In continuare se prezinta o lista cu toate functiile implementate in fiecare din bibliotecile mediului de programare. Mentionam ca aceasta lista contine doar categoria in care se incadreaza, denumirea functiei precum si numele ei din program. Despre majoritatea acestor functii se face referire in documentatia cursurilor, prezentandu-se detalii de generare, implementare si exemple de functionare. Pentru o functie care nu se regaseste in documentatia prezentata urmand calea descrisa la inceputul capitolului 3 (cu numele functiei in coloana din dreapta) se poate determina scopul acestei functii precum si parametrii de apel (de retur).

3.1.1. Lista functiilor bibliotecii USER INTERFACE LIBRARY Categoria Numele functiei Panels Load Panel LoadPanel Load Panel (Extended) LoadPanelEx New Panel NewPanel Discard Panel DiscardPanel Duplicate Panel DuplicatePanel Display Panel DisplayPanel Hide Panel HidePanel Get Active Panel GetActivePanel Set Active Panel SetActivePanel Validate Panel ValidatePanel Default Panel DefaultPanel Save Panel State SavePanelState Recall Panel State RecallPanelState Get Panel Attribute GetPanelAttribute Set Panel Attribute SetPanelAttribute Set Panel Position SetPanelPos Menu Structures Menu Bars Load Menu Bar LoadMenuBar Load Menu Bar (Extended) LoadMenuBarEx New Menu Bar NewMenuBar Discard Menu Bar DiscardMenuBar Set Panel Menu Bar SetPanelMenuBar Get Panel Menu Bar GetPanelMenuBar Get Menu Bar Attribute GetMenuBarAttribute Set Menu Bar Attribute SetMenuBarAttribute Empty Menu Bar EmptyMenuBar Get Shared Menu Bar Event Panel GetSharedMenuBarEventPanel Menus New Menu NewMenu Discard Menu DiscardMenu Empty Menu EmptyMenu New SubMenu NewSubMenu Discard SubMenu DiscardSubMenu Run Popup Menu RunPopupMenu Menu Items New Menu Item NewMenuItem Discard Menu Item DiscardMenuItem Insert Separator InsertSeparator

Page 70: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 70/140  

 

Controls/Graphs/Strip Charts General Functions New Control NewCtrl Duplicate Control DuplicateCtrl Discard Control DiscardCtrl Get Active Control GetActiveCtrl Set Active Control SetActiveCtrl Default Control Value DefaultCtrl Get Control Value GetCtrlVal Set Control Value SetCtrlVal Get Control Attribute GetCtrlAttribute Set Control Attribute SetCtrlAttribute Get Control Bounding Rectangle GetCtrlBoundingRect List (Label/Value) Controls Insert List Item InsertListItem Replace List Item ReplaceListItem Delete List Item DeleteListItem Get Value From Index GetValueFromIndex Get Value Length From Index GetValueLengthFromIndex Get Index From Value GetIndexFromValue Get Control Index GetCtrlIndex Set Control Index SetCtrlIndex Clear List Control ClearListCtrl Get Number of List Items GetNumListItems Get List Item Image GetListItemImage Set List Item Image SetListItemImage Get Label From Index GetLabelFromIndex Get Label Length From Index GetLabelLengthFromIndex Is List Item Checked IsListItemChecked Check List Item CheckListItem Get Number of Checked Items GetNumCheckedItems Text Boxes Insert Text Box Line InsertTextBoxLine Replace Text Box Line ReplaceTextBoxLine Delete Text Box Line DeleteTextBoxLine Get Number of Text Box Lines GetNumTextBoxLines Reset Text Box ResetTextBox Get Text Box Line GetTextBoxLine Get Text Box Line Length GetTextBoxLineLength Graphs and Strip Charts Graph Plotting and Deleting Plot X PlotX Plot Y PlotY Plot X-Y PlotXY Plot Waveform PlotWaveform Plot Point PlotPoint Plot Text PlotText Plot Line PlotLine Plot Rectangle PlotRectangle Plot Polygon PlotPolygon Plot Oval PlotOval Plot Arc PlotArc Plot Intensity PlotIntensity Plot Scaled Intensity PlotScaledIntensity

Page 71: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 71/140  

 

Plot Bitmap PlotBitmap Delete Graph Plot DeleteGraphPlot Get Plot Attribute GetPlotAttribute Set Plot Attribute SetPlotAttribute Refresh Graph RefreshGraph Graph Cursors Get Graph Cursor GetGraphCursor Set Graph Cursor SetGraphCursor Get Active Graph Cursor GetActiveGraphCursor Set Active Graph Cursor SetActiveGraphCursor Get Graph Cursor Index GetGraphCursorIndex Set Graph Cursor Index SetGraphCursorIndex Get Cursor Attribute GetCursorAttribute Set Cursor Attribute SetCursorAttribute Strip Chart Traces Plot Strip Chart PlotStripChart Plot Strip Chart Point PlotStripChartPoint Clear Strip Chart ClearStripChart Get Trace Attribute GetTraceAttribute Set Trace Attribute SetTraceAttribute Axis Scaling Get Axis Scaling Mode GetAxisScalingMode Set Axis Scaling Mode SetAxisScalingMode Get Axis Range (Obsolete) GetAxisRange Set Axis Range (Obsolete) SetAxisRange Axis Label Strings Insert Axis Item InsertAxisItem Replace Axis Item ReplaceAxisItem Delete Axis Item DeleteAxisItem Clear Axis Items ClearAxisItems Get Number of Axis Items GetNumAxisItems Get Axis Item Label and Value GetAxisItem Get Axis Item Label Length GetAxisItemLabelLength Pictures Display Image File DisplayImageFile Delete Image DeleteImage Get Image Info (Obsolete) GetImageInfo Get Image Bits(Obsolete) GetImageBits Set Image Bits (Obsolete) SetImageBits Alloc Image Bits (Obsolete) AllocImageBits Canvas Drawing Draw Point CanvasDrawPoint Draw Line CanvasDrawLine Draw Line To CanvasDrawLineTo Draw Rectangle CanvasDrawRect Dim Rectangle CanvasDimRect Draw Rounded Rectangle CanvasDrawRoundedRect Draw Oval CanvasDrawOval Draw Arc CanvasDrawArc Draw Poly CanvasDrawPoly Draw Text in Rectangle CanvasDrawText Draw Text at Point CanvasDrawTextAtPoint

Page 72: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 72/140  

 

Draw Bitmap CanvasDrawBitmap Scroll CanvasScroll Invert Rectangle CanvasInvertRect Clear CanvasClear Batch Drawing Start Batch Drawing CanvasStartBatchDraw End Batch Drawing CanvasEndBatchDraw Pens Set Pen Position CanvasSetPenPosition Get Pen Position CanvasGetPenPosition Set Pen Attributes To Defaults CanvasDefaultPen Clipping Set Clipping Rectangle CanvasSetClipRect Get Clipping Rectangle CanvasGetClipRect Accessing Pixel Values Get a Single Pixel Value CanvasGetPixel Get Pixel Values CanvasGetPixels Miscellaneous Update Canvas CanvasUpdate Timers Reset Timer ResetTimer Suspend Timer Callbacks SuspendTimerCallbacks Resume Timer Callbacks ResumeTimerCallbacks Pop-up Panels Install Popup InstallPopup Remove Popup RemovePopup Message Popup MessagePopup Confirm Popup ConfirmPopup Prompt Popup PromptPopup Generic Message GenericMessagePopup File Select Popup FileSelectPopup Multifile Select Popup MultiFileSelectPopup Directory Select Popup DirSelectPopup X Graph Popup XGraphPopup Y Graph Popup YGraphPopup X-Y Graph Popup XYGraphPopup Waveform Graph Popup WaveformGraphPopup Get System Popups Attribute GetSystemPopupsAttribute Set System Popups Attribute SetSystemPopupsAttribute Font Select Popup FontSelectPopup Set Font Select Popup Defaults SetFontPopupDefaults Callback Functions Install Main Callback InstallMainCallback Install Control Callback InstallCtrlCallback Install Panel Callback InstallPanelCallback Install Menu Callback InstallMenuCallback Install Menu Dimmer Callback InstallMenuDimmerCallback Post Deferred Call PostDeferredCall Windows Interrupt Support Register Windows Msg Callback RegisterWinMsgCallback Unregister Windows Msg Callback UnRegisterWinMsgCallback Get CVI Window Handle GetCVIWindowHandle Get CVI Task Handle GetCVITaskHandle

Page 73: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 73/140  

 

User Interface Management Run User Interface RunUserInterface Quit User Interface QuitUserInterface Get User Event GetUserEvent Set Input Mode SetInputMode Process Draw Events ProcessDrawEvents Process System Events ProcessSystemEvents Queue User Event QueueUserEvent Set Idle Event Rate SetIdleEventRate Fake Keystroke FakeKeystroke Get Sleep Policy GetSleepPolicy Set Sleep Policy SetSleepPolicy Printing Get Print Attribute GetPrintAttribute Set Print Attribute SetPrintAttribute Print Control PrintCtrl Print Panel PrintPanel Print Text File PrintTextFile Print Text Buffer PrintTextBuffer Mouse and Cursor Get Wait Cursor GetWaitCursorState Set Wait Cursor SetWaitCursor Get Mouse Cursor GetMouseCursor Set Mouse Cursor SetMouseCursor Get Global Mouse State GetGlobalMouseState Get Relative Mouse State GetRelativeMouseState Rectangles and Points Creating and Modifying Make Rect MakeRect Set Rect Coordinates RectSet Set Rect Coords From Points RectSetFromPoints Set Bottom Edge of Rect RectSetBottom Set Right Edge of Rect RectSetRight Set Center Point of Rect RectSetCenter Offset Rect RectOffset Move Rect RectMove Grow (or Shrink) Rect RectGrow Make Point MakePoint Set Point Coordinates PointSet Retrieving and Comparing Values Get Rect Bottom RectBottom Get Rect Right RectRight Get Rect Center RectCenter Are Rects Equal? RectEqual Is Rect Empty? RectEmpty Does Rect Contain Point? RectContainsPoint Does Rect Contain Rect? RectContainsRect Are Rects the Same Size? RectSameSize Calculate Rect Union RectUnion Calculate Rect Intersection RectIntersection Are Points Equal? PointEqual Calculate Point Pinned to Rect PointPinnedToRect

Page 74: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 74/140  

 

Bitmaps Create New Bitmap NewBitmap Get Bitmap From a File GetBitmapFromFile Get Bitmap From a Control GetCtrlBitmap Get Control Display Bitmap GetCtrlDisplayBitmap Get Panel Display Bitmap GetPanelDisplayBitmap Get Bitmap Info GetBitmapInfo Get Bitmap Data GetBitmapData Alloc Bitmap Data AllocBitmapData Set Control Bitmap SetCtrlBitmap Discard Bitmap DiscardBitmap Clipboard Get Text From Clipboard ClipboardGetText Put Text On Clipboard ClipboardPutText Get Bitmap From Clipboard ClipboardGetBitmap Put Bitmap on Clipboard ClipboardPutBitmap Miscellaneous Make Color MakeColor Get 3d Border Colors Get3dBorderColors Create Meta Font CreateMetaFont Get Text Display Size GetTextDisplaySize Get Screen Size GetScreenSize Get System Attribute GetSystemAttribute Set System Attribute SetSystemAttribute LW DOS Compatibility Functions Configure Printer ConfigurePrinter Display PCX File DisplayPCXFile DOS Color to RGB DOSColorToRGB DOS Compatibility Window DOSCompatWindow RS-232

3.1.2. Lista functiilor bibliotecii ANALYSIS LIBRARY Array Operations 1D Operations 1D Array Addition Add1D 1D Array Subtraction Sub1D 1D Array Multiplication Mul1D 1D Array Division Div1D 1D Absolute Value Abs1D 1D Negative Value Neg1D 1D Linear Evaluation LinEv1D 1D Maximum & Minimum MaxMin1D 1D Array Subset Subset1D 2D Operations 2D Array Addition Add2D 2D Array Subtraction Sub2D 2D Array Multiplication Mul2D

Page 75: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 75/140  

 

2D Array Division Div2D 2D Linear Evaluation LinEv2D 2D Maximum & Minimum MaxMin2D Complex Operations Complex Numbers Complex Addition CxAdd Complex Subtraction CxSub Complex Multiplication CxMul Complex Division CxDiv Complex Reciprocal CxRecip Rectangular to Polar ToPolar Polar to Rectangular ToRect 1D Complex Operations 1D Complex Addition CxAdd1D 1D Complex Subtraction CxSub1D 1D Complex Multiplication CxMul1D 1D Complex Division CxDiv1D 1D Complex Linear Evaluation CxLinEv1D 1D Rectangular to Polar ToPolar1D 1D Polar to Rectangular ToRect1D Statistics Mean Mean Standard Deviation StdDev Histogram Histogram Sort Sort Vector & Matrix Algebra Dot Product DotProduct Matrix Multiplication MatrixMul Matrix Inversion InvMatrix Transpose Transpose Determinant Determinant Array Utilities Clear Array Clear1D Set Array Set1D Copy Array Copy1D Get Error String GetAnalysisErrorString

3.1.3. Lista functiilor bibliotecii EASY I/O FOR DAQ LIBRARY Analog Input AI Sample Channel AISampleChannel AI Sample Channels AISampleChannels AI Acquire Waveform(s) AIAcquireWaveforms AI Acq. Triggered Waveform(s) AIAcquireTriggeredWaveforms Asynchronous Acquisition AI Start Acquisition AIStartAcquisition AI Check Acquisition AICheckAcquisition AI Read Acquisition AIReadAcquisition AI Clear Acquisition AIClearAcquisition Plot Last Waveform(s) to Popup PlotLastAIWaveformsPopup Analog Output AO Update Channel AOUpdateChannel AO Update Channels AOUpdateChannels AO Generate Waveform(s) AOGenerateWaveforms

Page 76: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 76/140  

 

AO Clear Waveform(s) AOClearWaveforms Digital Input/Output Read From Digital Line ReadFromDigitalLine Read From Digital Port ReadFromDigitalPort Write To Digital Line WriteToDigitalLine Write To Digital Port WriteToDigitalPort Counter/Timer Counter Measure Frequency CounterMeasureFrequency Counter Event or Time Configure CounterEventOrTimeConfig Continuous Pulse Gen Configure ContinuousPulseGenConfig Delayed Pulse Gen Configure DelayedPulseGenConfig Frequency Divider Configure FrequencyDividerConfig Pulse Width or Period Meas Conf PulseWidthOrPeriodMeasConfig Counter Start CounterStart Counter Read CounterRead Counter Stop CounterStop Counter Control CounterControl Miscellaneous Get DAQ Error Description GetDAQErrorString Get Number Of Channels GetNumChannels Get Channel Indices GetChannelIndices Get Channel Name From Index GetChannelNameFromIndex Get AI Limits of Channel GetAILimitsOfChannel Group By Channel GroupByChannel Set Multitasking Mode SetEasyIOMultitaskingMode

3.1.4. Lista functiilor bibliotecii GPIB/GPIB 488.2 LIBRARY Open/Close Open Device OpenDev Close Device CloseDev Close Instrument Devices CloseInstrDevs Find Board/Device ibfind Find Unused Device ibdev Offline/Online ibonl Configuration Change Primary Address ibpad Change Secondary Address ibsad Change Access Board ibbna Change Time Out Limit ibtmo Set EOS Character ibeos Enable/Disable END ibeot Enable/Disable DMA ibdma System Control ibrsc Change Config Parameter ibconfig Get Config Parameter ibask I/O Read ibrd Read Asynchronously ibrda Read to File ibrdf Write ibwrt Write Asynchronously ibwrta Write from File ibwrtf Stop Asynchronous I/O ibstop

Page 77: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 77/140  

 

Device Control Get Serial Poll Byte ibrsp Clear Device ibclr Trigger device ibtrg Check for Listeners ibln Wait for Event (Dev) ibwait Go to Local (Dev) ibloc Parallel Poll Cfg (Dev) ibppc Pass Control ibpct Bus Control Send Interface Clear ibsic Become Active Controller ibcac Go to Standby ibgts Set/Clear Remote Enable ibsre Send Commands ibcmd Send Commands (Async) ibcmda Parallel Poll ibrpp Read Control Lines iblines Board Control Wait for Board Event ibwait Dequeue Board Event ibevent Set UNIX Signal Request ibsignal Go to Local Mode ibloc Parallel Poll Configuration ibppc Request Service ibrsv Set/Clear IST ibist Write to Board Key ibwrtkey Read from Board Key ibrdkey CallBacks (Windows only) Install Sychronous Callback ibInstallCallback Install Asychronous Callback ibNotify Thread-Specific Status Get Ibsta for Thread ThreadIbsta Get Iberr for Thread ThreadIberr Get Ibcnt for Thread ThreadIbcnt Get Ibcntl for Thread ThreadIbcntl GPIB-488.2 Functions Device I/O Send Send Send to Multiple Devices SendList Receive Receive Trigger and Clear Trigger Device Trigger Trigger Multile Devices TriggerList Clear Device DevClear Clear Multiple Devices DevClearList SRQ and Serial Polls Test SRQ line TestSRQ Wait for SRQ WaitSRQ Find Requesting Device FindRQS Read Status Byte ReadStatusByte Serial Poll All Devices AllSpoll Parallel Polls Parallel Poll PPoll Parallel Poll Config PPollConfig

Page 78: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 78/140  

 

Parallel Poll Unconfig PPollUnconfig Remote/Local Enable Remote Operation EnableRemote Enable Local Operation EnableLocal Set remote with Lockout SetRWLS Send Local Lockout SendLLO System Control Reset System ResetSys Send Interface Clear SendlFC Conduct Self-Tests TestSys Find All Listeners FinsLstn Pass Control PassControl Low-Level I/O Send Commands SendCmds Setup for Sending SendSetup Send Data Bytes SendDataBytes Setup for Receiving ReceiveSetup Receive Response Message RcvRespMsg

3.1.5. Lista functiilor bibliotecii RS 232 LIBRARY Open/Close Open COM and Configure OpenComConfig Close COM CloseCom Open COM–Current State OpenCom Input/Output Read Buffer ComRd Read Terminated Buffer ComRdTerm Read Byte ComRdByte Read To File ComToFile Write Buffer ComWrt Write Byte ComWrtByte Write From File ComFromFile XModem XModem Send File XModemSend XModem Receive File XModemReceive XModem Configure XModemConfig Control Set Time-out Limit SetComTime Set XON/XOFF Mode SetXMode Set CTS Mode SetCTSMode Flush Input Queue FlushInQ Flush Output Queue FlushOutQ Send Break Signal ComBreak Set Escape Code ComSetEscape Status Get COM Status GetComStat Get Input Queue Length GetInQLen Get Output Queue Length GetOutQLen Return RS232 Error ReturnRS232Err Get Error String GetRS232ErrorString Callbacks Install COM Callback InstallComCallback

Page 79: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 79/140  

 

3.1.6. Lista functiilor bibliotecii TCP SUPPORT LIBRARY Server Functions Register TCP Server RegisterTCPServer Server TCP Read ServerTCPRead Server TCP Write ServerTCPWrite Unregister TCP Server UnregisterTCPServer Disconnect TCP Client DisconnectTCPClient Client Functions Connect To TCP Server ConnectToTCPServer Client TCP Read ClientTCPRead Client TCP Write ClientTCPWrite Disconnect From TCP Server DisconnectFromTCPServer Get Error String GetTCPErrorString

3.1.7. Lista functiilor bibliotecii DDE SUPPORT LIBRARY Server Functions Register DDE Server RegisterDDEServer Server DDE Write ServerDDEWrite Advise DDE Data Ready AdviseDDEDataReady Broadcast DDE Data Ready BroadcastDDEDataReady Unregister DDE Server UnregisterDDEServer Client Functions Client DDE Execute ClientDDEExecute Client DDE Read ClientDDERead Client DDE Write ClientDDEWrite Connect To DDE Server ConnectToDDEServer Set Up DDE Hot Link SetUpDDEHotLink Set Up DDE Warm Link SetUpDDEWarmLink Terminate DDE Link TerminateDDELink Disconnect From DDE Server DisconnectFromDDEServer Get Error String GetDDEErrorString

3.1.8. Lista functiilor bibliotecii FORMATING AND I/O LIBRARY File I/O Open File OpenFile Close File CloseFile Read from File ReadFile Write to File WriteFile Array to File ArrayToFile File to Array FileToArray Get File Information GetFileInfo Set File Pointer SetFilePtr String Manipulation Get String Length StringLength String to Lowercase StringLowerCase String to Uppercase StringUpperCase Fill Bytes FillBytes

Page 80: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 80/140  

 

Copy Bytes CopyBytes Copy String CopyString Compare Bytes CompareBytes Compare Strings CompareStrings Find Pattern FindPattern Read Line ReadLine Write Line WriteLine Data Formatting Formatting Functions Fmt to Memory (Sample Panel) Fmt Fmt to File (Sample Panel) FmtFile Fmt to Stdout (Sample Panel) FmtOut Scanning Functions Scan from Mem (Sample Panel) Scan Scan from File (Sample Panel) ScanFile Scan from Stdin (Sample Panel) ScanIn Status Functions Get # Formatted Bytes NumFmtdBytes Get Format Index Error GetFmtErrNdx Get I/O Error GetFmtIOError Get I/O Error String GetFmtIOErrorString

3.1.9. Lista functiilor bibliotecii UTILITY LIBRARY Timer/Wait Timer Timer Delay Delay Synchronized Wait SyncWait Date/Time Date in ASCII Format DateStr Time in ASCII Format TimeStr Get System Date GetSystemDate Set System Date SetSystemDate Get System Time GetSystemTime Set System Time SetSystemTime Keyboard Key Hit? KeyHit Get a Keystroke GetKey File Utilities Delete File DeleteFile Rename File RenameFile Copy File CopyFile Get File Size GetFileSize Get File Date GetFileDate Set File Date SetFileDate Get File Time GetFileTime Set File Time SetFileTime Get File Attributes GetFileAttrs Set File Attributes SetFileAttrs Get First File GetFirstFile Get Next File GetNextFile Make Pathname MakePathname

Page 81: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 81/140  

 

Split Path SplitPath Directory Utilities Get Directory GetDir Get Project Directory GetProjectDir Get Module Directory GetModuleDir Get Full Path From Project GetFullPathFromProject Set Directory SetDir Make Directory MakeDir Delete Directory DeleteDir Get Drive GetDrive Set Drive SetDrive External Modules Load External Module LoadExternalModule Load External Module Ex LoadExternalModuleEx Run External Module RunExternalModule Get External Module Address GetExternalModuleAddr Unload External Module UnloadExternalModule Release External Module ReleaseExternalModule Port I/O Input Byte From Port inp Input Word From Port inpw Output Byte To Port outp Output Word To Port outpw Standard Input/Output Window Clear Screen Cls Get Stdio Window Options GetStdioWindowOptions Set Stdio Window Options GetStdioWindowPosition Set Stdio Window Position SetStdioWindowPosition Get Stdio Window Size GetStdioWindowSize Set Stdio Window Size SetStdioWindowSize Get Stdio Window Visibility GetStdioWindowVisibility Set Stdio Window Visibility SetStdioWindowVisibility Get Stdio Port GetStdioPort Set Stdio Port SetStdioPort Run-Time Error Reporting Set Break On Library Errors SetBreakOnLibraryErrors Get Break On Library Errors GetBreakOnLibraryErrors Set Break On Protection Errors SetBreakOnProtectionErrors Get Break On Protection Errors GetBreakOnProtectionErrors Old-Style Functions Enable Break On Library Errors EnableBreakOnLibraryErrors Disable Break On Library Errors DisableBreakOnLibraryErrors Interrupts Disable Interrupts DisableInterrupts Enable Interrupts EnableInterrupts Get Interrupt State GetInterruptState Physical Memory Access Read From Physical Memory ReadFromPhysicalMemory Read From Physical Memory Ex ReadFromPhysicalMemoryEx Write To Physical Memory WriteToPhysicalMemory Write To Physical Memory Ex WriteToPhysicalMemoryEx Persistent Variable Set Persistent Variable SetPersistentVariable Get Persistent Variable GetPersistentVariable Task Switching

Page 82: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 82/140  

 

Disable Task Switching DisableTaskSwitching Enable Task Switching EnableTaskSwitching Launching Executables Launch Executable LaunchExecutable Extended Functions Launch Executable Extended LaunchExecutableEx Has Executable Terminated? ExecutableHasTerminated Terminate Executable TerminateExecutable Retire Executable Handle RetireExecutableHandle Miscellaneous System Help SystemHelp Get CVI Version GetCVIVersion Get Current Platform GetCurrentPlatform In Standalone Executable? InStandaloneExecutable Initialize CVI Run-Time Engine InitCVIRTE Close CVI Run-Time Engine CloseCVIRTE Low-Level Support Driver Loaded CVILowLevelSupportDriverLoaded Beep Beep Breakpoint Breakpoint Round Real To Nearest Integer RoundRealToNearestInteger Truncate Real Number TruncateRealNumber Get Window Display Setting GetWindowDisplaySetting

3.1.10. Clasele de functii ANSI C STANDARD LIBRARY Class Header File Character Handling <ctype.h> Character Testing Character Case Mapping Date and Time <time.h> Time Operations Time Conversion Time Formatting Localization <locale.h> Mathematics <math.h> Trigonometric Functions Hyperbolic Functions Exp and Log Functions Power Functions Nonlocal Jumping <setjmp.h> Signal Handling <signal.h> Input/Output <stdio.h> Open/Close Read/Write/Flush Line Input/Output Character Input/Output Formatted Input/Output Buffer Control File Positioning File System Operations Error Handling General Utilities <stdlib.h> String to Arithmetic Expression

Page 83: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 83/140  

 

Random Number Generation Memory Management Searching and Sorting Integer Arithmetic Multibyte Character Sets Program Termination Environment String Handling <string.h> Byte Operations String Operations String Searching Collation Functions Miscellaneous

33..22.. BBiibblliiootteeccaa TTCCPP ((TTrraannssmmiissssiioonn CCoonnttrrooll PPrroottooccooll)) Functiile aferente bibliotecii TCP apeleaza serviciile bibliotecii cu legare dinamica WINSOCK.DLL. Functiile componente bibiotecii TCP asigura o interfata robusta, independenta de platforma cu protocolul de comunicatie in retea (TCP), orientat pe conexiune. Clienti si servere TCP Comunicatiile in retele de calculatoare bazate pe biblioteca TCP, se bazeaza pe tehnologia client-server (in cadrul fiecarei conexiuni este necesara existenta unui proces client si a unuia server). Un proces server TCP poate trimite/receptiona date de la o aplicatie client. Procesul client TCP poate trimite/receptiona date de la o aplicatie server. In urma inregistrarii procesul server asteapta sosirea cererilor de conexiune din partea clientilor. Utilizand biblioteca TCP din mediul integrat de dezvoltare LabWindows/CVI, se pot elabora programe de aplicatii care sa indeplineasca functia de client sau server TCP. Maniera de scriere a unei aplicatii program TCP este similara procedurii urmate in cazul aplicatiilor de schimb dinamic de date (DDE). In vederea conectarii la un server TCP, din mediul integrat de dezvoltare LabWindows/CVI, sunt necesare informatii legate de identificarea aplicatiei la care se doreste sa se realizeze conexiunea; informatia de identificare cuprinde urmatoarea pereche de date: a. nume calculator gazda (numele host-ului pe care ruleaza aplicatia server TCP sau adresa de IP atasata); b. numarul portului (aferent host-ului utilizat). Un program server TCP trebuie sa inglobeze un apel al functiei RegisterTCPServer. In urma unui astfel de apel, aplicatiei i se confera statutul de server TCP (asociat cu un numar de port, in cadrul host-ului local). O aplicatie client se poate conecta la serverul TCP anterior mentionat, prin utilizarea numelui host-ului (respectiv a adresei de IP), impreuna cu numrul portului asociat aplicatiei server. Functia de tip ‘callback’ este invocata in momentul in care partenerul de conversatie solicita servicii de comunicatie de date. Functia ‘callback’ TCP: Functiile ‘callback’ asigura un mecanisme de tip: a.receptie notificare conexiune; b.terminare conexiune; c.disponibilitate date.

Page 84: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 84/140  

 

O functie ‘callback’ TCP raspunde la datele, mesajele TCP receptionate, similar cu modul in care o functie de tip ‘callback’ raspunde la evenimentele aferente interfetei utilizator. O functie ‘callback’ TCP raspunde la trei tipuri de mesaje TCP: a.TCP_CONNECT; b.TCP_DISCONNECT; c.TCP_DATAREADY. O functie ‘calback’ TCP, utilizata in cadrul unui program ce indeplineste functia de server TCP, poate fi activata de catre o aplicatie client in mai multe modalitati. Functia ‘callback’ este este invocata in vederea procesarii cererilor, ori de cate ori o aplicatie client urmareste conectarea la programul server, sau solicita date acestuia. In continuare se prezinta structura unei functii ‘callback’ TCP in mediul LabWindows/CVI: int CallbackFunction (int handle, int xType, int errCode, void *callbackData); in care: a.handle – reprezinta identificatorul (handle-ul) de conversatie; b.xType – reprezinta tipul tranzactiei; c.errCode – codul de eroare in cazul TCP_DISCONNECT; este negativ in cazul in care conexiunea a esuat ca urmare a unei eroori. d.callbackData – o valoare definita de utilizator. In tabelul urmator sunt prezentate tipurile de tranzactii TCP (xType), care pot activa o functie ‘callback’:

xType Server

Client Cand are loc activarea?

TCP_CONNECT Y N in momentul in care un client nou solicita o sesiune de conectare la o aplicatie server TCP.

TCP_DISCONNECT Y Y in momentul in care partenerul de conversatie paraseste aplicatia.

TCP_DATAREADY Y Y in momentul in care partenerul de comunicatie trimite date.

Tabel tipuri tranzactii TCP (xType) Functiile din componenta bibliotecii TCP: Biblioteca TCP cuprinde trei categorii de functii: ● functii server; ● functii client; ● functii tratare eroare. Functiile server(3.2.1): • Register TCP Server; • Server TCP Read; • Server TCP Write; • Unregister TCP Server; • Disconnect TCP Client. Functii client(3.2.2): • Connect To TCP Server; • Client TCP Read; • Client TCP Write; • Disconnect From TCP Server.

Page 85: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 85/140  

 

Functii tratare eroare(3.2.3): • Get Error String.

3.2.1. Functiile server RegisterTCPServer Aceasta functie inregistreaza aplicatia program ca si server TCP (utilizand un anumit port aferent host-ului local). Aplicatiile client trebuie sa precizeze numarul portului, precum si numele host-ului la care intentioneaza sa obtina conexiunea. Toate cererile emise de client vor fi tratate de catre functia ‘callback’ aferenta serverului TCP. O anumita aplicatie program poate fi inregistrata ca si server de TCP de mai multe ori (prin precizarea unor numere de port distincte). Functia returneaza o valoare zero in caz de succes a operatiei sau un cod negativ la aparitia unei eroori.

/*-------------- Prototip ------------*/ int RegisterTCPServer (unsigned int Port_Number, tcpFuncPtr Callback_Function, void *Callback_Data);

Server TCP Read Functia ‘Server TCP Read’ asigura, unui program ce inglobeaza un server TCP, servicii de citirea datelor furnizate de aplicatiile client. La apelul functiei, aplicatia server asteapta receptia datelor provenite de la aplicatii client; functia returneaza la expirarea perioadei de ‘time-out’. In caz de succes a operatiei de receptie a datelor, functia returneaza numarul de octeti cititi. In caz contrar, aceasta functie returneaza un cod negativ de eroare.

Page 86: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 86/140  

 

/*---------- Prototip -----------*/ int ServerTCPRead ( unsigned int Conversation_Handle, void *Data_Buffer, unsigned int Data_Size, unsigned int Time_Out);

Server TCP Write Functia ‘Server TCP Read’ asigura, unui program ce inglobeaza un server TCP, servicii de transmisie a datelor catre un anumit client. In caz de succes a operatiei de transfer a datelor, functia returneaza numarul de octeti transmisi. In caz contrar, aceasta functie returneaza un cod negativ de eroare.

/*----------- Prototip ------------*/ int ServerTCPWrite ( unsigned int Conversation_Handle, void *Data_Pointer, unsigned int Data_Size, unsigned int Time_Out);

Unregister TCP Server Aceasta functie anuleaza capacitatea unei aplicatii program de indeplinire a functiiei de server TCP. In urma apelului toate conexiunile clientilor sunt inchise. Functia ‘callback’ pentru serverul TCP in cauza devine invalida. Functia returneaza zero in caz finalizare cu succes a aplicatiei; in caz contrar se returneaza un cod de eroare negativ.

Page 87: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 87/140  

 

/*--------- Prototip ----------*/ int UnregisterTCPServer( unsigned int Port_Number );

Disconnect TCP Client Functia ‘Disconnect TCP Client’ permite unui server de TCP deconectarea unui client. (Trebuie mentionat faptul ca intre server si client pot exista la un moment dat mai multe conversatii distincte). Functia returneaza in caz de succes a operatiei o valoare zero; altminteri se returneaza un cod negativ de eroare.

/*----------- Prototip -----------*/ int DisconnectTCPClient( unsigned int Conversation_Handle );

3.2.2. Functii client Connect To TCP Server Functia ‘Connect To TCP Server’ stabileste conexiunea cu un server de TCP (server specificat prin: numar port si nume calculator host). Programul care contine un astfel de apel

Page 88: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 88/140  

 

devine un client TCP. In continuare, toate mesajele provenite de la server vor fi tratate de catre functia ‘callback’ client. Functia returneaza zero in caz de succes, respectiv un cod negativ la aparitia unei eroori.

/*---------- Prototip -----------*/ int ConnectToTCPServer (unsigned int *Conversation_Handle, unsigned int Port_Number, char Server_Host_Name[], tcpFuncPtr Callback_Function, void *Callback_Data, unsigned int Time_Out);

Client TCP Read Functia ‘Client TCP Read’ asigura unei aplicatii client TCP, servicii de receptie a datelor transferate de catre un server TCP. In caz de apel al functiei se asteapta receptia integrala a datelor. (Functia returneaza la expirarea duratei de ‘time-out’).

/*---------- Prototip ----------*/ int ClientTCPRead ( unsigned int Conversation_Handle, void *Data_Buffer, unsigned int Data_Size, unsigned int Time_Out );

Page 89: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 89/140  

 

Client TCP Write Functia ‘Client TCP Write’ asigura, unei aplicatii client TCP, servicii de transfer a datelor catre un server de TCP. Functia returneaza in caz de succes numarul de octeti transmisi; in caz contrar, functia returneaza un cod negativ de eroare.

/*---------- Prototip ----------*/ int ClientTCPWrite ( unsigned int Conversation_Handle, void *Data_Pointer, unsigned int Data_Size, unsigned int Time_Out );

Disconnect From TCP Server Functia ‘Disconnect From TCP Server’ inchide o conexiune stabilita intre client si server. (Si in acest caz trebuie mentionat faptul ca intre server si client pot exista la un moment dat mai multe conversatii distincte). Functia returneaza zero in caz de finalizare cu succes a actiunii de deconectare a clientului de la un server de TCP; altfel se returneaza un cod negativ de eroare.

/*---------- Prototip -----------*/ int DisconnectFromTCPServer ( unsigned int Conversation_Handle );

Page 90: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 90/140  

 

3.2.3. Functii tratare eroare Get Error String Functia ‘Get Error String’ realizeaza conversia unui cod de eroare (cod returnat de una din functiile bibliotecii TCP), intr-un mesaj de eroare.

/*---------- Prototip ----------*/ char *GetTCPErrorString ( int Error_Number );

In fisierul ‘tcpsupp.h’ sunt specificate valorile codurilor de eroare.

Nr.crt.

Tip eroare Valoare cod eroare

1. -kTCP_NoError 0 2. -kTCP_UnableToRegisterService -1 3. -kTCP_UnableToEstablishConnection -2 4. -kTCP_ExistingServer -3 5. -kTCP_FailedToConnect -4 6. -kTCP_ServerNotRegistered -5 7. -kTCP_TooManyConversations -6 8. -kTCP_ReadFailed -7 9. -kTCP_WriteFailed -8 10. -kTCP_InvalidParameter -9 11. -kTCP_OutOfMemory -10 12. -kTCP_TimeOutErr -11 13. -kTCP_NoConnectionEstablished -12 14. -kTCP_GeneralIOErr -13 15. -kTCP_ConnectionClosed -14 16. -kTCP_UnableToLoadWinsockDLL -15 17. -kTCP_IncorrectWinsockDLLVersion -16 18. -kTCP_NetworkSubsystemNotReady -17 19. -kTCP_ConnectionsStillOpen -18

Tabel - valorile codurilor de eroare

Page 91: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 91/140  

 

Remarca: Numarul maxim de conversatii concurente permise la un moment dat este limitat la 255. In cazul in care se depaseste acest prag se returneaza o eroare de tipul ‘-kTCP_TooManyConversations’.

33..33.. BBiibbiillootteeccaa DDDDEE ((DDyynnaammiicc DDaattaa EExxcchhaannggee)) Biblioteca DDE include functii care implementeaza servicii de schimb dinamic de date intre aplicatii in conformitate cu specificatiile ‘Microsoft Windows DDE’. Clienti si servere DDE. Comunicatia de tip ‘interproces’ bazata pe schimb dinamic de date (DDE), presupune un proces client si unul server pentru fiecare conversatie DDE in parte. Un proces server de DDE poate executa comenzi trimise de catre o alta aplicatie; are capacitatea de a transmite/receptiona date catre/dinspre un proces client (sub sistemul de operare Windows). Un proces client de DDE poate transmite comenzi unui proces server in vederea executiei acestora; procesul client poate solicita date unui proces server de DDE. Utilizand biblioteca DDE disponibila sub mediul integrat de dezvoltate LabWindows/CVI, se pot elabora aplicatii program care sa indeplineasca rolul de client, respectiv server de DDE. In vederea stabilirii unei conexiuni la un server de DDE sub mediul LabWindows/CVI, trebuie cunoscute datele de identificare a procesului la care se doreste conectarea. Serverele de DDE definesc o conexiune de schimb dinamic de date prin intermediul a doi parametri: nume server de DDE, respectiv subiect conexiune. Functia ‘RegisterDDEServer’ confera unei proces statutul de server de DDE; astfel alte procese se pot conecta si realiza shimb de date cu un astfel de server de DDE. Functia ‘callback’ DDE Functiile de tip ‘callback’ asigura mecanismul de transmitere/receptie a datelor intre aplicatii, prin intermediul tehnicilor de schimb dinamic de date DDE. Functia de tip ‘callback’ in cadrul unei aplicatii client, poate raspunde la doua tipuri de mesaje DDE: ‘DDE_DISCONNECT’ si ‘DDE_DATAREADY’. In urma setarii unei legaturi de tip ‘warm link’ sau ‘hot link’ (denumita si ‘bucla de notificare’) cu o alta aplicatie, functia ‘callback’ definita in cadrul functiei SetUpDDEHotLink sau SetUpDDEWarmLink va fi activata in vederea procesarii unei cereri de tip DDE (in momentul in care o aplicatie client intentioneaza sa se conecteze la un server de DDE, sau ii solicita acestuia date). Prototipul unei functii ‘callback’ de tip DDE sub mediul de dezvoltare LabWindows/CVI, are urmatoarea forma: int CallbackFunction (int handle, char *topicName, char *itemName, int xType, int dataFmt, int dataSize, void *dataPtr, void *callbackData); Parameteri: Input handle - identificator de conversatie (identifica in mod unic o conexiune DDE client –server). topicName – aplicatia server care activeaza functia ‘callback’. itemName- articolul de date din componenta aplicatiei server care activeaza functia ‘callback’. Exceptie: In cazul in care xType este DDE_EXECUTE, campul ‘itemname’ reprezinta sirul de comanda transmis de catre programul client. xtype- tipul tranzactiei. dataFmt- formatul datelor ce urmeaza a fi transmise. dataSize- numarul de octeti de date. Poate fi mai mare decat numarul de octeti transmisi.

Page 92: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 92/140  

 

dataPtr - variabila ce pointeaza la datele transmise. callbackData- o valoare definita de utilizator. Nota: Valoarea parametrului ‘dataSize’ este mai mare sau egala cu dimensiunea efectiva a datelor. Se recomanda codarea informatiei cu privire la dimensiune (in cadrul campurilor de date). Valoare returnata Functia ‘callback’ trebuie sa returneze ‘1’ pentru a indica finalizarea cu succes a functiei; o valoare ‘0’ semnifica aparitia unei eroori sau rejectarea actiunii solicitate. Tipurile de tranzactii DDE: Toate tipurile de tranzactii DDE (xType) care pot activa o functie ‘callback’ sunt ilustrate in tabelul urmator. xType Serve

r Client Cand are loc activarea?

DDE_CONNECT Y N in momentul in care un client nou solicita o conexiune.

DDE_DISCONNECT Y Y in momentul in care un partener de conversatie inchide aplicatia.

DDE_DATAREADY Y Y in momentul in care un partener de conversatie transmite date.

DDE_REQUESTDATA Y Y in momentul in care clientul solicita date.

DDE_ADVISELOOP Y N in momentul in care clientul solicita bucla de notificare.

DDE_ADVISESTOP Y N in momentul in care clientul finalizeaza cererea pentru bucla de notificare.

DDE_EXECUTE Y N in momentul in care clientul solicita executia unei comenzi.

Tabel tipuri tranzactii DDE (xType) Legaturile de schimb dinamic de date (DDE) O legatura de date de tip DDE este necesara in momentul in care un program client solicita a fi informat cu privire la modificarile efectuate asupra unui anumit articol de date, din cadrul unei aplicatii server DDE. Sub mediul LabWindows/CVI o legatura de date de tip DDE se stabileste in urma unui apel al functiei ‘SetUpDDEWarmLink’ sau ‘SetUpDDEHotLink’. In momentul in care valoarea articolului de date se modifica, functia ‘callback’ client este activata, iar datele sunt accesibile prin intermediul parametrului ‘dataPtr’. In cadrul unei conexiuni client-server, pot fi stabilite mai multe legaturi de date, fiecare din acestea aplicandu-se unuianumit articol de date. In conformitate cu specificatiile Windows cu privire la tehnicile DDE legaturile de date ‘hot’, respectiv ‘warm’, difera prin faptul ca: intr-o legatura ‘warm’ clientul este putin modificat la schimbarea valorilor de date, in timp ce intr-o legatura ‘hot’ datele sunt efectiv transmise. Mediul LabWindows/CVI nu face distinctie intre legaturile de date ‘warm’, respectiv ‘hot’. In ambele cazuri, aplicatia client receptioneaza datele prin intermediul functiei ‘callback’ client, in momentul in care valoarea campului de date este modificata. In cazul unei legaturi DDE de tip ‘warm’, mediul LabWindows/CVI solicita si receptioneaza datele provenite de la server inaintea apelului functiei ‘callback’. Avand in vedere faptul ca unele servere de DDE ofera doar un tip de legatura de date DDE, sunt disponibile functiile ‘SetUpDDEWarmLink’, respectiv ‘SetUpDDEHotLink’.

Page 93: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 93/140  

 

Biblioteca DDE inglobeaza trei categorii de functii: ● functii server; ● functii client; ● functii tratare eroare. Functii server (3.3.1) Register DDE Server Server DDE Write Advise DDE Data Ready Broadcast DDE Data Ready Unregister DDE Server Functii client (3.3.2.) Connect To DDE Server’ Client DDE Read Client DDE Write Client DDE Execute Set Up DDE Hot Link Set Up DDE Warm Link Terminate DDE Link Disconnect From DDE Server Functii tratare eroare (3.3.3.) Get Error String.

3.3.1. Functii server Register DDE Server Functia ‘Register DDE Server’, confera unei aplicatii program statutul de server de DDE. Serverul de DDE este inregistrat cu un anumit nume; acest nume este utilizat de clientii care urmaresc conectarea la serverul de DDE. In continuare toate cererile provenite de la clienti sunt tratate prin intermediul functiei ‘callback’ la nivel de aplicatie server de DDE. O aplicatie se poate fi inregistra ca si server de DDE de mai multe ori, prin mentionarea unor nume distincte de servere. Functia returneaza ‘0’ in caz de finalizare a operatiei de inregistrare server de DDE cu succes; in caz contrar se returneaza un cod negativ de eroare.

/*---------- Prototip -----------*/ int RegisterDDEServer ( char Server_Name[], ddeFuncPtr Callback_Function, void *Callback_Data );

Page 94: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 94/140  

 

Server DDE Write Functia ‘Server DDE Write’ asigura unui server de DDE servicii de transfer de date catre clienti. Functia trebuie apelata doar in cazul in care functia ‘callback’ la nivel de server de DDE receptioneaza un tip de tranzactie (xType) de genul ‘DDE_REQUESTDATA’. In cazul in care functia este apelata intr-o alta situatie, datele sunt stocate pana in momentul in care clientul solicita date. Daca functia este apelata de mai multe ori in cadrul aceleiasi conversatii inainte ca aplicatia client sa solicite datele, fiecare set nou de date este adaugat buffer-ului ce contine datele stocate. Functia ‘AdviseDDEDataReady’ sau ‘BroadcastDDEDataReady’ se pot utiliza in situatia in care in aplicatia client s-a setat o legatura de date de tip ‘hot’ sau ‘warm’, si se doreste sa se trimita alte date decat cele de reaspuns la o tranzactie ‘DDE_REQUESTDATA’ La succes functia returneaza numarul de octeti transmisi; in caz contrar se returneaza un cod de eroare.

/*---------- Prototip -----------*/ int ServerDDEWrite ( unsigned int Conversation_Handle, char Item_Name[], unsigned int Data_Format, void *Data_Pointer, unsigned int Data_Size, unsigned int Time_Out );

Advise DDE Data Ready Functia permite unei aplicatii ce inglobeaza un server de DDE sa transmita date unui client care a setat o legatura de tip ‘hot’ sau ‘warm’. In cazul in care o legatura de tip ‘warm’ este setata, functia ‘callback’ atasata serverul de DDE receptioneaza un tip de tranzactie (xType) de genul ‘DDE_ADVISELOOP’, pentru un anumit obiect de date (obiect identificat prin ‘itemName’). In momentul in care o legatura ‘hot’ sau ‘warm’ este finalizata, functia ‘callback’ la nivel de server de DDE receptioneaza un tip de tranzactie de gen ‘DDE_ADVISESTOP’, aferent obiectului de date. Pe perioada in care o legatura ‘hot’ sau ‘warm’ este activa, aplicatia program server este responsabila de notificarea clientului, la schimbarea valorii obiectului de date. In momentul in care valoarea obiectului de date s-a modificat, se poate apela functia ‘AdviseDDEDataReady’, respectiv ‘BroadcastDDEDataReady’. Functia ‘AdviseDDEDataReady’ difera de functia ‘BroadcastDDEDataReady’, in care se specifica o anumita conversatie cu un client. Functia ‘AdviseDDEDataReady’ transmite datele doar clientului specificat, chiar daca alti clienti detin legaturi de tip ‘hot’ sau ‘warm’, in care este implicat acelasi articol. Functia ‘AdviseDDEDataReady’ transmite datele fara a invoca functia ‘callback’ la nivel de server de DDE. Daca exista si alti clienti ce detin legaturi ‘warm’, in care este implicat acelasi articol, acestia sunt cu totii notificati cu privire la disponibilitatea noilor seturi de date. In situatia in care acesti clienti solicita date noi, functia ‘callback’ la nivel de server de DDE este

Page 95: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 95/140  

 

invocata prin intermediul mesajului ‘DDE_REQUESTDATA’. Daca nu se doreste transmiterea de date celorlalti clienti, este necesara scrierea propriei functii ‘callback’ la nivel de server de DDE (astfel incat sa se evite un apel de genul ‘ServerDDEWrite’). Daca se transmite o valoare nula (NULL – ‘0’) in calitate de parametru ‘Data Pointer’, respectiv zero ca si parametru ‘Data Size’, nu sunt transmise date clientului specificat. In schimb sunt notificati toti clientii ce detin legaturi de tip ‘warm’, in care este implicat articolul in cauza. In cazul in care clientii solicitat date noi, functia ‘callback’ la nivel de server de DDE este invocata printr-un mesaj de genul ‘DDE_REQUESTDATA’ (situatie in care se poate utiliza functia ‘ServerDDEWrite’ pentru transmisia de date ca si raspuns la solicitare). Daca se finalizeaza cu succes functia returneaza numarul de octeti transmisi; altfel se returneaza un cod negativ de eroare. Nota: Functia nu trebuie apelata in cadrul unei bucle in care sunt precizate constrangeri serioase de timp. Functia se va utiliza doar atunci la schimbarea valorii unui obiect de date ce participa la o legatura ‘hot’ sau ‘warm’. Daca este necesara transmisia dinspre server a unor obiecte de date de dimensiuni mari, functia va fi apelata doar atunci cand interfata utilizator nu este solicitata.

/*----------- Prototype ---------*/ int AdviseDDEDataReady( unsigned int Conversation_Handle, char Item_Name[], unsigned int Data_Format, void *Data_Pointer, unsigned int Data_Size, unsigned int Time_Out );

Broadcast DDE Data Ready Functia ‘DDE Data Ready’ asigura unei aplicatii, ce inglobeaza un server de DDE, servicii de transmisie a datelor catre toti clientii care detin o legatura de tip ‘hot’ sau ‘warm’, in care este implicat un anumit subiect sau un anumit articol. In momentul in care este setata o legatura de tip ‘hot’ sau ‘warm’, functia ‘callback’ la nivel de server receptioneaza un tip de tranzactie (xType) de genul ‘DDE_ADVISELOOP’, pentru un anumit obiect de date (identificat prin ‘itemName’). Cand legatura ‘hot’ sau ‘warm’ este incheiata, functia ‘callback’ la nivel de server de DDE, receptioneaza un tip de tranzactie de genul ‘DDE_ADVISESTOP’, pentru obiectul de date. In timpul in care o legatura ‘hot’ sau ‘warm’ este valida, aplicatia server este responsabila de notificarea clientului cu privire la modificarea valorilor obiectelor de date. Cand are loc modificarea valorii obiectelor de date, este necesar un apel al acestei functii, sau al uneia din functiile ‘BroadcastDDEDataReady’, respectiv ‘AdviseDDEDataReady’. Functia ‘BroadcastDDEDataReady’ difera de ‘AdviseDDEDataReady’, prin faptul ca nu este restrictionata la un anumit client. Functia ‘BroadcastDDEDataReady’ transmite datele in mod automat catre toti clientii ce detin legaturi ‘hot’ sau ‘warm’ catre articolul in cauza. Functia ‘BroadcastDDEDataReady’ notifica toti clientii cu legatura de tip ‘hot’ sau ‘warm’ catre articol. Pentru fiecare client conectat prin legatura ‘warm’, care solicita date, functia ‘callback’ a

Page 96: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 96/140  

 

serverului este invocata cu mesajul ‘DDE_ REQUESTDATA’. Este necesar apelul ‘ServerDDEWrite’ in ‘callback’ in vederea transmiterii datelor. In caz de succes functia returneaza numarul de octeti transmisi. Altfel se returneaza un cod negativ de eroare. Nota: Aceasta nu trebuie apelata in cadrul unei bucle in care sunt precizate constrangeri serioase de timp. Functia se va utiliza doar atunci la schimbarea valorii unui obiect de date ce participa la o legatura ‘hot’ sau ‘warm’. Daca este necesara transmisia dinspre server a unor obiecte de date de dimensiuni mari, functia va fi apelata doar atunci cand interfata utilizator nu este solicitata.

/*---------- Prototip ---------*/ int BroadcastDDEDataReady ( char Server_Name[], char Topic_Name[], char Item_Name[], unsigned int Data_Format, void *Data_Pointer, unsigned int Data_Size );

Unregister DDE Server Functia ‘Unregister DDE Server’ invalideaza capacitatea unei aplicatii de a detine rolul de server de DDE (sub un anumit nume de server de DDE). Are loc sistarea serviciilor de DDE furnizate; sunt inchise toate conexiunile clientilor. Functia ‘callback’ la nivel de server devine invalida. Functia returneaza zero in caz de succes, respectiv un cod negativ la aparitia unei eroori.

/*--------- Prototip -----------*/ int UnregisterDDEServer ( char Server_Name[] );

Page 97: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 97/140  

 

3.3.2. Functii client Connect To DDE Server Functia ‘Connect To DDE Server’ stabileste o conexiune intre o aplicatie program si un anumit server de DDE. Aplicatia program devine client de DDE; in continuare toate mesajele transmise de catre server sunt tratate prin intermediul functiei ‘callback’ specificate la nivel de client. Functia ‘Client DDE Execute’ returneaza zero la succes, respectiv un cod negativ la aparitia unei eroori.

/*--------- Prototip ---------*/ int ConnectToDDEServer (unsigned int *Conversation_Handle, char Server_Name[], char Topic_Name[], ddeFuncPtr Callback_Function, void *Callback_Data );

Client DDE Read Functia ‘Client DDE Read’ asigura unei aplicatii ce inglobeaza un client de DDE posibilitatea de solicitate a datelor de la un server de DDE. Functia asteapta pana cand datele sunt receptionate sau pana la expirarea perioadei de ‘time-out’. In caz de succes functia returneaza numarul de octeti receptionati. In caz contrar, se returneaza un cod negativ de eroare.

/*--------- Prototip ---------*/ int ClientDDERead ( unsigned int Conversation_Handle, char Item_Name[], unsigned int Data_Format, void *Data_Buffer, unsigned int Data_Size, unsigned int Time_Out );

Page 98: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 98/140  

 

Client DDE Write Functia ‘Client DDE Write’, atribuie unei aplicatii ce incorporeaza un client DDE, capacitatea de transmisie a datelor catre un server de DDE. Functia returneaza dupa ce datele au fost transmise sau la expirarea perioadei de ‘time-out’. In caz de succes functia returneaza numarul de octei transmisi. In caz contrar se returneaza un cod de eroare negativ.

/*-------- Prototip --------*/ int ClientDDEWrite ( unsigned int Conversation_Handle, char Item_Name[], unsigned int Data_Format, void *Data_Pointer, unsigned int Data_Size, unsigned int Time_Out );

Client DDE Execute Functia ‘Client DDE Execute’ confera unei aplicatii, ce indeplineste rolul de client DDE, capacitatea de a transfera un sir de comanda catre un server de DDE. Fiecare server de DDE isi defineste propriul set de siruri valide de comanda. Functia returneaza in caz de succes zero; altfel se returneaza un cod negativ de eroare.

/*---------- Prototip ----------*/ int ClientDDEExecute ( unsigned int Conversation_Handle, char Command_String[], unsigned int Time_Out );

Page 99: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 99/140  

 

Set Up DDE Hot Link Functia ‘Set Up DDE Hot Link’ confera unei aplicatii, ce indeplineste rol de client de DDE, posibilitatea de stabilire a unei legaturi ‘hot’ cu un server de DDE. Legatura ‘hot’ va fi aplicata obiectului de date specificat de catre parametrul ‘Item Name’. Daca serverul accepta cererea de legatura ‘hot’, acesta va notifica aplicatia client DDE, la schimbarea valorii obiectului de date. In momentul in care notificarea este receptionata de catre client, functia ‘callback’ aferenta clientului este invocata cu un tip de tranzactie de gen ‘DDE_DATAREADY’. (Nota: Bibliotecile DDE nu fac vreo distinctie intre legaturile ‘hot’ si ‘warm’; in ambele cazuri, adtele sunt receptionate imediat prin intermediul functiei ‘callback’ la nivel de client). Functia returneaza zero pentru situatii de succes; in celelalte cazuri se returneaza un cod de eroare negativ.

/*-------- Prototip ---------*/ int SetUpDDEHotLink ( unsigned int Conversation_Handle, char Item_Name[], unsigned int Data_Format, unsigned int Time_Out );

Set Up DDE Warm Link Functia ‘Set Up DDE Warm Link’ confera unei aplicatii ce indeplineste rol de client DDE, capacitatea de setare a unei legaturi ‘warm’ cu un server de DDE. Legatura ‘warm’ va fi aplicata obiectului de date specificat de catre parametrul ‘Item Name’. Daca serverul accepta cererea de legatura ‘warm’, acesta va notifica aplicatia client DDE, la schimbarea valorii obiectului de date. In momentul in care notificarea este receptionata de catre client, functia ‘callback’ aferenta clientului este invocata cu un tip de tranzactie de gen ‘DDE_DATAREADY’. (Nota: Bibliotecile DDE nu fac vreo distinctie intre legaturile ‘hot’ si ‘warm’; in ambele cazuri, adtele sunt receptionate imediat prin intermediul functiei ‘callback’ la nivel de client). Functia returneaza zero pentru situatii de succes; in celelalte cazuri se returneaza un cod de eroare negativ.

Page 100: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 100/140  

 

/*--------- Prototip --------*/ int SetUpDDEWarmLink (unsigned int Conversation_Handle, char Item_Name[], unsigned int Data_Format, unsigned int Time_Out);

Terminate DDE Link Functia ‘Terminate DDE Link’ asigura unei aplicatii client de DDE, capacitatea de inchidere a unei legaturi de notificare, anterior stabilita cu un server, in urma unui apel ‘SetUpDDEWarmLink’ sau ‘SetUpDDEHotLink’. Functia returneaza valoarea zero la succes; altfel se returneaza un cod negativ de eroare.

/*--------- Prototip ----------*/ int TerminateDDELink ( unsigned int Conversation_Handle, char Item_Name[], unsigned int Data_Format, unsigned int Time_Out );

Page 101: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 101/140  

 

Disconnect From DDE Server Functia ‘Disconnect From DDE Server’ realizeaza inchiderea unei conexiuni, anterior stabilita intre un server si un client de DDE. Trebuie notat faptul ca la un moment dat pot exista mai multe conversatii intre un client si un server. Functia returneaza zero in caz de succes, respectiv un cod negativ in caz de eroare.

/*-------- Prototip ----------*/ int DisconnectFromDDEServer ( unsigned int Conversation_Handle );

3.3.3. Functii tratare eroare Functia ‘Get Error String’ realizeaza conversia unui cod de eroare returnat de catre o functie de biblioteca DDE, intr-un mesaj de eroare.

/*-------- Prototip ----------*/ char *GetDDEErrorString ( int Error_Number );

Page 102: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 102/140  

 

Codurile de eroare se pot gasi in fisierul ‘ddesupp.h’.

Nr.crt.

Tip eroare Valoare cod eroare

1. -kDDE_NoError 0 2. -kDDE_UnableToRegisterService -1 3. -kDDE_ExistingServer -2 4. -kDDE_FailedToConnect -3 5. -kDDE_ServerNotRegistered -4 6. -kDDE_TooManyConversations -5 7. -kDDE_ReadFailed -6 8. -kDDE_WriteFailed -7 9. -kDDE_ExecutionFailed -8 10. -kDDE_InvalidParameter -9 11. -kDDE_OutOfMemory -10 12. -kDDE_TimeOutErr -11 13. -kDDE_NoConnectionEstablished -12 14. -kDDE_FailedToSetUpHotLink -13 15. -kDDE_FailedToSetUpWarmLink -14 16. -kDDE_GeneralIOErr -15 17. -kDDE_AdvAckTimeOut -16 18. -kDDE_Busy -17 19. -kDDE_DataAckTimeOut -18 20. -kDDE_DllNotInitialized -19 21. -kDDE_DllUsage -20 22. -kDDE_ExecAckTimeOut -21 23. -kDDE_DataMismatch -22 24. -kDDE_LowMemory -23 25. -kDDE_MemoryError -24 26. -kDDE_NotProcessed -25 27. -kDDE_NoConvEstablished -26 28. -kDDE_PokeAckTimeOut -27 29. -kDDE_PostMsgFailed -28 30. -kDDE_Reentrancy -29 31. -kDDE_ServerDied -30 32. -kDDE_SysError -31 33. -kDDE_UnadvAckTimeOut -32 34. -kDDE_UnfoundQueueId -33

Tabel - valorile codurilor de eroare Remarca: Numarul maxim de conversatii concurente este limitat la 255. Daca se depaseste aceasta limta, se returneaza o eroare de genul ‘-kDDE_TooManyConversations’. Codurile de eroare cuprinse intre –16 si –33 sunt eroori native DDEML, corespunzatoare codurilor de eroare dde din Windows, incepand cu valoarea 0x4000.

Page 103: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 103/140  

 

33..44.. BBiibblliiootteeccaa FFoorrmmaattttiinngg aanndd II//OO Biblioteca Formatting and I/O – contine un set de functii pentru formatarea datelor si pentru citirea din si scrierea in fisiere. Aceste functii pot fi impartite in 4 categorii: • Intrari/isesiri fisiere (3.4.1) • Lucrul cu siruri (3.4.2) • Formatarea datelor (3.4.3) • Detectarea erorilor I/O (3.4.4)

3.4.1. Intrari/isesiri fisiere File I/O – clasa aceasta contine un set de functii pentru deschiderea, inchiderea, citirea, scrierea si obtinerea de informatii despre fisiere stocate pe disk.

• OpenFile – deschide un fisier pentru citire sau scriere, si returneaza un handler catre fisier, pentru a fi folosit in secvente sau subsecvente de cod.

• CloseFile – inchide un fisier. • ReadFile – citeste un numar specificat de biti dintr-un fisier intr-un buffer. • WriteFile – scrie un numar specificat de octeti intr-un fisier, dintr-un buffer. • ArrayToFile – salveaza un array intr-un fisier. Fisierul poate fi ulterior citit intr-un array

folosind FileToArray.

Page 104: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 104/140  

 

• FileToArray – citeste datele dintr-un fisier intr-un array. Poate fi folosita in conjunctie cu ArrayToFile.

• GetFileInfo – verifica daca fisierul exista, si in acest caz, returneaza dimensiunea sa. • SetFilePtr – muta pointerul de fisier la o locatie indicata in interiorul fisierului.

Returneaza numarul de octeti la care se afla pointerul de fisier fata de pozitia de inceput a fisierului, dupa ce a fost mutat.

3.4.2. Lucrul cu siruri StringManipulation – aceasta clasa contine functii care efectueaza o serie de operatii uzuale asupra cotinutului string-urilor si a buffer-elor de caractere.

• StringLength – returneazanumarul de octeti dintr-un string pana la, dar nu-l include si pe, caracterul ASCII NUL.

• StringLowerCase – converteste toate caracterele alfabetice dintr-un string in litere mici.

• StringUpperCase – converteste toate literele dintr-un string in litere mari. • FillBytes – asigneaza o valoare data unui numar specificati de octeti dintr-un buffer. • CopyBytes – copiaza un set de octeti specificat dintr-un buffer in altul.. • CopyString – copiaza octeti dintr-un string in altul, pana cand se intalneste un ASCII

NUL, sau pana cand se ajunge la un numar maxim de octeti copiati. • CompareBytes – compara un set specifica de octeti dintr-un string cu un set specificat

de octeti din alt string. Returneaza o indicatie a relatiei lexicografice intre cele doua seturi de octeti.

• CompareStrings – compara doua stringuri ce se termina cu NUL. Returneaza o indicatie a relatiei lexicografice dintre cele doua stringuri.

Page 105: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 105/140  

 

• FindPattern – cauta un model de octeti intr-un string sau intr-un buffer. Returneaza

pozitia in sir unde a gasit modelul respectiv. • ReadLine – citeste octeti din fisier pana cand se intalneste sfarsit de linie. Valorile citite

se stocheaza intr-un buffer. Daca numarul maxim de octeti cititi depasese un maxim, octetii in exces se vor ignora, pentru ca buffer-ul sa nu dea overflow.

• WriteLine – scrie octetii dintr-un string de caractere intr-un fisier. Dupa ce s-a scris tot buffer-ul, se pune un indicator de sfarsit de linie.

3.4.3. Formatarea datelor Data Formatting – clasa ce contine un set de functii ce permit formatari complexe de date pe mai multe item-uri de diferite tipuri de date. Functii de formatare – contine functii care combina si formateaza unul sau mai multe item-uri sursa intr-un singur item destinatie.

• Fmt – formateaza datele dintr-unul sau mai multe item-uri sursa intr-un item destinatie.

• FmtFile – formateaza datele dintr-unul sau mai multe item-uri sursa intr-un fisier destinatie.

• FmtOut – formateaza datele dintr-unul sau mai multe item-uri sursa si le scrie la iesirea standard.

Functii de scanare – contine functii ce descompun un item sursa intr-unul sau mai multe item-uri destinatie.

• Scan – formateaza un item sursa intr-unul sau mai multe item-uri destinatie. • ScanFile – citeste un fisier si formateaza datele intr-unul sau mai multe item-uri

destinatie. • ScanIn – citeste datele de la intrarea standard si le formateaza intr-unul sau mai multe

item-uri destinatie. Functii de status – clasa contine un set de functii care returneaza informatii de stare despre functiile de formatare de date

• NumFmtdBytes – returneaza numarul de octeti plasati in item-ul destinatie de catre ultima functie de formatare, sau cititi de la sursa de catre ultima functie de scanare.

• GetFmtErrIndex – returneaza o valoare intreaga care este un index la stringul format, si indica locatia unui specificator de format nerecunoscut. Aceasta informatie este utila in debug-ul stringurilor ce contin erori de format al datelor.

3.4.4. Detectarea erorilor I/O • GetFmtIOError – returneaza informatia de eroare I/O specifica pentru ultimul apel al unei

functii din aceasta biblioteca care a efectuat o operatiune de intrare/iesire. Toate functiile care seteaza informatia de eroare la “esec” seteaza functia FmtIONoErrla “succes”. Astfel, daca ultimul apel la o functie de biblioteca a fost efectuat cu succes, aceasta functie returneaza FmtIONoErr.

• GetFmtIOErrString – converteste codul de eroare dat de GetFmtIOErr intr-un mesaj lizibil de eroare.

Page 106: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 106/140  

 

33..55.. BBiibblliiootteeccaa RRSS--223322 Aceasta biblioteca cuprinde functii care permit comunicatia la distanta cu diferite echipamente prin intermediul portului serial. Functiile sunt grupate pe urmatoarele clase: • Open/Close (4.1.1) – functii de initializare, deschidere si inchidere a portului serial; • Input/Output (4.1.2) – functii pentru trasferul datelor pe port; • XModem (4.1.3) – functii ce permit transferul de fisiere folosind acest standard de

comunicatie; • Control (4.1.4) – functii ce permit setarea modurilor de lucru si a parametrilor acestora; • Status (4.1.5) – functii de interogare a starii portului serial; • Callbacks (4.1.6) – functie de asociere a unei rutine de intreruperi pentru evenimentele pe

portul serial. Din punct de vedere al stabilirii legaturii si a modului de transfer a datelor si informatiilor de control, exista doua moduri de tratare a comunicatiei seriale: - utilizarea protocoalelor hardware (implementat prin intermediul semnalelor electrice

furnizate pe portul serial); - utilizarea protocoalelor software (implemenatrea in program a modului in care se preia

si se confirma fiecare octet receptionat). Deoarece marea majoritate a sistemelor sunt de tip “distribuite” nu se intalneste legatura de tip “punct-la-punct” ci se foloseste o magistrala de date seriala, standard RS485. Din punct de vedere al programatorului acest lucru inseamna definirea unui protocol software de realizare a transmisiilor de date si tratarea comunicatiei tot prin intermediul portului serial al calculatorului (fizic, exista un adaptor intre cele doua tipuri de porturi RS232 – RS485). Ca mod de lucru, pentru comunicatia seriala trebuie respectati urmatorii pasi de principiu: - initializarea portului cu parametrii de lucru; - deschiderea portului pentru comunicatie; - trasferul datelor (protocol de transmisie si verificare); - optional – rutine de verificare a starii portului de comunicatie (sa nu existe cumva erori in

functionarea acestuia, erori ce pot duce la blocarea sistemului); - inchidera portului (cand se considera ca nu mai este nevoie de comunicatie seriala). Observatii: a) In explicarea functiilor vom folosi valori numerice; in program se pot folosi ca parametri

variabile, cu conditia respectarii tipului de date cerut. b) Transmisia si receptia pe portul serial se realizeaza intern prin intermediul cozilor de

asteptare asociate fiecarui port. Trimiterea unui mesaj din punctul de vedere al unui programator inseamna inscrierea in aceste cozi a mesajului.

Page 107: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 107/140  

 

3.5.1. Functii de initializare - Clasa Open/Close Aceasta clasa grupeaza functii de initializare, deschidere si inchidere a portului serial • initializarea si deschiderea portului serial: err = OpenComConfig (1, "", 9600, 0, 7, 1, 512, 512) Parametri: - numarul portului serial care urmeaza sa fie folosit (acelasi numar de port este folosit si

in functiile de transfer date); - optional, un nume – sir de caractere – asociat acestui port (este recomandabil evitarea

scrierii unui nume deoarece se genereaza eroare daca specific un nume rezervat pentru alt port);

- viteza de transmisie pe port – ATENTIE: este viteza exprimata in bps – bits per second (unitate echivalenta baud) care difera de viteza de transmitere a unui caracter;

- tipul paritatii (utilizat la verificarea corectitudinii caracterului la receptie) – se recomanda fara paritate, in acest caz parametrul avand valoarea 0;

- numarul bitilor de date (7 sau 8 biti pentru fiecare caracter trimis). Se recomanda folosirea a 8 biti de date, in acest caz putand fi transmis un octet pentru fiecare caracter trimis;

- numarul de biti de stop (1 sau 2); - lungimea bufferului de intrare – pentru fiecare port se defineste o coada de asteptare;

utilizatorul pune aici datele care urmeaza sa fie transmise); - lungimea bufferului de iesire – aici se preiau caracterele receptionate pe portul serial;

trebuie avut grija ca aceasta coada de asteptare sa nu fie depasita ca dimensiune, deci periodic trebuie citite caracterele receptionate (prin functiile specificate in continuare).

- Functia returneaza si un cod de eroare – daca se executa fara erori, acest parametru primeste valoarea zero.

• deschiderea portului (cu ultimii parametri folositi inainte) err = OpenCom (1, “”); Se observa ca de data asta se pastreaza doar primii doi parametri. • inchiderea portului serial CloseCom (1); La inchiderea portului serial trebuie specificat doar numarul asociat acetuia. Inchiderea portului este necesara in urmatoarele situatii: - cand se considera ca s-a incheiat transferul datelor si nu se asteapta receptionarea unui

mesaj; - cand se doreste reprogramarea parametrilor de lucru (enumerati anterior); - cand in functionare se ajunge la blocarea portului de comunicatie (in cazul respectiv poate fi

necesara uneori chiar reinitializarea sistemului de operare).

Page 108: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 108/140  

 

3.5.2. Functii pentru trasferul datelor - Input/Output Aceasta clasa asigura functii pentru trasferul datelor pe port. • citirea unui numar de octeti din bufferul de intrare nr = ComRd (1, &sir[0], 12); Functia permite citirea caracterelor din zona de memorie alocata pentru bufferul de intrare. Citirea datelor din coada presupune automat golirea acesteia, adaugarea la sfarsitul cozii a noilor caractere fiind facuta pe masura ce se receptioneaza pe port. Functia are urmatorii parametri: - numarul portului serial; - variabila de tip sir de caractere unde preiau octetii din coada de asteptare; - numarul de octeti pe care doresc sa-i preiau din coada (lungimea cozii scade in acest mod –

caracterele citite fiind eliminate din coada). Functia returneaza cod de eroare negativ in cazul in care nu se poate executa corect functia sau numar pozitiv reprezentand numarul de caractere preluate corect. • citirea datelor din bufferul de intrare nr = ComRdTerm (1, sir, 45, caracter); Spre deosebire de functia anterioara, aceasta permite citirea octetilor din buffer pana la intalnirea unui octet avand valoarea esprimata in “caracter”. Daca valoarea respectiva nu se regaseste in buffer se citeste un numar maxim de caractere specificat (in exemplu, 45). • citirea unui octet ret = ComRdByte (1); Functia returneaza un intreg negativ in caz de eroare, iar in caz de executie corecta, pe octetul cel mai putin semnificativ, caracterul citit. • citirea datelor de intrare direct in fisier: nr = ComToFile (1, Hnd_fisier, nr_max, caract_end); Functia permite citirea octetilor din bufferul de intrare si salvarea acestora direct in fisier (fisierul trebuie deschis apriori). Este returnat numarul de caractere citite si salvate; citirea se realizeaza pana cand: - se citesc numarul maxim de caractere specificat(nr_max); - se intalneste in sir caracterul de sfarsit (caract_end); - intervine o eroare la portul serial. • transmiterea unui sir de caractere: nr = ComWrt (1, buf_tr, nr_car); Functia permite inscrierea bufferului de transmisie asociat portului respectiv cu octetii din sirul specificat (buf_tr). Numarul de octeti care urmeaza sa fie transmisi sunt specificati in variabila “nr_car”. Functia returneaza numarul de caractere inscrise cu succes in coada de asteptare a portului respectiv.

Page 109: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 109/140  

 

De retinut ca incarcarea sirului in coada se executa la apelul functiei, dar transmiterea propriu-zisa se efectueaza in timp, in functie de capabilitatea liniei de comunicare si a parametrilor setati pentru port (ex: pentru 10 octeti de transmis, la 9600bps, 8 biti de date, fara paritate, un bit de stop sunt necesare in jur de 10msec). Din acest considerent se recomanda verificarea (sau golirea) cozii de transmitere inainte de a inscrie un nou mesaj. • inscrierea unui caracter in coada de transmisie: ComWrtByte (1, car); • inscrierea din fisier in coada de transmisie: nr = ComFromFile (1, hnd_fisier, nr_car, caract_end); Functia este similara cu cea de citire a datelor intr-un fisier, si are aceeasi parametri.

3.5.3. Functii pentru transferul de fisiere - XModem Grupeaza functii ce permit transferul de fisiere folosind acest standard de comunicatie • trimiterea unui fisier err = XModemSend (1, "fisier.txt"); Functia permite transferul (pe blocuri de date) a unui fisier, utilizand protocolul Xmodem. Ca si parametri trbuie specificati doar numele fisierului si portul serial, modul de transfer fiind stabilit cu functia de configurare a protocolului (descrisa in continuare). Se returneaza valoarea zero in cazul in care functia s-a executat fara erori sau un cod de eroare negativ in caz contrar. • receptionarea unui fisier err = XModemReceive (1, "fisier.txt"); • configurarea modului de tranfer err = XModemConfig (1, start_delay, retry, wait, 128); Functia permite configurarea urmatorilor parametri ai protocolului de comunicatie: - portul serial utilizat; - timp maxim de asteptare pana cand destinatarul trimite confirmare de primire (inainte de a

incepe trimiterea unui pachet din fisier, transmitatorul emite o cerere de transfer iar receptorul trebuie sa anunte cand e gata sa primeasca pachetul de date);

- numarul maxim de reluari la emisie in caz de eroare de comunicare; - timp maxim de asteptare a semnalului de confirmare receptie pachet de la destinatar. In

cazul in care nu se receptioneaza in timp util o confirmare de primire, se retransmite pachetul.

- dimensiunea pachetelor de date. Fisierul este impartit in mai multe blocuri de date iar acestea sunt transmise succesiv (automat). Dimensiunea blocurilor (acceptata de CVI) poate fi variabila, desi protocolul standard specifica 128 sau 1024 octeti, dar trebuie avut in vedere ca dimensiunea pachetelor nu poate depasi dimensiunea maxima a bufferelor de intrare/iesire asociate portului respectiv (dimensiune stabilita la deschiderea si intializarea portului serial).

Page 110: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 110/140  

 

Functia returneaza cod de eroare negativ in cazul in care nu poate fi executata corect. Observatie: Functia seteaza doar parametrii protocolului nu si parametrii de comunicare ai portului serial.

3.5.4. Functii de setare a modului de lucru - Control Grupeaza functii ce permit setarea modurilor de lucru si a parametrilor acestora. • stabilirea timpului maxim de asteptare pentru portul serial err = SetComTime (1, timeout); Functia stabileste timpul mexim de asteptare al unei functii (care lucreza cu portul serial) pana cand sa semnalizeze faptul ca a intervenit o eroare. In cazul in care functia se executa corect, acest parametru nu este luat in considerare. Timpul maxim este specificat in secunde (dar se poate merge si la nivel de milisecunde). Observatie: In timpul rularii programului, la apelul unei functii care acceseaza portul serial, daca acesta da erori se intrerupe executia tuturor taskurilor pana cand trece acest timp sau se executa corect functia. Recomandam deci setarea unui “timeout” cat mai scurt si verificarea starii de functionare normala a portului prin intermediul functiilor de stare. • stabilirea modului de transfer – control hardvare sau software al confirmarii de receptie SetXMode (1, 0); • stabileste activarea/dezactivarea protocoalelor software; SetCTSMode (1, LWRS_HWHANDSHAKE_CTS_RTS); • stabileste activarea/dezactivarea protocolului hardware de comunicare (liniile DTR

– data terminal ready, CTS – clear to send, RTS – request to send). De vazut standardul de comunicatie RS232 unde sunt detaliate functiile acestor semnale electrice. De retinut ca in majoritatea cazurilor se implementeaza propriul protocol de comunicare iar acestea implicite sunt invalidate (utilizatorul este cel care implementeaza un protocol de comunicare soft).

• stergerea (golirea) cozilor de intrare/iesire FlushInQ (nr_port); FlushOutQ (nr_port); Aceste doua functii permit golirea (stergerea tuturor caracterelor) cozilor de intrare/iesire ale portului specificat. Golirea respectiva inseamna ignorarea tuturor caracterelor existente. • generarea unei pauze in comunicarea pe serial: ComBreak (nr_port, timp); Permite generarea unei pauze in comunicarea seriala de pe portul specificat, un numar de “timp” milisecunde. Functia este utila in cazul in care coada de receptie este aproape plina iar programul nu a preluat si prelucrat datele (se foloseste in conjunctie cu functiile de stare).

Page 111: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 111/140  

 

• generarea unei secvente escape: ret = ComSetEscape (nr_port, secv_predefinita); Permite generarea spre portul serial a unei secvente escape (aceste secvente escape sunt de fapt comenzi date prin intermediul programului spre controllerul serial pentru activarea/ dezactivarea fortata a unor semnale sau moduri de lucru). Aceste secvente sunt utile in conditiile in care se conecteaza un adaptor de interfata seriala RS232/RS485, pentru stabilirea modului de lucru al acesteia. Exista urmatoarele secvente predefinite - CLRDTR – resetare semnal DTR; - CLRRTS – resetare semnal RTS; - GETMAXCOM – se returneaza numarul maxim de porturi seriale suportate de platforma

curenta (de calculatorul pe care ruleaza aplicatia); - SETDTR – seteaza (trimite semnal) DTR; - SETRTS – seteaza (trimite semnal) RTS; - SETXOFF – determina o actiune din parte portului serial similara cu receptionarea de catre

acesta a unui caracter XOFF (protocol de comunicare sofware); - SETXON – similar pentru XON; Urmatoarele secvente sunt suportate doar de interfetele seriale produse de National Instruments: - WIRE_4 – seteaza modul de lucru pe 4 fire (doua sensuri de transmisie); - WIRE_2_ECHO – seteaza modul de lucru pe 2 fire, cu control DTR (intern se furnizeaza

raspuns la semnal DTR); - WIRE_2_CTRL – seteaza modul de lucru pe 2 fire, cu control DTR, fara ecou – nu se pune

intern semnalul generat ca raspuns.

3.5.5. Functii de interogare a starii - Status Grupeaza functii de interogare a starii portului serial. • cererea starii curente a portului serial stare = GetComStat (nr_port); Functia returneaza continutul registrului de stare al portului serial. Fiecare conditie de functionare seteaza un anumit bit de stare. In practica nu se utilizeaza aceasta functie decat in conditiile in care se doreste ca programul sa ofere detalii cat mai exacte despre imposibilitatea realizarii comunicatiei. • verificarea coziilor de intrare/iesire: GetInQLen (nr_port); GetOutQLen (nr_port); Aceste functii returneaza numarul de caractere existent in cozile de intrare/iesire ale portului respectiv. Functiile sunt utile in implementarea propriului protocol de comunicare software pentru a evita supraincarcarea portului si pierderea datelor. • cerere eroare port serial

Page 112: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 112/140  

 

err = ReturnRS232Err ( ); Functia returneaza ultimul cod de eroare survenit in comunicatia seriala. Nu are parametri de intrare iar semnificatia codurilor este orientativa. Functia este utila doar in etapa de depanare a programelor (la rularea pas cu pas, se poate determina cauza care a generat eroare de comunicare). • cerere de detaliere a unei erorii de comunicare mesaj = GetRS232ErrorString (err); Functia returneaza mesaj explicit pentru un anumit cod de eroare specificat. Este utila in cazul in care se doreste afisarea pe ecran, pentru utilizator a erorii aparute.

3.5.6. Functii de asociere a rutinelor de intreruperi - Callbacks Este o functie de asociere a unei rutine de intreruperi pentru evenimentele pe portul serial. • asocierea unei rutine de tratare a comunicatiei seriale err = InstallComCallback (nr_port, cod_ev, nr_min_oct, caract, pointer, data); Functia permite atasarea unei rutine de tratare a intreruperii seriale si stabileste conditiile in care aceasta este generata. Ca si parametri se specifica: - numarul portului serial pentru care se ataseaza rutina de intrerupere; - evenimentul care genereaza intreruperea (receptia oricarui caracter, a unui numar definit

de caractere, receptia unui anumit caracter, semnalizare hard pe linie, etc); - nr_min_oct – folosit in conjunctie cu parametrul anterior, in cazul in care acesta are setata

optiunea “receptionarea unui anumit numar de caractere”; - caract – similar cu “nr_min_oct”, dar in conditiile in care este aleasa optiunea

“receptionarea unui anumit caracter”; - pointer la functia de tratare a intreruperii (pointer de tipul CommCallbackPtr), iar functia

trebuie sa aiba urmatoarea forma: void CVICALLBACK nume_fct (int nr_port, int eventMask, void *callbackData) { switch (eventMask): { .....pentru fiecare eveniment care poate genera intrerupere se scrie cod corespunzator } } De retinut ca: aceasta functie trebuie sa aiba incluse proceduri de tratare a fiecarui eveniment care poate genera apelul ei. In practica se utilizeaza in special intreruperea de receptie a unui anumit caracter (caz in care se trateaza tot mesajul receptionat si se goleste coada de intrare) sau receptia a cate unui caracter (caz in care decizia de tratare a unui sfarsit de mesaj ramane la latitudinea programatorului, in functie de protocolul pe care il implementeaza). - 4 octeti de date prin intermediul carora se pot transfera date spre rutina de tratare a

intreruperii; Functia returneaza valoarea zero in cazul in care s-a executat corect sau un intreg negativ in caz de eroare.

Page 113: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 113/140  

 

3.5.7. Tratarea comunicaţiei seriale pe magistrală industrială locală sau la distanţă Un exemplu tipic de utilizare al magistralei seriale este comunicarea la distanta facand uz de echipamente de transmisie de tip modem. Aceste echipamente lucreaza sub protocoale elaborate, iar dupa stabilirea conexiunii pun la dispozitia sistemului de automatizare un canal serial pe care se lucreaza facand uz de functiile prezentate in paragraful 4.1. Secventa de program care face obiectul prezentului paragraf cuprinde rutinele care gestioneaza comunicatia pentru un modem pe linie telefonica. • Rutina distribuitor_comunicatie este o rutina apelata in main callback si contine

un automat de tranzitii pentru diferite functii apelate in lucrul cu modemul int distribuitor_comunicatie(int pan,int ctrl,int event,void *cbD,int e1,int e2) { if (event == EVENT_IDLE) { distare++; if(distare==(DIMSTARE)) distare=0; // while (tabstare[distare]==0 && distare<(DIMSTARE-1)) distare++; if(indbeep==1) {Beep(); Beep(); } afisare(); if(ceas!=0) ttt=TimeStr (); if(tabstare[distare]==0) return(0); switch(distare) {case 0: Sterge_coada(); break; case 1: break; case 2: break; case 3: Modem_solicit_mas(); break; // cd->128 case 4: Modem_citire_mas(); break; // cm->modem->128 case 5: Modem_transmite_cda(); break; // cd->130 case 6: Modem_confirmare_cda(); break; // cm->modem->130 case 7: Solicitare_fisier(); break; // cd->131 case 8: Confirmare_fisier(); break; // cm->modem->131 case 9: Informatii_fisier(); break; // cd->132 case 10: Receptie_informatii(); break; // cd->modem->132 case 11: Test_modem(); break; //asteptare pe COM case 12: Recep_eroare_maistri(); break case 13: break; case 14: Solicitare_modem(); break; case 15: Confirmare_solicitare(); break; case 16: break; case 17: Confirmare_transfer(); break; case 18: break; case 19: break; case 20: break; case 21: break; case 22: break; case 23: Verificare_ceas(); break; } } return(0); } • aici se prezinta rutinele apelate de distribuitorul de comunicatie si subrutinele care au

concurat la realizarea acestora

Page 114: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 114/140  

 

void analiza_regim(void) { // if((urmarire>0 || fisier>0 || comanda>0) && online==0) online=1; if(online==1) if(tabstare[15]==0) { tabstare[14]=1; return;} if(urmarire==2 || fisier==2 || comanda==2) return; if(online==3) { tabstare[3]=0; tabstare[5]=0; tabstare[7]=0; Deconectare_modem(); return; } if(online==2) { if(comanda==1) {tabstare[5]=1; tabstare[3]=0; return; } if(ifisier==1) {tabstare[9]=1; tabstare[3]=0; return; } if(fisier==1) {tabstare[7]=1; tabstare[3]=0; return; } if(urmarire==1){tabstare[3]=1; distare=3; return; } } } int send_comenzi(char *sir) { unsigned char c,bb,bufrasp[200]; int i; FlushInQ(COM3); FlushOutQ(COM3); for(i=0;i<strlen(sir);i++) { c = toupper(sir[i]); switch(c) { case '!': /* replace ! with carriage return */ c = CR; break; case '~': /* delay 1/2 second */ Delay(0.500); c = ' '; break; case ' ': /* delay 1/4 second */ Delay(0.250); break; } nrb = ComWrtByte (COM3, c); if(nrb!=1) { return(1); } Delay(0.180); bb = ComRdByte (COM3); bufrasp[i]=bb; if(bb!=c) { return(1); } } return(0); } void initmodem(void) {int i; int lung; unsigned char bufm[]={"+++ATH0 !"}; unsigned char bufm1[50]={"AT E1 Q0 V0 X4 S0=2 S6=30 !"}; memcpy(&bufm1[18],&bufcfg_modem[10],10); lung=strlen(&bufm1[0]);

Page 115: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 115/140  

 

for(i=lung-1;i>lung-8;i--) {if(bufm1[i]!=' ') break;} memcpy(&bufm1[i+2],"S6=",3); memcpy(&bufm1[i+5],&bufcfg_modem[20],10); lung=strlen(&bufm1[0]); for(i=lung-1;i>lung-8;i--) if(bufm1[i]!=' ') break; bufm1[i+2]='!'; bufm1[i+3]='\0'; ver=send_comenzi(&bufm[0]); nrc_modem=GetInQLen (COM3); memset(&buf_modem[0],0,255); if(nrc_modem>0) { nrb = ComRd (COM3, buf_modem,nrc_modem);} ver=send_comenzi(&bufm1[0]); nrc_modem=GetInQLen (COM3); memset(&buf_modem[0],0,255); if(nrc_modem>0) { nrb = ComRd (COM3, buf_modem,nrc_modem);} if(buf_modem[0]!='0') {ermes1(24); return; } tabstare[11]=1; online=0; fisier=0; ifisier=0; urmarire=0; comanda=0; } int config_modem(void) { port_modem_open = 0; /* initializare port nedeschis */ DisableBreakOnLibraryErrors (); FlushInQ(COM3); FlushOutQ(COM3); RS232Error = OpenComConfig (COM3,"COM3",(long)vitcom_modem,0,8,1,512,512); EnableBreakOnLibraryErrors (); if (RS232Error) { ermes1 (27); CloseCom(COM3); ver=SetCtrlAttribute(prfond,ofond_online,ATTR_VISIBLE,0); return(1); } if (RS232Error == 0) { port_modem_open = 1; SetXMode (COM3,0); SetCTSMode (COM3,0); SetComTime (COM3,3.0); initmodem(); } return(0); } void hangmodem(void) // apelat la iesirea din program { unsigned char bufm[]={"+++ATH0 !"}; ver=send_comenzi(&bufm[0]); online=0; } void Test_modem(void) // tabstare 11 { int rv; nrc_modem=GetInQLen (COM3); if(nrc_modem==0) return; memset(&buf_modem[0],0,255);

Page 116: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 116/140  

 

nrb = ComRd (COM3, buf_modem,1); switch(buf_modem[0]) { case '0': //ok break; case '2': //ring break; case '3': // no carrier Hangup_modem(); break; case '5': //connect vit 1200 case '9': //connect vit 600 rv=memcmp(&buf_modem[0],&buf_vit[0],1); if(rv==0) {tabstare[11]=0; tabstare[12]=1; } Delay(1); break; case '1': //connect 19200=16 9600=12 4800=11 2400=10 nrb = ComRd (COM3,&buf_modem[1],1); rv=memcmp(&buf_modem[0],&buf_vit[0],2); if(rv==0) {tabstare[11]=0; tabstare[12]=1; } Delay(1); break; default: break; } } void Solicitare_modem(void) // tabstare 14 { int i,lung; unsigned char bufm[]={"AT S0 !"}; unsigned char bufm1[20]={"ATDP 190558 !"}; // 190558 memcpy(&bufm1[5],&bufcfg_modem[0],10); lung=strlen(&bufm1[0]); for(i=lung-1;i>lung-8;i--) {if(bufm1[i]!=' ') break;} bufm1[i+1]=' '; bufm1[i+2]='!'; bufm1[i+3]='\0'; ver=send_comenzi(&bufm[0]); nrc_modem=GetInQLen (COM3); memset(&buf_modem[0],0,255); if(nrc_modem>0) { nrb = ComRd (COM3, buf_modem,nrc_modem);} if(buf_modem[0]!='0') { ermes1(25); return; } ver=send_comenzi(&bufm1[0]); tabstare[11]=0; tabstare[14]=0; // se renunta la test_modem tabstare[15]=1; }

Page 117: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 117/140  

 

void este_cuplaj(void) { tabstare[15]=0; Delay(2); FlushInQ(COM3); online=2; //este cuplaj analiza_regim(); exista_leg=1; ver=SetCtrlAttribute(prfond,ofond_incerc_conect,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_ab_incerc_conect,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_conect,ATTR_VISIBLE,1); ver=SetCtrlAttribute(prfond,ofond_offline,ATTR_VISIBLE,1); ver=SetCtrlAttribute(prfond,ofond_transfer_fis,ATTR_VISIBLE,1); if(conect!=0) ver=SetCtrlAttribute(pr1,conect,ATTR_VISIBLE,1); } void Confirmare_solicitare(void) // tabstare 15 { int rv; unsigned char bufm[]={"A/"}; nrc_modem=GetInQLen (COM3); if(nrc_modem==0) return; memset(&buf_modem[0],0,255); if(nrc_modem>0) { ver = time (&time_curent); nrb = ComRd (COM3, buf_modem,1); switch(buf_modem[0]) { case '6': //no dialtone case '7': //busy ver=send_comenzi(&bufm[0]); break; case '3': //no carrier case '8': //no answer ver=send_comenzi(&bufm[0]); break; case '5': //connect vit 1200 case '9': //connect vit 600 rv=memcmp(&buf_modem[0],&buf_vit[0],1); if(rv==0) este_cuplaj(); break; case '1': //connect 19200=16 9600=12 4800=11 2400=10 nrb = ComRd (COM3,&buf_modem[1],1); rv=memcmp(&buf_modem[0],&buf_vit[0],2); if(rv==0) este_cuplaj(); break; default: ver=send_comenzi(&bufm[0]); break; } } } void Modem_solicit_mas(void) //tabstare 3 { if(urmarire==0) { tabstare[3]=0; return; } ver=0; ope=128;

Page 118: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 118/140  

 

nrc_modem=GetInQLen (COM3); if(nrc_modem==0) {fa_mesaj(ope,&vid[0]); ver=trim_mesaj_modem(); if(ver==0) { tabstare[4]=1; tabstare[3]=0; urmarire=2; FlushInQ(COM3); } } else nrb = ComRd (COM3, buf_modem,nrc_modem); } void Modem_citire_mas(void) // tabstare 4 { int coder,tip,bytes_read; ver=0; coder=4; ope=128; nrc_modem=GetInQLen (COM3); if(nrc_modem<2) ver++; if(ver==0) { memset(&buf_read[0],0,255); bytes_read = ComRd (COM3, buf_read,2); RS232Error = ReturnRS232Err (); if(RS232Error!=0) ver++; } if(ver==0) { nrb=buf_read[1]; if(nrb>0) bytes_read=ComRd(COM3,&buf_read[2],nrb); RS232Error = ReturnRS232Err (); if(RS232Error!=0) ver++; } if(ver==0) { tip=desfa_mesaj(); if(tip!=ope) ver++; } if(ver==0) {preia_masuri(); if(online==3) urmarire=0; else urmarire=1; contors[coder]=0; tabstare[coder]=0; analiza_regim(); } else { contors[coder]++;} if(contors[coder]>13) { FlushInQ(COM3); ermes1(23); CloseCom (COM3); RS232Error = OpenComConfig (COM3,"COM3",(long)vitcom_modem,0,8,1,512,512); if(online==3) urmarire=0; else urmarire=1; contors[coder]=0; tabstare[coder]=0; analiza_regim(); } }

Page 119: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 119/140  

 

void Modem_transmite_cda(void) //tabstare 5 {ver=0; ope=130; fa_mesaj_l(ope,&mesope[0],2); ver=trim_mesaj_modem(); if(ver==0) { tabstare[6]=1; tabstare[5]=0; comanda=2; } } void Modem_confirmare_cda(void) //tabstare 6 {int coder,tip,bytes_read; ver=0; coder=6; ope=130; memset(&buf_read[0],0,255); bytes_read = ComRd (COM3, buf_read,2); RS232Error = ReturnRS232Err (); if(RS232Error!=0) ver++; if(ver==0) { nrb=buf_read[1]; if(nrb>0) bytes_read=ComRd(COM3,&buf_read[2],nrb); RS232Error = ReturnRS232Err (); if(RS232Error!=0) ver++; } if(ver==0) { tip=desfa_mesaj(); if(tip!=ope) ver++; } if(ver==0) {contors[coder]=0; tabstare[6]=0; comanda=0; analiza_regim(); } else {if(contors[coder]<3) { contors[coder]++; return;} else { FlushInQ(COM3); ermes1(26); contors[coder]=0; tabstare[6]=0; comanda=0; analiza_regim(); } } } void prel_inf_fisier(void) {int i; memset(&tab_inf[0],0,8*4); total_fisier=0; for(i=0;i<8;i++) { memcpy (&fis_salvat[17],&nume_fis[i][0],13); lung_fis_dispecer[i]=0; ver=GetFileInfo (&fis_salvat[0],&lung_fis_dispecer[i]); if(lung_fis_maistri[i]>lung_fis_dispecer[i]) { tab_inf[i]=1; total_fisier+=lung_fis_maistri[i]-lung_fis_dispecer[i]; } } }

Page 120: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 120/140  

 

void analiza_fisier(void) { int i; fisier=0; ramas_fisier=0; for(i=0;i<8;i++) {if(lung_fis_maistri[i]>lung_fis_dispecer[i]) ramas_fisier+=lung_fis_maistri[i]-lung_fis_dispecer[i]; } if(total_fisier!=0) curent_fisier= 100*(total_fisier-ramas_fisier)/total_fisier; else curent_fisier=0; SetCtrlVal(prfond,ofond_fis_trans,curent_fisier); for(i=0;i<8;i++) { if(tab_inf[i]==1) { lungf=lung_fis_maistri[i]-lung_fis_dispecer[i]; if(lungf > 500) lungf=500; adresaf=lung_fis_dispecer[i]; numarf=i; fisier=1; return; } } if(fisier==0) for(i=0;i<8;i++) { if(tab_head[i]==1) { lungf=64; adresaf=0; numarf=i; fisier=1; return; } } if(fisier==0) { ver=SetCtrlAttribute(prfond,ofond_ab_transfer_fis,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_fis_trans,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_transfer_fis,ATTR_VISIBLE,1); } } void Solicitare_fisier(void) // tabstare 7 { unsigned char buf_temp[13]; ver=0; ope=131; memcpy(&buf_temp[0],&numarf,4); memcpy(&buf_temp[4],&adresaf,4); memcpy(&buf_temp[8],&lungf,4); fa_mesaj_l(ope,&buf_temp[0],12); ver=trim_mesaj_modem(); if(ver==0) { tabstare[7]=0; tabstare[8]=1; distare=0; fisier=2; } }

Page 121: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 121/140  

 

void Confirmare_fisier(void) //tabstare 8 { int handle,nrb; nrc_modem=GetInQLen (COM3); if(nrc_modem<lungf) return; memcpy (&fis_salvat[17],&nume_fis[numarf][0],13); handle = OpenFile (&fis_salvat[0], VAL_READ_WRITE, VAL_OPEN_AS_IS,VAL_BINARY); nrb = SetFilePtr (handle, adresaf, 0); nrb = ComToFile (COM3, handle,lungf, -1); ver = CloseFile (handle); if(tab_inf[numarf]==0 && tab_head[numarf]==1) tab_head[numarf]=0; ver=GetFileInfo (&fis_salvat[0],&lung_fis_dispecer[numarf]); if(lung_fis_maistri[numarf]==lung_fis_dispecer[numarf]) tab_inf[numarf]=0; tabstare[8]=0; fisier=0; analiza_fisier(); analiza_regim(); } void pune_data_inf(void) {char vv0,vv1; int i,handle,nrb,an_anterior; long lng; unsigned char buf[11]; datcrt=DateStr(); //mm-dd-yyyy an_anterior=0; for(i=0;i<2;i++) // anul in curs { nume_fis[i][3]=datcrt[8]; nume_fis[i][4]=datcrt[9]; } for(i=4;i<8;i++) { nume_fis[i][3]=datcrt[8]; nume_fis[i][4]=datcrt[9]; } nume_fis[1][0]=datcrt[0]; nume_fis[1][1]=datcrt[1];//luna curenta nume_fis[5][0]=datcrt[0]; nume_fis[5][1]=datcrt[1]; nume_fis[7][0]=datcrt[0]; nume_fis[7][1]=datcrt[1]; vv0='0'; if(datcrt[0]=='0') vv1=datcrt[1]-1; else if(datcrt[1]=='0') vv1='9'; else {vv0='1'; vv1=datcrt[1]-1;} if(vv0=='0' && vv1=='0') // luna anterioara e decembrie { vv0='1'; vv1='2'; an_anterior=1; } nume_fis[0][0]=vv0; nume_fis[0][1]=vv1; nume_fis[4][0]=vv0; nume_fis[4][1]=vv1; nume_fis[6][0]=vv0; nume_fis[6][1]=vv1; if(an_anterior==1) {vv0=datcrt[8]; vv1=datcrt[9]; if(vv1>'0') vv1--; else {if(vv0=='0') vv0='9'; else vv0--; vv1='9'; } nume_fis[0][3]=vv0; nume_fis[0][4]=vv1; nume_fis[4][3]=vv0; nume_fis[4][4]=vv1; nume_fis[6][3]=vv0; nume_fis[6][4]=vv1; }

Page 122: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 122/140  

 

// daca fisierele curente sunt din alta zi se sterg memset(&fis_salvat[17],0,18); memcpy(&fis_salvat[17],&nume_fis[2][0],13); lng=0; ver=GetFileInfo(&fis_salvat[0],&lng); if(lng>0) {handle=OpenFile(&fis_salvat[0],VAL_READ_ONLY,VAL_OPEN_AS_IS,VAL_BINARY); nrb=ReadFile(handle,&buf[0],10); CloseFile(handle); ver=memcmp(&buf[0],&datcrt[0],10); if(ver!=0) DeleteFile(&fis_salvat[0]); } memset(&fis_salvat[17],0,18); lng=0; memcpy(&fis_salvat[17],&nume_fis[3][0],13); ver=GetFileInfo(&fis_salvat[0],&lng); if(lng>0) {handle=OpenFile(&fis_salvat[0],VAL_READ_ONLY,VAL_OPEN_AS_IS,VAL_BINARY); nrb=ReadFile(handle,&buf[0],10); CloseFile(handle); ver=memcmp(&buf[0],&datcrt[0],10); if(ver!=0) DeleteFile(&fis_salvat[0]); } } void Informatii_fisier(void) // tabstare 9 {unsigned char buf_temp[105]; ver=0; ope=132; pune_data_inf(); memcpy(&buf_temp[0],&nume_fis[0][0],104); fa_mesaj_l(ope,&buf_temp[0],104); ver=trim_mesaj_modem(); if(ver==0) { tabstare[9]=0; tabstare[10]=1; distare++; ifisier=2; } } void Receptie_informatii(void) // tabstare 10 { int coder,tip,bytes_read; ver=0; coder=10; ope=132; memset(&buf_read[0],0,255); bytes_read = ComRd (COM3, buf_read,2); RS232Error = ReturnRS232Err (); if(RS232Error!=0) ver++; if(ver==0) { nrb=buf_read[1]; if(nrb>0) bytes_read=ComRd(COM3,&buf_read[2],nrb); RS232Error = ReturnRS232Err (); if(RS232Error!=0) ver++; } if(ver==0) { tip=desfa_mesaj(); if(tip!=ope) ver++; }

Page 123: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 123/140  

 

if(ver==0) { contors[coder]=0; tabstare[10]=0; ifisier=0; memcpy(&lung_fis_maistri[0],&buf_read[2],32); memset(&tab_head[0],0,8*4); prel_inf_fisier(); memcpy(&tab_head[0],&tab_inf[0],8*4); tab_head[2]=0; tab_head[3]=0; analiza_fisier(); analiza_regim(); } else {if(contors[coder]<3) { contors[coder]++; return;} else { FlushInQ(COM3); ermes1(26); contors[coder]=0; tabstare[10]=0; analiza_regim(); } } } int Hangup_modem(void) // transfera secventa de deconectare { int bytes_sent,lung,i; unsigned char bufm[]={"+++"}; unsigned char bufm1[20]={"ATH0 S0=2 !"}; memcpy(&bufm1[8],&bufcfg_modem[10],10); lung=strlen(&bufm1[0]); for(i=lung-1;i>lung-8;i--) {if(bufm1[i]!=' ') break;} bufm1[i+2]='!'; bufm1[i+3]='\0'; Delay(1); bytes_sent = ComWrt (COM3, &bufm[0], 3); RS232Error = ReturnRS232Err (); if (RS232Error) return(1); Delay(2); ver=send_comenzi(&bufm1[0]); Delay(1); nrc_modem=GetInQLen (COM3); memset(&buf_modem[0],0,255); if(nrc_modem>0) { nrb = ComRd (COM3, buf_modem,nrc_modem);} if(buf_modem[0]!='0') { ermes1(25); return(1); } rep_solicit=0; tabstare[11]=1; return(0); } void Deconectare_modem(void) // comunica deconectare { ver=0; ope=129; fa_mesaj(ope,&vid[0]); ver=trim_mesaj_modem(); if(ver!=0)

Page 124: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 124/140  

 

return; ver=Hangup_modem(); if(ver==1) Hangup_modem(); online=0; urmarire=0; comanda=0; fisier=0; ifisier=0; if(conect!=0) ver=SetCtrlAttribute(pr1,conect,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_conect,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_offline,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_transfer_fis,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_ab_transfer_fis,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_online,ATTR_VISIBLE,1); exista_leg=0; } void Recep_eroare_maistri(void) { online=2; urmarire=1; //este cuplaj analiza_regim(); exista_leg=1; ver=SetCtrlAttribute(prfond,ofond_incerc_conect,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_ab_incerc_conect,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_online,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_conect,ATTR_VISIBLE,1); ver=SetCtrlAttribute(prfond,ofond_offline,ATTR_VISIBLE,1); ver=SetCtrlAttribute(prfond,ofond_transfer_fis,ATTR_VISIBLE,1); if(conect!=0) ver=SetCtrlAttribute(pr1,conect,ATTR_VISIBLE,1); tabstare[12]=0; ermes(" ","Solicitare comunicatie din camera maitrilor-Intrati in urmarire"); } void trans_echip(void) { ceas=oechip_ceas; tminute=oechip_minute; tore=oechip_ore; tsec=oechip_sec; } int trim_mesaj_modem(void) { int bytes_sent; FlushInQ (COM3); bytes_sent = ComWrt (COM3, &buf_send[0], send_byte+4); RS232Error = ReturnRS232Err (); if (RS232Error) return(1); return(0); } int cbf_online(int panel,int ctrl,int ev,void *cbD,int ed1,int ed2) { if(ev==ELC) {if(online==0) { online=1; urmarire=1; analiza_regim(); ver=SetCtrlAttribute(prfond,ofond_online,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_incerc_conect,ATTR_VISIBLE,1); ver=SetCtrlAttribute(prfond,ofond_ab_incerc_conect,ATTR_VISIBLE,1); } } return(0); }

Page 125: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 125/140  

 

int cbf_transfer_fis(int panel,int ctrl,int ev,void *cbD,int ed1,int ed2) {if(ev==ELC) {if(ifisier==0) { ifisier=1; analiza_regim(); ver=SetCtrlAttribute(prfond,ofond_transfer_fis,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_fis_trans,ATTR_VISIBLE,1); ver=SetCtrlAttribute(prfond,ofond_ab_transfer_fis,ATTR_VISIBLE,1); } } return(0); } int cbf_ab_transfer_fis(int panel,int ctrl,int ev,void *cbD,int ed1,int ed2) { if(ev==ELC) {if(fisier>0) { fisier=0; analiza_regim(); ver=SetCtrlAttribute(prfond,ofond_ab_transfer_fis,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_fis_trans,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_transfer_fis,ATTR_VISIBLE,1); } } return(0); } int cbf_offline(int panel,int ctrl,int ev,void *cbD,int ed1,int ed2) { if(ev==ELC) {if(online>0) {online=3; analiza_regim(); } } return(0); } int cbf_ab_incerc_conect(int panel,int ctrl,int ev,void *cbD,int ed1,int ed2) {if(ev==ELC) {if(online>0) {online=3; tabstare[14]=0; tabstare[15]=0; analiza_regim(); ver=SetCtrlAttribute(prfond,ofond_ab_incerc_conect,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_incerc_conect,ATTR_VISIBLE,0); ver=SetCtrlAttribute(prfond,ofond_online,ATTR_VISIBLE,1); } } return(0); } void cit_fis_conf_modem(void) { static FILE *handle; long int lconf; int i,j; ver = GetFileInfo (&bufconf_modem[0],&lconf); for (i=0;i<40;i++) bufcfg_modem[i]=0x20; if(ver==0) { handle = fopen (&bufconf_modem[0],"a"); ver = fseek (handle, 0, SEEK_SET); nrb = fwrite (&bufcfg_modem[0], 40, 1, handle); fclose(handle); } else { handle = fopen (&bufconf_modem[0], "r+"); ver = fseek (handle, 0, SEEK_SET);

Page 126: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 126/140  

 

nrb = fread (&bufcfg_modem[0], 40, 1, handle); fclose(handle); } for(i=39;i>29;i--) if(bufcfg_modem[i]==' ') bufcfg_modem[i]='\0'; if(bufcfg_modem[30]!='\0') Scan(&bufcfg_modem[30],"%s>%d",&vitcom_modem); buf_vit[0]='1'; switch(vitcom_modem) { case 600: buf_vit[0]='9'; break; case 1200: buf_vit[0]='5'; break; case 2400: buf_vit[1]='0'; break; case 4800: buf_vit[1]='1'; break; case 9600: buf_vit[1]='2'; break; case 19200: buf_vit[1]='6'; break; } } void scrie_fis_conf_modem(void) { static FILE *handle; long int lconf; unsigned int vali; int i; { handle = fopen (&bufconf_modem[0],"r+"); ver = fseek (handle, 0, SEEK_SET); nrb = fwrite (&bufcfg_modem[0], 40, 1, handle); fclose(handle); } } int cbf_salvmodem(int panel,int ctrl,int ev,void *cbD,int ed1,int ed2) { int i; if(ev==ELC) { for (i=0;i<4;i++) if(nume_cfg_modem[i]!=0) { ver = GetCtrlVal(pr1,nume_cfg_modem[i],&bufcfg_modem[10*i]); bufcfg_modem[9+10*i]='\0'; } scrie_fis_conf_modem(); } return(0); } int cbf_temp(int panel,int ctrl,int ev,void *cbD,int ed1,int ed2) { static FILE *handle; int i; unsigned char head[64]; if(ev==ELC) { handle = fopen ("C:\\AERAJ\\SALVARE\\07_99_v1.aki","rb+"); ver = fseek (handle, 0, SEEK_SET); nrb = fread (&head[0], 64, 1, handle); ver = fseek (handle, 0, SEEK_SET); ver = fclose (handle); } return(0); }

Page 127: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 127/140  

 

4. Legatura CVI cu alte medii de programare. Instrumente  

44..11.. LLeeggaattuurraa CCVVII ccuu aallttee mmeeddiiii ddee pprrooggrraammaarree

4.1.1. Utilizarea liniei de comanda pentru transferul parametrilor Ca la orice aplicatie se pot transfera parametri la lansarea in executie a unei aplicatii. Acesti parametri sunt campuri de tip text, separate prin spatii (unul sau mai multe spatii sau tab fiind considerat separator de camp). Acesti parametri se regasesc in parametrii de apel ai functiei “main”: int main (int argc, char *argv[ ]) unde: - argc – numarul de campuri din linia de comanda. Acesta are valoarea minim 1 deoarece

primul parametru este intotdeauna numele executabilului; - argv – un sir de pointeri spre fiecare camp din linia de comanda (argv[0] este un pointer la

sirul ce cuprinde numele programului). Prin utilizarea parametrilor in linia de comanda se pot specifica anumite conditii initiale la rularea programelor sau se pot transfera chiar valori numerice sau sir, in conditiile in care numarul parametrilor este relativ mic. Este utilizabila aceasta metoda si pentru a realiza asocierile la tipurile de fisiere, specifice sistemului de operare Windows (la un anumit tip de fisier asociez programul meu, care trebuie sa stie sa-l deschida. La asocierea respectiva din explorer, la actiunea OPEN specific numele fisierului selectat in continuarea liniei de comanda). Exemplu: Programul trebuie sa realizeze conversia unui anumit tip de fisier dintr-un format in altul. Numele fisierului care trebuie citit este selectat in cadrul programului (prin intermediul unei ferestre de tip explorer) sau poate fi specificat in linia de comanda la lansarea programului (de exemplu: din linia de comanda se tasteaza “conv.exe nume_fisier.val”) Se observa ca daca se lanseaza aplicatia cu un parametru valid, se executa conversia, si se paraseste aplicatia. int main (int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) == 0)/* Needed if linking in external compiler; harmless otherwise */ return -1; /* out of memory */ if ((hnd_princ = LoadPanel (0, "ist_2_dbf.uir", p)) < 0) return -1; DisplayPanel (hnd_princ);//afisez totusi ecranul principal al aplicatiei if (argc == 1) {//daca in afara numelui executabilului nu am nimic, afisez doar interfata utilizator SetCtrlAttribute (hnd_princ, p_progress, ATTR_SHOW_DIG_DISP, 0); RunUserInterface ();//si las operatorului posibilitatea de a lucra cu interfata } else {//HOPA! Am ceva in linia de comanda - un nume de fisier lungime = strlen (argv[1]);//iau numele si verific extensia

Page 128: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 128/140  

 

lungime -= 3; strncpy (extensie, lungime + argv[1], 3); if (strncmp (".ct", extensie, 3) == 0) conversie_contor(argv[1]); if (strncmp ("val", extensie, 3) == 0) conversie_valori(argv[1]); if (strncmp ("log", extensie, 3) == 0) conversie_log(argv[1]); SetCtrlAttribute (hnd_princ, p_progress, ATTR_SHOW_DIG_DISP, 0); QuitUserInterface (0);//am terminat cu prelucrarea, nu mai stau in program! } return 0; } Acest mod de tratare a parametrilor prin intermediul liniei de comanda permite lansarea unei aplicatii pentru realizarea unor prelucrari specifice, imediat dupa terminarea lor putandu-se reveni din punctul in care s-a apelat. Avantajul oferit este faptul ca nu mai trebuie introdus codul sursa in noul proiect (cu toate dezavantajele ce deriva de aici – alocarea memoriei, gestionarea variabilelor, etc) ci se poate folosi un executabil de sine statator.

4.1.2. Compatibilitatea cu alte medii de programare Un aspect deosebit de important de care trebuie tinut cont in cazul realizarii unor module de program este cel referitor la tipul aplicatiei in care acest modul va fi integrat (optiunile de compatibilitate ale CVI cu alte medii de programare: Visual C, Borland C, Watcom C, Symantec C). Aceasta compatibilitate se refera la urmatoarele aspecte: - modul de apel si transfer al parametrilor difera in functie de compilatorul utilizat; - numarul de biti/octeti pe care se exprima un anumit tip de date/structuri sunt diferiti (chiar

daca este vorba de ANSI C); - alinierea datelor in cadrul structurii difera; - conventia de declarare a variabilelor si obiectelor, precum si utilizarea lor in cadrul .dll

difera de la compilator la compilator. Nu se recomanda utilizarea librariilor scrise in acest mediu de programare pentru a le include in alte proiecte datorita limitarilor impuse. Cazul cel mai des intalnit in practica de interconectare cu alte module este cel in care anumite prelucrari de date sunt similare si in alte aplicati. Este recomandabil transferul datelor spre alte module prin intermediul fisierelor de o structura definita (de exemplu format text) chiar daca acest mod de lucru pare mai dificil – ofera totusi avantajul eliminarii problemelor de compatibilitate (desi si in acest caz pot interveni probleme in cazul folosirii fisierelor binare). In exemplul “ist2dbf.exe” se ofera un exemplu de transfer a unui fisier binar (folosit de un program scris in CVI pentru o aplicatie dedicata) intr-un fisier de tip text recunoscut de Excel (pentru afisarea datelor intr-o alta forma).

4.1.3. Lansarea in executie a unui alt program, in timpul rularii programului In cadrul propriei aplicatii la un moment dat poate surveni necesitatea lansarii altei aplicatii, existente deja. Lansarea celei de-a doua aplicatii se poate realiza in doua moduri: - cu “inghetarea” executiei propriului program pana in momentul in care cea de-a doua

aplicatie este terminata; - cu rularea in paralel a celor doua aplicatii. Inghetarea executiei este utila doar in urmatoarele cazuri: - al doilea program solicita aceleasi resurse ca si aplicatia curenta (caz in care eliberez

resursele, apelez al doilea program iar dupa terminarea acestuia trebuie sa reinitializez variabilele de lucru in aplicatia proprie);

Page 129: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 129/140  

 

- al doilea program prelucreaza anumite date curente si am nevoie de rezultatul prelucrarilor in aplicatia curenta.

Pentru lansarea in executie a unui alt executabil se folosesc functiile din “Utility library” “Launching executables”, functii care permit: - lansarea in executie a unui alt program si revenirea in programul principal fara a astepta

terminarea programului lansat; - setarea modului de lucru a celui de-al doilea program; - testarea existentei unei alte instante a programului care se doreste rulat; - terminarea fortata a celui de-al doilea program. De retinut ca la lansarea in executie a celui de-al doilea program, se specifica urmatorii parametri: - numele fisierului executabil, sub format sir de caractere; - atributele de afisare a ferestrei principale ale aplicatiei (hidden, maximized, etc.); - handle la executabilul lansat (care poate fi ulterior utilizat de catre programul propriu). Exemplu: La un buton din cadrul unei aplicatii principale se doreste lansarea in executie a unui program, scris anterior. Acest al doilea program nu trebuie sa intrerupa rularea primului si nici nu foloseste date din acesta. //functia asociata controlului de tip “buton” din aplicatia curenta int CVICALLBACK cbf_calculare (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: if (LaunchExecutableEx ("debite.exe", LE_SHOWMAXIMIZED, NULL) != 0) MessagePopup ("Eroare sistem!", "Aplicatia \nde calculare si salvare debite\n nu a putut fi lansata!"); break; } return 0; } In cadrul acestui exemplu se observa ca la lansarea celui de-al doilea executabil se testeaza in primul rand daca acesta ruleaza deja si in caz afirmativ se aduce in primplan fereastra aplicatiei. In cazul in care aplicatia nu poate fi lansata se stopeaza executia programului, se afiseaza mesaj de eroare si se asteapta confirmarea operatorului. Totodata nu se aloca memorie suplimentara in cadrul celui de-al doilea program deoarece se considera ca nu este necesara prelucrarea ulterioara a rezultatelor obtinute in al doilea program. A doua modalitate de lansare in executie a unei aplicatii este folosirea functiei “system” care opreste executia in punctul in care este apelata si se asteapta terminarea celui de-al doilea program. Dezavantajul major al acestui mod de lucru este faptul ca daca a doua aplicatie introduce un blocaj se intrerupe si executia primului program. Acest mod de lucru este insa util in conditiile in care al doilea program executa operatii al caror rezultat influenteaza executia primului program (de ex: un program care se ocupa de preluarea prin intermediul comunicatiei la distanta a unor fisiere de date – prelucrarile ulterioare asupra datelor se pot face doar in conditiile in care am date valide de prelucrat).

Page 130: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 130/140  

 

Ca si parametri pentru aceasta functie se specifica doar numele executabilului care urmeaza sa fie lansat si se poate testa ulterior daca aceasta rulare s-a efectuat fara erori. Exemplu: Se lanseaza o aplicatie scrisa in alt mediu de programare (VisualFoxPro) care preia datele salvate in fisier temporar, le converteste in format .dbf si reinitializeaza fisierul de date initiale. Tinand cont ca reinitializarea se face doar dupa ce au fost salvate toate datele se asteapta ca executabilul sa se execute fara erori. int CVICALLBACK cbf_afis_ist ((int panel, int control, int event, void *callbackData, int eventData1, int eventData2) {switch (event) { case EVENT_COMMIT: ecran_crt = 4;//se intra intr-un ecran specific HidePanel (hnd_selectie); if (system("d:\\Sasgh\\Istoric\\Istoric.exe") == 0) reinit_files();//se asteapta executia fara erori a executabilului si se reinit. fisierele ecran_crt = 0; DisplayPanel(hnd_selectie);//se revine in ecranul de lucru SetActiveCtrl (hnd_selectie, e_selectie_out_sel); //se seteaza implicit un control activ ProcessDrawEvents(); break; } return 0; } Observatie: Aceeasi secventa descrisa aici se putea realiza si utilizand functia “LaunchExecutableEx()” si testand in pasul urmator terminarea executiei fara erori a aplicatiei lansate. Pe baza experientei, recomandam utilizarea acelor functii deoarece ofera un control mai bun asupra executarii celui de-al doilea program.

4.1.4. Stabilirea atributelor de executie a programului curent In cazul anumitor aplicatii este vitala alocarea resurselor doar spre programul curent si nu se poate “risca” blocarea acestora de catre alte aplicatii. Sunt anumite cazuri in care timpul de executie este critic sau datele temporare sunt foarte importante – in aceste cazuri este de preferat limitarea accesului utilizatorului spre alte aplicatii care sa ruleze in paralel. Din acest considerent, in momentul proiectarii unor asemenea aplicatii se va realiza in anumite puncte ale programului (in momente cheie sau permanent) limitarea functiilor multitasking oferite de catre sistemul de operare. De retinut ca datorita particularitatilor sistemului de operare Windows nu se poate limita complet accesul spre alte aplicatii sau accesarea resurselor dar pentru a realiza acest lucru operatorul respectiv va avea nevoie de cunostinte solide in domeniul utilizarii sistemului de operare. Din punct de vedere al realizarii programelor, se poate tine cont de urmatoarele caracteristici: - ecranul principal al aplicatiei poate avea atribut de afisare in primplan (always on top, pop-

up panel) ceea ce presupune preluarea tuturor actiunilor utilizatorului (click-uri, apasari de taste) si transferul acestora doar spre programul curent;

- inactivarea functiei de alternare a task-urilor active (task switching);

Page 131: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 131/140  

 

- inactivarea functiilor proprii de depanare si intrerupere la erori (din mediul de programare). Deoarece definirea atributele ecranelor (panel-urilor) au fost explicate enterior, vom insista acum pe functiile care permit schimbarea acestor atribute “User Interface Library”- “Panels”: - SetActivePanel( ) – permite ca un anumit panel (din cele incarcate deja in memorie) sa fie

activat – in acest caz actiunile operaturului sunt tratate prin intermediul functiilor asociate controalelor din acest panel;

- SetPanelAttribute( ) – care permite setarea (schimbarea) tuturor atributelor referitoare la un panel. De retinut ca anumite atribute pot fi modificate si prin functii dedicate, dar este recomandata utilizarea acestei functii (toate atributele ecranului respectiv sunt definite explicit).

Exemplu: Un panel a fost definit in editorul de interfata avand atribut de afisare normala. Daca la un moment dat in executia programului se doreste executarea doar a unor functii atribuite controalelor din acest ecran, se incarca acest ecran si se stabileste atribut de prioritate maxima: ...... DisplayPanel (hnd_princ);//incarc intai ecranul principal care trebuie sa preia controlul SetPanelAttribute (hnd_princ, ATTR_FLOATING, 1);//atribui acestui panel prioritate maxima //acest ecran va fi afisat deasupra celorlalte ecrane active, care vor primi prioritate mai mica DisableTaskSwitching ( ); //dezactivez posibilitatea comutarii intre task-urile active ...... [ secventa critica de program] ...... DisableTaskSwitching ( ); //reactivez optiunile implicite ale sistemului DiscardPanel (hnd_princ); //si renunt la ecranul curent, eliberand memoria O alta functie utila in acest caz este “DisableTaskSwitching( )” cu complementara ei “EnableTaskSwitching( )”. Acestea doua pot fi folosite in conjunctie cu atributele “always on top” ale ecranelor utilizator si ofera control exclusiv programului curent, fara a permite activarea altor task-uri. De retinut ca task-urile activate anterior raman sa ruleze in background dar toate evenimentele de tip interventie operator se executa doar asupra ecranului curent. Folosirea acestor functii este recomandata in cazurile in care se doreste ca o anumita secventa de program sa fie executata cu proritate maxima si sa nu permita lansarea in executie a unor taskuri suplimentare pana cand se termina executia celui curent (ex: preluarea datelor de la un echipament aflat la distanta). O alta posibilitate de a invalida actiunile operatorului spre alte aplicatii este de a incarca o interfata cu atribute exclusive, gen “pop-up panel”, inlocuind astfel cele doua functii (incarcare ecran si stabilire atribute) cu o singura functie dedicata, oferita de catre acest mediu de programare: InstallPopup (hnd_princ);//incarc intai ecranul principal care trebuie sa preia controlul DisableTaskSwitching ( ); //dezactivez posibilitatea comutarii intre task-urile active ...... [ secventa critica de program] ...... Acest mod de tratare a ecranului cu prioritate maxima ofera avantajul ca programatorul nu mai trebuie sa verifice si sa stabileasca atributele celorlalte ecrane active in acel moment.

Page 132: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 132/140  

 

Apelul functiei invalideaza automat celelalte ecrane utilizator si directioneaza toate evenimentele spre modulul curent. Trebuie tratata insa cu mare atentie iesirea din acest ecran (trebuie sa existe o conditie valida de parasire a ecranului) pentru a permite reactivarea ecranelor din background (care toate primesc atribute “dimmed” la apelul functiei). Pentru invalidarea tratarii erorilor de catre nucleul mediului de programare se recomanda utilizarea in cadrul programelor a functiilor de dezactivare a intreruperilor generate la erori in executarea instructiunilor din modulele nucleului (erori datorate in administrarea incorecta a variabilelor sau arametrilor curenti). Aceste functii se gasesc in Library – Utility Library – Run Time Error Reporting: - SetBreakOnLibraryErrors si SetBreakOnProtectionErrors – permite validarea sau invalidarea

modului de verificare a corectitudinii executarii unei functii si reactia la incidenta unei erori; - GetBreakOnLibraryErrors si GetBreakOnProtectionErrors – permite verificarea modului

curent de lucru. De retinut ca in cazul depanarii proiectului (rularea pas cu pas, stabilirea de breakpoint-uri, etc) modul de lucru implicit este “depanare” (debugging mode) ceea ce inseamna ca toate erorile intalnite genereaza intreruperi in executia programului. Stabilirea unui mod de lucru similar (cu intrerupere la erori) in cazul executiei programelor se face doar cu apelarea explicita a functiilor de setare a acestui mod (este utila intreruperea la erori doar in cazul in care beneficiarul are suficiente cunostinte despre utilizarea sistemului si a programelor pentru a putea interpreta mesajele de eroare oferite).

44..22.. CCrreeaarreeaa ssii eexxppllooaattaarreeaa uunnuuii iinnssttrruummeenntt Driverele de instrumentatie au fost mereu o componenta importanta a softului sistemelor de instrumentatie. Acestea cresc productivitatea prin reducerea timpului de proiectare si implementare sistemului de cat mai modular posibil. Driverere de instrumentatie sunt conceptual cu un nivel deasupra seturile de comenzi traditionale. Includ toate detaliile de comunicare ale unui echipament, instrument, in functie de nivelul la care sunt direct utilizabile de catre utilizator. Pentru utilizator un driver de instrumentatie reprezinta una sau mai multe functii care executa o actiune specifica instrumentului. Bilioteca de instrumentatie este o biblioteca speciala din LabWindows CVI care contine o colectie de drivere de instrumentatie si unelte pentru crearea driverelor. Driverele de instrumentatie lasa posibilitatea utlizatorului de a se folosi de echipmanet fara a intra in detaliile amanuntite ale protocolului acestuia. Un Instrument poate fi un dispozitiv fizic, de exemplu un osciloscop sau multimetru, o clasa de instrumente care au functii comune sau un instrument hibrid pentru care echipamentul fizic nu exista practic sau instrumente softaware pentru realizarea impementarii anumitor functii. Un driver de instrumentatie consta din 4 fisiere:

• Programul driverului, care poate fi un fisier de tip *.lib, *.obj, *.dll sau *.c • Fisierul include *.h, care contine declaratiile functiilor, constantele predefinite si

declaratiile de functi extene sau variabile globale • Fisierul ce contine panoul de functie al intrumentului (.fp) ce contine informatii ce

definesc arborescenta (function tree) panoul de functie (function panel) si fisierul help • Un fisier ASCII, *.doc, in care se regaseste documentatia pentru driverul

instrumentului In LabWindows CVI, utilizatorul alege un driver de instrumentatie din meniu Instrument. Dupa alegerea instrumentului dorit, se alege o functie din cadrul functiilor driverului.

Page 133: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 133/140  

 

Un panou de control al functiei, cu toate elementele, variabile, parametrii, descrierea amanunita a lor, va aparea. Un panou de functie afiseaza controale simbolice asociate parametrilor functiei. Prin utilizarea controalelor, un apel al unei functii specifice poate fi executata sau salvata in cadrul programului. Sunt oferite 2 facilitati de utilizare a unui panou de functii:

• Control interactiv al instrumentului • Posibilitatea de a genera apel de functii care pot fi incluse in interiorul codului sursa al

unui program

4.2.1. Crearea unui instrument Se da urmatoarea tema: sa se implementeze un set de clase si functii care sa opereze cu fisiere avand extensia .pdf cu prin intermediul unui driver de instrumentatie. Pentru inceput vom creea un nou proiect de tip *.prj, conform pasilor descrisi in etapele anterioare, pentru realizarea unui driver de instrumentatie.

Sa incepem sa realizam primul instrument de lucru. Din meniu vom alege FILE > NEW > Function Panel. Acest lucru inseamna ca dorim crearea unui nou set de functii pentru un anumit instrument. In fereastra nou aparuta vom incepe lucrul propriu–zis la driverul de instrumentatie. Vom da un nume sugestiv acestei ferestre si o vom salva intr-o locatie dorita de noi, dar recomandarea este de a salva informatiile in directorul curent de lucru pentru a regasi mai usor fisierele atunci cand vom avea nevoie de ele.

Page 134: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 134/140  

 

Urmatorul pas, de creare a instrumentului: CREATE > INSTRUMENT din meniul principal al ferestrei panoului de functie. Vom da un nume sugestiv, in functie de ceea ce dorim sa lucram. Pentru exemplul descris am folosit pentru descrierea driverului numele use_pdf.fp iar ca si prefix pdf. Prefixul este sirul de caractere care se va pune in fata numelui functiilor pentu o identificare mai usoara a acestora. Astfel, cand vom vedea pdf_creaza_nou stim carui instrument apartine aceasta functie.

Dupa validarea numelui putem incepe introducerea claselor de functii si a functiilor care descriu comportarea instrumentului. Este preferabil sa se conceapa si realizeze o schema a functiilor si inlantuirea lor inainte de inceperea implementarii programului care sa se bazeze pe specificatiile echipamentului. Functiile trebuiesc sa fie cat mai clare, sa fie aranjate dupa clase de functii si dupa tipul lor. De exemplu, functiile de achizitie, le vom grupa in clasa de functii Achizitie iar cele de configurare in clasa Configurare. De asemenea, descrierea cat mai detaliata a functiilor si parametrilor ajuta utilizatorul la folosirea functiilor. Cum se face vom vedea in paragrafurile de mai jos. Arborele de functii, determina modul in care functiile sunt grupate in casute de dialog. Utilizatorii acceseza panourile de functii prin ecrau; Select Function Panel din meniul Instruments. Editorul pentru Function Tree se apeleaza din meniul principal NEW > Function Tree(*fp). Prima data vom crea o clasa de functii, denumita Operatii, care va cuprinde principalele operatii are le vom putea realiza.

Page 135: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 135/140  

 

Alegem Create > Class… si vom introduce numele clasei Operatii. In cadrul unei clase de functii putem avea alte clase sau functii. In functie de locul in care ne pozitionam in cadrul panoului de functii, a fisierului *.fp, vom crea o structura arborescenta de functii si clase, proiectata in prealabil pentru satisfacerea tutor cerintelor. Driverul descris aici ca si exemplu este unul foarte simplu, cu scop tematic. O alta observatie care se poate face este ca driverul de instrumentatie nu trebuie sa se refere neaparat la un echipament fizic, el poate sa descrie si un modul soft care sa implementeze anumite functii, sau sa realizeze o anvelopa a unui alt program. Din acest punct de vedere Function Panel reprezinta un instrument flexibil de lucru. In cadrul clasei operatii realizam doua functii pune_reclama si adauga_pagina_noua. Ne pozitionam in interiorul clasei Operatii iar din meniu Create alegem sa realizam o functie Function Panel Window. Vom realiza de 2 ori aceasta operatie. In cadrul clasei in structura arborescenat vom crea 2 functii pentru inchiderea si deschiderea acestor tipuri de fisiere: creaza_nou si inchide_fisier. La crearea acestor functii sunt doua campuri: unul va avea descrierea literara a functiei iar celalalt camp va da numele functiei care va fi folosit in program. Pasul urmator in constituie implementarea functiilor folosind simbolurile grafice puse la dispozitie de CVI. Vom alege rand pe rand fiecare functie si vom pune fiecare parametru al functiei ca si cam in cadrul ferestrei. Sunt mai multe tipuri de controale, simboluri, grafice care descriu o paleta larga de tipuri de date sau modalitati de reprezentare a datelor. Tipurile de date folosite sunt urmatoarele: int, long, short, char, unsigned int, unsigned long, unsigned short, unsigned char, int [], long[], short [], char [], unsigned int [], unsigned long [], unsigned short [], unsigned char [], double, float, double [], float [], char *, char *[], void * Elementele de control sunt pentru parametrii de intrare, valori returnabile, variabile gobale sau controale de tip mesaj pentru a explicita anumiti parametrii sau a oferi informatii in plus despre functie. In continuare sunt reprezenatate aceste controale asa cum apar ele in CVI. Ele sunt accesibile fie prin intermediul icon-urilor sau prin intermediul meniurilor.

Simboluri pentru controale

Meniul pentru parametrii

Page 136: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 136/140  

 

Diverse controale pentru parametrii functiei

Page 137: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 137/140  

 

Alte controale Daca parametru de intrare este o singura valoare putem folosi InputControl la fel cum apare in cadrul functiei pdf_creaza_nou. Se alege un nume pentru aceast parametru, se alege tipul de datei de intrare, in cazul nostru un sir de caractere, latimea maxima a caracterelor pentu introducerea datelor si o valoare predefinita in functie de valoarea implicita care o poate lua acest parametru. De cele mai multe ori functiile returneaza o valoare care poate fi un rezultat al unui calcul sau o stare sau confirmarea unei operatii. In cazul nostru prin ReturnValueControl vom specifica reusita sau nereusita operatiei de creare a unui fisier. La final functia va arata in modul urmator:

Page 138: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 138/140  

 

Functia pdf_creaza_nou In continuare vom edita si celelalte functii descrise in function_panel:

Clasele si functiile pentru use_pdf In figurile urmatoare se prezinta panourile rezultate pentru fiecare functie:

Page 139: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 139/140  

 

Dupa ce am terminat de introdus si configurat panourile de functii si salvam ceea ce am lucrat vom trece la etapa urmatoare. Mentionam la inceput mai multe tipuri de fisiere folosite in cadroul panourilor de functii. Aceste declaratii de functii se vor regasi in cadrul unui fisier include, *.h, care va avea prototipurile tuturor functiilor descrise de noi. Acest fisier va fi generat de catre CVI urmand urmatoarea cale din meniul principal al panoului de functii Options > Generate Function Prototypes … Va aparea un fisier care va contine doar descrirea functiilor. Vom salva si acest fisier tot in directorul curent. Avem descrierea functiilor, avem fisierul cu prototipurile functiei si mai avem nevoie de codul sursa, fisierul *.c cu implementarea functiilor. Nu este suficient sa avem un asemenea fisier, mediul de dezvoltare trebuie sa stie sa faca legatura cu acesta. Pentru a informa mediul de dezvoltare de existenta acestuia se procedeaza in modul urmator: din meniul proiectului alegem Instruments > Edit … In fereastra aparuta se afla toate panourile de functii incarcate in acest moment. Selectam use_pdf iar dintre butoanele din partea dreapta alegem Attach and Edit Source. Vom alege fisierul use-pdf.c scris in prealabil de noi.. Vom obsrva ca in cadrul proiectului, in casutele de stare a fisierelor vom avea litera I,de la Instruments. Astfel avem indicatia ca acest fisier face referire la codul sursa pentru driverul de instrumentatie creat de noi. Faza urmatoare consta in compilarea si depanarea programului. Cand nu mai avem erori de compilare, in proiect selectam tipul bibliotecii rezultata in urma compilarii : statica sau dinamica. Noi vom alege una statica care va avea ca rezultat un fisier de tip *.lib. Din meniu alegem urmatorii pasii Build > Target > Static Library iar dupa aceea Build > Create Static Library. Aceasta operatie are ca si efect realizarea unei librarii statice

Page 140: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 140/140  

 

pdf.lib. Putem alege ca tipul bibliotecii sa fie compilata cu compilatorul instalat sau ca libraria sa fie accesibila pentru celelalte moduri de compilare, astfel incat la nevoie sa putem folosi libraria fara ca sa depindem de un anumit mod de compilare. Algerea tipului de biblioteca, statica sau dinamica, ramane la latitudinea programatorului, acesta determinand avantajele si dezavantajele fiecarui tip de biblioteca. De asemenea din codul C al driverului de instrumentatie se poate genera un fisier *.obj care este utilizat la linkeditarea programului prin folosirea panoului de functii. In ecranul in care se editeaza codul sursa al programaului se alege din meniu Options > Create object file . La fel se poate alege ca fisierul rezultat se poate fi folosit de ai multe compilatoare. In urma compilarii vom avea avea un fisier use_pdf.obj. De acum putem folosi panoul de functii realizat in diverse programe.

4.2.2. Exploatarea unui driver de instrumentatie In orice proiect in care dorim sa folosim un anumit echipament realizat de o anumita firma este posibil sa avem in LabWindows CVI driverele pentru echipament deoarece firma National Instruments pune la dispozitie mii de drivere pentru diversi producatori de echipamente sau puteti gasi pe net driver realizat de firma producatoare sau diverse persoane fizice. In cazul in care dispuneti de un asemenea driver trebui doar sa inglobati panoul de functie al echipamentului in cadrul proiectului pentru a avea acces la functiile acestuia. Din meniu alegem Instrument > Load urmand sa selectam fisierul dorit. Pentru a avea acces la functii driverului si dn cadrul proiectului din meniul principal File > Open > Function Panel selectam driverul dorit iar in cadrul proiectului vom vedea un nou fisier care poate fi accesat prin dublu –click sau cu cursorul selectam fisierul si apasam <Enter>.

Panou de functii pentru folosire in cadrul unui program Deplasarea in panoul de functii se face din clasa in clasa pana la functia dorita. Prin selectarea functiei dorite si confirmarea alegerii ei avem acces la parametrii specifici. Fisierul fp si fisirele asociate dll, lib sau obj trebuie sa fie in acelasi loc.

Page 141: Material suport pentru stagii de practica in domeniul ... · automatizari MEDIU DE DEZVOLTARE APLICA Ţ ... - Un proiect trebuie sa contina un modul “.c” ce contine functia Main

 

MEDIU DE DEZVOLTARE APLICAŢII BAZAT PE INSTRUMENTAŢIE VIRTUALĂ LabWindows CVI pag. 141/141  

 

Bibliografie  

1) LabWindows/CVI Programmer Reference Manual - June 2003 Edition Part Number 323643A-01

2) LabWindows/CVI Instrument Driver Developers Guide - April 2003 Part Number: 370699A-01

3) Getting Started with LabWindows/CVI - October 2010 Part Number: 373552G-01, 323552G-01

4) Getting Started with LabWindows/CVI - August 2012 Edition Part Number 373552H-01, 323552H-01

5) LabWindows/CVI Release Notes - August 2012 Part Number: 373607L-01,323607L-01

6) LabWindows/CVI Help - August 2012 Part Number: 370051V-01

7) Measurement Studio LabWindows/CVI User Manual - September 2001 Part Number 320681F-01

8) LabWindows/CVI Advanced Analysis Library Reference Manual – February 1998 Part Number 320686D-01

9) Building Networked Applications with the LabWindows/CVI TCP Support Library - August 2012 Part Number: 370051V-01

10) NI System Configuration Function Reference for LabWindows/CVI- June 2012 Part Number: 373242C-01

11) Guide to LabWindows/CVI Documentation - August 2012 Part Number:370051V-01

12) LabWindows/CVI Functions Supported in Real-Time Applications - August 2012 Part Number: 372398E-01

13) Using LabWindows/CVI Libraries in RT Applications - August 2012 Part Number: 372398E-01

14) IMAQ Vision for LabWindows/CVI Reference Manual - January 2000 Part Number 322567A-01

15) LabWindows/CVI Real-Time Module Help - August 2012 Part Number: 372398E-01

16) NI LabWindows™/CVI™ WLAN Analysis Toolkit Reference Help - November 2011 Part Number: 372757D-01