Interface logicielle PC pour cartes NSI

Transcription

Interface logicielle PC pour cartes NSI
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
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
août 2013
DUT-MUX-0219 /V1.2
-1-
Interface logicielle PC pour cartes NSI - Guide utilisateur
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
-2-
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
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.
août 2013
DUT-MUX-0219 /V1.2
-3-
Interface logicielle PC pour cartes NSI - Guide utilisateur
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.
-4-
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
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.
IV.1 Architecture
Application
Win32
Applications Win32
NSICAN, NSIDIAG, …
Système
NSIMISC.DLL
Pilotes de périphérique
NSI
ISA-PCMCIA-PCI-USB
Pilote
NSIU2KBO ou NSIU2KUD
Matériel
Applications Win32
Plate-forme : Windows 98, Me, 2000, XP
Cartes NSI
MUXy box
MUXy box 2
août 2013
DUT-MUX-0219 /V1.2
-5-
Interface logicielle PC pour cartes NSI - Guide utilisateur
IV.2 Systèmes supporté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)
IV.3 Cartes concernées
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
-6-
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
V. Mise en œuvre de l'interface logicielle
V.1 Présentation
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 Composition de l'interface logicielle
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.
août 2013
DUT-MUX-0219 /V1.2
-7-
Interface logicielle PC pour cartes NSI - Guide utilisateur
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.
-8-
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
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
août 2013
DUT-MUX-0219 /V1.2
-9-
Interface logicielle PC pour cartes NSI - Guide utilisateur
V.3 Liste des fonctions de l'interface logicielle
Nom
Nsi_EnumCards
Nsi_InitDrv
Nsi_GetDeviceInfo
Nsi_GetAPIinfo
Nsi_WriteIo
Nsi_ReadIo
Nsi_ReadIoEx
Nsi_ReadAna
Nsi_SetDeviceMode
Nsi_GetDeviceMode
Nsi_ExitDrv
- 10 -
Fonction
Configuration, initialisation
Enumération des périphériques NSI détectées et de leur propriétés
Ouverture d'un canal.
Informations sur le périphérique.
Retourne les versions des couches logicielles
Entrée / Sorties
Ecriture d’entrées/sorties
Lecture d’entrées/sorties
Lecture d’entrées/sorties avancée
Lecture d’entrées ANA (MUXybox2 uniquement)
Divers
Place le périphérique dans un mode particulier
Récupère le mode dans lequel se trouve le périphérique.
Sortie du driver
Arrêt du programme et restitution de l'environnement.
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
Arrêt de la
communication
Fonctions spécifiques
Initialisation et configuration
V.4 Séquences d'appel des requêtes
Nsi_EnumCards
Nsi_InitDrv
Application utilisateur
Nsi_ExitDrv
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.
août 2013
DUT-MUX-0219 /V1.2
- 11 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
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).
INIT
DRV OK
Etat
Requêtes
Nsi_EnumCards
Nsi_InitDrv
Nsi_GetAPIinfo
Nsi_GetDeviceInfo
X
X
X
X
X
X
Nsi_WriteIo
Nsi_ReadIo
Nsi_ReadIoEx
Nsi_ReadAna
X
X
X
X
Nsi_SetDeviceMode
Nsi_GetDeviceMode
X
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
REPOS
INIT_DRV_OK
- 12 -
Requêtes de transition
Nsi_ExitDrv
Nsi_InitDrv
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
V.5 Modes du périphérique (non disponible)
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 cidessous (figure 1.1)
SetDeviceMode (LOW_POWER)
/
Désactiver Automaintien Alimentation
Mode Low Power
automaintien OFF
Not (Conditions de réveil)
Mode Normal
automaintien ON
consommation normale
Réveillé
consommation
normale
En veille
basse
consommation
Conditions de réveil
SetDeviceMode (MODE_NORMAL)
/
Activer Automaintien Alimentation
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)
août 2013
DUT-MUX-0219 /V1.2
- 13 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
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 :
1
2
3
4
5
6
7
8
9
10
Evènement de réveil
Reconnexion de la liaison USB avec le PC hôte
Message de réveil sur le bus CAN0 "high speed"
Message de réveil sur le bus CAN0 "low speed"
Message de réveil sur le bus CAN1 "high speed"
Message de réveil sur le bus CAN1 "low speed"
Message de réveil sur le bus LIN
Entrée logique TOR 1 à l'état haut
Entrée logique TOR 2 à l'état haut
Alarme programmable (réserve)
Demande de réveil de la carte fille (réserve)
Type de réveil
Commandé (+5V USB)
Local (signal INH du driver TJA1041 canal 0)
Local (signal INH du driver TJA1054 canal 0)
Local (signal INH du driver TJA1041 canal 1)
Local (signal INH du driver TJA1041 canal 1)
Local (signal INH du driver TJA1020)
Local (détection de seuil)
Local (détection de seuil)
Autonome (signal d' IT de l'horloge temps réel)
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
Not (Conditions de réveil)
/
Démarrer Délai
(Sleep_delay)
Réveillé
consommation
normale
Conditions de réveil
Attente délai de
mise en veille
Fin du délai
et Not (Conditions de réveil)
/
Mise en veille des interfaces Hard
- 14 -
DUT-MUX-0219 /V1.2
En veille
basse
consommation
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
VI. Description des types
Notation : pour les définitions de types (typedef), le préfixe t_ est utilisé.
VI.1 t_MiscDeviceInfo
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.
août 2013
DUT-MUX-0219 /V1.2
- 15 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
Exemple : 102 s'interprète comme la version 1.02
boardType : Type de carte utilisée.
_MUXYBOX
_MUXYBOX2
: MUXy box standard
: MUXy box2 standard
VI.2 t_MiscDeviceMode
Enumération des différents mode du périphérique.
typedef enum
{
_UNKNOWN
= 0,
_NORMAL
= 1,
_LOW_POWER = 2,
} t_NsiDeviceMode;
VI.3 t_MiscInputInfo
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;
- 16 -
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
VII. Description des fonctions de l'interface
VII.1 Nsi_GetAPIinfo
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
short*
short*
unsigned long*
hdrv,
DLLversion,
DRVversion,
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 :
_SEQ_ERR :
_INVALID_OP :
_PARAM_ERR :
août 2013
Versions retournées correctement.
Séquence invalide.
La valeur de hdrv est invalide.
Paramètre invalide.
DUT-MUX-0219 /V1.2
- 17 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
VII.2 Nsi_ExitDrv
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 :
_SEQ_ERR :
_INVALID_OP :
_DRV_PARAM_ERR :
_USB_ERR :
_BOARD_TIMEOUT:
- 18 -
Canal libéré.
Séquence invalide.
La valeur de hdrv est invalide.
Problème d'accès au pilote. Vérifier l'installation de la carte.
Erreur de transmission USB.
Pas d'acquittement du périphérique USB.
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
VII.3 Nsi_GetDeviceInfo
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 :
_INVALID_OP :
_PARAM_ERR :
_DRV_PARAM_ERR :
_USB_ERR :
_BOARD_TIMEOUT:
août 2013
Résultat correct.
La valeur de hdrv est invalide.
Paramètre invalide.
Problème d'accès au pilote. Vérifier l'installation de la carte.
Erreur de transmission USB.
Erreur d'acquittement USB.
DUT-MUX-0219 /V1.2
- 19 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
VII.4 Nsi_GetDeviceMode (non disponible)
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 :
_SEQ_ERR :
_PARAM_ERR :
_BOARD_ERR
_INVALID_OP :
_DRV_PARAM_ERR :
_CHIP_ERR:
_USB_ERR :
_BOARD_TIMEOUT:
- 20 -
Configuration réussie.
Séquence invalide.
Paramètre invalide.
Type de carte ne supportant pas cette fonction.
La valeur de hdrv est invalide.
Problème d'accès au pilote. Vérifier l'installation de la carte.
Erreur hardware.
Erreur de transmission USB.
Erreur d'acquittement USB
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
VII.5 Nsi_InitDrv
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
HANDLE*
cno,
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.
août 2013
DUT-MUX-0219 /V1.2
- 21 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
VII.6 Nsi_ReadAna
Permet de récupérer l'état des entrées analogiques présente sur la carte.
short Nsi_ReadAna(
HANDLE
unsigned short
);
hdrv,
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 :
_SEQ_ERR :
_PARAM_ERR :
_BOARD_ERR
_INVALID_OP :
_DRV_PARAM_ERR :
_CHIP_ERR:
_USB_ERR :
_BOARD_TIMEOUT:
- 22 -
Configuration réussie.
Séquence invalide.
Paramètre invalide.
Type de carte ne supportant pas cette fonction.
La valeur de hdrv est invalide.
Problème d'accès au pilote. Vérifier l'installation de la carte.
Erreur hardware.
Erreur de transmission USB.
Erreur d'acquittement USB
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
VII.7 Nsi_ReadIo
Permet de récupérer l'état d'entrées logiques présentes sur la carte.
short Nsi_ReadIo(
HANDLE
unsigned long
unsigned long
hdrv,
dwInputValues,
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 :
_SEQ_ERR :
_PARAM_ERR :
_BOARD_ERR
_INVALID_OP :
_DRV_PARAM_ERR :
_CHIP_ERR:
_USB_ERR :
_BOARD_TIMEOUT:
août 2013
Configuration réussie.
Séquence invalide.
Paramètre invalide.
Type de carte ne supportant pas cette fonction.
La valeur de hdrv est invalide.
Problème d'accès au pilote. Vérifier l'installation de la carte.
Erreur hardware.
Erreur de transmission USB.
Erreur d'acquittement USB
DUT-MUX-0219 /V1.2
- 23 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
VII.8 Nsi_ReadIoEx
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
t_MISCinputInfo*
unsigned long
unsigned long
hdrv,
pInputInfo,
dwInputInfoLen,
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 :
_SEQ_ERR :
_PARAM_ERR :
_BOARD_ERR
_INVALID_OP :
_DRV_PARAM_ERR :
_CHIP_ERR:
_USB_ERR :
_BOARD_TIMEOUT:
- 24 -
Configuration réussie.
Séquence invalide.
Paramètre invalide.
Type de carte ne supportant pas cette fonction.
La valeur de hdrv est invalide.
Problème d'accès au pilote. Vérifier l'installation de la carte.
Erreur hardware.
Erreur de transmission USB.
Erreur d'acquittement USB
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
VII.9 Nsi_SetDeviceMode (non disponible)
Permet de placer le périphérique dans un mode particulier.
short Nsi_SetDeviceMode( HANDLE
t_MISCdeviceMode
unsigned long
hdrv,
mode,
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 :
_SEQ_ERR :
_PARAM_ERR :
_BOARD_ERR
_INVALID_OP :
_DRV_PARAM_ERR :
_CHIP_ERR:
_USB_ERR :
_BOARD_TIMEOUT:
août 2013
Configuration réussie.
Séquence invalide.
Paramètre invalide.
Type de carte ne supportant pas cette fonction.
La valeur de hdrv est invalide.
Problème d'accès au pilote. Vérifier l'installation de la carte.
Erreur hardware.
Erreur de transmission USB.
Erreur d'acquittement USB
DUT-MUX-0219 /V1.2
- 25 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
VII.10 Nsi_WriteIo
Permet de positionner l'état de sorties logiques présentes sur la carte.
short Nsi_WriteIo( HANDLE
unsigned long
unsigned long
hdrv,
dwOutputValues,
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 :
_SEQ_ERR :
_PARAM_ERR :
_BOARD_ERR
_INVALID_OP :
_DRV_PARAM_ERR :
_CHIP_ERR:
_USB_ERR :
_BOARD_TIMEOUT:
- 26 -
Configuration réussie.
Séquence invalide.
Paramètre invalide.
Type de carte ne supportant pas cette fonction.
La valeur de hdrv est invalide.
Problème d'accès au pilote. Vérifier l'installation de la carte.
Erreur hardware.
Erreur de transmission USB.
Erreur d'acquittement USB
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
VIII. Trucs et astuces
VIII.1 Dépanner une application
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.
VIII.2 Utiliser un compilateur non Microsoft
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é) :
août 2013
DUT-MUX-0219 /V1.2
- 27 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
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
- 28 -
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
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.
août 2013
DUT-MUX-0219 /V1.2
- 29 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
IX.1 Installer un périphérique USB
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».
- 30 -
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
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».
août 2013
DUT-MUX-0219 /V1.2
- 31 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
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».
- 32 -
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
IX.2 Dépannage de l’installation
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.
août 2013
DUT-MUX-0219 /V1.2
- 33 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
X. Désinstallation de l’interface logicielle
X.1 Windows 95/98/Me
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.
- 34 -
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
X.2 Windows 2000
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 Windows XP
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)
août 2013
DUT-MUX-0219 /V1.2
- 35 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
XI. ANNEXE : Prototypes des Fonctions
short Nsi_ConfigEvent(
HANDLE
HANDLE
unsigned long
hDrv,
hEvent,
ident
);
unsigned long*
t_CardData*
unsigned long
cardcnt,
carddata,
carddatasz
);
short Nsi_ExitDrv(
HANDLE
hdrv
);
short Nsi_GetAPIinfo(
HANDLE
short*
short*
unsigned long*
hdrv,
DLLversion,
DRVversion,
reserved
);
short Nsi_GetDeviceInfo(
HANDLE
hdrv,
t_MISCdeviceInfo* deviceInfo
);
HANDLE
hdrv,
t_MISCdeviceMode* pMode
);
short
HANDLE*
cno,
hdrv
);
short Nsi_ReadIo(
HANDLE
unsigned long
unsigned long
hdrv,
dwInputValues,
reserved
);
short Nsi_ReadIoEx(
HANDLE
t_MISCinputInfo*
unsigned long
unsigned long
hdrv,
pInputInfo,
dwInputInfoLen,
reserved
);
short Nsi_SetDeviceMode(
HANDLE
t_MISCdeviceMode
unsigned long
hdrv,
mode,
dwParam
HANDLE
unsigned long
unsigned long
hdrv,
dwOutputValues,
reserved
);
short Nsi_EnumCards(
short Nsi_GetDeviceMode(
short Nsi_InitDrv(
short Nsi_WriteIo(
- 36 -
DUT-MUX-0219 /V1.2
);
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
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".
Qu'est ce qu'un "Thread" ?
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.
Les fonctions Win32 à connaître
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(
fdwCreate, lpIDThread )
lpsa,
cbStack,
lpStartAddr,
lpvThreadParm,
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
août 2013
DUT-MUX-0219 /V1.2
- 37 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
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.
- 38 -
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
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é.
XIII.1 Déclarations
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;
août 2013
DUT-MUX-0219 /V1.2
- 39 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
// 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];
XIII.2 Initialisations
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;
}
- 40 -
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
// 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;
}
août 2013
DUT-MUX-0219 /V1.2
- 41 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
//
//
//
//
//
cr
Nsi_GetAPIinfo
--------------Retourne le type de la carte du canal initialisé et les version des
fichiers de l'interface logicielle.
= 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);
- 42 -
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
XIII.3 Gestion des Entrées/Sorties
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);
août 2013
DUT-MUX-0219 /V1.2
- 43 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
XIII.4 Gestion des modes de fonctionnement
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)
);
- 44 -
DUT-MUX-0219 /V1.2
août 2013
Interface logicielle PC pour cartes NSI - Guide utilisateur
XIII.5 Arrêt du programme
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
août 2013
DUT-MUX-0219 /V1.2
- 45 -
Interface logicielle PC pour cartes NSI - Guide utilisateur
Historique
Version
Auteur
1.0
Cédric Rousset
1.1
Cédric Rousset
1.2
E.Pennamen
- 46 -
Date
Modifications
10-03-04 Version initiale
14-12-05 Ajout de la fonction Nsi_ReadIoEx.
04-02-13 Ajout de la fonction Nsi_ReadAna
DUT-MUX-0219 /V1.2
août 2013