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 :

FLOAT TO VARIANT


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Par défaut FLOAT TO VARIANT
    Bonjour à tous,

    J'aimerais pour une application OPC convertir un FLOAT en VARIANT, est ce possible?

    Merci beaucoup.

  2. #2
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    Oui, c'est possible.

    ça depend de comment sont implementés tes VARIANTS.

    Les VARIANTS, c'est juste une technique, différentes bibliothèques l'implémentent de différentes façons.

    Il y a boost::variant dans Boost
    Il y a QVariant dans Qt
    Il y a ...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    Salut,

    OPC utilise les variables de type tagVARIANT
    pour utiliser un float, il faut définir le type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tagVARIANT maVariableFlottante;
     
    maVariableFlottante.vt = VT_R4;
    ensuite, tu affectes la valeur dans le champ correspondant aux flottants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maVariableFlottante.fltVal = 123.456;
    Tu trouveras la définition de la structure tagVARIANT dans le fichier oaidl.h (dans les répertoires de visual studio normalement...)

  4. #4
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Par défaut
    Ok donc pour mon cas ca devrait donner ca ?
    Ja' besoin de votre avis car je ne peux pas faire de run pour le moment, mais au build tout semble correct.

    En fait non ca plante....

    Merci


    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
    // Python return a value which is a Python Object
                // To Send in OPC, we need a VARIANT
                tagVARIANT maVariableFlottante;
                maVariableFlottante.vt = VT_R4;
     
               // je fait la conversion pointervar de typen PyObject en "f"
                PyArg_Parse(pointervar, "f",&maVariableFlottante.vt);
     
     
                // Create the group
                // By default, the name of the group is Group_Opc
                COPCGroup* MyGroupOPC = GetGroup(opc, "Group_Opc");
     
                // write to OPC the value of Python
                MyGroupOPC->addItem(NodePath, true)->writeSync(maVariableFlottante);

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    ça serait pas plutôt ça :
    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
    // Python return a value which is a Python Object
                // To Send in OPC, we need a VARIANT
                tagVARIANT maVariableFlottante;
                maVariableFlottante.vt = VT_R4;
    
               // je fait la conversion pointervar de typen PyObject en "f"
                PyArg_Parse(pointervar, "f",&maVariableFlottante.fltVal);
                
                
                // Create the group
                // By default, the name of the group is Group_Opc
                COPCGroup* MyGroupOPC = GetGroup(opc, "Group_Opc");
    
                // write to OPC the value of Python
                MyGroupOPC->addItem(NodePath, true)->writeSync(maVariableFlottante);
    à moins que tu ais fait une erreur de recopie...

  6. #6
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Par défaut
    Oui effectivement ca serait plutôt ce que tu dis, et le plantage venait de toute façon d'ailleurs.
    Je vous retiens au courant sous peu,
    En attendant merci
    Julien

  7. #7
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    tagVariant c'est du microsoft pure et dur. (je connaissais pas). Donc niveau portabilité y'a mieux. (boost::variant comme cité plus haut).

    D'ailleurs après recherche :
    This class supports the .NET Framework infrastructure and is not intended to be used directly from your code.
    http://msdn.microsoft.com/fr-fr/library/tagvariant.aspx

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb de formatage de champs de type float
    Par FrankyNormand dans le forum XMLRAD
    Réponses: 9
    Dernier message: 05/05/2005, 12h37
  2. problème de float sur SQL server 2000.
    Par fidji dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2003, 14h15
  3. [7RC3] Formatage de champs float
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 19/05/2003, 09h38
  4. probleme d'insertion d'un Float
    Par neness dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2003, 12h32
  5. Convertion de type VARIANT à type CString
    Par j_grue dans le forum MFC
    Réponses: 2
    Dernier message: 07/11/2002, 14h18

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