IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[Win - visual] Commander une carte IEEE 488


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut [Win - visual] Commander une carte IEEE 488
    Bonjour,

    Pour mon stage, je dois développer un programme qui me permet de commander des appareils de mesures et de recevoir les données avec une carte IEEE 488.

    J'ai un exemple qui utilise les API Windows mais j'avoue que je ne m'y connais pas trop donc j'ai déjà fait quelques tutoriels.

    J'ai aussi regardé la documentation fornie avec la carte IEEE 488 et apparemment la première fonction à appeller est :

    E488 FAR PASCAL IeInit (UINT ioadrs, UINT16 pad, UINT16 intr, UINT16 dma);

    avec ioadrs : adresse I/O
    pad : adresse du bus
    intr : ligne IRQ
    dma : DMA

    mais je ne sais pas où je peux trouver ces informations ni comment intégrer ça dans un programme.

    Merci

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut ID
    Citation Envoyé par LaDy_JeDi Voir le message
    Bonjour,
    ...
    E488 FAR PASCAL IeInit (UINT ioadrs, UINT16 pad, UINT16 intr, UINT16 dma);

    avec ioadrs : adresse I/O
    pad : adresse du bus
    intr : ligne IRQ
    dma : DMA

    mais je ne sais pas où je peux trouver ces informations ni comment intégrer ça dans un programme.

    Merci
    Il s'agit de valeur entières que tu peux considérer comme des constantes pour une machine donnée puisqu'elles dépendent de l'emplacement de la carte IEEE 488 sur les bus de la machine.

    Normalement le constructeur de la carte livre un manuel d'installation dans lequel il doit expliquer comment récupérer ces valeurs.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    J'ai demandé au revendeur les adresses de la cartes et celles des appareils reliés dessus, il semble que l'adresse de la carte est 0 et celle de l'appareil est 22, 16 et que je peux la trouver dans le menu de l'appareil que je souhaite configurer mais je ne vois pas de quel menu il parle.

    J'ai regardé la documentation fournie mais il n'y a rien qui m'indique où trouver ces informations...

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut RTFM?
    La doc trouvée à http://www.ines.de/N00097.html#id2250055 dit:

    - C/C++

    #include <ieee488.h>
    E488 FAR PASCAL IeInit (UINT16 ioadrs, UINT16 pad, UINT16 intr, UINT16 dma);

    Parameter Description

    ioadrs
    → For compatiblity only: set to 0
    pad
    → Primary bus address of the interface. Values: 0-30
    intr
    → For compatiblity only: set to 0
    dma
    → For compatiblity only: set to 0
    return
    ↑ 0 on success, ines IEEE488 errorcode on failure.
    Pour peu qu'elle corresponde à la tienne, cela signifie que tu devrais pouvoir utiliser 22 ou 16 comme valeur du paramètre pad.
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    Merci pour la réponse

    Cette documentation correspond bien à la mienne, mais le constructeur m'a envoyé un exemple de code en C++ utilisant l'Api Windows mais je n'arrive pas à le compiler. Il semblerait qui ce soit parce qu'il a été fait sous Visaul Studio 2005 et que je travaille sous le 2002.

    De plus, d'après le programme, voilà la configuration de sa fonction IeInit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int	ieeesample(hWnd)
    HWND	hWnd;               		/* Main window handle.      */
    {
            E488 ret;
            UINT16 rsp,nbytes;
            UINT count=1;
     
    	clearregion(hWnd);
    	ret = IeInit(IE_IOADRS,IE_BUSADRS,IE_IRQ,IE_DMA);
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #define   IE_IOADRS           0x2c8                  /* i/o address of board  */
    #define	IE_BUSADRS	0		/* bus address of board */
    #define	IE_DMA		1		/* used DMA channel */
    #define	IE_IRQ		5		/* used interrupt line */
    J'ai également téléchargé une version gratuit de NI VISA et je détecte bien la carte à GPIB::0 et les trois instruments branchés dessus GPIB::7, GPIB::14 et GPIB::22. Mes adresses pad seraient donc 7, 14 et 22, c'est ça ?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut
    C'est ce dit la documentation.
    De même, elle semble dire que les autres paramètres (autres que pad) ne sont là que pour la compatibilité avec les anciennes versions de la DLL: 0 ou autre chose ne devrait pas modifier le comportement.

    Après, il faut faire des tests pour s'assurer que ca fonctionne bien comme la documentation nous le fait comprendre.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    J'essaie vainement de faire fonctionner les fonctions de la documentation mais j'ai toujours des erreurs différentes qui arrivent.
    J'ai alors décidé de compiler une fenêtre simple avec un code sans fonctions spéciale et tout marche bien. Par la suite, je rajoute juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define WINDOWS
    #include "ieee488.h"
    Qui est un des fichiers .h fourni par le constructeur (tous les fichiers étant bien copier/coller dans visual studio) et j'ai des erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\types488.h(62): error C2371: 'INT32'*: redéfinition*; types de base différents
    c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\types488.h(63): error C2371: 'UINT32'*: redéfinition*; types de base différents
    c:\Program Files\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include\BaseTsd.h(36)*: voir la déclaration de 'UINT32'

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut
    Le compilateur rale parce que lorsqu'il traite ieee488.h, les types INT32 et UINT32 ont déjà été définit (à priori dans les 'headers' précédents).
    Si ce n'est pas le cas, il faut peut être définir d'autres symboles que WINDOWS pour que çà fonctionne, mais la doc n'est pas très bavarde sur ce point.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    J'ai envoyé un mail au service d'aide du constructeur mais ils ne m'ont toujours pas répondu pour l'instant.

    Est-ce que c'est nécessaire de passer par les headers et les bibliothèques fournies par le constructeur ou il y a un moyen de les éviter ?
    Parce que j'avoue ne pas m'y connaitre assez pour voir où est le problème...

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut
    Je sèche
    En attendant vérifier que l'entête de votre example inclue bien "windows.h", tel que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include "windows.h" 
    #define WINDOWS      
    #include "ieee488.h"
    Votre message précédent n'étant pas clair sur ce sujet.
    Cordialement,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    Merci pour toutes vos réponses

    Pour les include, j'ai bien mis tout ce qu'il faut normalement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #include <windows.h>
    #include <stdio.h>
    #define WINDOWS
    #include "ieee488.h"
    C'est juste lorsque je rajoute le dernier header ieee488.h que ça ne marche plus...

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut
    Essayez de mettre en commentaire <stdio.h> (et les appels de routines déclarées par ce header).
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    Non, ça ne marche pas non plus...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\windows.h(28): warning C4068: pragma inconnu
    c:\t3\main.cpp(224): error C2065: 'sprintf'*: identificateur non déclaré
    c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\types488.h(63): error C2371: 'UINT32'*: redéfinition*; types de base différents
            c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\basetsd.h(46)*: voir la déclaration de 'UINT32'
    c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\types488.h(62): error C2371: 'INT32'*: redéfinition*; types de base différents
            c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\basetsd.h(38)*: voir la déclaration de 'INT32'

  14. #14
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\types488.h(63): error C2371: 'UINT32'*: redéfinition*; types de base différents
            c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\basetsd.h(46)*: voir la déclaration de 'UINT32'
    c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\types488.h(62): error C2371: 'INT32'*: redéfinition*; types de base différents
            c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\basetsd.h(38)*: voir la déclaration de 'INT32'
    Doit on comprendre que UINT32 et INT32 ont déjà été définis par:
    c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\basetsd.h
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Débutant] Commander une carte Arduino via GUI MATLAB
    Par imuley50 dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 04/03/2015, 12h27
  2. Commander une carte relais à partir de VB
    Par boboch dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 27/01/2012, 08h51
  3. Réponses: 1
    Dernier message: 06/11/2008, 19h36
  4. Commander une carte d'aquistion 'port isa'
    Par samia_6 dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/09/2006, 16h36
  5. commander une carte fax via access
    Par dpie dans le forum Access
    Réponses: 5
    Dernier message: 09/09/2005, 17h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo