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 :

communication GPIB c++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Par défaut communication GPIB c++
    Bonjour,

    je ne sais pas où poser ma question mais comme je code en c++ avec Visual, je la pose ici ...

    est ce que vous auriez un code de communication simple avec un appareil GPIB. je viens de regarder un bon moment sur internet mais je ne trouve rien de simple. notamment je voudrais récupérer la valeur mesurée par un multimètre par exemple.

    je travaille avec decl-32.h

    merci d'avance pour votre aide.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    il s'agit du port parallèle. c'est un peu le même principe qu'avec le RS232, sauf que tu prends "LPT1".
    Ca se gère avec la même API (CreateFile, SetCommTimeouts, SetCommState , ...) : Communications Resources

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    C'est bizarre, il me semblait que sous Windows, ça ne marchait pas ainsi, et qu'on ne pouvait pas utiliser le port parallèle sans créer un driver pour ça (dû au fait que Windows considère le port parallèle comme un port de périphérique plutôt qu'un port de communication)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    C'est bizarre, il me semblait que sous Windows, ça ne marchait pas ainsi, et qu'on ne pouvait pas utiliser le port parallèle sans créer un driver pour ça (dû au fait que Windows considère le port parallèle comme un port de périphérique plutôt qu'un port de communication)...
    En toute franchise, je n'ai jamais essayé. Mais, dans le MSDN je n'ai rien vu de tel, sur internet, idem et j'ai trouvé ça, ça, ça et çà. Mais d'avis qu'y en a qui ont déjà fait la chose

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Par défaut
    merci pour vos réponses

    je crois que j'ai compris pourquoi mes modifications sur le code que j'ai envoyé ne fonctionnent pas. je vais me débrouiller.

    bon long we

    merci

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Par défaut
    par exemple j'ai trouvé un code de ce type qui marche mais je ne comprends comment le modifier pour par exemple récupérer la valeur mesurée, ou envoyer d'autres commandes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    #include "stdafx.h"
     
    #include <windows.h>
    #include <stdio.h>
    #include "Decl-32.h"
    #include <iostream.h>
     
    void gpib_error(int errnum,char *errmsg);
     
    	const int BUF_SIZE = 1024;
    	const int NUM_DEVICES = 31;
     
     
    int main(int argc, char* argv[])
    {
    	char buffer[BUF_SIZE];
    	int i, num_listeners;
     
    	unsigned short address;
     
    	Addr4882_t instruments[NUM_DEVICES],result[NUM_DEVICES],meas[NUM_DEVICES];
     
    	SendIFC(0);
     
    	if(ibsta & ERR)
    	{
    		gpib_error(1,"could not send IFC");
    	}
     
     
    	for(i=0; i< NUM_DEVICES - 1; i++)
    	{
    		instruments[i] = i+1;
    	}
     
    	instruments[NUM_DEVICES - 1] = NOADDR;
    	cout<<"finding all listerners on the bus ..."<<endl;
     
    	FindLstn(0,instruments,result, NUM_DEVICES);
     
    	num_listeners = ibcnt;
    	result[num_listeners] = NOADDR;
    	cout<<"found"<<num_listeners<<"device on the bus"<<endl;
     
    	SendList(0,result,"*IDN?",5L,NLend);
     
     
    	if(ibsta & ERR)
    	{
    		gpib_error(3,"could not send *IDN");
    	}
     
    	for(i=0; i<num_listeners; i++)
    	{
    		Receive(0,result[i],buffer,BUF_SIZE,STOPend);
     
     
    	if(ibsta & ERR)
    	{
    		gpib_error(4,"could not received from device");
    	}
     
    	address = GetPAD(result[i]);
     
     
    	cout<<"Device#"<<address<<"has ID string : "<<buffer<<endl;
    	}
     
     
    	ibonl(0,0);
     
    return 0;
    }
     
     
    void gpib_error(int errnum,char *errmsg)
    {
    	cout<<"Error#"<<errnum<<": "<<errmsg<<endl;
    	ibonl(0,0);
    	exit(1);
    }

Discussions similaires

  1. communication GPIB "oscillo - PC"
    Par Sheizaad dans le forum LabVIEW
    Réponses: 3
    Dernier message: 14/05/2012, 19h27
  2. Communication GPIB, erreur de compil
    Par cyril19 dans le forum C
    Réponses: 5
    Dernier message: 28/05/2009, 09h27
  3. Communication GPIB/multimetres 34401A
    Par speche dans le forum LabVIEW
    Réponses: 2
    Dernier message: 19/02/2008, 14h44
  4. communication corba
    Par joejoe dans le forum CORBA
    Réponses: 5
    Dernier message: 14/07/2002, 20h53
  5. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05

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