www.nsi.fr
Interface logicielle PC pour cartes NSI
Guide utilisateur
30/08/2013 DUT-MUX-0219 /V1.2
Auteur : Cédric Rousset
Approbation : Christian Andagnotto
Page laissée intentionnellement blanche
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 1 -
I. Contenu
I. CONTENU .............................................................................................................................. 1
II. AVERTISSEMENTS ............................................................................................................ 3
III. BUT DU DOCUMENT ....................................................................................................... 4
IV. PRESENTATION GENERALE ........................................................................................ 5
IV.1 Architecture ................................................................................................................... 5
IV.2 Systèmes supportés ....................................................................................................... 6
IV.3 Cartes concernées .......................................................................................................... 6
V. MISE EN ŒUVRE DE L'INTERFACE LOGICIELLE .................................................. 7
V.1 Présentation .................................................................................................................... 7
V.2 Composition de l'interface logicielle .............................................................................. 7
V.2.1 NSIMISC.DLL .................................................................................................. 7
V.2.2 NSIMISC.LIB .................................................................................................... 8
V.2.3 Fichiers .H .......................................................................................................... 8
V.2.4 Programme de test ............................................................................................. 8
V.2.5 Programmes d’exemple ..................................................................................... 9
V.2.6 Fichiers d’installation ........................................................................................ 9
V.2.7 Pilotes de périphériques ..................................................................................... 9
V.3 Liste des fonctions de l'interface logicielle .................................................................... 10
V.4 Séquences d'appel des requêtes ...................................................................................... 11
V.4.1 Tableau récapitulatif .......................................................................................... 12
V.5 Modes du périphérique (non disponible) ....................................................................... 13
V.5.1 Mise en veille ..................................................................................................... 13
V.5.2 Réveil ................................................................................................................. 14
VI. DESCRIPTION DES TYPES ............................................................................................. 15
VI.1 t_MiscDeviceInfo ......................................................................................................... 15
VI.2 t_MiscDeviceMode ....................................................................................................... 16
VI.3 t_MiscInputInfo ............................................................................................................ 16
VII. DESCRIPTION DES FONCTIONS DE L'INTERFACE .............................................. 17
VII.1 Nsi_GetAPIinfo ........................................................................................................... 17
VII.2 Nsi_ExitDrv ................................................................................................................. 18
VII.3 Nsi_GetDeviceInfo ...................................................................................................... 19
VII.4 Nsi_GetDeviceMode (non disponible) ........................................................................ 20
VII.5 Nsi_InitDrv .................................................................................................................. 21
VII.6 Nsi_ReadAna ............................................................................................................... 22
VII.7 Nsi_ReadIo .................................................................................................................. 23
VII.8 Nsi_ReadIoEx .............................................................................................................. 24
VII.9 Nsi_SetDeviceMode (non disponible)......................................................................... 25
VII.10 Nsi_WriteIo ............................................................................................................... 26
VIII. TRUCS ET ASTUCES ..................................................................................................... 27
VIII.1 Dépanner une application ........................................................................................... 27
VIII.2 Utiliser un compilateur non Microsoft ....................................................................... 27
VIII.2.1 Linkage de l’application avec la DLL NSIMISC .......................................... 27
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 2 - DUT-MUX-0219 /V1.2 août 2013
VIII.2.2 Alignement des structures de données ........................................................... 27
IX. INSTALLATION DE L'INTERFACE LOGICIELLE ................................................... 29
IX.1 Installer un périphérique USB ...................................................................................... 30
IX.1.1 Sous Windows 98/Me ....................................................................................... 30
IX.1.2 Sous Windows 2000 ......................................................................................... 31
IX.1.3 Sous Windows XP ............................................................................................ 32
IX.2 Dépannage de l’installation ........................................................................................... 33
X. DESINSTALLATION DE L’INTERFACE LOGICIELLE ............................................. 34
X.1 Windows 95/98/Me ........................................................................................................ 34
X.2 Windows 2000................................................................................................................ 35
X.3 Windows XP .................................................................................................................. 35
XI. ANNEXE : PROTOTYPES DES FONCTIONS............................................................... 36
XII. ANNEXE : FONCTIONS DE L'API WIN32 .................................................................. 37
XIII. ANNEXE : PROGRAMME D'EXEMPLE .................................................................... 39
XIII.1 Déclarations ................................................................................................................ 39
XIII.2 Initialisations .............................................................................................................. 40
XIII.3 Gestion des Entrées/Sorties ........................................................................................ 43
XIII.4 Gestion des modes de fonctionnement ....................................................................... 44
XIII.5 Arrêt du programme ................................................................................................... 45
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 3 -
II. Avertissements
Les éléments contenus dans ce document sont fournis à titre d'information. Ils pourront faire
l'objet de modifications sans préavis et ne sauraient en aucune manière engager la société
anonyme NSI.
La société anonyme NSI ne saurait en aucun cas être tenue pour responsable d'une quelconque
erreur contenue dans ce document, ainsi que des éventuelles conséquences pouvant en
résulter.
Aucune partie de ce document ne peut être reproduite à d'autres fins que l'usage personnel de
l'acheteur sans la permission expresse et écrite de la société anonyme NSI.
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 4 - DUT-MUX-0219 /V1.2 août 2013
III. But du document
Le but de ce document est de donner à l'utilisateur toutes les informations nécessaires à
l'utilisation de l'interface logicielle pour les cartes NSI.
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 5 -
IV. Présentation générale
L'interface logicielle générique permet aux utilisateurs de réaliser leurs propres applications
pour Windows en utilisant les cartes NSI au travers d'une interface simple et rapide à mettre
en œuvre.
L'interface logicielle générique se présente sous la forme d'une série de fonctions dont
l'utilisation est décrite dans ce document. Ces fonctions sont exécutées par une DLL qu'une ou
plusieurs applications peuvent appeler simultanément. Cette DLL est identique pour toutes les
plates formes Windows supportées.
L'interface logicielle permet à l'utilisateur de faire abstraction aussi bien du système
d'exploitation que du type de carte utilisé. Voir les paragraphes suivants pour connaître les
caractéristiques des différentes cartes et les systèmes d’exploitations supportées par cette
interface logicielle. L’interface logicielle peut gérer plusieurs cartes simultanément.
I V . 1 A r c h i t e c t u r e
Plate-forme : Windows 98, Me, 2000, XP
Pilotes de périphérique
NSI
ISA-PCMCIA-PCI-USB
Appli
cati
ons
Win
32
Sys
tèm
e M
até
riel
MUXy box
MUXy box 2
Pilote
NSIU2KBO ou NSIU2KUD
NSIMISC.DLL
Cartes NSI
Applications Win32 Application
Win32
NSICAN, NSIDIAG, …
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 6 - DUT-MUX-0219 /V1.2 août 2013
I V . 2 S y s t è m e s s u p p o r t é s
L’interface logicielle fonctionne pour des ordinateurs de type PC fonctionnant avec les
systèmes d’exploitation suivants :
Windows XP
Windows Vista 32 bits
Windows Vista 64 bits (MUXybox2 uniquement)
Windows Seven 32 bits
Windows Seven 64 bits (MUXybox2 uniquement)
I V . 3 C a r t e s c o n c e r n é e s
Référence NSI Désignation Bus Nb
Canaux
Description
KT007078 MUXy box USB 2 MUXy box
KT009498 MUXy box 2 USB 2 MUXy box 2
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 7 -
V. Mise en œuvre de l'interface logicielle
V . 1 P r é s e n t a t i o n
Les fonctions de l'interface logicielle permettent à des programmeurs de réaliser des
applications pour Windows utilisant les cartes NSI. Ces fonctions permettent d'exécuter des
fonctionnalités indépendantes des réseaux CAN, VAN, K, LIN ou autres, comme la gestion
d'entrées/sorties ou tout autre fonction propre au périphérique piloté. Toutes les fonctions de
l’interface logicielle sont définies en Langage C dans la librairie : NSIMISC.DLL.
L’interface logicielle permet d’utiliser toutes les cartes NSI énumérées dans le paragraphe
Cartes supportées.
Pour utiliser un périphérique, une application doit premièrement l’ouvrir (Nsi_InitDrv). Lors
de cette ouverture, un identificateur unique est retourné par l'interface. Cet identificateur - le
"Handle" – doit ensuite être utilisé par l'application lors de chaque appel aux fonctions de
l'interface pour identifier ce canal. Un canal ne peut pas être ouvert par une autre application
tant qu'il n'a pas été refermé (Nsi_ExitDrv).
V . 2 C o m p o s i t i o n d e l ' i n t e r f a c e l o g i c i e l l e
Les chemins des répertoires indiqués sont relatifs au répertoire \Pilotes PC – PC drivers du
CD-ROM intitulé « CD-ROM Livraison NSI ».
V.2.1 NSIMISC.DLL
Le fichier NSIMISC.DLL (Dynamic Link Library) exporte toutes les fonctions de l'interface
logicielle. Les applications doivent appeler ce fichier DLL pour utiliser l'interface logicielle.
La DLL NSIMISC communique les ordres de l'application vers la carte NSI au travers d'un
pilote de périphérique. Pour lier une application avec le fichier DLL, le compilateur utilise
généralement un fichier LIB qui définit les points d’entrées de chaque fonction exportée. Les
prototypes des fonctions sont fournis dans plusieurs fichiers H décrits ci-dessous.
Le fichier NSIMISC.DLL est copié par le processus d'installation dans le répertoire System
ou System32 d'où il est accessible par toutes les applications. Il n’est pas nécessaire de copier
ce fichier à un autre emplacement. Se référer au chapitre Installation de l’interface logicielle
pour plus de détails.
Une application cliente pourra appeler simultanément l’ensemble des interfaces logicielles.
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 8 - DUT-MUX-0219 /V1.2 août 2013
V.2.2 NSIMISC.LIB
Le fichier NSIMISC.LIB permet de lier une application avec NSIMISC.DLL lors de la
construction d'une application. Le fichier NSIMISC.LIB livré dans le répertoire
MISCPC2000\Include est spécifique aux environnements de développement Microsoft. En
cas d’incompatibilité, ce fichier peut être généré pour d'autres outils de développement grâce
aux fichier DEF ou DLL. Le fichier LIB doit être copié dans le répertoire du projet de
l'application et inséré dans le projet comme indiqué dans la documentation de l'outil de
développement utilisé. Voir le paragraphe Utiliser un compilateur non Microsoft dans le
chapitre Trucs et Astuces.
V.2.3 Fichiers .H
Les fichiers .H livrés dans le répertoire MISCPC2000\Include du CD-ROM définissent en
langage C les prototypes des fonctions de l'interface logicielle. Deux fichiers différents
séparent la déclaration des structures et des constantes (MISCDEF.H) de la déclaration des
prototypes des fonctions (MISCPRO.H). Ces fichiers doivent être copiés dans le répertoire
du projet de l'application et inclus dans le code source par la directive suivante :
#include "miscdef.h"
#include "miscpro.h"
Attention : Les fichiers H de l’interface logicielle contiennent des directives de compilation
dont la syntaxe est spécifique aux outils Microsoft. Celles-ci doivent impérativement être
modifiés en fonction du compilateur utilisé. Voir le paragraphe Utiliser un compilateur non
Microsoft dans le chapitre Trucs et Astuces.
V.2.4 Programme de test
Un programme de test (MISCTEST.EXE) est livré dans le répertoire MISCPC2000EX\Test
du CD-ROM. Ce programme permet de vérifier que le pilote de la carte et la DLL sont
correctement installés et qu'une carte fonctionne. Il est possible d’ouvrir ce programme
plusieurs fois et de l’utiliser simultanément sur des périphériques différents.
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 9 -
V.2.5 Programmes d’exemple
Un programme d’exemple est livré dans le répertoire MISCPC2000\Samples du CD-ROM.
V.2.6 Fichiers d’installation
Les fichiers d'installation (.INF et .BAT) permettent d'installer les pilotes de périphérique en
fonction du système d'exploitation. Se référer au chapitre Installation de l’interface logicielle
pour plus de détails sur l’utilisation de ces fichiers.
V.2.7 Pilotes de périphériques
Les fichiers pilotes de périphérique nécessaires sont automatiquement copiés lors de
l’installation de l’interface logicielle. Les applications ne doivent normalement pas accéder
directement à ces fichiers :
NSIU2KBO.SYS : Pilote Windows 98/Me/XP/2000 pour MUXy box
NSIU2KUD.SYS : Pilote Windows XP/Vista/Seven pour MUXy box2
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 10 - DUT-MUX-0219 /V1.2 août 2013
V . 3 L i s t e d e s f o n c t i o n s d e l ' i n t e r f a c e l o g i c i e l l e
Nom Fonction
Configuration, initialisation
Nsi_EnumCards Enumération des périphériques NSI détectées et de leur propriétés
Nsi_InitDrv Ouverture d'un canal.
Nsi_GetDeviceInfo Informations sur le périphérique.
Nsi_GetAPIinfo Retourne les versions des couches logicielles
Entrée / Sorties
Nsi_WriteIo Ecriture d’entrées/sorties
Nsi_ReadIo Lecture d’entrées/sorties
Nsi_ReadIoEx Lecture d’entrées/sorties avancée
Nsi_ReadAna Lecture d’entrées ANA (MUXybox2 uniquement)
Divers
Nsi_SetDeviceMode Place le périphérique dans un mode particulier
Nsi_GetDeviceMode Récupère le mode dans lequel se trouve le périphérique.
Sortie du driver
Nsi_ExitDrv Arrêt du programme et restitution de l'environnement.
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 11 -
V . 4 S é q u e n c e s d ' a p p e l d e s r e q u ê t e s
L’appel de ces fonctions est impératif et l’ordre doit être respecté.
L’appel de ces fonctions est facultatif ; il dépend de l’application.
Application utilisateur
Arr
êt d
e la
com
munic
ati
on
F
onct
ions
spéc
ifiq
ues
In
itia
lisa
tion e
t co
nfi
gura
tion
Nsi_InitDrv
Nsi_EnumCards
Nsi_ExitDrv
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 12 - DUT-MUX-0219 /V1.2 août 2013
V.4.1 Tableau récapitulatif
L'appel des fonctions de l'interface doit respecter un certain ordre. Si la séquence d'appel n'est
pas respecté, l'interface logicielle retourne le code d'erreur _SEQ_ERR (erreur de séquence).
Etat
Requêtes
INIT
DRV OK
Nsi_EnumCards X X
Nsi_InitDrv X
Nsi_GetAPIinfo X X
Nsi_GetDeviceInfo X
Nsi_WriteIo X
Nsi_ReadIo X
Nsi_ReadIoEx X
Nsi_ReadAna X
Nsi_SetDeviceMode X
Nsi_GetDeviceMode
X
Nsi_ExitDrv X
Le tableau suivant précise quelles requêtes provoquent les changements d'état de l'interface.
Le code retour doit indiquer _OK pour que le changement ait eu lieu.
Etats Requêtes de transition REPOS Nsi_ExitDrv INIT_DRV_OK Nsi_InitDrv
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 13 -
V . 5 M o d e s d u p é r i p h é r i q u e ( n o n d i s p o n i b l e )
V.5.1 Mise en veille
MUXy box possède un mode de basse consommation (Low Power) permettant de réduire la
consommation; ce mode est activé par la commande SetDeviceMode(Low_Power) qui
autorise le passage de l'interface en basse consommation suivant le diagramme d'état ci-
dessous (figure 1.1)
Les conditions de réveil, définies plus en détail au §5.2, sont les suivantes :
une activité est détectée sur les bus CAN/LIN ou sur une entrée logique (réveil local)
la liaison USB hôte est connectée (réveil commandé)
un réveil programmé par l'horloge interne est déclenché (réveil autonôme)
Mode Normal
automaintien ON
consommation normale
Mode Low Power
automaintien OFF
En veille
basse
consommation
Réveillé
consommation
normale
SetDeviceMode (LOW_POWER)
/
Désactiver Automaintien Alimentation
SetDeviceMode (MODE_NORMAL)
/
Activer Automaintien Alimentation
Not (Conditions de réveil)
Conditions de réveil
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 14 - DUT-MUX-0219 /V1.2 août 2013
V.5.2 Réveil
Lorsque MUXy box est en état de veille basse consommation (mode "Low Power"), les
évènements suivants provoquent la ré-alimentation de l'interface :
Evènement de réveil Type de réveil
1 Reconnexion de la liaison USB avec le PC hôte Commandé (+5V USB)
2 Message de réveil sur le bus CAN0 "high speed" Local (signal INH du driver TJA1041 canal 0)
3 Message de réveil sur le bus CAN0 "low speed" Local (signal INH du driver TJA1054 canal 0)
4 Message de réveil sur le bus CAN1 "high speed" Local (signal INH du driver TJA1041 canal 1)
5 Message de réveil sur le bus CAN1 "low speed" Local (signal INH du driver TJA1041 canal 1)
6 Message de réveil sur le bus LIN Local (signal INH du driver TJA1020)
7 Entrée logique TOR 1 à l'état haut Local (détection de seuil)
8 Entrée logique TOR 2 à l'état haut Local (détection de seuil)
9 Alarme programmable (réserve) Autonome (signal d' IT de l'horloge temps réel)
10 Demande de réveil de la carte fille (réserve) Autonome (signal d' IT du bus d'extension)
Si l'une au moins de ces conditions de réveil est vraie, MUXy box passe alors dans un état
transitoire de réveil (état réveillé de l'automate illustré par la fig 1.1) avec retour à la
consommation normale.
Pour éviter les boucles de transitions en veille / réveillé conduisant à des réveils intempestifs,
le paramètre Sleep_delay de la commande SetDeviceMode(LOW_POWER) permet à
l'utilisateur de spécifier un délai minimal d'inactivité avant que l'interface ne retourne à l'état
de veille basse consommation.
L'automate détaillé régissant le Mode Low Power est illustré par le diagramme d'état suivant :
Mode Low Power
Attente délai de
mise en veille
Réveillé
consommation
normale
Not (Conditions de réveil)
/
Démarrer Délai
(Sleep_delay)
Conditions de réveil
En veille
basse
consommation Fin du délai
et Not (Conditions de réveil)
/
Mise en veille des interfaces Hard
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 15 -
VI. Description des types
Notation : pour les définitions de types (typedef), le préfixe t_ est utilisé.
V I . 1 t _ M i s c D e v i c e I n f o
La structure t_MiscDeviceInfo est retournée par la fonction Nsi_GetDeviceInfo. Elle permet
d'obtenir des informations sur un périphérique.
typedef struct{
unsigned long deviceType; // Type de périphérique
union {
struct USB{
short vendorID; //VendorID
short deviceID; //DeviceID
char productName[0x40]; //Nom produit
char manufacturerName[0x40]; //Fabricant
char serialNumber[0x80]; //N° de série
short firmwareVersion; //Version code
ULONG boardType; //Type de carte
ULONG reserved2; //Réservé
ULONG hardwareVersion; //Version carte
};
struct PCI{
ULONG IOBaseAddress; //Adresse IO
ULONG memoryBaseAddress[3]; //Mémoire base
ULONG IRQLineNumber; //N° IRQ
ULONG boardType; //Type de carte
char cardNameString[80]; //Nom de carte
ULONG reserved1; //Réservé
ULONG reserved2; //Réservé
};
struct ISA{
ULONG IOBaseAddress; //Adresse IO
ULONG IRQLineNumber; //N° IRQ
ULONG boardType; //Type de carte
char cardNameString[80]; //Nom du canal
ULONG reserved1; //Réservé
ULONG reserved2; //Réservé
};
char reserved[512];
}
} t_MiscDeviceInfo;
deviceType : Type de périphérique/pilote utilisé.
Notes sur différents champs apparaissant dans les structures :
firmwareVersion: Version du code embarqué.
hardwareVersion: Version de la carte. (Non supporté pour MUXy box)
Note: Les versions sont retournées sous la forme: (version majeur x 100) + version mineur.
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 16 - DUT-MUX-0219 /V1.2 août 2013
Exemple : 102 s'interprète comme la version 1.02
boardType : Type de carte utilisée.
_MUXYBOX : MUXy box standard
_MUXYBOX2 : MUXy box2 standard
V I . 2 t _ M i s c D e v i c e M o d e
Enumération des différents mode du périphérique.
typedef enum
{
_UNKNOWN = 0,
_NORMAL = 1,
_LOW_POWER = 2,
} t_NsiDeviceMode;
V I . 3 t _ M i s c I n p u t I n f o
Informations sur les entrées.
typedef struct{
unsigned char InputValue;
//Valeur de l'entrée (0,1)
unsigned long InputChange;
//Date du dernier changement d'état (unité 100us)
unsigned char reserved[128];
} t_MISCinputInfo;
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 17 -
VII. Description des fonctions de l'interface
V I I . 1 N s i _ G e t A P I i n f o
Retourne les informations concernant l'interface logicielle : version du pilote de la carte
utilisée et version de la DLL NSIMISC.
short Nsi_GetAPIinfo( HANDLE hdrv,
short* DLLversion,
short* DRVversion,
unsigned long* reserved )
Paramètres :
hdrv : Identificateur du canal retourné par la fonction Nsi_InitDrv.
DLLversion: Version de la DLL NSIMISC.DLL.
DRVversion: Version du pilote de périphérique de la carte utilisée.
reserved : Réservé
Note: Les versions sont retournées sous la forme: (version majeur x 100) + version mineur.
Exemple : 102 s'interprète comme la version 1.02
Code retour :
_OK : Versions retournées correctement.
_SEQ_ERR : Séquence invalide.
_INVALID_OP : La valeur de hdrv est invalide.
_PARAM_ERR : Paramètre invalide.
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 18 - DUT-MUX-0219 /V1.2 août 2013
V I I . 2 N s i _ E x i t D r v
Désactive le contrôleur de protocole et restitue l'environnement initial du canal. Ne pas
oublier d'appeler cette requête en fin d'utilisation d'un périphérique. En effet, tant qu'un canal
n'a pas été libéré par cette fonction, d'autres applications ne peuvent pas l'utiliser.
short Nsi_ExitDrv( HANDLE hdrv );
Paramètres :
hdrv : Identificateur du canal retourné par la fonction Nsi_InitDrv.
Code retour :
_OK : Canal libéré.
_SEQ_ERR : Séquence invalide.
_INVALID_OP : La valeur de hdrv est invalide.
_DRV_PARAM_ERR : Problème d'accès au pilote. Vérifier l'installation de la carte.
_USB_ERR : Erreur de transmission USB.
_BOARD_TIMEOUT: Pas d'acquittement du périphérique USB.
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 19 -
V I I . 3 N s i _ G e t D e v i c e I n f o
Retourne diverses informations sur le périphérique.
short Nsi_GetDeviceInfo( HANDLE hdrv,
t_MISCdeviceInfo* deviceInfo );
Paramètres :
hdrv : Handle du périphérique retourné par la fonction Nsi_InitDrv. Ce paramètre
identifie le canal (carte) concerné par cette fonction.
deviceInfo : Pointeur sur une structure t_MISCdeviceInfo.
Code retour :
_OK : Résultat correct.
_INVALID_OP : La valeur de hdrv est invalide.
_PARAM_ERR : Paramètre invalide.
_DRV_PARAM_ERR : Problème d'accès au pilote. Vérifier l'installation de la carte.
_USB_ERR : Erreur de transmission USB.
_BOARD_TIMEOUT: Erreur d'acquittement USB.
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 20 - DUT-MUX-0219 /V1.2 août 2013
V I I . 4 N s i _ G e t D e v i c e M o d e ( n o n d i s p o n i b l e )
Récupère le mode actuel du périphérique.
short Nsi_GetDeviceMode( HANDLE hdrv,
t_MISCdeviceMode* pMode );
Paramètres :
hdrv : Handle du périphérique retourné par la fonction Nsi_InitDrv. Ce
paramètre identifie le canal (carte) concerné par cette fonction.
pMode: Mode du périphérique.
_NORMAL : Mode normal.
_LOW_POWER : Mode basse consommation.
Code retour :
_OK : Configuration réussie.
_SEQ_ERR : Séquence invalide.
_PARAM_ERR : Paramètre invalide.
_BOARD_ERR Type de carte ne supportant pas cette fonction.
_INVALID_OP : La valeur de hdrv est invalide.
_DRV_PARAM_ERR : Problème d'accès au pilote. Vérifier l'installation de la carte.
_CHIP_ERR: Erreur hardware.
_USB_ERR : Erreur de transmission USB.
_BOARD_TIMEOUT: Erreur d'acquittement USB
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 21 -
V I I . 5 N s i _ I n i t D r v
Ouverture d'un canal correspondant à un périphérique détecté. Cette fonction doit être appelée
avant toute autre pour accéder à un canal particulier. Il est conseillé d'utiliser la fonction
Nsi_EnumCards pour déterminer les périphériques disponibles. La valeur retournée dans la
variable hDrv en échange du numéro de périphérique cno permet d’identifier ce canal pour
toutes les opérations suivantes. Un même canal ne peut pas être ouvert simultanément par
deux applications. Un canal ouvert doit toujours être libéré après utilisation par la fonction
Nsi_ExitDrv.
short Nsi_InitDrv( short cno,
HANDLE* hDrv );
Paramètres :
cno : Index du périphérique a ouvrir. Cette valeur correspond à la position du
périphérique dans le tableau retourné par la fonction Nsi_EnumCards. Le
premier périphérique détecté correspond à la valeur cno = 0.
hDrv : Pointeur sur une variable de type HANDLE (void*). Au retour de la fonction,
cette variable est initialisée avec l'identificateur du canal. Cette valeur doit être
ensuite passée à toutes les autres fonctions de l'interface pour agir sur ce canal
particulier.
Code retour :
_OK : Canal ouvert.
_INVALID_OP : La valeur cno est invalide ou le canal est déjà utilisé.
_OPENING_DRV_ERR : Problème d'accès au pilote de la carte. Vérifier l'installation du
pilote de périphérique.
_USB_ERR : Erreur de transmission USB.
_BOARD_TIMEOUT: Pas d'acquittement du périphérique USB.
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 22 - DUT-MUX-0219 /V1.2 août 2013
V I I . 6 N s i _ R e a d A n a
Permet de récupérer l'état des entrées analogiques présente sur la carte.
short Nsi_ReadAna( HANDLE hdrv,
unsigned short pAnaInputInfo[4],
);
Paramètres :
hdrv : Handle du périphérique retourné par la fonction Nsi_InitDrv. Ce
paramètre identifie le canal (carte) concerné par cette fonction.
pAnaInputInfo : Adresse du tableau de unsigned short. Il n'est pas nécessaire de passer un
tableau de plus de 4 unsigned short.
pAnaInputInfo[0] : Valeur en point ADC de la tension d’alimentation (conversion en Volt
par la formule PT_ADC*5.22*0.00488=Volt )
pAnaInputInfo[1] : reserved
pAnaInputInfo[2] : reserved
pAnaInputInfo[3] : Valeur en point ADC de la tension présente sur le bornier de la
MUXybox2 (conversion en Volt par la formule
PT_ADC*5.22*0.00488=Volt )
Code retour :
_OK : Configuration réussie.
_SEQ_ERR : Séquence invalide.
_PARAM_ERR : Paramètre invalide.
_BOARD_ERR Type de carte ne supportant pas cette fonction.
_INVALID_OP : La valeur de hdrv est invalide.
_DRV_PARAM_ERR : Problème d'accès au pilote. Vérifier l'installation de la carte.
_CHIP_ERR: Erreur hardware.
_USB_ERR : Erreur de transmission USB.
_BOARD_TIMEOUT: Erreur d'acquittement USB
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 23 -
V I I . 7 N s i _ R e a d I o
Permet de récupérer l'état d'entrées logiques présentes sur la carte.
short Nsi_ReadIo( HANDLE hdrv,
unsigned long dwInputValues,
unsigned long reserved );
Paramètres :
hdrv : Handle du périphérique retourné par la fonction Nsi_InitDrv. Ce
paramètre identifie le canal (carte) concerné par cette fonction.
dwInputValues : Champs de bits représentant les valeurs des entrées à lire.
Bit0 (LSB) = Entrée 1
Bit1 = Entrée 2
reserved : Champs réservé.
Code retour :
_OK : Configuration réussie.
_SEQ_ERR : Séquence invalide.
_PARAM_ERR : Paramètre invalide.
_BOARD_ERR Type de carte ne supportant pas cette fonction.
_INVALID_OP : La valeur de hdrv est invalide.
_DRV_PARAM_ERR : Problème d'accès au pilote. Vérifier l'installation de la carte.
_CHIP_ERR: Erreur hardware.
_USB_ERR : Erreur de transmission USB.
_BOARD_TIMEOUT: Erreur d'acquittement USB
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 24 - DUT-MUX-0219 /V1.2 août 2013
V I I . 8 N s i _ R e a d I o E x
Permet de récupérer l'état d'entrées logiques présentes sur la carte ainsi que la date de leur
dernier changement d'état.
short Nsi_ReadIoEx( HANDLE hdrv,
t_MISCinputInfo* pInputInfo,
unsigned long dwInputInfoLen,
unsigned long reserved );
Paramètres :
hdrv : Handle du périphérique retourné par la fonction Nsi_InitDrv. Ce
paramètre identifie le canal (carte) concerné par cette fonction.
pInputInfo : Adresse du tableau de structure t_MISCinputInfo. Il n'est pas nécessaire
de passer un tableau de plus de NB_MAX_INPUTS (2).
dwInputInputLen: Longueur du tableau pInputInfo.
reserved : Champs réservé.
Code retour :
_OK : Configuration réussie.
_SEQ_ERR : Séquence invalide.
_PARAM_ERR : Paramètre invalide.
_BOARD_ERR Type de carte ne supportant pas cette fonction.
_INVALID_OP : La valeur de hdrv est invalide.
_DRV_PARAM_ERR : Problème d'accès au pilote. Vérifier l'installation de la carte.
_CHIP_ERR: Erreur hardware.
_USB_ERR : Erreur de transmission USB.
_BOARD_TIMEOUT: Erreur d'acquittement USB
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 25 -
V I I . 9 N s i _ S e t D e v i c e M o d e ( n o n d i s p o n i b l e )
Permet de placer le périphérique dans un mode particulier.
short Nsi_SetDeviceMode( HANDLE hdrv,
t_MISCdeviceMode mode,
unsigned long dwParam );
Paramètres :
hdrv : Handle du périphérique retourné par la fonction Nsi_InitDrv. Ce
paramètre identifie le canal (carte) concerné par cette fonction.
mode: Mode du périphérique.
_NORMAL : Mode normal.
_LOW_POWER : Mode basse consommation.
Code retour :
_OK : Configuration réussie.
_SEQ_ERR : Séquence invalide.
_PARAM_ERR : Paramètre invalide.
_BOARD_ERR Type de carte ne supportant pas cette fonction.
_INVALID_OP : La valeur de hdrv est invalide.
_DRV_PARAM_ERR : Problème d'accès au pilote. Vérifier l'installation de la carte.
_CHIP_ERR: Erreur hardware.
_USB_ERR : Erreur de transmission USB.
_BOARD_TIMEOUT: Erreur d'acquittement USB
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 26 - DUT-MUX-0219 /V1.2 août 2013
V I I . 1 0 N s i _ W r i t e I o
Permet de positionner l'état de sorties logiques présentes sur la carte.
short Nsi_WriteIo( HANDLE hdrv,
unsigned long dwOutputValues,
unsigned long reserved );
Paramètres :
hdrv : Handle du périphérique retourné par la fonction Nsi_InitDrv. Ce
paramètre identifie le canal (carte) concerné par cette fonction.
dwOutputValues : Champs de bits représentant les valeurs des sorties à positionner.
Bit0 (LSB) = Sortie 1
Bit1 = Sortie 2
reserved : Champs réservé.
Code retour :
_OK : Configuration réussie.
_SEQ_ERR : Séquence invalide.
_PARAM_ERR : Paramètre invalide.
_BOARD_ERR Type de carte ne supportant pas cette fonction.
_INVALID_OP : La valeur de hdrv est invalide.
_DRV_PARAM_ERR : Problème d'accès au pilote. Vérifier l'installation de la carte.
_CHIP_ERR: Erreur hardware.
_USB_ERR : Erreur de transmission USB.
_BOARD_TIMEOUT: Erreur d'acquittement USB
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 27 -
VIII. Trucs et astuces
V I I I . 1 D é p a n n e r u n e a p p l i c a t i o n
La fonction Nsi_InitDrv ne fonctionne pas :
Il est impossible d'obtenir le HANDLE d'un canal :
Appeler la fonction Nsi_EnumCards pour connaître le nombre de canaux disponibles et
vérifier que le canal désiré (cno) n'est pas déjà utilisé.
Vérifier que la carte est correctement installée dans le Gestionnaire des Périphériques.
V I I I . 2 U t i l i s e r u n c o m p i l a t e u r n o n M i c r o s o f t
VIII.2.1 Linkage de l’application avec la DLL NSIMISC
Le fichier NSIMISC.LIB permet à l’outil de développement de lier l’application avec le
fichier NSIMISC.DLL. Ce fichier est spécifique au compilateur Microsoft qui a servi à
réaliser le fichier DLL. Il n’est pas compatible avec d’autres environnements de
développement. Voici différentes solutions à ce problème :
1. Utiliser le fichier DEF ou DLL à la place du fichier LIB dans le projet. Ceci est possible
avec les outils C++ Borland ou Labview.
2. Régénérer le fichier LIB à partir du fichier DLL ou du fichier DEF grâce à un utilitaire
livré avec l’outil de développement utilisé.
Exemple : Les outils Borland C++ sont livrés avec un programme IMPLIB.EXE qui
permet de générer un fichier LIB au format Borland à partir du fichier NSIMISC.DEF.
3. Obtenir les points d’entrée des fonctions de la DLL par la fonction GetProcAddress.
Celle-ci retourne un pointeur sur chaque fonction de la DLL à partir de son nom. Dans ce
cas, le fichier MISCPRO.H doit être modifié.
VIII.2.2 Alignement des structures de données
Les directives de compilation d’alignement des structures de données et de convention
d’appel des fonctions sont spécifiques aux compilateurs Microsoft. Il faut les modifier en
fonction du compilateur utilisé.
Alignement des structures sur 2 octets dans le fichier MISCDEF.H. Si cet alignement
n’est pas respecté, l’interface est inutilisable. Le choix de cet alignement peut être spécifié
par une option générale du compilateur ou par une directive de compilation dans le
code (recommandé) :
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 28 - DUT-MUX-0219 /V1.2 août 2013
Microsoft : #pragma pack(push,2)
// Définition des structures
#pragma pack(pop)
Borland : #pragma option –a2
// Définition des structures
#pragma option –a-
Note : Afin d’aligner les types énumérés (enum) sur des int il est aussi nécessaire sous
Borland d’ajouter la directive de compilation suivante :
#pragma option –b
Déclaration des fonctions de l’interface comme étant importées d’une DLL avec la
convention d’appel Microsoft standard (stdcall). Cette déclaration est faite par le symbole
_MISCAPI défini dans le fichier MISCPRO.H :
Microsoft #define _MISCAPI __declspec(dllimport) __stdcall
Borland : #define _MISCAPI _import _stdcall
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 29 -
IX. Installation de l'interface logicielle
L’installation de l’interface logicielle permet au système de configurer la ou les cartes à
utiliser et de recopier les fichiers du pilote et de la DLL sur le disque dur du PC. L’installation
doit être effectuée dans les deux cas suivants :
1. Première installation de l’interface sur un PC. Si la carte est déjà utilisée par une
autre application ou une version précédente de l’interface logicielle, celle-ci doit être
désinstallée avant de poursuivre.
2. Installation d’une nouvelle carte NSI. L’interface logicielle est capable de gérer
plusieurs cartes de types différents dans un même PC.
Cette annexe permet d’effectuer les installations des cartes suivantes :
- MUXy box
pour les systèmes suivants :
- Windows 98, Me,
- Windows 2000, XP.
Les chemins des répertoires indiqués dans la procédure d’installation de chaque carte pour
chaque système sont relatifs au répertoire \Pilotes PC – PC drivers du CD-ROM.
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 30 - DUT-MUX-0219 /V1.2 août 2013
I X . 1 I n s t a l l e r u n p é r i p h é r i q u e U S B
Pour installer l’interface logicielle pour la première fois avec un périphérique USB, il faut
suivre la procédure décrite dans ce paragraphe. L’installation dépend du système
d’exploitation utilisé. Se reporter au paragraphe correspondant.
● Fermer toutes les applications en cours.
● Brancher le câble USB entre le PC et le périphérique.
IX.1.1 Sous Windows 98/Me
Windows indique qu'il vient de détecter un nouveau périphérique USB.
L'assistant d'installation de nouveau périphérique démarre.
Insérer le CD-ROM « CD Livraison NSI » dans le lecteur du PC.
Cliquer sur le bouton Suivant.
Sélectionner l'option "Rechercher le meilleur pilote…".
La fenêtre suivante apparaît :
Cocher uniquement la ligne "Définir un emplacement" et cliquer sur le bouton Parcourir
Sélectionner le répertoire MISCPC2000\Win9x puis cliquer sur Suivant.
Windows cherche et indique qu'il a trouvé le pilote USB.
Cliquer sur Suivant.
Windows copie les fichiers sur le disque dur puis indique qu'il a terminé l'installation.
Cliquer sur Terminer.
Windows peut demander de redémarrer le PC, accepter.
L'interface logicielle est prête à être utilisée.
Vérifier que la carte fonctionne en démarrant le programme MISCTEST.EXE qui est dans le
répertoire MISCPC2000\Test du CD-ROM. En cas de problème, consulter le paragraphe
«Dépannage de l’installation».
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 31 -
IX.1.2 Sous Windows 2000
Windows indique qu'il vient de détecter un nouveau périphérique USB.
L'assistant d'installation de nouveau périphérique démarre.
Cliquer sur le bouton "Suivant".
Sélectionner l'option "Rechercher un pilote approprié pour mon périphérique".
Cocher uniquement la ligne "Emplacement spécifique" puis cliquer sur Suivant.
Sélectionner le bouton Parcourir et sélectionner le répertoire MISCPC2000\Win2k.
Cliquer sur Ok.
Windows 2000 recherche le pilote et indique qu'il a trouvé un pilote pour le périphérique.
Cliquer sur Suivant.
Windows 2000 recopie les fichiers du pilote sur le disque dur.
Lorsque la copie est finie, cliquer sur Terminer.
L'interface logicielle est prête à être utilisée.
Vérifier que la carte fonctionne en démarrant le programme MISCTEST.EXE qui est dans le
répertoire MISCPC2000\Test du CD-ROM. En cas de problème, consulter le paragraphe
«Dépannage de l’installation».
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 32 - DUT-MUX-0219 /V1.2 août 2013
IX.1.3 Sous Windows XP
Windows indique qu'il vient de détecter un nouveau périphérique USB.
L'assistant d'installation de nouveau périphérique démarre.
La fenêtre suivante apparaît :
Sélectionner l'option "Installer à partir d'une liste ou d'un emplacement spécifié".
Cliquer sur Suivant.
Sélectionner l'option "Rechercher le meilleur pilote dans ces emplacements".
Insérer le CD-ROM « CD Livraison NSI » dans le lecteur du PC et cliquer sur Parcourir
Sélectionner le répertoire MISCPC2000\Win2k du CD-ROM d'installation.
Cliquer sur Suivant.
Windows cherche et indique qu'il a trouvé le pilote USB pour le périphérique.
Cliquer sur Suivant.
Windows copie les fichiers sur le disque dur puis indique qu'il a terminé l'installation.
Cliquer sur Terminer.
L'interface logicielle est prête à être utilisée.
Vérifier que la carte fonctionne en démarrant le programme MISCTEST.EXE qui est dans le
répertoire MISCPC2000\Test du CD-ROM. En cas de problème, consulter le paragraphe
«Dépannage de l’installation».
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 33 -
I X . 2 D é p a n n a g e d e l ’ i n s t a l l a t i o n
Win9x, Me, 2k, XP: Windows ne détecte pas la carte au démarrage
Vérifier dans le gestionnaire de périphériques que Windows ne détecte pas de conflit de
ressources. Dans ce cas, résoudre les conflits et éventuellement désinstaller des
périphériques non utilisés. Redémarrer le PC.
Ou
Lancer l'installation de nouveau périphérique à partir du Panneau de Configuration.
Ou
Vérifier que les pilotes sont dans les répertoires appropriés. Dans le cas contraire,
recommencer l’installation de l’interface:
Windows 98, Me :
MUXy box NSIU2KBO.SYS dans Windows\System32\Drivers
Windows 2000 :
MUXy box NSIU2KBO.SYS dans WinNT \System32\Drivers
Windows XP :
MUXy box NSIU2KBO.SYS dans Windows\System32\Drivers
Win9x, Me, 2k, XP: La carte est signalée en erreur dans le gestionnaire de périphériques
Cliquer sur l'icône de la carte dans le Gestionnaire de Périphériques puis cliquer sur
Supprimer. Eteindre complètement le PC puis redémarrer. La détection d'un nouveau
périphérique est signalée. Fournir de nouveau les pilotes si Windows le demande.
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 34 - DUT-MUX-0219 /V1.2 août 2013
X. Désinstallation de l’interface logicielle
X . 1 W i n d o w s 9 5 / 9 8 / M e
Fermer toutes les applications en cours…
Double cliquer sur les icônes suivantes :
1. Poste de Travail
2. Panneau de Configuration
3. Système
Cliquer sur l'onglet Gestionnaire de Périphériques
Double cliquer sur NSI.
Sélectionner la ligne de la carte NSI.
Cliquer sur le bouton Supprimer.
Répéter l’opération pour toutes les cartes installées.
Fermer le Gestionnaire de Périphériques
Ouvrir l’Explorateur Windows
Supprimer les fichiers suivants :
dans le répertoire \Windows\System NSIMISC.DLL
dans le répertoire \Windows\System32\Drivers
NSIU2KBO.SYS (MUXy box)
dans le répertoire \Windows\Inf\Other (Attention : ce répertoire peut être caché)
NSIU2KBO.SYS (MUXy box)
Redémarrer le système.
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 35 -
X . 2 W i n d o w s 2 0 0 0
Fermer toutes les applications en cours…
Double cliquer sur les icônes suivantes :
1. Poste de Travail
2. Panneau de Configuration
3. Système
Cliquer sur l'onglet Matériel puis sur le bouton Gestionnaire de Périphériques.
Double cliquer sur NSI.
Sélectionner la ligne de la carte NSI
Dans le menu Action, cliquer sur Désinstaller.
Confirmer la suppression de ce périphérique.
Répéter l’opération pour toutes les cartes installées.
Fermer le Gestionnaire de Périphériques
Ouvrir l’Explorateur Windows
Supprimer les fichiers suivants :
dans le répertoire \WinNT\System32
NSIMISC.DLL.
dans le répertoire \WinNT\System32\Drivers
NSIU2KBO.SYS (MUXy box)
X . 3 W i n d o w s X P
Fermer toutes les applications en cours…
Ouvrir le menu Démarrer et cliquer sur les icônes suivantes :
1. Panneau de Configuration
2. Système
Cliquer sur l'onglet Matériel puis sur le bouton Gestionnaire de Périphériques.
Double cliquer sur NSI.
Sélectionner la ligne de la carte NSI
Dans le menu Action, cliquer sur Désinstaller.
Confirmer la suppression de ce périphérique.
Répéter l’opération pour toutes les cartes installées.
Fermer le Gestionnaire de Périphériques
Ouvrir l’Explorateur Windows et supprimer les fichiers suivants :
dans le répertoire \Windows\System32
NSIMISC.DLL.
dans le répertoire \Windows\System32\Drivers
NSIU2KBO.SYS (MUXy)
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 36 - DUT-MUX-0219 /V1.2 août 2013
XI. ANNEXE : Prototypes des Fonctions
short Nsi_ConfigEvent( HANDLE hDrv,
HANDLE hEvent,
unsigned long ident );
short Nsi_EnumCards( unsigned long* cardcnt,
t_CardData* carddata,
unsigned long carddatasz );
short Nsi_ExitDrv( HANDLE hdrv );
short Nsi_GetAPIinfo( HANDLE hdrv,
short* DLLversion,
short* DRVversion,
unsigned long* reserved );
short Nsi_GetDeviceInfo( HANDLE hdrv,
t_MISCdeviceInfo* deviceInfo );
short Nsi_GetDeviceMode( HANDLE hdrv,
t_MISCdeviceMode* pMode );
short Nsi_InitDrv( short cno,
HANDLE* hdrv );
short Nsi_ReadIo( HANDLE hdrv,
unsigned long dwInputValues,
unsigned long reserved );
short Nsi_ReadIoEx( HANDLE hdrv,
t_MISCinputInfo* pInputInfo,
unsigned long dwInputInfoLen,
unsigned long reserved );
short Nsi_SetDeviceMode( HANDLE hdrv,
t_MISCdeviceMode mode,
unsigned long dwParam );
short Nsi_WriteIo( HANDLE hdrv,
unsigned long dwOutputValues,
unsigned long reserved );
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 37 -
XII. Annexe : Fonctions de l'API Win32
L'interface Win32 est une API (Application Programming Interface) développée par
Microsoft pour ses systèmes d'exploitation 32 bits: Windows NT et Windows 95 / 98. L'API
Win32 permet de réaliser des applications capables de fonctionner sous tous les systèmes
implémentant l'interface Win32. L'API Win32 est dite "Multi Thread".
Q u ' e s t c e q u ' u n " T h r e a d " ?
En terme de code, un "Thread" est simplement une séquence de code qui est exécutée par le
système d'exploitation dans le contexte d'un processus (généralement une application). Un
processus débute son exécution par son Thread principal qui, dans un programme C
traditionnel, est la fonction main( ). Une fois démarré, le programme peut créer de nouveaux
"Threads" en effectuant un appel système spécifiant l'adresse de la fonction initiale du
nouveau "Thread". Le système d'exploitation fait basculer le contrôle du processeur entre les
Threads de manière préemptive pour donner l'impression que les Threads s'exécutent en
parallèle et de manière asynchrone.
L e s f o n c t i o n s W i n 3 2 à c o n n a î t r e
hEvent = CreateEvent( &sa, fManual, fInitial, pszName )
Création d'un événement. Un événement peut avoir deux états : "signalé" ou "non signalé".
Les paramètres sa et pszName ne sont significatifs que lorsque les événements sont
partagés entre des processus. Dans un processus unique, ces paramètres sont définis à
NULL. Le paramètre fInitial indique si l'événement sera "signalé" (fInitial =TRUE) ou
"non signalé" (fInitial = FALSE) à sa création. Le paramètre fManual indique si
l'événement est repassé automatiquement (fManual = FALSE) à l'état "non signalé" par la
fonction WaitForSingleObject ou s'il est géré initialisé par une application (fManual
=TRUE). hEvent est l'identificateur de l'événement crée.
WaitForSingleObject( hEvent, dwTimeOut )
Mise en attente du Thread qui appelle cette fonction de l'occurrence d'un événement . Le
paramètre hEvent indique le Handle de l'événement attendu. Le paramètre dwTimeOut
précise le temps d'attente maximal. Si l'événement est "signalé", la fonction retourne
aussitôt sinon elle suspend le Thread jusqu'à ce que l'événement devienne "signalé".
dwTimeOut peut être égal à une valeur en millisecondes de façon à ce que la fonction
retourne à la fin de ce délai dans le cas où l'événement reste "non signalé". Quand
dwTimeOut est égal à INFINITE, le Thread reprend son cours uniquement lorsque
l'événement est signalé.
hThread = CreateThread( lpsa, cbStack, lpStartAddr, lpvThreadParm,
fdwCreate, lpIDThread )
Cette fonction crée un nouveau Thread. Le paramètre lpsa est un pointeur sur une structure
SECURITY_ATTRIBUTES. La valeur NULL permet d'utiliser les attribut par défaut. Le
paramètre cbStack définit la quantité d'espace d'adressage que le thread est autorisé à
employer pour sa propre pile. La valeur 0 crée une pile de 1Mo par défaut. Le paramètre
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 38 - DUT-MUX-0219 /V1.2 août 2013
lpStartAddr indique l'adresse de la fonction que le nouveau Thread doit exécuter. Le
paramètre lpvThreadParm est passé à la fonction lorsque le thread commence son
exécution. Le paramètre fdwCreate spécifie des options additionnelles contrôlant la
création du thread. Si cette valeur est 0, le thread commence son exécution immédiatement.
HThread est l'identificateur du thread crée. Le paramètre lpIDThread est une adresse
valide où sera enregistré l'ID que le système affecte au nouveau thread.
TerminateThread( hThread, dwExitcode )
Cette fonction termine le Thread identifié par le paramètre hThread et place le code de
sortie à la valeur dwExitCode. Cette fonction permet aussi de terminer un Thread s'il ne
répond plus aux commandes. Attention, cette fonction est dangereuse pour la stabilité
du système d'exploitation et ne doit être utilisée que dans les cas les plus extrême. Il
est nécessaire de bien contrôler que le Thread qui doit être terminé ne fait plus aucun appel
au pilote du périphérique.
CloseHandle( handle )
Cette fonction permet la fermeture d'un objet (Ex: un événement). Le paramètre handle est
l'identificateur de l'objet à fermer.
Remarque : Le HANDLE hdrv retourné par la fonction Nsi_InitDrv ne doit pas être fermé
par l'application. Il faut appeler la fonction Nsi_ExitDrv.
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 39 -
XIII. Annexe : Programme d'exemple
Ce programme est donné à titre d'exemple. Il a été écrit en langage C et compilé avec l'outil
Developper Studio de Microsoft. Les conséquences de toute erreur ou mauvais
fonctionnement de ce programme ne sauraient mettre en cause la responsabilité de la société
NSI. La totalité de ce programme d'exemple est fourni sur le CD-ROM de livraison de
l'interface logicielle dans le répertoire MISCPC2000\Samples.
MISCTEST.C
Ce programme montre comment accéder à un périphérique pour récupérer les informations
sur ce dernier ou encore effectuer d'autres fonctionnalités propres au périphérique.
Les fonctions retournant des chaînes de caractères traduisant les codes utilisés par l'interface
sont fournis dans le s fichiers
ECHOMISC.C
ECHOMISC.H
Pour faciliter la compréhension du code, tous les cas d'erreurs possibles ne sont pas traités.
L'appel de chaque fonction est suivi de l'affichage des paramètres et du code retourné.
X I I I . 1 D é c l a r a t i o n s
Dans cette partie du programme, on déclare les prototypes des fonctions de l'interface
logicielle puis on crée les ressources systèmes nécessaires au fonctionnement de l'interface.
#include <windows.h>
#include <conio.h>
#include <stdio.h>
// Inclusion des fichiers de déclaration des structures
// et des fonctions de l'interface.
//
#include "miscdef.h"
#include "miscpro.h"
// Prototypes des fonctions du programme d'exemple
//
#include "miscdemo.h"
// Fonctions d'affichage
//
#include "echomisc.c"
#include "echomisc.h"
// Variables globales
// ------------------
//
// Handle du canal ouvert
HANDLE hDevice = INVALID_HANDLE_VALUE;
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 40 - DUT-MUX-0219 /V1.2 août 2013
// MAIN( )
//-----------
// Fonction principale du programme d'exemple.
//
void main( void )
{
// Variables internes diverses
int i;
short cr;
BOOL done = FALSE;
short canal;
char key[2];
short DLL,DRV;
t_MISCdeviceMode mode;
t_MISCdeviceInfo tDeviceInfo;
unsigned long cardCount;
unsigned long values; //Pour la gestion des Entrees/Sorties
//Pour la gestion avancee des Entrees/Sorties
t_MISCinputInfo InputsInfo[NB_MAX_INPUTS];
// Variables de contrôle du Thread
DWORD threadId;
HANDLE hThread;
// Tableau pour recevoir la configuration des canaux
t_CardData cardData[10];
X I I I . 2 I n i t i a l i s a t i o n s
Cette partie du programme choisit un périphérique disponible et l'initialiser.
// Nsi_EnumCards
// ------------
// Lorsque plusieurs peripheriques sont disponibles dans un même
// PC, il est utile de connaître les particularités de chaque
// peripherique pour choisir lequel utiliser. Cette fonction retourne
// la liste des peripheriques utilisables dans un tableau. L'indice
// du tableau correspond au numéro du peripherique.
//
cr = Nsi_EnumCards( &cardCount, cardData, sizeof( cardData ));
printf( "Nsi_EnumCards : %s\n", GetCodeString( cr ) );
if( cr != _OK )
{
printf(" Failed to get device list.\n" );
getch( );
return;
}
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 41 -
// Affiche la liste des cartes et trouve la premiere disponible.
// L'index de ce peripherique est placé dans la variable "device".
// Sinon –1 ce qui indique aucun peripherique libre.
//
printf( " Detected devices : %d\n", cardCount );
device = -1;
for( i=0; i<(int)cardCount; i++ )
{
printf(" %d – IO:% 3xh IRQ:%d %s (%d)\n",
i,
cardData[i].IOBaseAddress,
cardData[i].IRQLineNumber,
cardData[i].cardNameString,
cardData[i].cardAlreadyOpen );
// Trouve le premier peripherique disponible cad non utilisé au même
// moment par une autre application.
//
if( device == -1 && cardData[i].cardAlreadyOpen == FALSE )
{
device = i;
}
}
// Vérifie qu'au moins un peripherique est disponible
if( device < 0 )
{
printf(" MISCTEST needs at least one available device…\n" );
getch( );
return;
}
// Nsi_InitDrv
// ----------
// Selectionne et initialise un peripherique. La valeur du
// premier paramètre indique l'indice du peripherique que l'on
// veut utiliser. Celui-ci correspond à l'indice dans le tableau
// retourné par Nsi_EnumCards. Un "Handle" est retourné dans la
// variable "hDevice". Cette valeur identifie ce peripherique. Elle
// est passée à toutes les autres fonctions de l'interface logicielle.
//
cr = Nsi_InitDrv( (short)canal, &hDevice );
printf( "Nsi_InitDrv( %d,%08Xh ) : %s\n",
device,
hDevice,
GetCodeString( cr ));
if( cr != _OK )
{
printf(" Unable to select device #%d.\n", canal );
getch( );
return;
}
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 42 - DUT-MUX-0219 /V1.2 août 2013
// Nsi_GetAPIinfo
// ---------------
// Retourne le type de la carte du canal initialisé et les version des
// fichiers de l'interface logicielle.
//
cr = Nsi_GetAPIinfo( hDevice, &DLL, &DRV );
printf("Nsi_GetAPIinfo : %s (%s,Dll:%.2f,Drv:%.2f)\n",
GetCodeString(cr),
DLL / 100.0,
DRV / 100.0 );
if( cr != _OK ) done = TRUE;
// GetDeviceInfo
// ---------------
// Retourne les informations sur la carte du canal initialisé et la
// version du logiciel embarqué.
//
cr = Nsi_GetDeviceInfo( hdrv, &tDeviceInfo );
printf( "Nsi_GetDeviceInfo:\t%s (Fw:%.2f, Hw:%.2f )\n",
GetCodeString(cr),
tDeviceInfo.USB.firmwareVersion/100.0,
tDeviceInfo.USB.hardwareVersion/100.0);
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 43 -
X I I I . 3 G e s t i o n d e s E n t r é e s / S o r t i e s
Cette partie du programme permet de gérer les Entrées/Sorties d'un périphérique.
// Nsi_ReadIo
// ----------
// Lecture de la valeur des entrées logiques d'un périphérique.
// La signification de la valeur retournée par la fonction est
// décrite dans le manuel utilisateur de la carte concernée
//
cr = Nsi_ReadIo( hdrv, &values, 0 );
printf("Nsi_ReadIo:\t\t%s : Inputs=%08d\n",GetCodeString(cr), values);
// Nsi_ReadIoEx
// ------------
// Lecture de la valeur des entrées logiques d'un périphérique et de
// la date de leur dernier changement d'état.
//
cr = Nsi_ReadIoEx( hdrv, InputsInfo, sizeof(InputsInfo), 0 );
printf("Nsi_ReadIoEx:\t\t%s : Input1=%d, LastChange=%08d\n
Input2=%d, LastChange=%08d\n ",
GetCodeString(cr),
tInputInfo[0].InputValue,
tInputInfo[0].InputChange,
tInputInfo[1].InputValue,
tInputInfo[1].InputChange);
// Nsi_WriteIo
// ----------
// Ecriture de la valeur des sorties logiques d'un périphérique
// La signification de la valeur passée a la fonction est
// décrite dans le manuel utilisateur de la carte concernée
//
cr = Nsi_WriteIo( hdrv, values, 0 );
printf("Nsi_WriteIo:\t\t%s : Outputs=%08d\n",GetCodeString(cr), values);
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 44 - DUT-MUX-0219 /V1.2 août 2013
X I I I . 4 G e s t i o n d e s m o d e s d e f o n c t i o n n e m e n t
Cette partie du programme permet de gérer les différents modes d'un périphérique. Elle est
valable uniquement pour les périphériques de type MUXy box. Les fonctions de gestion des
modes retournerons _BOARD_ERR si elles sont appelés pour d'autres périphériques.
// Nsi_SetDeviceMode
// -----------------
// Demande au périphérique de se placer dans un mode particulier
//
cr = Nsi_SetDeviceMode( hdrv, _MODE_LOW_POWER, 0 );
printf("Nsi_SetDeviceMode:\t%s : Mode=LOW_POWER\n",GetCodeString(cr));
// Nsi_GetDeviceMode
// -----------------
// Récupération du mode dans lequel est le périphérique
//
cr = Nsi_GetDeviceMode( hdrv, &mode );
printf(" Nsi_GetDeviceMode:\t%s : Mode=%s\n",
GetCodeString(cr),
GetModeString(mode) );
Interface logicielle PC pour cartes NSI - Guide utilisateur
août 2013 DUT-MUX-0219 /V1.2 - 45 -
X I I I . 5 A r r ê t d u p r o g r a m m e
Cette partie du programme est exécutée lorsque l'utilisateur presse sur la touche ESC. On doit
alors refermer le périphérique utilisé puis libérer les ressources système utilisées. Ceci
comprend le Thread de réception qui est arrêté (voir le code de ce Thread ci dessous).
// Nsi_ExitDrv
// ----------
// Ferme le handle du canal et libère le canal pour que d'autres
// applications puissent l'utiliser
//
cr = Nsi_ExitDrv( hDevice );
printf( "Nsi_ExitDrv : %s\n", GetCodeString(cr));
if( hDevice ) CloseHandle( hDevice );
puts(" Done : Press Key…");
getch( );
// Fin du programme principal
Interface logicielle PC pour cartes NSI - Guide utilisateur
- 46 - DUT-MUX-0219 /V1.2 août 2013
Historique
Version Auteur Date Modifications
1.0 Cédric Rousset 10-03-04 Version initiale
1.1 Cédric Rousset 14-12-05 Ajout de la fonction Nsi_ReadIoEx.
1.2 E.Pennamen 04-02-13 Ajout de la fonction Nsi_ReadAna
Top Related