10
Kurze Einführung in LabWindows/CVI (Versionen 6.0+ MSWindows) 1) Zum Meßprogramm Labwindows Im Gegensatz zu der Version für MSDOS bietet diese „grafische“ Version keine Wahl der Programmiersprachen Basic oder C. Es kann ausschliesslich in C programmiert werden. Grundsätzlich kann man Basic Programme im LabWindows der MSDOS Version in C „über- setzen“ und diesen C Quellkode in das neue LabWindows für MSWindows übernehmen. D.h. fast alle LabWindows eigenen Funktionen inklusive der grafischen Benutzeroberfläche kön- nen importiert und weiterverwender werden. Allerdings sind dabei einige Punkte zu beachten und unter Umständen müssen nachträglich einige Änderungen vorgenommen werden. Das Programm wird durch Anklicken des Programmsymbolbildes (Icons) u unter MSWindows oder Anwahl im Programme Menü der Arbeitsfläche (Desktop) gestartet. Es erscheint das Projektfenster, das alle Dateien, die zu einem Arbeitsprojekt zusammengefaßt sind auflistet (siehe Abb.1). Für das Seminar wird ein Projekt meist eine Quellkode Datei (*.c), eine Datei für die Gestal- tung der grafischen Oberfläche (*.uir) zusammen mit der automatisch generierten „Include“ – Datei (*.h) die die Definitionen der Schnittstelle zu den einzelnen Anzeigeelementen im Gra- fikpanel beinhaltet auf die im Programm bezug genommen wird. Diese Dateien sollen von Ihnen erzeugt werden. Außerdem sollte im ersten Semester immer die Datei für den Instru- mentetreiber „gpib3.fp“ in der Liste aufscheinen. Um ein neues Projekt zu beginnen wählen Sie aus dem Menü „File“ den Punkt „New“ und wählen „Project“. Die folgenden Abfragen können Sie mit „Yes“ bzw. „OK“ „ungelesen“ bestätigen. Die Dateiliste ist daraufhin leer und das Projekt „unbenannt“ (untitled). Bevorzugt beginnen Sie jetzt bereits vorhandene Dateien in das Projekt aufzunehmen. Das sollte jedenfalls der Instrumentetreiber „Gpib3.fp“ sein (siehe Abb.2). Zu finden ist er jeweils auf der lokalen Festplattenpartition im Ordnerverzeich- nis ..\lw\driver\ll. Durch das Hinzufügen des Instruments zur Projektliste wird es automatisch kompiliert und seine Funktionen stehen für interaktive Ausführungen im Menü „Instrument“ zur Verfügung. D.h. noch bevor Sie ihr Programm zu schreiben beginnen können Sie erste Tests mit ihrem GPIB Gerät durchführen um dessen Verhalten zu „erkunden“. Die Erkennt- nisse können dann sofort in ihr Programm übernommen werden. Abbildung 1: Projektfenster des Programms Labwindows/CVI. Nach Aufruf des Programms wird automatisch das zuletzt bearbeitete Projekt geladen. Unter der Menüleiste erkennt man die Liste der im Projekt verwendeten Dateien.

Kurze Einführung in LabWindows/CVI (Versionen 6.0 ... · Kurze Einführung in LabWindows/CVI (Versionen 6.0+ MSWindows) 1) Zum Meßprogramm Labwindows Im Gegensatz zu der Version

  • Upload
    dinhnga

  • View
    221

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Kurze Einführung in LabWindows/CVI (Versionen 6.0 ... · Kurze Einführung in LabWindows/CVI (Versionen 6.0+ MSWindows) 1) Zum Meßprogramm Labwindows Im Gegensatz zu der Version

Kurze Einführung in LabWindows/CVI (Versionen 6.0+ MSWindows)1) Zum Meßprogramm Labwindows

Im Gegensatz zu der Version für MSDOS bietet diese „grafische“ Version keine Wahl derProgrammiersprachen Basic oder C. Es kann ausschliesslich in C programmiert werden.Grundsätzlich kann man Basic Programme im LabWindows der MSDOS Version in C „über-setzen“ und diesen C Quellkode in das neue LabWindows für MSWindows übernehmen. D.h.fast alle LabWindows eigenen Funktionen inklusive der grafischen Benutzeroberfläche kön-nen importiert und weiterverwender werden. Allerdings sind dabei einige Punkte zu beachtenund unter Umständen müssen nachträglich einige Änderungen vorgenommen werden.Das Programm wird durch Anklicken des Programmsymbolbildes (Icons) u unterMSWindows oder Anwahl im Programme Menü der Arbeitsfläche (Desktop) gestartet. Eserscheint das Projektfenster, das alle Dateien, die zu einem Arbeitsprojekt zusammengefaßtsind auflistet (siehe Abb.1).

Für das Seminar wird ein Projekt meist eine Quellkode Datei (*.c), eine Datei für die Gestal-tung der grafischen Oberfläche (*.uir) zusammen mit der automatisch generierten „Include“ –Datei (*.h) die die Definitionen der Schnittstelle zu den einzelnen Anzeigeelementen im Gra-fikpanel beinhaltet auf die im Programm bezug genommen wird. Diese Dateien sollen vonIhnen erzeugt werden. Außerdem sollte im ersten Semester immer die Datei für den Instru-mentetreiber „gpib3.fp“ in der Liste aufscheinen. Um ein neues Projekt zu beginnen wählenSie aus dem Menü „File“ den Punkt „New“ und wählen „Project“. Die folgenden Abfragenkönnen Sie mit „Yes“ bzw. „OK“ „ungelesen“ bestätigen. Die Dateiliste ist daraufhin leer unddas Projekt „unbenannt“ (untitled). Bevorzugt beginnen Sie jetzt bereits vorhandene Dateienin das Projekt aufzunehmen. Das sollte jedenfalls der Instrumentetreiber „Gpib3.fp“ sein(siehe Abb.2). Zu finden ist er jeweils auf der lokalen Festplattenpartition im Ordnerverzeich-nis ..\lw\driver\ll. Durch das Hinzufügen des Instruments zur Projektliste wird es automatischkompiliert und seine Funktionen stehen für interaktive Ausführungen im Menü „Instrument“zur Verfügung. D.h. noch bevor Sie ihr Programm zu schreiben beginnen können Sie ersteTests mit ihrem GPIB Gerät durchführen um dessen Verhalten zu „erkunden“. Die Erkennt-nisse können dann sofort in ihr Programm übernommen werden.

Abbildung 1: Projektfenster des Programms Labwindows/CVI. NachAufruf des Programms wird automatisch das zuletzt bearbeitete Projektgeladen. Unter der Menüleiste erkennt man die Liste der im Projektverwendeten Dateien.

Page 2: Kurze Einführung in LabWindows/CVI (Versionen 6.0 ... · Kurze Einführung in LabWindows/CVI (Versionen 6.0+ MSWindows) 1) Zum Meßprogramm Labwindows Im Gegensatz zu der Version

Danach legen Sie eine neue Quellkode Datei an (Menü File New Source). Es öffnet sichdas Editierfenster (siehe Abb.3) das C-syntax konform bearbeitet wird. Die Symbolleiste

beinhaltet neben den üblichen Dateifunktionen wie Neu – Öffnen – Sichern (1) auchFunktionen für Kompilation (2) ohne Ausführung, Ausführung (3) nach vorhergegangenerKompilation und Überwachung (4). Neben Standardfunktionen können auch Funktionen ausdem Menü „Instrument“ und „Library“ an der Cursorposition in die Quelldatei übertragenwerden. Dazu wählt man die gewünschte Funktion an. Es öffnet sich das Funktionspanel indem alle Ein- und Ausgabeparameter der Funktion als Ein- bzw. Ausgabefenster dargestelltsind. Als Beispiel ist in Abb.4 das Funktionspanel GPIB3.0 – Talk to instrument gezeigt. BeiEingaben werden oft bereits (sinnvolle) Standardwerte vorgeschlagen oder es gibt eine Aus-wahl zwischen den zulässigen Werten für diese Eingabe. Bei Bedarf kann jedes Funktionspa-

1 2 3 4

Abbildung 3: LabWindows Quelltext Editor

Abbildung 2: Auswahl von bestehenden Dateien, die im Projektverwendet werden sollen.

Page 3: Kurze Einführung in LabWindows/CVI (Versionen 6.0 ... · Kurze Einführung in LabWindows/CVI (Versionen 6.0+ MSWindows) 1) Zum Meßprogramm Labwindows Im Gegensatz zu der Version

nel durch Wahl des Symbols (1) aus der Symbolleiste interaktiv ausgeführt werden ohne daßdas Einfluß auf das zu entwickelnde Programm hat. Eingabefelder müssen dabei „ausgefüllt“werden. Entweder durch Konstanten oder durch Variable, die vor Ort definiert (2) und an-schließend editiert (3) werden können. Ausgabefelder werden automatisch mit temporärenVariablennamen versehen, können aber auch manuell gestaltet werden. Nach der interaktiven

Ausführung wird der Variablenwert im Ausgabefeld angezeigt. Unten im Funktionspanel istdie Syntax so dargestellt wie sie durch betätigen von Symbol (4) der Leiste in das Quelltexteditierfenster übernommen wird. Zu allen Elementen des Funktionspanels können Sie mit derTaste F1 oder einem Rechtsklick der Maus eine kurze Beschreibung und Hilfe bekommen.Für das Seminar wichtige Funktionen bzw. Funktionsgruppen des InstrumententreibersGPIB3 sind:1. Initialize: Initialisiert die Datenübertragung. Benötigt E/A Registeradresse als Eingabe

Belassen Sie den Standardwert - Vorschlag im Eingabefeld - unverändert)2. Gruppe Communication... enthält die Funktionen:

Talk to device: Senden eines Kommandos an ein Gerät. Benötigt als Eingabe die Adressedes Geräts und eine Textvariable (Konstante) die das entsprechende Kommando enthält.Die Funktion liefert nach der Abarbeitung eine ganze Zahl zurück. Die Bedeutung derZahl: 0 es wurde kein Übertragungsfehler gefunden. Jeder Wert ungleich 0 einÜbertragungsfehler ist aufgetreten.Listen to device: Empfangen von Daten eines Geräts. Benötigt als Eingabe dieGeräteadresse. eine Textvariable in dem die Funktion die empfangenenen Daten ablegt.Eine Zahlenvariable die als Eingabe die Anzahl der zu übertragenden Zeichen enthält(wird die Variable 0 gesetzt so werden alle Zeichen übertragen). Die Funktion liefert dieAnzahl der empfangenen Bytes (positive Zahl) oder einen Fehlerkode (negative Zahl

Abbildung 4: Beispiel eines Funktionspanels und Variablenfensters in LabWindows im interaktivenModus

1 2 34

3

Page 4: Kurze Einführung in LabWindows/CVI (Versionen 6.0 ... · Kurze Einführung in LabWindows/CVI (Versionen 6.0+ MSWindows) 1) Zum Meßprogramm Labwindows Im Gegensatz zu der Version

zurück).Serial Poll: Abfrage des Statusbytes eines Geräts. Eingabe ist die Geräteadresse und eineGanzzahlvariable in welcher das Statusbyte retourniert wird. Die Funktion liefert denÜbertragungsstatus zurück.

Wenn Sie Funktionen aus dem Instrument GPIB3 in ihrem Quellkode verwenden sollten Sieim Deklarationsteil die Zeile #include „GPIB3.h“ einfügen.Aus dem Libraries Menü benötigen Sie vorerst die Funktionen unterUser Interface ... zum Einbau der graphischen Bedienung in Ihr ProgrammFormatting and IO... Für Ein- Ausgabeoperationen (Interaktiv und Dateien) undTextvariablenmanipulationen.2) Grundelemente von LabWindows/CVIDa Sie sich für das Programmieren in C entschieden haben nehme ich an, daß Ihnen Syntaxund die Basisfunktionen bekannt sind. Bezüglich der Programmierkenntnisse sind im Rahmendes Seminars keine weiterreichenden Kenntnisse erforderlich. LabWindows ist speziell fürcomputerunterstützte Experimente und Meßverfahren entwickelt worden und stellt für dieMeßdatenerfassung und Auswertung eine Reihe von nützlichen Hilfsmitteln und CFunktionen zur Verfügung die leicht in das Programmgerüst integriert werden können. Imfolgenden wird kurz die Verwendung der Graphikfunktionen (User Interface) beschrieben:

Zur grafischen Gestaltung von Lab Windows ProgrammenDie Integration einer grafischen Oberfläche in ihr LabWindows Programme erfolgt in zweiSchritten:1. Gestaltung einer Grafik mit Hilfe des „User Interface Editors“. Dieser öffnet sich wenn

Sie File New User Interface(*.uir) aufrufen.2. Einbau von Aus- und Eingabefunktionen in den Programmablauf. Diese Funktionen sind

im Menü „Libraries“, Auswahl „User Interface“ zusammengefaßt.

(1) Erstellen einer grafischen BenutzeroberflächeNach dem Aufruf eines neuen User Interfaces öffnet sich der graphische Editor. Auf der wei-ßen Editierfläche ist bereits ein leeres, graues Standardpanel mit dem Eintrag „Untitled Panel“in der Kopfzeile dargestellt (Siehe Abb. 5). Dieses Panel kann bearbeitet werden. So können

Abbildung 5: User Interface Editor zur Bearbeitung eines neuen GraphikPanels.

Page 5: Kurze Einführung in LabWindows/CVI (Versionen 6.0 ... · Kurze Einführung in LabWindows/CVI (Versionen 6.0+ MSWindows) 1) Zum Meßprogramm Labwindows Im Gegensatz zu der Version

Sie auch die von Ihnen benötigten graphischen Elemente darauf eintragen. Jedes Element(Control) kann mit einer Reihe von Eigenschaften versehen werden, die während des Pro-grammablaufs benötigt werden. Die wichtigste Eigenschaft ist die Entscheidung ob es einreines Anzeige (Ausgabe) Element ist (typisch für Kurvendarstellungen zu wählen) oder obim Programm über dieses Element Eingaben möglich sein sollen (z.B. STOP Taste). Abgese-hen von der Benennung des Elements für den Programmaufruf (Konstantenname für den

Control-Handle) und der Beschriftung sindviele Eigenschaften (u.a. auch der Typus) meistschon brauchbar vordefiniert. Je nach Elementstehen neben den „universellen“ Elementspezi-fische Eigenschaften zur Verfügung. Diese sinddurch Rahmen zu Gruppen zusammengefaßt.Hier sei angemerkt, daß die meisten Eigen-schaften bei Bedarf vom Programm aus wäh-rend der Ausführung geändert werden können.Für alle Elemente die Sie verwenden solltenbeim Gestalten der Grafikoberfläche die nach-folgenden Eigenschaften von Ihnen jedenfallsgeprüft und wenn notwendig angepaßt werden.Sie sind nachfolgend kurz beschrieben: (i) Con-stant name (Gruppe „Source Code Connec-tion“) Dieser sollte von Ihnen mit einem für Sieleicht assoziierbaren Begriff belegt werden undwird im Programm dazu verwendet um auf die-

ses Element zuzugreifen Beachten Sie daher, daß es C konform sein muß. (ii) die Art des Be-triebs während der Programm abarbeitung (Control mode in der Gruppe „Control Settings“)Ist es ausschließlich zur Datenausgabe gedacht wählen Sie „Indicator“. Sind Eingaben zuläs-sig (es kann dann sehr wohl auch zur Datenausgabe verwendet werden) wählen Sie „Hot“.(iii) Bezeichnung des Elements (wie sie auf der grafischen Oberfläche zu sehen ist) durchAngabe eines Textes im Feld Label in der Gruppe „Label Appearance“.Die Auswahl einesElements kann über das Menü „Create“ des Editors (siehe Abb.6) oder über einen „Rechts-klick“ der Maus erfolgen.Im folgenden seien 3 Elemente näher erklärt:1 Numeric:

Diese eignet sich zu praktisch jeder Art einen Meßwert anzuzeigen oder auch z.B. ei-nen beliebigen Skalierungsfaktor Einzugeben. Wollen Sie, aus welchen Gründen auch immereine Eingabe auf die Auswahl einiger bestimmter Zahlenwerte eingrenzen kann die Verwen-dung eines Ringelements vorteilhaft sein. Nach der Auswahl wie das Element aussehen sollwird es an der Cursorpoition im Panel plaziert und angezeigt. Mit der Maus kann es verscho-ben und skaliert werden. Um die Eigenschaften des Elements zu bearbeiten verwenden Sieden „Doppelklick“. In dem erscheinenden Fenster können Sie die Eigenschaften des Elementszu Programmstart festlegen. Sinnvoll ist anzugeben welcher Datentyp eingelesen oder ausge-geben werden soll da das Element im Normalfall mit einer definierten Variablen in ihremQuellkode verbunden werden soll. Günstig sind meist auch Bereichseinschränkungen.2 Command Button:

Während der Programmausführung liefert es nur die Information ob dieses Elementbetätigt wurde (Mausklick) oder nicht. Dieses Element eignet sich gut um etwa ein Programmzu beenden (Quit-Taste).3 Strip Chart (Graphs ):

Abbildung 6: Einfügen neuer Elemente in dasGrafik Panel.

12

3

Page 6: Kurze Einführung in LabWindows/CVI (Versionen 6.0 ... · Kurze Einführung in LabWindows/CVI (Versionen 6.0+ MSWindows) 1) Zum Meßprogramm Labwindows Im Gegensatz zu der Version

Die Darstellung ist eine sich zeitlich aktualisierende Funktionsabbildung (Auftragungdes Meßwerts als Funktion des Indexes (z.B. wie oft eine Schleife durchlaufen wurde). Sieeignet sich für einen Datenlogger hervorragend. Im Gegensatz zu einer XY Darstellung er-laubt der Strip Chart keine automatische Skalierung. D.h. Sie sollten in „Control Settings“ dieOptionen der Y Achse bearbeiten und den Minimalwert (Voreingestellt auf 0) und den Maxi-malwert (voreingestellt auf 100) ihren Bedürfnissen entsprechend abändern (Wählen Sie etwadie Bereichsgrenzen ihres Digitalmultimeters).Die einzelnen Elemente können in beliebiger Reihenfolge erzeugt werden - D.h. es brauchtkeine Rücksicht darauf genommen zu werden wie oder wann sie im Programm aufgerufenwerden. Die Elemente sind innerhalb des Panels frei anordenbar.Sobald sie die Gestaltung des Panels abgeschlossen haben speichern Sie es als *.uir Datei ab.Führen Sie diese Dateispeicherung bei jeder Änderung an ihrer Grafikoberfläche von sich ausdurch da keine automatische Speicherung erfolgt. Der Speicherprozeß ist deshalb wichtig weilaußer der Information über die grafische Gestalt auch eine Kompilation und die selbsttätigeErzeugung oder Änderung einer Include – Datei gleichen Namens ( *.h) erfolgt die Sie in ihrQuellprogramm einbeziehen müssen um während der Ausführung auf die Elemente zugreifenzu können. Fügen Sie die *.uir und die *.h Datei zu ihrem Projekt hinzu. Im einfachsten Fallenthält die Include-Datei lediglich die Deklarationen der zu dem Panel und dessen Elementengehörigen Konstanten (positive Ganzzahlwerte). Die Namen der Konstanten setzten sich ausdem Konstantennamen des Panels und dem Konstantennamen des Elements zusammen.(2) Einbinden der grafischen Oberfläche in das ProgrammAlle notwendigen Befehle finden Sie während der Programmerstellung im Menü „Libraries“,Punkt „User Interface“. Vorbereitend ergänzen Sie ihre Deklarationen in der Quelldatei umdie Zeile #include „grafikname.h“. Damit haben Sie Zugriff auf die Konstanten die ihren Gra-fikelementen zugeordnet sind.Um ihr Panel mit Programmstart anzuzeigen müssen Sie die entsprechende UIR Datei ladenund Anzeigen (Display). Die Funktionen finden Sie unter User Interface Panels... LoadPanel und User Interface Panels... Display Panel. Beim Laden des Panels in den Ar-beitsspeicher wird eine Ganzzahl (int) panel_handle zurückgegeben die entweder einen Lade-fehler (negativer Wert) oder eine Referenzzahl auf dieses Panel enthält. Grundsätzlich kannein Programm mehrere Panele laden und verwalten. Diese Referenzzahl wird für alle nachfol-genden Operationen, dieses Panel betreffend benötigt und sollte dementsprechend verände-rungssicher in eine Variable abgelegt werden. Die Darstellung benötigt bereits diese Referenzauf das geladene Panel.Vor dem Verlassen (Beenden) des Programms sollte die Grafik wieder „ent“laden werden (User Interface Panels... Discard Panel). Auch hierfür wird die Panelreferenz benötigt.Zum Arbeiten mit den Ein- und Ausgabefenstern:Alle Programmanweisungen die zwischen dem Installieren und Deinstallieren des Panels aus-geführt werden können Daten an Ausgabeelemente des Panels übertragen. Für das Überneh-men von Eingaben an das Panel muß im Programm eine Ereignisabfrage vorgesehen werdenob und welches Eingabefeld geändert wurde. Ereignisse (Tastatureingaben, Mausklicks...)werden nur von Elementen erzeugt die im Control mode nicht als „Indicator“ definiert wurdenSiehe Abschnitt über das Editieren der grafischen Benutzeroberfläche). UnterLabWindows/CVI sind dafür zwei Ansätze möglich. Der erste Ansatz ist ident dem Verfahrenwie es bereits unter LabWindows für MSDOS Anwendung findet. Im Sinne einereinheitlichen Vorgangsweise bei der Programmerstellung wird er nachfolgend beschrieben. Inihrem Programm bauen Sie an geeigneter Stelle die Funktion GetUserEvent (User Interface

User Interface Management... ) ein. Als Eingabe können Sie festlegen ob das Programmangehalten wird bis ein beliebiges Ereignis am Panel eingetreten ist oder ob das Programmnach der Ereignisabfrage (unabhängig ob ein Ereignis eingetreten ist oder nicht) fortfahren

Page 7: Kurze Einführung in LabWindows/CVI (Versionen 6.0 ... · Kurze Einführung in LabWindows/CVI (Versionen 6.0+ MSWindows) 1) Zum Meßprogramm Labwindows Im Gegensatz zu der Version

soll („Wait mode“). Falls ein Ereignis aufgetreten ist liefert die Funktion (i) die Referenzzahldes Panels („Panel or Menu Bar Handle“) auf dem ein Ereignis stattgefunden hat (nur vonBedeutung wenn mehrere Panele zur gleichen Zeit geöffnet wurden) und (ii) die dem Elementzugeordnete Konstante („Control or Menu Item ID“). Letztere Rückmeldung ist –1 wenn keinEreignis aufgetreten ist (und der „no wait“ modus gewählt wurde). Der zweite Ansatz arbeitetmit sogenannten „Call Back Funktionen“ die bereits bei der Gestaltung des Grafikpanelsberücksichtigt werden müssen. In einem System, das Multitasking (d.h. mehrere Programmekönnen zur gleichen Zeit ausgeführt werden) zuläßt, z.B. MS Windows, wäre diese Methodeder Programmierung zu bevorzugen, da sie weniger Rechnerkapazität während derAusführung beansprucht als das erste Verfahren (das für single task systeme wie etwaMSDOS adäquat ist).Als Beispiel für die Ausgabe (vom Programm zur grafischen Darstellung) eignet sich das Ex-periment zum Datenlogger. Jedesmal wenn Sie einen neuen Wert von dem DVM übertragenbekommen wollen Sie ihn im „Strip Chart“ gemeinsam mit den vorangegangenen Wertenanzeigen (Darstellung des zeitlichen Verlaufs): Dazu wählen Sie die FunktionPlotStripChartPoint (User. Interface Controls/Graphs/Strip Charts... Graphs andStrip Chart... Strip Chart Traces...) Als Parameter müssen Sie an die Funktion übergeben(i) Referenzzahl des Panels, den Sie als Variable bei dem Aufruf „Load Panel“ gesicherthaben, Die dem Element zugeordnete Konstante und (iii) den aktuellen Wert der angezeigtwerden soll.Bei Eingaben sollten Sie folgendes beachten:Soll das Programm auf eine Eingabe warten (der Programmablauf wird unbedingt unterbro-chen) oder soll die mögliche Eingabe bei Bedarf in das laufende Programm übernommenwerden. (z.B. Abbruchbedingung durch Aktivieren eines „Knopfes“, Command ButtonSTOP).Das Zusammenspiel zwischen grafischer Benutzeroberfläche und dem ausführenden Pro-gramm erfolgt bei Eingaben über die folgenden Stufen:1) Feststellen ob eine Eingabe notwendig ist (das Programm wird angehalten) oder ob eineEingabe erfolgt ist (ohne daß das Programm angehalten wird). Dazu dient die FunktionGetUserEvent.Unter den Annahmen, daß Sie nicht auf eine Eingabe warten wollen und nur ein Panel betrei-ben können Sie nach Funktionsaufruf die Element – Zuordnungszahl auswerten. Ist diese –1so hat kein Ereignis stattgefunden. Andernfalls können Sie den Wert des Elements, das dasEreignis ausgelöst hat mit der Funktion GetCtrlVal (User Interface Controls/Graphs/Strip Charts... General Functions... ) in ihr Programm übernehmen.2) Abfrage der Eingabe mittels der Funktion GetCtrlVal. Als Parameter übergeben Sie dieentsprechende Zuordnungszahlen für Panel und Element und bekommen den aktuellen Wertdes Elements in eine geeignete Variable (Beachten Sie welchen Datentyp Sie dem Elementbeim editieren der grafischen Benutzeroberfläche zugeordnet haben) übertragen die im Pro-gramm verarbeitet werden kann.Für den Gebrauch einer simplen „STOP“ Taste müssen Sie deren Wert (der sich ohnehin nurvon 0 auf 1 geändert haben kann) nicht notwendigerweise abfragen. Zeigt ihnen die FunktionGetUserEvent, daß die STOP-Taste (Command Button) betätigt wurde können Sie ihr Pro-gramm beenden.Im folgenden ein Beispiel über die Verwendung einer grafischen Benutzeroberfläche für dasExperiment des Datenloggers:

Angenommen Ihr Programm läuft nach dem Initialisieren der GPIB Schnittstelle ( GPIB3 Initialize ) und des Meßgeräts (Funktions- Bereichs und Triggereinstellungen) in einer

Page 8: Kurze Einführung in LabWindows/CVI (Versionen 6.0 ... · Kurze Einführung in LabWindows/CVI (Versionen 6.0+ MSWindows) 1) Zum Meßprogramm Labwindows Im Gegensatz zu der Version

Schleife wobei es bei jedemDurchlauf den aktuellen Wert desMeßgerätes einliest. Sie haben einPanel gestaltet dessen erstesElement eineStrip Chart darstellungist und dessen 2. Element eineSTOP Taste (Command Button) diedas Beenden der Programmschleifeverursachen soll. Im Grafik Editorsieht es etwa wie in Abb.7 gezeigtaus und wird als xmple.uirabgespeichert. Die zugehörigeInclude Datei (xmple.h) hat dannfolgende Einträge:

/* Panels and Controls: */

#define PANEL 1#define PANEL_QUIT 2#define PANEL_STRIPCHART 3

Das Panel selbst hat den Konstantennamen PANEL (und kann ähnlich einem ElementEreignisse – etwa Verändern, Verschieben, Schließen durch Mausaktionen auslösen).Die beiden Elemente sind die STOP Taste (mit dem Control name Quit, Control mode HOT)durch den Namen PANEL_QUIT zuordenbar, und Eine Strip Chart grafik (Control nameSTRIPCHART, Control mode INDICATOR) die durch die KonstantePANEL_STRIPCHART in das Programm eingebaut werden kann.Das Programm könnte dann um folgende Programmzeilen (User Interface Funktionen)erweitert werden um die grafische Darstellung der Meßdaten zu aktualisieren und bei Bedarfdas Programm anzuhalten. Nachfolgend ein einfaches, lauffähiges Programm wobei dieMeßwerterfassung des Multimeters durch eine Zahlengeneration ersetzt wurde./* Einfaches Beispielprogramm zur Illustration der grafischen Benutzeroberfläche *//* Das Projekt besteht aus den Dateien xample.c (Quellkode), xmple.uir (Grafik und xmple.h (Include Datei zum Einbinden der Grafik in das Programm wird automatisch generiert */

#include "xmple.h" /* Konstanten Deklarationen der Grafikdatei */

void main() {

int PanelHandle; /* für die grafische Oberfläche benötigt */int istop = 0; /* Zum Beenden der Schleife, wird mit 0 vordefiniert */double DmmReading = 0.0; /* simulierter Meßwert */int WhichPanel = 0, WhichElement = 0; /* Variable um die UserEvent Rückmeldung

ins Programm zu übernehmen */

Abbildung 7: Gestaltung einer grafische Oberfläche füreinen Datenlogger.

Page 9: Kurze Einführung in LabWindows/CVI (Versionen 6.0 ... · Kurze Einführung in LabWindows/CVI (Versionen 6.0+ MSWindows) 1) Zum Meßprogramm Labwindows Im Gegensatz zu der Version

PanelHandle = LoadPanel (0, "xmple.uir", PANEL); /* Grafik laden */DisplayPanel (PanelHandle); /* Grafik anzeigen */

/* Schleife */

while (!istop) /* Abbruchbedingung istop ungleich 0 */{

/* Meßwerterzeugung */

DmmReading = sin ((DmmReading + 0.05) * 6.28);

/* Graphishe Darstellung */

PlotStripChartPoint (PanelHandle, PANEL_STRIPCHART, DmmReading);

/* Abfrage (ohne warten) ob am Panel ein Ereignis eingetreten ist */

GetUserEvent (0, &WhichPanel, &WhichElement); /* Pointer to variable*/

/* Da nur ein Panel in Gebrauch interessiert der Wert in WhichPanel nicht.Wenn STOP Taste "betätigt" wurde steht in der Variablen WhichElementder Wert der korrespondierenen Konstanten des Elements */

if (WhichElement == PANEL_QUIT) /* Taste gedrückt ? */istop = 1; /* Ja, dann beende Schleife */

/* Nein, fahre fort */

}

DiscardPanel (PanelHandle); /* Grafik entladen */

} /* Programmende */

4) Formatierungsfunktionen in LabWindowsWenn Ihnen die C Funktionen scanf bzw. printf vertraut sind können Sie diese wie gewohntverwenden. Die LabWindows eigenen Funktionen ScanIn bzw. FmtOut aus der LibraryFormatting and I/O Data Formatting übernehmen die gleichen Aufgaben und sind in ihrerSyntax bezüglich Formatierungsanweisung sehr ähnlich. Der Funktionsumfang wurdeallerdings in mehreren Punkten erweitert und an spezifische Probleme in der Meßtechnikangepaßt. Die Funktionen ScanIn und FmtOut behandeln Ein/Ausgaben über die Standardein-(Tastatur) bzw. Ausgabe (Textbildschirm). Für Speicheroperationen (etwa das Konvertierenvon Textvariable in Zahlenvariable gibt es die vollkommen analogen Funktionen Scan undFmt. Auch Dateiein- und Ausgaben lassen sich mit dem Pendant ScanFile bzw. FmtFile sehreinfach gestalten. Nachfolgendes Quellkodefragment zeigt Ihnen beispielhaft wie man etwadie Daten die von einem DMM über die GPIB Schnittstelle übertragen wurden inZahlenvariable einliest und diese dann in einer Datei abspeichert.

char GpibBuffer[128]; /*Datenübertragungsvariable */

Page 10: Kurze Einführung in LabWindows/CVI (Versionen 6.0 ... · Kurze Einführung in LabWindows/CVI (Versionen 6.0+ MSWindows) 1) Zum Meßprogramm Labwindows Im Gegensatz zu der Version

char lf = 10; /*Formatierungszeichen*/int Index; /*Zählvariable*/double DmmData; /*Meßwert als Zahl*/int k197 = 20; /*GPIB Geräteadress*/int NumberOfConversions; /*Rückgabevariable der Formatierungsfunktionen*/int FileHandle /*Dateizuordnungszahl, durch OpenFile festgelegt*/

ieee488_listen (k197, GpibBuffer, 0); /* Einlesen des aktuellen Meßwertsin eine Textvariable */

/* Die Übertragung hat die Form NDCA+2.9876E-3 */

/* Splitten der Textvariablen in Vorspann (Text) der verworfen wird und Zahlenwertder in die Variable DmmData übertragen wird */

NumberOfConversions = Scan (GpibBuffer, "%s>%s[dt#]%f", &DmmData);

/* War das Scannen der Textvariablen fehlerfrei so steht in der VariablenNumberOfConverisons nach der Ausführung eine 2, da zwei Elemente aus GpibBufferextrahiert wurden.Die 3 Parameter für den Scan (ScanIn, ScanFile) Aufruf von links nach rechts:"Quell"variable (GpibBuffer), Konvertierungsanweisung ("%s>%s[dt#]%f"), "Ziel"variable (DmmData).Die Konvertierungsanweisung gibt an, daß eine Textvariable (%s) in (>) eineTextvariable (%s) und eine Fließkomma - Zahlenvariable (%f) geteilt werden soll.Die "Ziel"-Textvariable würde durch die in eckiger Klammer spezifizierten An-weisungen gebildet:(1) t# ... bedeutet, daß der Eintrag beendet wird sobald ein numerisches Zeichenim Quelltext auftritt. (In unserem Beispiel wäre das das Pluszeichen +)(2) d ... bedeutet, daß der Inhalt NICHT gespeichert werden soll (dummy). Deshalb mußim 3. Parameterfeld auch keine Variable für den Vorspann angegeben werden. */

/* Bildung einer Zeile zur Ablage in einer Text - Datei */

NumberOfConversions = FmtFile (FileHandle, "%s<%i,%f%c", Index, DmmData, lf);

/* in NumberOfConversions steht die Zahl 3, da 3 Elemente zu einer Textzeilezusammengefaßt wurden.Die 3 Paramter für den Fmt (FmtOut, FmtFile) Aufruf von links nach rechts:"Ziel" variable (in diesem Fall der durch OpenFile erzeugte FileHandle), Konvertierungsanweisung("%s<%i,%f%c"), "Quell" variablen.Die Konvertierungsanweisung gibt an, daß in einer Textvariablen (%s) der Inhaltvon (<) einer Ganzzahlvariablen (%i), einer Gleitkommavariablen (%f) und einem Zeichen (%c)zusammengefaßt wird:Die Ganzzahlvariable enthält den fortlaufenden IndexDie Gleitkommavariable den zugehörigen Meßwert (ohne Vorspann)Das Zeichen lf enthält den Wert 10 (siehe Deklaration) das entspricht einemLineFeed (Zeilenvorschub) und dient zum struktuieren der Daten in der gebildetenDatei.