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

LabVIEW Discussion :

LabVIEW Macro OPUS


Sujet :

LabVIEW

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 8
    Points
    8
    Par défaut LabVIEW Macro OPUS
    Bonjour,

    Je me présente, je suis stagiaire dans une entreprise où nous cherchons à faire de la spectroscopie.
    Je dois à l'aide de LabVIEW contrôler OPUS (by brunker) qui est logiciel d'acquisition de spectre spécifique à la spectroscopie de masse.

    Je dispose de LabVIEW 2014 (32bit et 64bit) et d'OPUS version 7.0.129.

    Pour cela un collègue m'a lancé sur la piste de gestion d'OPUS via la méthode DDE(dynamic data exchange).
    J'ai pu avancer sur le sujet et je peux donc maintenant contrôler au minimum OPUS via DDE ( fermeture d'OPUS, chargement de spectre, chargement des paramètres). Il me reste donc une seul tache à faire qui me pose problème : le lancement d'acquisition.

    J'ai tout d'abord pensez utiliser ActiveX ( et cela a été confirmé par un autre post de ma part sur ce forum.) mais j'ai découvert qu'à cause d'un fichier corrompu je ne peux pas utiliser ActiveX sur LabVIEW ( le fichier DDClnt36.ocx si quelqu'un à des infos).

    Je suis donc retourner sur DDE et je me suis rendu compte qu'au final c'est pas si mal.

    Mon problème est le suivant :

    Je peux grâce à LabVIEW contrôler en partie OPUS. Une seule commande me résiste (tel les irréductibles gaulois) , c'est le lancement d'une acquisition.
    Je sais que la plupart d'entre vous ne connaissent pas mon logiciel OPUS mais c'est un logiciel comme un autre. En ce moment j'essaye donc de lancer une Macro via DDE puisque lancer la macro ci-jointe me permet de lancer une acquisition.

    Vous trouverez un screenshot de mon code en pièce jointe car je ne peux le mettre ici ( problème de chargement ?).

    Je vous joint le code de la macro (si cela peut vous être utile) :

    REM This Macro shows how to measure a spectrum
    VARIABLES SECTION

    REM When using the macro editor this FILE variable is automatically added after inserting the MeasureSample function
    FILE <$ResultFile 1> = AB;

    PROGRAM SECTION

    REM The measured spectrum is returned in the FILE Variable
    REM Note that ONLY the experiment path and name are required for measurement commands!
    <$ResultFile 1> = MeasureSample (0, {EXP='Default.xpm', XPP='C:\OPUS_NT\XPM'});

    PARAMETER SECTION

    (Rem : ligne de commentaire)



    Et je vous joint aussi une partie du PDF Programing fourni par OPUS ( je ne peux le mettre en pièce jointe) concernant les différentes fonctions que j'utilise (ceci n'est pas un code) :


    1ère commande :

    12.3.21 START_MACRO
    Syntax:
    “START_MACRO <Macro file name>[<Number of input parameters>]”
    Description:
    Starts an OPUS macro. Input parameters can be forwarded to the macro. If
    parameters are exchanged, the total number of parameters must be defined as
    the second parameter. If this number is omitted, then it will be set to 0; in this
    case, no parameters are read. If the number of input parameters is larger than 0,
    the input parameters <input parameter 1>, <input parameter 2>, ...., <input
    parameter N> have to be sent by the client program.

    2ème commande ( similaire ) :

    12.3.26 RUN_MACRO
    Syntax:
    Equivalent to START_MACRO
    Description:
    The RUN_MACRO command starts a macro. Contrary to START_MACRO,
    the control is returned immediately after the macro was started. The
    RUN_MACRO command does not wait for the macro to terminate and also
    doesn’t return any results.

    COMMANDE DE RÉPONSE :

    12.3.27 MACRO_RESULTS
    Syntax:
    “MACRO_RESULTS <MacroID>”
    Description:
    The MACRO_RESULTS command retrieves the result parameters of a macro
    session that was started with the ID <MacroID>, using the RUN_MACRO command.
    La MacroID correspond à une suite de chiffre présent dans mon data (sortie de ma fonction request ).


    Le problème est là : Dès que je lance un macro il me dit qu'il y a une erreur dans le macro "Error in Macro" ( alors que je sais que non puisque celui-ci marche bien sur mon logiciel OPUS).
    Mon diagramme est-il bon pour lancer un macro ? Ne trouvant aucune doc sur les différents VIs de DDE , le VI resquest est-il le bon VI à utiliser ? Si non , quel VI faut-il utiliser ?
    Quelle est vraiment la différence entre le VI Request et Execute ?



    Je viens vers vous puisque j'ai épuisé mes choix en consultant la plupart des sites concernant LabVIEW et le DDE.





    Je vous remercie encore de votre temps.

    Yotipp
    Images attachées Images attachées   

  2. #2
    Membre averti Avatar de eliniel
    Femme Profil pro
    Ingénieure Essais et validation
    Inscrit en
    Septembre 2014
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieure Essais et validation
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 115
    Points : 429
    Points
    429
    Par défaut
    Salut,

    Ma question est sûrement nulle mais... Si tes valeurs sont acquises sur labview, pourquoi ne pas les stocker dans un tableau et exporter le tout sur Excel ?
    Ingénieure essais validation

    J'essaye d'écrire du mieux que je peux.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 8
    Points
    8
    Par défaut
    Bonjour Eliniel,

    Le fait est que c'est mon logiciel qui prend l'acquisition. C'est à dire que je n'ai juste qu'à commander à OPUS de faire l'acquisition et lui , automatiquement va faire le spectre et enregistrer le fichier sous un certain format de lui-même. Cela est compris dans les paramètres d'acquisitions que je peux charger depuis une fenêtre de dialogue de fichier grâce à OPUS.

    Donc les valeurs acquises ne sont pas un problème.

    Quant à mon problème initiale j'ai peut être trouver une solution simple. En effet il se peut que ma fonction RUN_MACRO soit obsolète. Ainsi je n'ai juste qu'à prendre le script du macro et de l'insérer directement en tant que commande dans un string (puisque la macro n'est qu'une succession de commande). Je dois faire quelque test ce matin , mais cette solution me parait très prometteuse.

    Cordialement

    Yotipp

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 230
    Points : 352
    Points
    352
    Par défaut
    Bonjour,

    Premier point qui m'interpelle dans la description des commandes et dans le descriptif que tu as c'est :
    1ère commande :

    12.3.21 START_MACRO
    Syntax:
    “START_MACRO <Macro file name>[<Number of input parameters>]”
    Description:
    Starts an OPUS macro. Input parameters can be forwarded to the macro. If
    parameters are exchanged, the total number of parameters must be defined as
    the second parameter. If this number is omitted, then it will be set to 0; in this
    case, no parameters are read. If the number of input parameters is larger than 0,
    the input parameters <input parameter 1>, <input parameter 2>, ...., <input
    parameter N> have to be sent by the client program.

    2ème commande ( similaire ) :

    12.3.26 RUN_MACRO
    Syntax:
    Equivalent to START_MACRO
    Description:
    The RUN_MACRO command starts a macro. Contrary to START_MACRO,
    the control is returned immediately after the macro was started. The
    RUN_MACRO command does not wait for the macro to terminate and also
    doesn’t return any results.
    Dans le cas de la deuxième commande, celle-ci ne retourne aucun résultats. Peut-être que ton problème vient de là ? As-tu tester de passer par la première commande ?
    Je ne réponds pas aux questions techniques via MP. Le but du forum est de permettre de trouver des solutions ensembles pour aider un ensemble de personnes.

    Loi du Chaos Informatique
    L’informatique, ça tient du chaos : une fois ça marche, une fois ça foire, tu sais pas pourquoi, c’est juste que tu viens de changer de lobe sur l’attracteur étrange.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 8
    Points
    8
    Par défaut
    Bonjour Cheetor,

    En effet , le peu d'information que je vous ai donné peut vous faire penser cela. J'ai voulu attacher en pièce jointe le pdf complet mais le site ne le voulais pas ( 390 pages c'est pas beaucoup en plus !).
    Il s'avère que la fonction renvoi bien des informations mais pas les "résultats". En effet, je ne cherche pas à récupérer des valeurs puisque je sais que si je lance la macro, le logiciel sauvegardera (ou même affichera sur son propre interface) le spectre acquis.
    12.3.26 RUN_MACRO
    Syntax:
    Equivalent to START_MACRO
    Description:
    The RUN_MACRO command starts a macro. Contrary to START_MACRO,
    the control is returned immediately after the macro was started. The
    RUN_MACRO command does not wait for the macro to terminate and also
    doesn’t return any results.
    Old C/S Commands
    Bruker Optik GmbH OPUS-NT Programming 12–23
    Return Value:
    After the command:
    “OK” or error message.
    Return Value 2:
    After transferring the input parameter:
    “OK” or error message.
    Return Value 3:
    <MacroID>: a macro identification number unique for each macro session.
    Error:
    Similar to START_MACRO
    Comment:
    See also START_MACRO.
    To access the results of the macro started, the MACRO_RESULTS commands
    is used.
    The returned <MacroID> is used as parameter for the MACRO_RESULTS and
    the KILL_MACRO commands.
    Voilà la description en entière. C'est pour cela que j'utilise la fonction MACRO_RESULTS afin de récupérer ou plutôt dans mon cas d'avoir des informations quant au déroulement du macro (s'il est fini ou toujours en cours).

    J'ai néanmoins comme tu l'as suggérer essayer la premier fonction (START_MACRO) il a quelques semaines pour tomber encore sur une autre erreur. J'ai donc préférer me focaliser sur une plutôt que de me perdre dans d’innombrables problèmes et erreurs.

    Je vous remercie du temps que vous me consacrez,

    Cordialement

    Yotipp

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 230
    Points : 352
    Points
    352
    Par défaut
    Re-Bonjour,

    L'article suivant est pas trop mal (mais en anglais) : http://www.ni.com/white-paper/4531/en/
    Au niveau VI du coup, je me demande s'il ne serait pas préférable que tu passes par Execute dans le sens ou NI le présente comme pouvant dérouler une macro. Au vu de la syntaxe, ça semble également correspondre à ton cas.

    Concernant ton problème avec ActiveX, je n'en ai pas la moindre idée...
    Je ne réponds pas aux questions techniques via MP. Le but du forum est de permettre de trouver des solutions ensembles pour aider un ensemble de personnes.

    Loi du Chaos Informatique
    L’informatique, ça tient du chaos : une fois ça marche, une fois ça foire, tu sais pas pourquoi, c’est juste que tu viens de changer de lobe sur l’attracteur étrange.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 8
    Points
    8
    Par défaut
    Bonjour à tous !

    Merci encore de toutes vos réponses.
    J'ai finalement trouver une solution à mon problème.
    En effet la commande RUN_MACRO est sans doute obselète ( signalé dans le pdf).
    Ainsi je me suis dit que les commandes présentes dans le macro était sans doute des commandes que le logiciel OPUS pouvais lire et comprendre.
    J'ai donc par la suite placer les commandes présentes dans le macro dans un string directement relier au REQUEST.

    Et ... miracle !
    Cela marche !

    Je vous remercie tous de votre temps.

    Cordialement



    Yotipp



    ps: un petit screen pour vous montrer.
    Images attachées Images attachées  

  8. #8
    Membre confirmé
    Avatar de luc desruelle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2015
    Messages : 39
    Points : 594
    Points
    594
    Billets dans le blog
    8
    Par défaut
    salut, bonne nouvelle, en plus le code que tu "montres" et "propre", alors bravo!
    Luc Desruelle (Certifié LabVIEW Architecte - CLA - LabVIEW Champion) co-auteur du livre LabVIEW : Programmation et applications | mon profil | mon blog LabVIEW

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

Discussions similaires

  1. [VB6] Exécuter une macro Access
    Par Nektanebos dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 22/02/2006, 16h32
  2. [VBA-E] Macro ouverture fichier déja ouvert
    Par bhaal76 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 14h30
  3. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15
  4. Qu'est-ce qu'une macro ?
    Par karli dans le forum Assembleur
    Réponses: 2
    Dernier message: 01/09/2002, 03h38
  5. Réponses: 2
    Dernier message: 22/07/2002, 12h13

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