# LabWindows/CVI

LabWindows/CVI est un environnement de développement intégré pour le langage C permettant de concevoir des applications d'instrumentation virtuelle (CVI est l'acronyme de C for Virtual Instrumentation), souvent utilisé pour les bancs de test, mesure et contrôle$^,$. Le logiciel est vendu par la société National Instruments.

## Histoire

C'est en 1987 que la première version voit le jour sous DOS, il est alors nommé simplement LabWindows. Il sera ensuite porté sous Windows et renommé LabWindows/CVI.
La liste ci-dessous indique les versions principales du logiciel ainsi que ses nouvelles fonctions :
* 1989 : LabWindows 1.0, sous DOS, première version publique
* 1991 : LabWindows 2.0, sous DOS, aides au développement d'IHM
* 1994 : LabWindows/CVI 3.0, sous Windows 3.1 et Solaris
* 1995 : LabWindows/CVI 3.1, génération automatique de code
* 1996 : LabWindows/CVI 4.0, compatibilité accrue avec les compilateurs externes
* 1998 : LabWindows/CVI 5.0, compatibilité VXI et IVI
* 2000 : LabWindows/CVI 5.5, bibliothèques multitâches
* 2001 : LabWindows/CVI 6.0, support ActiveX et amélioration de l'IHM
* 2003 : LabWindows/CVI 7.0, intégration des workspaces (en)
* 2004 : LabWindows/CVI 7.1, complétion automatique
* 2005 : LabWindows/CVI 8.0, nouveau système de déploiement, support des .NET assemblies
* 2006 : LabWindows/CVI 8.1, variables réseau, contrôles graphiques du style Windows
* 2007 : LabWindows/CVI 8.5, amélioration de la gestion du microprocesseur multi cœur, édition du code pendant le débogage, première version du toolkit temps réel
* 2008 : LabWindows/CVI 9.0, gestionnaire de mémoire et compilation optimisée, support du C ANSI version 99 (notamment les tableaux dynamiques)
* 2009 : LabWindows/CVI 9.1, Execution Profiler Toolkit, création d'applications 64 bits, navigateur de propriétés des contrôles graphiques, génération de la documentation à partir des commentaires du code source.
* 2010 : LabWindows/CVI 10.0, création de configurations de compilation personnalisées, possibilité d'attacher/détacher CVI à un programme déjà en cours d'exécution, tableau de contrôles graphiques, création de correctifs pour les kits de distribution.
* 2012 : LabWindows/CVI 12.0, Possibilité d'embarquer le run-time au côté de l'exécutable/Dll: différents run-time sur une machine. Possibilité d'utiliser les boîtes de dialogues Windows Vista. Info-bulles pour les contrôles graphiques. Amélioration du support 64 bits. Mise à niveau de la bibliothèque d'analyse avancée (100 fonctions supplémentaires).
* LabWindows/CVI 2013, nouveau compilateur basé sur CLang et LLVM: compilation optimisée, gestion des niveaux d'avertissement, mise au point de processus détaché. Bibliothèque OpenMP, Nouvelles API de stockage des données. Améliorations de l'éditeur de code source. Remarque: Le changement de compilateur a eu d'importantes conséquences qui ont été corrigées par 1 patch suivi de 2 services packs.
* LabWindows/CVI 2015, Améliorations du compilateur (rétrocompatibilité, avertissement, ...). Mise à niveau du toolkit temps réel.
* LabWindows/CVI 2017, support de la parallélisation d'exécution par OpenMP, point d'arrêt avancé, logger d’événements des contrôles graphiques, amélioration de l'éditeur de code.
* LabWindows/CVI 2019, amélioration de l'éditeur de code, nouvelles fonctions pour la bibliothèque de stockage des données TDMS, possibilité de configurer les alertes de compilation en erreur.
* LabWindows/CVI 2020, support du codage des caractères UTF-8 dans l'éditeur de code, les bibliothèques internes et les IHM.

## Généralités

LabWindows/CVI permet de concevoir des applications d'acquisitions de données, ainsi que des interfaces graphiques permettant d'utiliser ces données. Ce programme est très similaire à LabVIEW mais il utilise la programmation en langage C. Ses intérêts sont$^,$ :
* l'utilisation en C des bibliothèques d'instrumentation et de mesure de National instruments,
* le développement d'interfaces graphiques est simplifié,
* la présence d'assistants facilite la programmation de pilotes d'instruments et d'acquisitions de mesure,
* l'accès à tout le SDK de Windows et ainsi à une palette de possibilités de programmation étendue.
Cet environnement de développement fonctionne sous Windows et est également porté sous Unix.

## Éditions

* Édition de base : environnement de développement, création d'interfaces utilisateurs, bibliothèques d'instrumentation et bibliothèque d'analyse et d'optimisation des performances d'exécution des programmes.
* Édition complète : édition de base + la bibliothèque d'analyse mathématique, la bibliothèque d'analyse du signal, la bibliothèque internet, le SDK de Windows, la détection des fuites mémoires, l'accès aux bases de données, la bibliothèque OpenMP ...
Remarque: LabWindows/CVI est aussi intégré dans la suite logicielle NI Developer Suite de National Instruments.

## Boîte à outils

* Real Time : programmation sur cible temps réel
* Run-time pour Linux : exécution des programmes développés avec CVI sur les systèmes d'exploitation Linux
* Signal Processing : traitement du signal avancé
* Vision : vision industrielle, traitement des images, reconnaissance de formes, OCR
* PID Control : fonctions pour l'asservissement. Cette boîte à outils est intégrée dans la version de base à partir de CVI 2013 SP2.
* Execution Profiler Toolkit: analyse et optimisation des performances d'exécution des programmes. Cette boîte à outils est intégrée dans la version complète à partir de CVI 2012 puis dans la version de base depuis la version CVI 2019.
* Enterprise Connectivity : maîtrise statistique des procédés, connectivité avec les bases de données et publication internet
* SQL Toolkit: Accès aux bases de données. Cette boîte à outils est intégrée dans la version complète à partir de CVI 2013 SP2.

## Alternatives

* Les bibliothèques spécialisées en contrôle, analyse, test et mesure de National Instruments sont également accessibles pour la programmation sous Visual Studio pour C++, C sharp ou Visual Basic grâce à Measurement Studio.