# LabVIEW

LabVIEW (Laboratory Virtual Instrumentation Engineering Workbench) is een grafische programmeeromgeving, ontwikkeld door National Instruments. Het is een omgeving die met name geschikt is voor besturingstechniek, data-acquisitie, en het communiceren met meetinstrumenten. De LabVIEW-programmeertaal omvat echter dezelfde taalconstructies en datastructuren als de traditionele programmeertalen, waardoor LabVIEW gebruikt kan worden voor de creatie van een brede waaier van softwaretoepassingen. LabVIEW kan zowel onder Windows, Linux als OS X worden gebruikt.

## Aanzichten

Softwaretoepassingen die onder LabVIEW worden geschreven worden omschreven als virtuele instrumenten. Een Virtueel Instrument wordt meestal aangeduid met de letters VI en kan het best worden vergeleken met subroutines en functies die in andere talen worden gebruikt. Net als een klassiek meetinstrument heeft een virtueel instrument twee aanzichten:
* een paneel met bedieningsorganen en indicatoren, variërend van lampjes tot grafieken inclusief cursors. Dit is wat de gebruiker ziet; dit wordt ook wel het front panel of de user interface genoemd.
* een schematisch aanzicht van de werking. Dit is de broncode die de software-ontwikkelaar ziet. Dit schema wordt het blokdiagram genoemd.

## Verklaring van de tekens

Het maken van een LabVIEW-programma gebeurt volledig grafisch. Functies en subroutines worden aangegeven als blokjes. Deze blokjes zijn onderling via gekleurde lijnen met elkaar verbonden. De lijnen stellen de variabelen voor en de kleuren het type. Zo staat de kleur oranje voor een real type en de kleur blauw voor een integer type. De dikte van een lijn varieert: een dikke lijn stelt een eendimensionale array voor; een dubbeldikke lijn een multidimensionale array. Lussen en case-statements worden met rechthoeken weergegeven. Alles wat binnen deze rechthoeken is geplaatst, wordt binnen de lus uitgevoerd. Wanneer een software-ontwikkelaar een proces redelijk netjes programmeert, kan een deskundige die het proces kent maar geen kennis op het gebied van software heeft meestal in één oogopslag zien of het proces in hoofdlijnen goed is gemodelleerd. Een eenvoudig voorbeeld van een programma is hieronder getekend:
De gekleurde lijnen, die de functieblokken met elkaar verbinden, dienen twee zaken. Allereerst verzorgen deze verbindingen de gegevensoverdracht tussen de functieblokken. Ten tweede zorgt de volgorde waarin de functieblokken staan ook voor de volgorde waarin deze uitgevoerd worden. Speciaal hierbij is dat een vertakking van de gekleurde lijnen tot gevolg heeft dat meerdere functies tegelijkertijd uitgevoerd worden. Dit proces wordt ook wel multi-threading genoemd, en heeft vele voordelen, zoals het parallel afhandelen van taken (denk aan inlezen van meetgegevens en het gelijktijdig analyseren, presenteren en opslaan van gegevens).

## Mogelijkheden en uitbreidingen

LabVIEW is in 1986 ontwikkeld voor de Apple Macintosh; de Macintosh was destijds het enige computersysteem dat een grafische gebruikersinterface had. De eerste toepassing voor LabVIEW was het automatiseren van metingen, door het zorgen voor een eenvoudige en goede communicatie tussen meetinstrumenten en de computer. Doordat de programmacode grafisch is, sluit het goed aan op de manier waarop ingenieurs denken, namelijk in (blok)schema's. In de loop der tijd zijn er talloze toevoegingen aan het softwarepakket geweest, zoals de ondersteuning van meerdere operating systemen. Daarnaast zijn er ook een breder scala aan toepassingen, zoals data-acquisitie, beeldherkenning, mathematische berekeningen en simulaties, procesbesturing en real-time besturingen. Vanaf versie 7 is het mogelijk om toepassingen voor de hand-held PDA's te schrijven, en vanaf versie 7.1 ook voor embedded systemen, zoals FPGA's en 32-bits CPU's.
Processen lopen in LabVIEW parallel. Wanneer men verschillende processen parallel laat lopen, zullen die allemaal in hun eigen tempo data afhandelen. Voor de gegevensoverdracht tussen de verschillende processen zijn verschillende methoden voor synchronisatie bedacht, die allemaal hun eigen voor- en nadelen hebben. Deze methoden kunnen naast elkaar gebruikt worden, maar het verdient de voorkeur om het aantal methoden te beperken.